EBSCO Discovery module. Used on the library.upei.ca website. The bento box modules leverages the auth parts of this module.

199 lines
7.5 KiB

/**
* @file
* The EBSCO module javascript.
*
* Copyright [2017] [EBSCO Information Services]
*
* Licensed 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 ($) {
$(document).ready(function () {
var updatePublishDateSlider = function () {
var from = parseInt($('#DT1').val());
var min = 1000;
if (!from || from < min) {
from = min;
}
// and keep the max at 1 years from now
var max = (new Date()).getFullYear() + 1;
var to = max;
// update the slider with the new min/max/values
$('#ebsco-advanced-search-sliderDT1').slider('option', {
min: min, max: max, values: [from, to]
});
};
/**
* Self executing function
*/
var onLoad = function () {
// EBSCO/Search : Expand limiters
$('._more_limiters').live('click', function (event) {
$("#moreLimiters").hide();
$("#limitersHidden").removeClass("offscreen");
});
// Search : Collapse limiters
$('._less_limiters').live('click', function (event) {
$("#moreLimiters").show();
$("#limitersHidden").addClass("offscreen");
});
// EBSCO/Search : Collapse / expand facets
$('.expandable').live('click', function (event) {
var span = $(this).find('dt span'),
id = $(this).attr('id').replace('facet-','');
if (span.length > 0) {
if (span.hasClass('collapsed')) {
$('#narrowGroupHidden_' + id).show();
span.removeClass('collapsed');
span.addClass('expanded');
} else if (span.hasClass('expanded')) {
$('#narrowGroupHidden_' + id).hide();
span.removeClass('expanded');
span.addClass('collapsed');
}
} else if ($(this).attr('href')) {
var dl = $(this).parents('dl'),
id = dl.attr('id').replace('narrowGroupHidden_', ''),
span = $('#facet-' + id).find('dt span');
dl.hide();
span.removeClass('expanded');
span.addClass('collapsed');
}
});
// EBSCO/Search : Less facets
$('._less_facets').live('click', function (event) {
var id = $(this).attr('id').replace('less-facets-','');
var dl = $('#facet-' + id);
dl.trigger('click');
});
// Search : Ajax request the Record action
$('._record_link').live('click', function (event) {
var element = $(this);
var position = element.position();
event.preventDefault();
$('#spinner').show();
$("#spinner").offset({left:event.pageX - 18,top:event.pageY - 18});
$.get(element.attr('href'), function (data) {
$('#main').html(data);
$('#spinner').hide();
});
});
// Advanced Search : Add a new search term
$('._add_row').live('click', function (event) {
event.preventDefault();
var newSearch = $('#advanced-row-template').html();
var rows = $('._advanced-row');
if (rows) {
// Find the index of the next row
var index = rows.length - 1; // one row is the template itself, so don't count it
// Replace NN string with the index number
newSearch = newSearch.replace(/NN/g, index);
lastSearch = $('#edit-add-row');
lastSearch.before(newSearch);
}
});
// Advanced Search : Delete an advanced search row
$('._delete_row').live('click', function (event) {
event.preventDefault();
$(this).parents('._advanced-row').remove();
});
// Advanced Search : Reset the form fields to default values
$('.ebsco-advanced input[name="reset"]').live('click', function (event) {
event.preventDefault();
$('#ebsco-advanced-search-form').find('input, select').each(function (index) {
var type = this.type;
switch(type) {
case 'text':
$(this).val('');
break;
case 'checkbox':
$(this).attr('checked', '');
break;
case 'select-multiple':
$(this).children('option').each(function (index) {
$(this).attr('selected', '');
});
break;
case 'select-one':
$(this).children('option').each(function (index) {
$(this).attr('selected', '');
});
// for IE
$(this).children('option:first').attr('selected', 'selected');
break;
case 'radio':
$(this).attr('checked', '');
$(this).parent().siblings().first().children('input:first').attr('checked', 'checked');
break;
}
});
});
// Auto submit the seelct boxes with '_jump_menu' class
$('._jump_menu').live('change', function (event) {
var name = $(this).attr('id').replace('ebsco-', ''),
value = $(this).attr('value'),
url = $('#ebsco-sort-form').attr('action');
url += "&" + name + "=" + value;
window.location.href = url;
});
// Retain search filters checkbox functionality
$('#edit-remember').live('click', function (event) {
$("#ebsco-basic-search-form :input[type='checkbox'][name^='filter[']").attr('checked', $(this).attr('checked'));
});
// Advanced Search : handle 'Date Published from' limiter
// Create the UI slider (if slider function is defined)
if(typeof $("#ebsco-advanced-search-sliderDT1").slider == 'function') {
$('#ebsco-advanced-search-sliderDT1').slider({
range: true,
min: 0, max: 9999, values: [0, 9999],
slide: function (event, ui) {
$('#DT1').val(ui.values[0]);
if(ui.values[0] == 1000) {
$('#ebsco-advanced-search-limiterDT1').val('');
} else {
$('#ebsco-advanced-search-limiterDT1').val('addlimiter(DT1:' + ui.values[0] + '-1/2013-1)');
}
}
});
// initialize the slider with the original values
// in the text boxes
updatePublishDateSlider();
// when user enters values into the boxes
// the slider needs to be updated too
$('#DT1').change(function(){
updatePublishDateSlider();
});
}
}();
});
})(jQuery);