diff --git a/themes/bootstrap3/js/check_item_statuses.js b/themes/bootstrap3/js/check_item_statuses.js index 21089fd02f5049ee33d8b3e1c92152b21b280d1a..073bec70d12ca8d53f1a90455211efec6a2059d1 100644 --- a/themes/bootstrap3/js/check_item_statuses.js +++ b/themes/bootstrap3/js/check_item_statuses.js @@ -1,10 +1,23 @@ /*global VuFind */ -function checkItemStatuses() { - var id = $.map($('.ajaxItem'), function(i) { - return $(i).find('.hiddenId')[0].value; +function checkItemStatuses(container) { + if (typeof(container) == 'undefined') { + container = $('body'); + } + + var elements = {}; + var data = $.map(container.find('.ajaxItem'), function(record) { + if ($(record).find('.hiddenId').length == 0) { + return null; + } + var datum = $(record).find('.hiddenId').val(); + if (typeof elements[datum] === 'undefined') { + elements[datum] = $(); + } + elements[datum] = elements[datum].add($(record)); + return datum; }); - if (!id.length) { + if (!data.length) { return; } @@ -13,11 +26,15 @@ function checkItemStatuses() { dataType: 'json', method: 'POST', url: VuFind.path + '/AJAX/JSON?method=getItemStatuses', - data: {id:id} + data: {'id':data} }) .done(function(response) { $.each(response.data, function(i, result) { - var item = $($('.ajaxItem')[result.record_number]); + var item = elements[result.id]; + if (!item) { + console.log('Unexpected selector from getItemStatuses: ' + sel); + return; + } item.find('.status').empty().append(result.availability_message); if (typeof(result.full_status) != 'undefined' @@ -89,4 +106,4 @@ function checkItemStatuses() { $(document).ready(function() { checkItemStatuses(); -}); \ No newline at end of file +}); diff --git a/themes/bootstrap3/js/check_save_statuses.js b/themes/bootstrap3/js/check_save_statuses.js index 1ff432fbb676eec2c4ddb4c9c2ebe8ea6314e1e0..bb65b4c35bf91e5f9a16064d16cd6d8a6b46a8c4 100644 --- a/themes/bootstrap3/js/check_save_statuses.js +++ b/themes/bootstrap3/js/check_save_statuses.js @@ -1,13 +1,21 @@ /*global VuFind */ -function checkSaveStatuses() { - var elements = {} - var data = $.map($('.result,.record'), function(record) { - if($(record).find('.hiddenId').length == 0 || $(record).find('.hiddenSource').length == 0) { - return false; +function checkSaveStatuses(container) { + if (typeof(container) == 'undefined') { + container = $('body'); + } + + var elements = {}; + var data = $.map(container.find('.result,.record'), function(record) { + if ($(record).find('.hiddenId').length == 0 || $(record).find('.hiddenSource').length == 0) { + return null; } var datum = {'id':$(record).find('.hiddenId').val(), 'source':$(record).find('.hiddenSource')[0].value}; - elements[datum.source+"|"+datum.id] = $(record).find('.savedLists'); + var key = datum.source+'|'+datum.id; + if (typeof elements[key] === 'undefined') { + elements[key] = $(); + } + elements[key] = elements[key].add($(record).find('.savedLists')); return datum; }); if (data.length) { @@ -21,7 +29,7 @@ function checkSaveStatuses() { dataType: 'json', method: 'POST', url: VuFind.path + '/AJAX/JSON?method=getSaveStatuses', - data: {id:ids, 'source':srcs} + data: {'id':ids, 'source':srcs} }) .done(function(response) { for (var sel in response.data) { @@ -32,7 +40,7 @@ function checkSaveStatuses() { var html = list.find('strong')[0].outerHTML+'<ul>'; for (var i=0; i<response.data[sel].length; i++) { html += '<li><a href="' + response.data[sel][i].list_url + '">' - + htmlEncode(response.data[sel][i].list_title) + '</a></li>'; + + htmlEncode(response.data[sel][i].list_title) + '</a></li>'; } html += '</ul>'; list.html(html).removeClass('hidden');