| (function (callback) { |
| if (typeof define === 'function' && define.amd) { |
| define(['core/AbstractTextWidget'], callback); |
| } |
| else { |
| callback(); |
| } |
| }(function () { |
| |
| (function ($) { |
| |
| AjaxSolr.AutocompleteWidget = AjaxSolr.AbstractTextWidget.extend({ |
| afterRequest: function () { |
| $(this.target).find('input').unbind().removeData('events').val(''); |
| |
| var self = this; |
| |
| var list = []; |
| for (var i = 0; i < this.fields.length; i++) { |
| var field = this.fields[i]; |
| for (var facet in this.manager.response.facet_counts.facet_fields[field]) { |
| list.push({ |
| field: field, |
| value: facet, |
| label: facet + ' (' + this.manager.response.facet_counts.facet_fields[field][facet] + ') - ' + field |
| }); |
| } |
| } |
| |
| this.requestSent = false; |
| $(this.target).find('input').autocomplete('destroy').autocomplete({ |
| source: list, |
| select: function(event, ui) { |
| if (ui.item) { |
| self.requestSent = true; |
| if (self.manager.store.addByValue('fq', ui.item.field + ':' + AjaxSolr.Parameter.escapeValue(ui.item.value))) { |
| self.doRequest(); |
| } |
| } |
| } |
| }); |
| |
| // This has lower priority so that requestSent is set. |
| $(this.target).find('input').bind('keydown', function(e) { |
| if (self.requestSent === false && e.which == 13) { |
| var value = $(this).val(); |
| if (value && self.set(value)) { |
| self.doRequest(); |
| } |
| } |
| }); |
| } |
| }); |
| |
| })(jQuery); |
| |
| })); |