add support for terms filter; related to 32f5977ac39df3df832b6b6b56152261a6ad7cd9
This commit is contained in:
parent
8c1a1359db
commit
c275684ee9
@ -101,6 +101,7 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
|
||||
// register filters
|
||||
var filterFunctions = {
|
||||
term : term,
|
||||
terms : terms,
|
||||
range : range,
|
||||
geo_distance : geo_distance
|
||||
};
|
||||
@ -140,6 +141,14 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
|
||||
return (value === term);
|
||||
}
|
||||
|
||||
function terms(record, filter) {
|
||||
var parse = getDataParser(filter);
|
||||
var value = parse(record[filter.field]);
|
||||
var terms = parse(filter.terms).split(",");
|
||||
|
||||
return (_.indexOf(terms, value) >= 0);
|
||||
}
|
||||
|
||||
function range(record, filter) {
|
||||
var fromnull = (_.isUndefined(filter.from) || filter.from === null || filter.from === '');
|
||||
var tonull = (_.isUndefined(filter.to) || filter.to === null || filter.to === '');
|
||||
|
||||
@ -99,6 +99,13 @@ test('filters', function () {
|
||||
deepEqual(_.pluck(out.hits, 'country'), ['UK','UK','UK']);
|
||||
});
|
||||
|
||||
query = new recline.Model.Query();
|
||||
query.addFilter({type: 'terms', field: 'country', terms: ['UK','DE']});
|
||||
data.query(query.toJSON()).then(function(out) {
|
||||
equal(out.total, 5);
|
||||
deepEqual(_.pluck(out.hits, 'country'), ['DE','UK','UK','UK','DE']);
|
||||
});
|
||||
|
||||
query = new recline.Model.Query();
|
||||
query.addFilter({type: 'range', field: 'date', from: '2011-01-01', to: '2011-05-01'});
|
||||
data.query(query.toJSON()).then(function(out) {
|
||||
@ -307,6 +314,13 @@ test('filters', function () {
|
||||
deepEqual(dataset.records.pluck('country'), ['UK', 'UK', 'UK']);
|
||||
});
|
||||
|
||||
dataset = makeBackendDataset();
|
||||
dataset.queryState.addFilter({type: 'terms', field: 'country', terms: ['UK','DE']});
|
||||
dataset.query().then(function() {
|
||||
equal(dataset.records.length, 5);
|
||||
deepEqual(dataset.records.pluck('country'), ['DE','UK', 'UK', 'UK','DE']);
|
||||
});
|
||||
|
||||
dataset = makeBackendDataset();
|
||||
dataset.queryState.addFilter({type: 'range', field: 'date', from: '2011-01-01', to: '2011-05-01'});
|
||||
dataset.query().then(function() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user