[#66,model][s]: addTermFacet on Query object.
* Also fix a major bug (that was causing weird test failures) re setting defaults (you cannot set defaults with objects).
This commit is contained in:
45
src/model.js
45
src/model.js
@@ -131,14 +131,27 @@ my.FieldList = Backbone.Collection.extend({
|
|||||||
|
|
||||||
// ## A Query object storing Dataset Query state
|
// ## A Query object storing Dataset Query state
|
||||||
my.Query = Backbone.Model.extend({
|
my.Query = Backbone.Model.extend({
|
||||||
defaults: {
|
defaults: function() {
|
||||||
size: 100
|
return {
|
||||||
, from: 0
|
size: 100
|
||||||
, facets: {}
|
, from: 0
|
||||||
|
, facets: {}
|
||||||
|
// http://www.elasticsearch.org/guide/reference/query-dsl/and-filter.html
|
||||||
|
// , filter: {}
|
||||||
|
// list of simple filters which will be add to 'add' filter of filter
|
||||||
|
, filters: []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// Set (update or add) a terms filter
|
// Set (update or add) a terms filter
|
||||||
// http://www.elasticsearch.org/guide/reference/query-dsl/terms-filter.html
|
// http://www.elasticsearch.org/guide/reference/query-dsl/terms-filter.html
|
||||||
setFilter: function(fieldId, values) {
|
addTermFilter: function(fieldId, value) {
|
||||||
|
var filters = this.get('filters');
|
||||||
|
var filter = { term: {} };
|
||||||
|
filter.term[fieldId] = value;
|
||||||
|
filters.push(filter);
|
||||||
|
this.set({filters: filters});
|
||||||
|
// change does not seem to be triggered ...
|
||||||
|
this.trigger('change');
|
||||||
},
|
},
|
||||||
addFacet: function(fieldId) {
|
addFacet: function(fieldId) {
|
||||||
var facets = this.get('facets');
|
var facets = this.get('facets');
|
||||||
@@ -157,16 +170,18 @@ my.Query = Backbone.Model.extend({
|
|||||||
|
|
||||||
// ## A Facet (Result)
|
// ## A Facet (Result)
|
||||||
my.Facet = Backbone.Model.extend({
|
my.Facet = Backbone.Model.extend({
|
||||||
defaults: {
|
defaults: function() {
|
||||||
_type: 'terms',
|
return {
|
||||||
// total number of tokens in the facet
|
_type: 'terms',
|
||||||
total: 0,
|
// total number of tokens in the facet
|
||||||
// number of facet values not included in the returned facets
|
total: 0,
|
||||||
other: 0,
|
// number of facet values not included in the returned facets
|
||||||
// number of documents which have no value for the field
|
other: 0,
|
||||||
missing: 0,
|
// number of documents which have no value for the field
|
||||||
// term object ({term: , count: ...})
|
missing: 0,
|
||||||
terms: []
|
// term object ({term: , count: ...})
|
||||||
|
terms: []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -69,4 +69,10 @@ test('Query', function () {
|
|||||||
deepEqual({terms: {field: 'xyz'}}, query.get('facets')['xyz']);
|
deepEqual({terms: {field: 'xyz'}}, query.get('facets')['xyz']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Query.addFilter', function () {
|
||||||
|
var query = new recline.Model.Query();
|
||||||
|
query.addTermFilter('xyz', 'this-value');
|
||||||
|
deepEqual({term: {xyz: 'this-value'}}, query.get('filters')[0]);
|
||||||
|
});
|
||||||
|
|
||||||
})(this.jQuery);
|
})(this.jQuery);
|
||||||
|
|||||||
Reference in New Issue
Block a user