[#83,facets][s]: add date histogram facet support.

* Incomplete in various ways (e.g. cannot apply filter correctly using it) but can add and view.
This commit is contained in:
Rufus Pollock 2012-04-10 16:25:08 +01:00
parent 3c9a18ba88
commit dea4b3ece1
3 changed files with 28 additions and 1 deletions

View File

@ -297,6 +297,17 @@ my.Query = Backbone.Model.extend({
};
this.set({facets: facets}, {silent: true});
this.trigger('facet:add', this);
},
addHistogramFacet: function(fieldId) {
var facets = this.get('facets');
facets[fieldId] = {
date_histogram: {
field: fieldId,
interval: 'day'
}
};
this.set({facets: facets}, {silent: true});
this.trigger('facet:add', this);
}
});

View File

@ -71,6 +71,9 @@ my.DataGrid = Backbone.View.extend({
facet: function() {
self.model.queryState.addFacet(self.state.currentColumn);
},
facet_histogram: function() {
self.model.queryState.addHistogramFacet(self.state.currentColumn);
},
filter: function() {
self.model.queryState.addTermFilter(self.state.currentColumn, '');
},
@ -164,7 +167,8 @@ my.DataGrid = Backbone.View.extend({
<div class="btn-group column-header-menu"> \
<a class="btn dropdown-toggle" data-toggle="dropdown"><i class="icon-cog"></i><span class="caret"></span></a> \
<ul class="dropdown-menu data-table-menu pull-right"> \
<li><a data-action="facet" href="JavaScript:void(0);">Facet on this Field</a></li> \
<li><a data-action="facet" href="JavaScript:void(0);">Term Facet</a></li> \
<li><a data-action="facet_histogram" href="JavaScript:void(0);">Date Histogram Facet</a></li> \
<li><a data-action="filter" href="JavaScript:void(0);">Text Filter</a></li> \
<li class="divider"></li> \
<li><a data-action="sortAsc" href="JavaScript:void(0);">Sort ascending</a></li> \

View File

@ -399,6 +399,9 @@ my.FacetViewer = Backbone.View.extend({
{{#terms}} \
<li><a class="facet-choice js-facet-filter" data-value="{{term}}">{{term}} ({{count}})</a></li> \
{{/terms}} \
{{#entries}} \
<li><a class="facet-choice js-facet-filter" data-value="{{time}}">{{term}} ({{count}})</a></li> \
{{/entries}} \
</ul> \
</div> \
{{/facets}} \
@ -421,6 +424,15 @@ my.FacetViewer = Backbone.View.extend({
facets: this.model.facets.toJSON(),
fields: this.model.fields.toJSON()
};
tmplData.facets = _.map(tmplData.facets, function(facet) {
if (facet._type === 'date_histogram') {
facet.entries = _.map(facet.entries, function(entry) {
entry.term = new Date(entry.time).toDateString();
return entry;
});
}
return facet;
});
var templated = $.mustache(this.template, tmplData);
this.el.html(templated);
// are there actually any facets to show?