add support for terms filter; related to 32f5977ac39df3df832b6b6b56152261a6ad7cd9

This commit is contained in:
kielni 2014-02-04 13:48:53 -08:00
parent 8c1a1359db
commit c275684ee9
2 changed files with 23 additions and 0 deletions

View File

@ -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 === '');

View File

@ -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() {