diff --git a/themes/blueprint/js/preview.js b/themes/blueprint/js/preview.js index bec9425d2ca484210ab60c2d91ce8b5453d858ab..9853c6f68fa04958cc12470cce06a3e6e7087447 100644 --- a/themes/blueprint/js/preview.js +++ b/themes/blueprint/js/preview.js @@ -1,49 +1,3 @@ -function getBookPreviews() { - var skeys = ''; - $('.previewBibkeys').each(function(){ - skeys += $(this).attr('class'); - }); - skeys = skeys.replace(/previewBibkeys/g, '').replace(/^\s+|\s+$/g, ''); - var bibkeys = skeys.split(/\s+/); - var script; - - // fetch Google preview if enabled - if ($('.previewGBS').length > 0) { - // checks if query string might break URI limit - if not, run as normal - if (bibkeys.length <= 150){ - script = 'https://encrypted.google.com/books?jscmd=viewapi&bibkeys=' - + bibkeys.join(',') + '&callback=processGBSBookInfo'; - $.getScript(script); - } else { - // if so, break request into chunks of 100 - var keyString = ''; - // loop through array - for (var i=0; i < bibkeys.length; i++){ - keyString += bibkeys[i] + ','; - // send request when there are 100 requests ready or when there are no - // more elements to be sent - if ((i > 0 && i % 100 == 0) || i == bibkeys.length-1) { - script = 'https://encrypted.google.com/books?jscmd=viewapi&bibkeys=' - + keyString + '&callback=processGBSBookInfo'; - $.getScript(script); - keyString = ''; - } - } - } - } - - // fetch OpenLibrary preview if enabled - if ($('.previewOL').length > 0) { - script = 'http://openlibrary.org/api/books?bibkeys=' - + bibkeys.join(',') + '&callback=processOLBookInfo'; - $.getScript(script); - } - - // fetch HathiTrust preview if enabled - if ($('.previewHT').length > 0) { - getHTPreviews(skeys); - } -} // functions to get rights codes for previews function getHathiOptions() { HathiOptions = $('[class*="hathiPreviewDiv"]').attr("class").split('__')[1].split(','); @@ -65,7 +19,7 @@ function getHTPreviews(skeys) { // since hathitrust only allows 20 at a time // as per http://vufind.org/jira/browse/VUFIND-317 var batch = []; - for(i = 0; i < bibkeys.length; i++) { + for(var i = 0; i < bibkeys.length; i++) { batch.push(bibkeys[i]); if ((i > 0 && i % 20 == 0) || i == bibkeys.length-1) { var script = 'http://catalog.hathitrust.org/api/volumes/brief/json/' @@ -76,6 +30,21 @@ function getHTPreviews(skeys) { } } +function processBookInfo(booksInfo, previewClass) { + // assign the correct rights string depending on source + var viewOptions = (previewClass == 'previewGBS') + ? getGoogleOptions() : getOLOptions(); + for (var bibkey in booksInfo) { + var bookInfo = booksInfo[bibkey]; + if (bookInfo) { + if (viewOptions.indexOf(bookInfo.preview)>= 0) { + var $link = $('.' + previewClass + '.' + bibkey); + $link.attr('href', bookInfo.preview_url).show(); + } + } + } +} + function processGBSBookInfo(booksInfo) { processBookInfo(booksInfo, 'previewGBS'); } @@ -85,7 +54,7 @@ function processOLBookInfo(booksInfo) { } function processHTBookInfo(booksInfo) { - for (b in booksInfo) { + for (var b in booksInfo) { var bibkey = b.replace(/:/, '').toUpperCase(); var $link = $('.previewHT.' + bibkey); var items = booksInfo[b].items; @@ -98,23 +67,6 @@ function processHTBookInfo(booksInfo) { } } -function processBookInfo(booksInfo, previewClass) { - // assign the correct rights string depending on source - if (previewClass == 'previewGBS') { - var viewOptions = getGoogleOptions(); - } else { - var viewOptions = getOLOptions(); - } - for (bibkey in booksInfo) { - var bookInfo = booksInfo[bibkey]; - if (bookInfo) { - if (viewOptions.indexOf(bookInfo.preview)>= 0) { - $link = $('.' + previewClass + '.' + bibkey); - $link.attr('href', bookInfo.preview_url).show(); - } - } - } -} /** * Array.indexOf is not universally supported * We need to set it for users who don't have it. @@ -128,7 +80,9 @@ function setIndexOf() { throw new TypeError(); } var t = Object(this); + /*jslint bitwise: true*/ var len = t.length >>> 0; + /*jslint bitwise: false*/ if (len === 0) { return -1; } @@ -154,6 +108,53 @@ function setIndexOf() { } } +function getBookPreviews() { + var skeys = ''; + $('.previewBibkeys').each(function(){ + skeys += $(this).attr('class'); + }); + skeys = skeys.replace(/previewBibkeys/g, '').replace(/^\s+|\s+$/g, ''); + var bibkeys = skeys.split(/\s+/); + var script; + + // fetch Google preview if enabled + if ($('.previewGBS').length > 0) { + // checks if query string might break URI limit - if not, run as normal + if (bibkeys.length <= 150){ + script = 'https://encrypted.google.com/books?jscmd=viewapi&bibkeys=' + + bibkeys.join(',') + '&callback=processGBSBookInfo'; + $.getScript(script); + } else { + // if so, break request into chunks of 100 + var keyString = ''; + // loop through array + for (var i=0; i < bibkeys.length; i++){ + keyString += bibkeys[i] + ','; + // send request when there are 100 requests ready or when there are no + // more elements to be sent + if ((i > 0 && i % 100 == 0) || i == bibkeys.length-1) { + script = 'https://encrypted.google.com/books?jscmd=viewapi&bibkeys=' + + keyString + '&callback=processGBSBookInfo'; + $.getScript(script); + keyString = ''; + } + } + } + } + + // fetch OpenLibrary preview if enabled + if ($('.previewOL').length > 0) { + script = 'http://openlibrary.org/api/books?bibkeys=' + + bibkeys.join(',') + '&callback=processOLBookInfo'; + $.getScript(script); + } + + // fetch HathiTrust preview if enabled + if ($('.previewHT').length > 0) { + getHTPreviews(skeys); + } +} + $(document).ready(function() { if (!Array.prototype.indexOf) { setIndexOf();