Created
June 2, 2010 17:15
-
-
Save lbjay/422683 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (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); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (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