[#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:
11
src/model.js
11
src/model.js
@@ -297,6 +297,17 @@ my.Query = Backbone.Model.extend({
|
|||||||
};
|
};
|
||||||
this.set({facets: facets}, {silent: true});
|
this.set({facets: facets}, {silent: true});
|
||||||
this.trigger('facet:add', this);
|
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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,9 @@ my.DataGrid = Backbone.View.extend({
|
|||||||
facet: function() {
|
facet: function() {
|
||||||
self.model.queryState.addFacet(self.state.currentColumn);
|
self.model.queryState.addFacet(self.state.currentColumn);
|
||||||
},
|
},
|
||||||
|
facet_histogram: function() {
|
||||||
|
self.model.queryState.addHistogramFacet(self.state.currentColumn);
|
||||||
|
},
|
||||||
filter: function() {
|
filter: function() {
|
||||||
self.model.queryState.addTermFilter(self.state.currentColumn, '');
|
self.model.queryState.addTermFilter(self.state.currentColumn, '');
|
||||||
},
|
},
|
||||||
@@ -164,7 +167,8 @@ my.DataGrid = Backbone.View.extend({
|
|||||||
<div class="btn-group column-header-menu"> \
|
<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> \
|
<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"> \
|
<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><a data-action="filter" href="JavaScript:void(0);">Text Filter</a></li> \
|
||||||
<li class="divider"></li> \
|
<li class="divider"></li> \
|
||||||
<li><a data-action="sortAsc" href="JavaScript:void(0);">Sort ascending</a></li> \
|
<li><a data-action="sortAsc" href="JavaScript:void(0);">Sort ascending</a></li> \
|
||||||
|
|||||||
12
src/view.js
12
src/view.js
@@ -399,6 +399,9 @@ my.FacetViewer = Backbone.View.extend({
|
|||||||
{{#terms}} \
|
{{#terms}} \
|
||||||
<li><a class="facet-choice js-facet-filter" data-value="{{term}}">{{term}} ({{count}})</a></li> \
|
<li><a class="facet-choice js-facet-filter" data-value="{{term}}">{{term}} ({{count}})</a></li> \
|
||||||
{{/terms}} \
|
{{/terms}} \
|
||||||
|
{{#entries}} \
|
||||||
|
<li><a class="facet-choice js-facet-filter" data-value="{{time}}">{{term}} ({{count}})</a></li> \
|
||||||
|
{{/entries}} \
|
||||||
</ul> \
|
</ul> \
|
||||||
</div> \
|
</div> \
|
||||||
{{/facets}} \
|
{{/facets}} \
|
||||||
@@ -421,6 +424,15 @@ my.FacetViewer = Backbone.View.extend({
|
|||||||
facets: this.model.facets.toJSON(),
|
facets: this.model.facets.toJSON(),
|
||||||
fields: this.model.fields.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);
|
var templated = $.mustache(this.template, tmplData);
|
||||||
this.el.html(templated);
|
this.el.html(templated);
|
||||||
// are there actually any facets to show?
|
// are there actually any facets to show?
|
||||||
|
|||||||
Reference in New Issue
Block a user