diff --git a/themes/bootstrap3/js/check_item_statuses.js b/themes/bootstrap3/js/check_item_statuses.js index 5d2b541017c2d7bbb4a8171c8482edc334ae2fb5..4b7c763f4476db76e42a1818a5b8ffa92c943de6 100644 --- a/themes/bootstrap3/js/check_item_statuses.js +++ b/themes/bootstrap3/js/check_item_statuses.js @@ -12,7 +12,7 @@ VuFind.register('itemStatuses', function ItemStatuses() { return callnumber; } function displayItemStatus(result, $item) { - $item.removeClass('js-item-pending'); + $item.addClass('js-item-done').removeClass('js-item-pending'); $item.find('.status').empty().append(result.availability_message); $item.find('.ajax-availability').removeClass('ajax-availability hidden'); if (typeof(result.error) != 'undefined' @@ -71,7 +71,6 @@ VuFind.register('itemStatuses', function ItemStatuses() { } } - var itemStatusObserver = null; var ItemStatusHandler = { name: "default", //array to hold IDs and elements @@ -99,7 +98,7 @@ VuFind.register('itemStatuses', function ItemStatuses() { $('.js-item-pending .callnumAndLocation').addClass('text-danger').empty().removeClass('hidden') .append(typeof response.responseJSON.data === 'string' ? response.responseJSON.data : VuFind.translate('error_occurred')); }, - itemQueueAjax: function itemQueueAjax(id, el){ + itemQueueAjax: function itemQueueAjax(id, el) { clearTimeout(this.itemStatusTimer); this.itemStatusIds.push(id); this.itemStatusEls[id] = el; @@ -110,7 +109,7 @@ VuFind.register('itemStatuses', function ItemStatuses() { el.find('.status').removeClass('hidden'); }, - runItemAjaxForQueue: function runItemAjaxForQueue(){ + runItemAjaxForQueue: function runItemAjaxForQueue() { if (this.itemStatusRunning) { this.itemStatusTimer = setTimeout(this.runItemAjaxForQueue.bind(this), this.itemStatusDelay); return; @@ -124,7 +123,7 @@ VuFind.register('itemStatuses', function ItemStatuses() { }) .done(this.checkItemStatusDone) .fail( this.itemStatusFail) - .always(function queueAjaxAlways(){ + .always(function queueAjaxAlways() { this.itemStatusRunning = false; }); }//end runItemAjax @@ -146,7 +145,7 @@ VuFind.register('itemStatuses', function ItemStatuses() { function checkItemStatus(el) { var $item = $(el); - if ($item.hasClass('js-item-pending')) { + if ($item.hasClass('js-item-pending') || $item.hasClass('js-item-done')) { return; } if ($item.find('.hiddenId').length === 0) { @@ -179,17 +178,16 @@ VuFind.register('itemStatuses', function ItemStatuses() { } checkItemHandlers[handlerName].itemQueueAjax(id, $(ajaxItems[i])); } - // Stop looking for a scroll loader - if (itemStatusObserver) { - itemStatusObserver.disconnect(); - } } - function init() { + function init(_container) { if (typeof Hunt === 'undefined') { - checkItemStatuses(); + checkItemStatuses(_container); } else { - itemStatusObserver = new Hunt( - $('.ajaxItem').toArray(), + var container = typeof _container === 'undefined' + ? document.body + : _container; + new Hunt( + $(container).find('.ajaxItem').toArray(), { enter: checkItemStatus } ); } diff --git a/themes/bootstrap3/js/combined-search.js b/themes/bootstrap3/js/combined-search.js index a78dc3ec79d1186c9f79f55d78b058ac892c8f15..e7f1ad913db75b264990a0acad55aaaa4fd13d2c 100644 --- a/themes/bootstrap3/js/combined-search.js +++ b/themes/bootstrap3/js/combined-search.js @@ -6,7 +6,7 @@ VuFind.combinedSearch = (function CombinedSearch() { container.hide(); } else { VuFind.openurl.init(container); - VuFind.itemStatuses.check(container); + VuFind.itemStatuses.init(container); checkSaveStatuses(container); } });