mirror of
https://github.com/grafana/grafana.git
synced 2024-11-25 18:30:41 -06:00
in derivequeries panel, add support for an 'other' query that is everything else that doesn't match.
This commit is contained in:
parent
4249bdc6c0
commit
20b0bb0f85
@ -12,9 +12,12 @@
|
||||
<label class="small">Query Mode</label>
|
||||
<select style="width:80%" ng-change="set_refresh(true)" ng-model='panel.mode' ng-options="f for f in ['terms only','AND', 'OR']"></select>
|
||||
</div>
|
||||
<div class="span5">
|
||||
<div class="span4">
|
||||
<label class="small">Exclude Terms(s) (comma seperated)</label>
|
||||
<input array-join type="text" style="width:90%" ng-change="set_refresh(true)" ng-model='panel.exclude'></input>
|
||||
</div>
|
||||
<div class="span1">
|
||||
<label class="small"> Rest </label><input type="checkbox" ng-model="panel.rest" ng-checked="panel.rest" ng-change="set_refresh(true)">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -8,6 +8,7 @@
|
||||
* label :: The label to stick over the field
|
||||
* query :: A string to use as a filter for the terms facet
|
||||
* field :: the field to facet on
|
||||
* rest :: include a filter that matches all other terms,
|
||||
* size :: how many queries to generate
|
||||
* fields :: a list of fields known to us
|
||||
* query_mode :: how to create query
|
||||
@ -37,6 +38,7 @@ angular.module('kibana.derivequeries', [])
|
||||
field : '_type',
|
||||
fields : [],
|
||||
spyable : true,
|
||||
rest : false,
|
||||
size : 5,
|
||||
mode : 'terms only',
|
||||
exclude : [],
|
||||
@ -89,7 +91,9 @@ angular.module('kibana.derivequeries', [])
|
||||
suffix = ' OR (' + $scope.panel.query + ')';
|
||||
}
|
||||
var ids = [];
|
||||
_.each(results.facets.query.terms, function(v) {
|
||||
var terms = results.facets.query.terms;
|
||||
var others = [];
|
||||
_.each(terms, function(v) {
|
||||
var _q = $scope.panel.field+':"'+v.term+'"'+suffix;
|
||||
// if it isn't in the list, remove it
|
||||
var _iq = querySrv.findQuery(_q);
|
||||
@ -98,7 +102,17 @@ angular.module('kibana.derivequeries', [])
|
||||
} else {
|
||||
ids.push(_iq.id);
|
||||
}
|
||||
others.push("NOT (" + _q + ")");
|
||||
});
|
||||
if ($scope.panel.rest) {
|
||||
var _other_q = others.join(' AND ');
|
||||
var _iq = querySrv.findQuery(_other_q);
|
||||
if (!_iq) {
|
||||
ids.push(querySrv.set({alias: 'other', query: _other_q}));
|
||||
} else {
|
||||
ids.push(_iq.id);
|
||||
}
|
||||
}
|
||||
_.each(_.difference($scope.panel.ids,ids),function(id){
|
||||
querySrv.remove(id);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user