Commit 421cd5e3 by Rashid Khan

Merge pull request #265 from pheaver/topic/derivequeries

improvements to derivequeries
parents 5631d8f0 20b0bb0f
...@@ -12,9 +12,12 @@ ...@@ -12,9 +12,12 @@
<label class="small">Query Mode</label> <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> <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>
<div class="span5"> <div class="span4">
<label class="small">Exclude Terms(s) (comma seperated)</label> <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> <input array-join type="text" style="width:90%" ng-change="set_refresh(true)" ng-model='panel.exclude'></input>
</div> </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>
</div> </div>
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* label :: The label to stick over the field * label :: The label to stick over the field
* query :: A string to use as a filter for the terms facet * query :: A string to use as a filter for the terms facet
* field :: the field to facet on * field :: the field to facet on
* rest :: include a filter that matches all other terms,
* size :: how many queries to generate * size :: how many queries to generate
* fields :: a list of fields known to us * fields :: a list of fields known to us
* query_mode :: how to create query * query_mode :: how to create query
...@@ -37,6 +38,7 @@ angular.module('kibana.derivequeries', []) ...@@ -37,6 +38,7 @@ angular.module('kibana.derivequeries', [])
field : '_type', field : '_type',
fields : [], fields : [],
spyable : true, spyable : true,
rest : false,
size : 5, size : 5,
mode : 'terms only', mode : 'terms only',
exclude : [], exclude : [],
...@@ -89,16 +91,28 @@ angular.module('kibana.derivequeries', []) ...@@ -89,16 +91,28 @@ angular.module('kibana.derivequeries', [])
suffix = ' OR (' + $scope.panel.query + ')'; suffix = ' OR (' + $scope.panel.query + ')';
} }
var ids = []; 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; var _q = $scope.panel.field+':"'+v.term+'"'+suffix;
// if it isn't in the list, remove it // if it isn't in the list, remove it
var _iq = querySrv.findQuery(_q); var _iq = querySrv.findQuery(_q);
if(!_iq) { if(!_iq) {
ids.push(querySrv.set({query:_q})); ids.push(querySrv.set({alias: v.term, query:_q}));
} else { } else {
ids.push(_iq.id); 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){ _.each(_.difference($scope.panel.ids,ids),function(id){
querySrv.remove(id); querySrv.remove(id);
}); });
......
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