add support for terms filter; related to 32f5977ac39df3df832b6b6b56152261a6ad7cd9
This commit is contained in:
@@ -101,6 +101,7 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
|
|||||||
// register filters
|
// register filters
|
||||||
var filterFunctions = {
|
var filterFunctions = {
|
||||||
term : term,
|
term : term,
|
||||||
|
terms : terms,
|
||||||
range : range,
|
range : range,
|
||||||
geo_distance : geo_distance
|
geo_distance : geo_distance
|
||||||
};
|
};
|
||||||
@@ -140,6 +141,14 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
|
|||||||
return (value === term);
|
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) {
|
function range(record, filter) {
|
||||||
var fromnull = (_.isUndefined(filter.from) || filter.from === null || filter.from === '');
|
var fromnull = (_.isUndefined(filter.from) || filter.from === null || filter.from === '');
|
||||||
var tonull = (_.isUndefined(filter.to) || filter.to === null || filter.to === '');
|
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']);
|
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 = new recline.Model.Query();
|
||||||
query.addFilter({type: 'range', field: 'date', from: '2011-01-01', to: '2011-05-01'});
|
query.addFilter({type: 'range', field: 'date', from: '2011-01-01', to: '2011-05-01'});
|
||||||
data.query(query.toJSON()).then(function(out) {
|
data.query(query.toJSON()).then(function(out) {
|
||||||
@@ -307,6 +314,13 @@ test('filters', function () {
|
|||||||
deepEqual(dataset.records.pluck('country'), ['UK', 'UK', 'UK']);
|
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 = makeBackendDataset();
|
||||||
dataset.queryState.addFilter({type: 'range', field: 'date', from: '2011-01-01', to: '2011-05-01'});
|
dataset.queryState.addFilter({type: 'range', field: 'date', from: '2011-01-01', to: '2011-05-01'});
|
||||||
dataset.query().then(function() {
|
dataset.query().then(function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user