add method to replace a filter
This commit is contained in:
parent
c8f7ab56ff
commit
ef1064b888
17
src/model.js
17
src/model.js
@ -510,6 +510,23 @@ my.Query = Backbone.Model.extend({
|
|||||||
filters.push(ourfilter);
|
filters.push(ourfilter);
|
||||||
this.trigger('change:filters:new-blank');
|
this.trigger('change:filters:new-blank');
|
||||||
},
|
},
|
||||||
|
replaceFilter: function(filter) {
|
||||||
|
// delete filter on the same field, then add
|
||||||
|
var filters = this.get('filters');
|
||||||
|
var idx = -1;
|
||||||
|
_.each(this.get('filters'), function(filter, key, list) {
|
||||||
|
if (filter.field == filter.field) {
|
||||||
|
idx = key;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// trigger just one event (change:filters:new-blank) instead of one for remove and
|
||||||
|
// one for add
|
||||||
|
if (idx >= 0) {
|
||||||
|
filters.splice(idx, 1);
|
||||||
|
this.set({filters: filters});
|
||||||
|
}
|
||||||
|
this.addFilter(filter);
|
||||||
|
},
|
||||||
updateFilter: function(index, value) {
|
updateFilter: function(index, value) {
|
||||||
},
|
},
|
||||||
// ### removeFilter
|
// ### removeFilter
|
||||||
|
|||||||
@ -374,4 +374,24 @@ test('Query.addFilter', function () {
|
|||||||
deepEqual(exp, query.get('filters')[2]);
|
deepEqual(exp, query.get('filters')[2]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Query.replaceFilter', function () {
|
||||||
|
var query = new recline.Model.Query();
|
||||||
|
query.addFilter({type: 'term', field: 'xyz'});
|
||||||
|
var exp = {
|
||||||
|
field: 'xyz',
|
||||||
|
type: 'term',
|
||||||
|
term: ''
|
||||||
|
};
|
||||||
|
deepEqual(query.get('filters')[0], exp);
|
||||||
|
|
||||||
|
query.replaceFilter({type: 'term', field: 'abc'});
|
||||||
|
exp = {
|
||||||
|
field: 'abc',
|
||||||
|
type: 'term',
|
||||||
|
term: ''
|
||||||
|
};
|
||||||
|
deepEqual(query.get('filters')[0], exp);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
})(this.jQuery);
|
})(this.jQuery);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user