Skip to content

Instantly share code, notes, and snippets.

@lbjay
Created June 2, 2010 17:15
Show Gist options
  • Select an option

  • Save lbjay/422683 to your computer and use it in GitHub Desktop.

Select an option

Save lbjay/422683 to your computer and use it in GitHub Desktop.
(function ($) {
AjaxSolr.CurrentSearchWidget = AjaxSolr.AbstractWidget.extend({
afterRequest: function () {
var self = this;
var links = [];
var fq = this.manager.store.values('fq');
for (var i = 0, l = fq.length; i < l; i++) {
var field = fq[i].split(':');
console.log(field);
if (field[0] == 'pubdate') {
var displayValue = 'pubdate:' + AjaxSolr.dateFqToLabel(field[1]);
} else {
var displayValue = fq[i];
}
links.push($('<a href="#"/>').text('(x) ' + displayValue).click(self.removeFacet(fq[i])));
}
if (links.length > 1) {
links.unshift($('<a href="#"/>').text('remove all').click(function () {
self.manager.store.remove('fq');
self.manager.doRequest(0);
return false;
}));
}
if (links.length) {
AjaxSolr.theme('list_items', this.target, links);
}
else {
$(this.target).html('<div>Viewing all documents!</div>');
}
},
removeFacet: function (facet) {
var self = this;
return function () {
if (self.manager.store.removeByValue('fq', facet)) {
self.manager.doRequest(0);
}
return false;
};
}
});
})(jQuery);
(function ($) {
AjaxSolr.dateDatestampToLabel = function (solrDatestamp) {
console.log(solrDatestamp);
var startdate = $.datepicker.parseDate('yy-mm-dd', solrDatestamp.split('T')[0]);
// going in 10-year chunks so add 9 to starting year to get end year
var enddate = new Date(startdate.getFullYear() + 9, 11, 31, 23, 59, 59, 0);
return startdate.getFullYear() + " to " + enddate.getFullYear();
}
AjaxSolr.dateFqToLabel = function (fqValue) {
var fqValue = fqValue.replace(/[\[\]\s]/g, "");
var start = fqValue.split('TO')[0];
return AjaxSolr.dateDatestampToLabel(start);
}
AjaxSolr.dateLabelToFq = function (displayValue) {
var years = displayValue.toLowerCase().split(' to ');
var format = 'yy-mm-dd';
var start = new Date(years[0], 1, 1, 0, 0, 0, 0);
var start_str = $.datepicker.formatDate(format, start) + 'T00:00:00Z';
var end = new Date(years[1], 11, 31, 23, 59, 59, 0);
var end_str = $.datepicker.formatDate(format, end) + 'T00:00:00Z';
return '[' + start_str + ' TO ' + end_str + ']';
}
AjaxSolr.DateGroupWidget = AjaxSolr.AbstractFacetWidget.extend({
afterRequest: function () {
if (this.manager.response.facet_counts.facet_fields[this.field] === undefined) {
$(this.target).html(AjaxSolr.theme('no_items_found'));
return;
}
var maxCount = 0;
var objectedItems = [];
for (var facet in this.manager.response.facet_counts.facet_dates[this.field]) {
var count = parseInt(this.manager.response.facet_counts.facet_dates[this.field][facet], 10);
// skip keys like 'gap','end','before'; skip empty ranges
if (!facet.match(/^\d/) || count == 0)
{
continue;
}
if (count > maxCount) {
maxCount = count;
}
var label = AjaxSolr.dateDatestampToLabel(facet);
objectedItems.push({ label: label, count: count });
}
objectedItems.sort(function (a, b) {
return parseInt(a.label.substr(0,4)) > parseInt(b.label.substr(0,4)) ? -1 : 1;
});
$(this.target).empty();
for (var i = 0, l = objectedItems.length; i < l; i++) {
var label = objectedItems[i].label;
$(this.target).append(AjaxSolr.theme('dategroup', label, objectedItems[i].count, this.clickHandler(label)));
}
},
fq: function (label, exclude) {
var fq_value = AjaxSolr.dateLabelToFq(label);
return (exclude ? '-' : '') + this.field + ':' + fq_value;
}
});
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment