Mercurial > hg > digilib
changeset 1485:0831d73ce747
sequence plugin: show images according to inline listing
author | hertzhaft |
---|---|
date | Fri, 26 Feb 2016 15:12:13 +0100 |
parents | 197d63ff30aa |
children | c88c1d45e808 |
files | webapp/src/main/webapp/jquery/jquery.digilib.sequence.js |
diffstat | 1 files changed, 43 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.sequence.js Thu Feb 25 18:26:48 2016 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.sequence.js Fri Feb 26 15:12:13 2016 +0100 @@ -47,48 +47,66 @@ 'imageSequence' : null, // optional prefix for image file names 'imageSequenceBase' : null, + // contains the HTML to be shown as caption + 'imageSequenceCaption' : null, // show captions for sequential images? 'imageSequenceShowCaptions' : false }; + var hasSequence = function(settings) { + return settings.imageSequence != null; + }; + var actions = { // replaces digilib.fn.gotoPage (monkey patch) gotoPage : function (data, pageNr) { var settings = data.settings; - settings.suppressParamNames = ['pt', 'fn']; - // settings.fn = 'numbers'; - // settings.pt = '10'; - var oldpn = settings.pn; + var currentPn = settings.pn; + if (hasSequence(settings)) { + settings.pt = settings.imageSequence.length; + } if (pageNr == null) { - pageNr = window.prompt("Goto image at index", oldpn); - } + pageNr = window.prompt("Goto image at index", currentPn); + } if (pageNr == '-0') { pageNr = settings.pt; - } + } var pn = fn.setNumValue(settings, "pn", pageNr); if (pn == null) return false; // nothing happened if (pn < 1) { alert("no such image (index number too low)"); - settings.pn = oldpn; + settings.pn = currentPn; return false; } - // TODO: how do we get pt? + // set fn and pn parameters if (settings.pt != null) { if (pn > settings.pt) { alert("no such image (index number too high)"); - settings.pn = oldpn; + settings.pn = currentPn; return false; } + settings.pn = pn; + setSequenceFn(settings); } // reset mk and others(?) data.marks = []; data.zoomArea = FULL_AREA.copy(); // then reload - console.error("fn", settings.fn, "pn", settings.pn); fn.redisplay(data); } }; + // set the fn parameter for the current page index number + var setSequenceFn = function(settings) { + var pn = settings.pn; + if (hasSequence(settings)) { + settings.fn = settings.imageSequenceBase == null + ? settings.imageSequence[pn-1].fn + : settings.imageSequenceBase + '/' + settings.imageSequence[pn-1].fn; + } + return settings.fn + }; + // plugin installation routine, called by digilib on each plugin object. var install = function(plugin) { digilib = plugin; @@ -110,12 +128,24 @@ // monkey patch for the original action in jquery.digilib.js digilib.fn.gotoPage = actions.gotoPage; // install event handlers + $data.bind('unpack', handleUnpack); $data.bind('setup', handleSetup); $data.bind('update', handleUpdate); $data.bind('redisplay', handleRedisplay); $data.bind('dragZoom', handleDragZoom); }; + // set parameters for the first image to show + var handleUnpack = function (evt) { + var data = this; + var settings = data.settings; + if (settings.pn == null) { + settings.pn = '1'; + } + setSequenceFn(settings); + // console.warn("fn", settings.fn, "pn", settings.pn); + settings.suppressParamNames = ['pt', 'fn']; + }; var handleSetup = function (evt) { console.debug("sequence: handleSetup"); @@ -128,8 +158,9 @@ }; var handleRedisplay = function (evt) { - console.debug("sequence: handleRedisplay"); var data = this; + var settings = data.settings; + // console.warn("fn", settings.fn, "pn", settings.pn); }; var handleDragZoom = function (evt, zoomArea) {