blob: 607194c2dbf9ddafcb2665ace0ba6ec0cbd2cfe3 [file] [log] [blame]
/*
* 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.CurrentSearchWidget = AjaxSolr.AbstractWidget.extend({
start: 0,
afterRequest: function () {
var self = this;
var links = [];
var q = this.manager.store.get('q').val();
if (q != '*:*') {
links.push($('<a href="#"></a>').text('(x) ' + q).click(function () {
self.manager.store.get('q').val('*:*');
self.doRequest();
return false;
}));
}
var fq = this.manager.store.values('fq');
for (var i = 0, l = fq.length; i < l; i++) {
if (fq[i].match(/[\[\{]\S+ TO \S+[\]\}]/)) {
var field = fq[i].match(/^\w+:/)[0];
var value = fq[i].substr(field.length + 1, 10);
links.push($('<a href="#"></a>').text('(x) ' + field + value).click(self.removeFacet(fq[i])));
}
else {
links.push($('<a href="#"></a>').text('(x) ' + fq[i]).click(self.removeFacet(fq[i])));
}
}
if (links.length > 1) {
links.unshift($('<a href="#"></a>').text('remove all').click(function () {
self.manager.store.get('q').val('*:*');
self.manager.store.remove('fq');
self.doRequest();
return false;
}));
}
if (links.length) {
var $target = $(this.target);
$target.empty();
for (var i = 0, l = links.length; i < l; i++) {
$target.append($('<li></li>').append(links[i]));
}
}
else {
$(this.target).html('<li>Viewing all documents!</li>');
}
},
removeFacet: function (facet) {
var self = this;
return function () {
if (self.manager.store.removeByValue('fq', facet)) {
self.doRequest();
}
return false;
};
}
});
})(jQuery);
}));