Commit ce5273b7 by Rashid Khan

Added support for broadcasting an array of queries, added multi query support to stringquery panel

parent bf25b753
......@@ -66,5 +66,21 @@ angular.module('kibana.directives', [])
}
}
}
}).directive('ngModelOnblur', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attr, ngModelCtrl) {
if (attr.type === 'radio' || attr.type === 'checkbox') return;
elm.unbind('input').unbind('keydown').unbind('change');
elm.bind('blur', function() {
scope.$apply(function() {
ngModelCtrl.$setViewValue(elm.val());
});
});
}
};
});
;
angular.module('kibana.dashcontrol', [])
.controller('dashcontrol', function($scope, $http, eventBus, timer) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
group : "default",
......
angular.module('kibana.fields', [])
.controller('fields', function($scope, eventBus, $timeout) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
group : "default",
......
angular.module('kibana.histogram', [])
.controller('histogram', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
query : [ {query: "*", label:"Query"} ],
......@@ -17,7 +15,13 @@ angular.module('kibana.histogram', [])
$scope.init = function() {
eventBus.register($scope,'time', function(event,time){set_time(time)});
eventBus.register($scope,'query', function(event, query) {
$scope.panel.query[0].query = query;
if(_.isArray(query)) {
$scope.panel.query = _.map(query,function(q) {
return {query: q, label: q};
})
} else {
$scope.panel.query[0] = {query: query, label: query}
}
$scope.get_data();
});
// Now that we're all setup, request the time from our group if we don't
......
<div class="row-fluid">
<div class="span11">
The hits panel shows a simple count of how many records match your filtered query. If multiple queries are sent from a single panel the <strong>first query will be displayed</strong>
</div>
</div>
<div class="row-fluid">
<div class="span9">
<form class="input-append">
......
angular.module('kibana.hits', [])
.controller('hits', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
query : "*",
......@@ -14,7 +12,7 @@ angular.module('kibana.hits', [])
$scope.init = function () {
eventBus.register($scope,'time', function(event,time){set_time(time)});
eventBus.register($scope,'query', function(event, query) {
$scope.panel.query = query;
$scope.panel.query = _.isArray(query) ? query[0] : query;
$scope.get_data();
});
// Now that we're all setup, request the time from our group
......
<div class="row-fluid">
<div class="span11">
The map panel uses 2 letter country or US state codes to plot concentrations on a map. Darker terroritories mean more records matched that area. If multiple queries are sent from a single panel the <strong>first query will be displayed</strong>
</div>
</div>
<div class="row-fluid">
<div class="span6">
<form class="input-append">
......
angular.module('kibana.map', [])
.controller('map', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
query : "*",
......@@ -17,7 +15,7 @@ angular.module('kibana.map', [])
$scope.init = function() {
eventBus.register($scope,'time', function(event,time){set_time(time)});
eventBus.register($scope,'query', function(event, query) {
$scope.panel.query = query;
$scope.panel.query = _.isArray(query) ? query[0] : query;
$scope.get_data();
});
// Now that we're all setup, request the time from our group
......
angular.module('kibana.pie', [])
.controller('pie', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
query : { field:"_all", query:"*", goal: 1},
......@@ -23,8 +21,16 @@ angular.module('kibana.pie', [])
eventBus.register($scope,'query', function(event, query) {
if($scope.panel.mode !== 'query') {
$scope.panel.query.query = query;
$scope.panel.query.query = _.isArray(query) ? query[0] : query;
$scope.get_data();
} else {
if(_.isArray(query))
$scope.panel.query = _.map(query,function(q) {
return {query: q, label: q}})
else
$scope.panel.query[0] = {query: query, label: query}
}
$scope.get_data();
});
// Now that we're all setup, request the time from our group
eventBus.broadcast($scope.$id,$scope.panel.group,'get_time')
......
angular.module('kibana.sort', [])
.controller('sort', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
label : "Sort",
query : "*",
size : 100,
sort : [config.timefield,'desc'],
group : "default"
}
......
<div class="row-fluid">
<div class="span3">
<label class="small">Allow Mulitple</label><input type="checkbox" ng-model="panel.multi" ng-checked="panel.multi">
</div>
<div class="span4" ng-show="panel.multi">
<label class="small">Multiquery Arrangement</label>
<select class="input-medium" ng-model="panel.multi_arrange" ng-options="f for f in ['vertical','horizontal']"></select>
</div>
</div>
\ No newline at end of file
<kibana-panel ng-controller='stringquery'>
<form class="input-append" style="margin-bottom:0px; width:100%; white-space:nowrap;">
<label><small>{{panel.label}}</small></label>
<input type="text" ng-model="panel.query" style="width:85%">
<button type="submit" class="btn btn-info" ng-click="send_query(panel.query)"><i class="icon-search"></i></button>
<button type="submit" class="btn btn-danger" ng-click="panel.query='';send_query(panel.query)"><i class="icon-ban-circle"></i></button>
</form>
<div ng-switch="_.isArray(panel.query)">
<div ng-switch-when="false">
<form class="input-append" style="margin-bottom:0px; width:100%; white-space:nowrap;">
<label><small>{{panel.label}}</small></label>
<input type="text" ng-model="panel.query" style="width:85%">
<button type="submit" class="btn btn-info" ng-click="send_query(panel.query)"><i class="icon-search"></i></button>
<button type="submit" class="btn btn-danger" ng-click="panel.query='';send_query(panel.query)"><i class="icon-ban-circle"></i></button>
<button ng-show="panel.multi" type="submit" class="btn" ng-click="add_query()"><i class="icon-plus"></i></button>
</form>
</div>
<div ng-switch-when="true">
<form ng-class="{form-inline: panel.multi_arrange == 'horizontal'}" style="width:100%;" >
<span ng-repeat="q in panel.query">
<span class="input-append" style="margin-bottom:0px;margin-right:5px">
<button class="btn btn-danger" type="submit" style="width:50px;margin-left:-50px;visibility:hidden"></button>
<input style="margin-bottom:5px;" type="text" ng-model="panel.query[$index]" ng-model-onblur style="width:90%">
<button class="btn btn-danger" ng-show="panel.query.length > 1" ng-click="remove_query($index);send_query(panel.query)"><i class="icon-minus"></i></button><br>
</span><br style:"height:0px" ng-show="panel.multi_arrange == 'vertical'">
</span>
</form>
<button type="submit" class="btn btn-info" ng-click="send_query(panel.query)"><i class="icon-search"></i> Search</button>
<button type="submit" class="btn" ng-click="send_query(panel.query);add_query();"><i class="icon-plus"></i> Add Query</button>
</div>
</div>
</kibana-panel>
\ No newline at end of file
angular.module('kibana.stringquery', [])
.controller('stringquery', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
label : "Search",
query : "*",
size : 100,
sort : [config.timefield,'desc'],
group : "default"
group : "default",
multi : false,
multi_arrange: 'horizontal',
}
_.defaults($scope.panel,_d);
......@@ -19,11 +19,25 @@ angular.module('kibana.stringquery', [])
$scope.init = function() {
eventBus.register($scope,'query',function(event,query) {
$scope.panel.query = query;
});
});
}
$scope.send_query = function(query) {
eventBus.broadcast($scope.$id,$scope.panel.group,'query',query)
}
$scope.add_query = function() {
if (_.isArray($scope.panel.query))
$scope.panel.query.push("")
else {
$scope.panel.query = new Array($scope.panel.query)
$scope.panel.query.push("")
}
}
$scope.send_query = function(query) {
eventBus.broadcast($scope.$id,$scope.panel.group,'query',query)
}
$scope.remove_query = function(index) {
$scope.panel.query.splice(index,1);
}
$scope.init();
});
\ No newline at end of file
angular.module('kibana.table', [])
.controller('table', function($scope, eventBus) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
query : "*",
......@@ -29,7 +27,7 @@ angular.module('kibana.table', [])
});
eventBus.register($scope,'query',function(event,query) {
$scope.panel.offset = 0;
$scope.panel.query = query;
$scope.panel.query = _.isArray(query) ? query[0] : query;
$scope.get_data();
});
eventBus.register($scope,'sort', function(event,sort){
......
angular.module('kibana.text', [])
.controller('text', function($scope, $rootScope) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
group : "default",
......
......@@ -26,8 +26,6 @@ a pattern
angular.module('kibana.timepicker', [])
.controller('timepicker', function($scope, eventBus, $timeout, timer, $http) {
var _id = _.uniqueId();
// Set and populate defaults
var _d = {
mode : "relative",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment