From c275684ee9e0ece35033e001d00765e522232d44 Mon Sep 17 00:00:00 2001 From: kielni Date: Tue, 4 Feb 2014 13:48:53 -0800 Subject: [PATCH] add support for terms filter; related to 32f5977ac39df3df832b6b6b56152261a6ad7cd9 --- src/backend.memory.js | 9 +++++++++ test/backend.memory.test.js | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/backend.memory.js b/src/backend.memory.js index 0c83a7d1a..8cb64ddfa 100644 --- a/src/backend.memory.js +++ b/src/backend.memory.js @@ -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 === ''); diff --git a/test/backend.memory.test.js b/test/backend.memory.test.js index 440e7d8d0..cbe84ad61 100644 --- a/test/backend.memory.test.js +++ b/test/backend.memory.test.js @@ -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() {