| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| (function (callback) { |
| if (typeof define === 'function' && define.amd) { |
| define(['core/AbstractWidget'], callback); |
| } |
| else { |
| callback(); |
| } |
| }(function () { |
| |
| (function ($) { |
| |
| AjaxSolr.ResultWidget = AjaxSolr.AbstractWidget.extend({ |
| start: 0, |
| |
| beforeRequest: function () { |
| $(this.target).html($('<img>').attr('src', 'images/ajax-loader.gif')); |
| }, |
| |
| facetLinks: function (facet_field, facet_values) { |
| var links = []; |
| if (facet_values) { |
| for (var i = 0, l = facet_values.length; i < l; i++) { |
| if (facet_values[i] !== undefined) { |
| links.push( |
| $('<a href="#"></a>') |
| .text(facet_values[i]) |
| .click(this.facetHandler(facet_field, facet_values[i])) |
| ); |
| } |
| else { |
| links.push('no items found in current selection'); |
| } |
| } |
| } |
| return links; |
| }, |
| |
| facetHandler: function (facet_field, facet_value) { |
| var self = this; |
| return function () { |
| self.manager.store.remove('fq'); |
| self.manager.store.addByValue('fq', facet_field + ':' + AjaxSolr.Parameter.escapeValue(facet_value)); |
| self.doRequest(0); |
| return false; |
| }; |
| }, |
| |
| afterRequest: function () { |
| $(this.target).empty(); |
| for (var i = 0, l = this.manager.response.response.docs.length; i < l; i++) { |
| var doc = this.manager.response.response.docs[i]; |
| $(this.target).append(this.template(doc)); |
| |
| var items = []; |
| items = items.concat(this.facetLinks('topics', doc.type)); |
| items = items.concat(this.facetLinks('sources', doc.source)); |
| //items = items.concat(this.facetLinks('users', doc.users)); |
| |
| var $links = $('#links_' + doc.id); |
| $links.empty(); |
| for (var j = 0, m = items.length; j < m; j++) { |
| $links.append($('<li></li>').append(items[j])); |
| } |
| } |
| }, |
| |
| template: function (doc) { |
| var snippet = ''; |
| if (doc.data.length > 300) { |
| snippet += doc.source + ' ' + doc.data.substring(0, 300); |
| snippet += '<span style="display:none;">' + doc.data.substring(300); |
| snippet += '</span> <a href="#" class="more">more</a>'; |
| } |
| else { |
| snippet += doc.source + ' ' + doc.data; |
| } |
| |
| var output = '<div><h2>' + doc.type + '</h2>'; |
| output += '<p id="links_' + doc.id + '" class="links"></p>'; |
| output += '<a href="log-viewer.html?type='+ doc.type + |
| '&source=' + doc.source + '&date='+ doc.date +'">Link</a>'; |
| output += '<p>' + snippet + '</p></div>'; |
| return output; |
| }, |
| |
| init: function () { |
| $(document).on('click', 'a.more', function () { |
| var $this = $(this), |
| span = $this.parent().find('span'); |
| |
| if (span.is(':visible')) { |
| span.hide(); |
| $this.text('more'); |
| } |
| else { |
| span.show(); |
| $this.text('less'); |
| } |
| |
| return false; |
| }); |
| } |
| }); |
| |
| })(jQuery); |
| |
| })); |