[#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:
Rufus Pollock
2012-04-02 21:03:59 +01:00
parent 84b9c9f655
commit 1eb7df9a7c
2 changed files with 36 additions and 15 deletions

View File

@@ -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: []
}
} }
}); });

View File

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