# HG changeset patch # User robcast # Date 1488975121 -3600 # Node ID 3f3a4f4eecb15fa0731709de7e74c9d102f8cd52 # Parent ee7793447172f27baf993e9be896eea003414176 new "newpage" event when using next/prev page. clears marks, regions and annotations. diff -r ee7793447172 -r 3f3a4f4eecb1 webapp/src/main/webapp/jquery/jquery.digilib.annotator.js --- 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); }; diff -r ee7793447172 -r 3f3a4f4eecb1 webapp/src/main/webapp/jquery/jquery.digilib.js --- 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); diff -r ee7793447172 -r 3f3a4f4eecb1 webapp/src/main/webapp/jquery/jquery.digilib.marks.js --- 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 diff -r ee7793447172 -r 3f3a4f4eecb1 webapp/src/main/webapp/jquery/jquery.digilib.regions.js --- 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;