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;