Mercurial > hg > digilib
changeset 1487:684632a23c80
sequence plugin: load dirInfo if no sequence is given
author | hertzhaft |
---|---|
date | Fri, 26 Feb 2016 17:44:52 +0100 |
parents | c88c1d45e808 |
children | 49a5b1e73098 |
files | webapp/src/main/webapp/jquery/jquery.digilib.sequence.js |
diffstat | 1 files changed, 52 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.sequence.js Fri Feb 26 16:58:51 2016 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.sequence.js Fri Feb 26 17:44:52 2016 +0100 @@ -53,10 +53,6 @@ 'imageSequenceShowCaptions' : false }; - var hasSequence = function(settings) { - return settings.imageSequence != null; - }; - var actions = { // replaces digilib.fn.gotoPage (monkey patch) gotoPage : function (data, pageNr) { @@ -65,6 +61,9 @@ if (hasSequence(settings)) { settings.pt = settings.imageSequence.length; } + else if (hasDirInfo(data)) { + settings.pt = data.dirInfo.files.length; + } if (pageNr == null) { pageNr = window.prompt("Goto image at index", currentPn); } @@ -78,7 +77,7 @@ settings.pn = currentPn; return false; } - // set fn and pn parameters + // set pn and fn parameters if (settings.pt != null) { if (pn > settings.pt) { alert("no such image (index number too high)"); @@ -86,7 +85,9 @@ return false; } settings.pn = pn; - setSequenceFn(settings); + if (hasSequence(settings)) { + setSequenceFn(settings); + } } // reset mk and others(?) data.marks = []; @@ -96,17 +97,42 @@ } }; + // is a special image sequence defined? + var hasSequence = function(settings) { + return settings.imageSequence != null; + }; + + // are dirinfo json data available? + var hasDirInfo = function(data) { + return data.dirInfo != null; + }; + // 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; - } + settings.fn = settings.imageSequenceBase == null + ? settings.imageSequence[pn-1].fn + : settings.imageSequenceBase + '/' + settings.imageSequence[pn-1].fn; return settings.fn }; + // get json data for current fn directory + var loadDirInfo = function (data) { + var settings = data.settings; + // bind default function (only once) + $(data).off('dirInfo', handleDirInfo); + $(data).on('dirInfo', handleDirInfo); + var url = settings.digilibBaseUrl + '/api/dirInfo-json.jsp'; + url += '?' + fn.getParamString(settings, ['fn'], defaults); + // TODO: better error handling + $.getJSON(url, function (json) { + console.debug("sequence: got json data=", json); + data.dirInfo = json; + // send event + $(data).trigger('dirInfo', [json]); + }); + }; + // plugin installation routine, called by digilib on each plugin object. var install = function(plugin) { digilib = plugin; @@ -132,19 +158,27 @@ $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'; + // an image sequence was defined in HTML + if (hasSequence(settings)) { + setSequenceFn(settings); + settings.suppressParamNames = ['pt', 'fn']; } - setSequenceFn(settings); + // get json info for the current directory + else { + loadDirInfo(data); + } // console.warn("fn", settings.fn, "pn", settings.pn); - settings.suppressParamNames = ['pt', 'fn']; + }; + + var handleDirInfo = function (evt) { + console.debug("sequence: handleDirInfo"); + var data = this; }; var handleSetup = function (evt) { @@ -158,15 +192,12 @@ }; var handleRedisplay = function (evt) { + console.debug("sequence: handleRedisplay"); var data = this; - var settings = data.settings; + // var settings = data.settings; // console.warn("fn", settings.fn, "pn", settings.pn); }; - var handleDragZoom = function (evt, zoomArea) { - var data = this; - }; - // plugin object, containing name, install and init routines // all shared objects are filled by digilib on registration var plugin = {