Mercurial > hg > digilib
changeset 1609:3f3a4f4eecb1
new "newpage" event when using next/prev page. clears marks, regions and annotations.
author | robcast |
---|---|
date | Wed, 08 Mar 2017 13:12:01 +0100 |
parents | ee7793447172 |
children | f425f00bf5e3 4018355cb442 5418b39dd49f |
files | webapp/src/main/webapp/jquery/jquery.digilib.annotator.js webapp/src/main/webapp/jquery/jquery.digilib.js webapp/src/main/webapp/jquery/jquery.digilib.marks.js webapp/src/main/webapp/jquery/jquery.digilib.regions.js |
diffstat | 4 files changed, 54 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.annotator.js Mon Mar 06 21:01:52 2017 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.annotator.js Wed Mar 08 13:12:01 2017 +0100 @@ -24,14 +24,15 @@ /** * digilib plugin for annotations. * - * Currently supported are point-like annotations (like marks) and rectangular region annotations. + * Currently supported are point-like (like marks), rectangular region-like, polygon, + * and polyline annotations. * * Annotations are displayed using code from the Annotator (http://annotatorjs.org) project * and stored on a Annotator-API compatible server. */ (function($) { // version of this plugin - var version = 'jquery.digilib.annotator.js 1.3.6'; + var version = 'jquery.digilib.annotator.js 1.3.7'; // affine geometry var geom = null; @@ -196,7 +197,6 @@ console.error("Sorry, currently only interactive annotations!"); } } - }; /** @@ -648,7 +648,16 @@ } }; + var handleNewpage = function (evt) { + console.debug("annotations: handle newpage"); + var data = this; + // new page, new annotations + // TODO: best way to reset? + data.annotations = []; + handleSetup.apply(data); + }; + var defaults = { // are annotations active? 'isAnnotationsVisible' : true, @@ -769,6 +778,7 @@ // install event handler $data.on('setup', handleSetup); $data.on('update', handleUpdate); + $data.on('newpage', handleNewpage); //$data.on('annotationClick', handleAnnotationClick); };
--- a/webapp/src/main/webapp/jquery/jquery.digilib.js Mon Mar 06 21:01:52 2017 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.js Wed Mar 08 13:12:01 2017 +0100 @@ -45,7 +45,7 @@ var defaults = { // version of this script - 'version' : 'jquery.digilib.js 2.5.2b', + 'version' : 'jquery.digilib.js 2.5.3a', // logo url 'logoUrl' : 'img/digilib-logo-text1.png', // homepage url (behind logo) @@ -245,9 +245,12 @@ elemSettings.scalerBaseUrl = elemSettings.digilibBaseUrl + '/servlet/Scaler'; } } - // set up event handlers + /* + * set up event handlers + */ $(data).on('update', handleUpdate); // handleUpdate needs to be the first handler for update $(data).on('changeZoomArea', handleChangeZoomArea); + $(data).on('newpage', handleNewpage); // initialise plugins for (n in plugins) { var p = plugins[n]; @@ -388,11 +391,8 @@ return false; } } - // reset mk and others - // TODO: should be event - data.marks = []; - data.imgInfo = null; - data.zoomArea = FULL_AREA.copy(); + // send newpage event (plugins can remove marks etc.) + $(data).trigger('newpage'); // then reload redisplay(data); }, @@ -1349,13 +1349,27 @@ }; }; + /** + * handle image load error event + */ var handleScalerImgError = function (data, evt, a, b) { console.error("error loading scaler image:", evt); + // trigger event for plugins $(data).trigger('imgerror'); }; + + /** + * handle newpage event + */ + var handleNewpage = function (data) { + console.debug("handle newpage"); + // reset local page settings + data.imgInfo = null; + data.zoomArea = FULL_AREA.copy(); + }; - /** handle imageInfo loaded event - * + /** + * handle imageInfo loaded event */ var handleImageInfo = function (evt, json) { console.debug("handleImageInfo:", json);
--- a/webapp/src/main/webapp/jquery/jquery.digilib.marks.js Mon Mar 06 21:01:52 2017 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.marks.js Wed Mar 08 13:12:01 2017 +0100 @@ -98,6 +98,7 @@ $data.on('update', handleUpdate); $data.on('pack', handlePack); $data.on('unpack', handleUnpack); + $data.on('newpage', handleNewpage); }; var handleUpdate = function(evt) { @@ -107,6 +108,13 @@ renderMarks(data); } }; + + var handleNewpage = function (evt) { + console.debug("marks: handle newpage"); + var data = this; + // new page, new marks + data.marks = []; + }; /** * unpack mk parameter into marks array
--- a/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Mon Mar 06 21:01:52 2017 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Wed Mar 08 13:12:01 2017 +0100 @@ -756,6 +756,15 @@ } }; + var handleNewpage = function (evt) { + console.debug("regions: handle newpage"); + var data = this; + // new page, new regions + // TODO: best way to reset? + data.settings.rg = null; + actions.removeAllUserRegions(data); + }; + // event handler, sets buttons and shows regions when scaler img is reloaded var handleUpdate = function (evt) { var data = this; @@ -812,6 +821,7 @@ $data.on('update', handleUpdate); $data.on('newRegion', handleNewRegion); $data.on('regionClick', handleRegionClick); + $data.on('newpage', handleNewpage); // default: autoZoom to region, when clicked if (settings.autoZoomOnClick && settings.onClickRegion == null) { settings.onClickRegion = zoomToRegion;