From dea4b3ece136ae45bfef8adae45f9ac63f77f940 Mon Sep 17 00:00:00 2001 From: Rufus Pollock Date: Tue, 10 Apr 2012 16:25:08 +0100 Subject: [PATCH] [#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. --- src/model.js | 11 +++++++++++ src/view-grid.js | 6 +++++- src/view.js | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/model.js b/src/model.js index 2f222c3f..79ac4aa8 100644 --- a/src/model.js +++ b/src/model.js @@ -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); } }); diff --git a/src/view-grid.js b/src/view-grid.js index 3ee44b22..527b33c5 100644 --- a/src/view-grid.js +++ b/src/view-grid.js @@ -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({
\ \ \
\ {{/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?