changeset 1221:e051fca597db

CLOSED - # 37: Regions/Markers are misplaced after "page width" https://it-dev.mpiwg-berlin.mpg.de/tracs/digilib/ticket/37
author robcast
date Wed, 09 Oct 2013 14:40:39 +0200
parents cde51f04895c
children 2bc0919fa42d
files webapp/src/main/webapp/jquery/jquery.digilib.arrows.js webapp/src/main/webapp/jquery/jquery.digilib.js
diffstat 2 files changed, 36 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.arrows.js	Tue Oct 01 12:27:12 2013 +0200
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.arrows.js	Wed Oct 09 14:40:39 2013 +0200
@@ -130,8 +130,7 @@
         data.currentInsets['arrows'] = getInsets(data);
         // install event handler
         $data.bind('setup', handleSetup);
-        $data.bind('update', handleUpdate);
-        // $data.bind('redisplay', handleRedisplay);
+        $data.bind('changeZoomArea', handleChangeZoomArea);
     };
 
     var handleSetup = function(evt) {
@@ -140,17 +139,17 @@
         setupZoomArrows(data);
     };
 
-    var handleUpdate = function(evt) {
-        console.debug("arrows: handleUpdate");
+    var handleChangeZoomArea = function(evt, newZa) {
+        console.debug("arrows: handleChangeZoomArea");
         var data = this;
-        renderZoomArrows(data);
+        renderZoomArrows(data, newZa);
     };
 
 
     /** 
      * returns insets for arrows (based on canMove and arrowSetSize
      */
-    var getInsets = function(data) {
+    var getInsets = function(data, za) {
         var settings = data.settings;
         var insets = {
             'x' : 0,
@@ -159,13 +158,13 @@
         if (settings.showZoomArrows) {
             var mode = settings.interactionMode;
             var bw = settings.buttonSettings[mode].arrowSetSize;
-            if (digilib.fn.canMove(data, 0, -1))
+            if (digilib.fn.canMove(data, 0, -1, za))
                 insets.y += bw;
-            if (digilib.fn.canMove(data, 0, 1))
+            if (digilib.fn.canMove(data, 0, 1, za))
                 insets.y += bw;
-            if (digilib.fn.canMove(data, -1, 0))
+            if (digilib.fn.canMove(data, -1, 0, za))
                 insets.x += bw;
-            if (digilib.fn.canMove(data, 1, 0))
+            if (digilib.fn.canMove(data, 1, 0, za))
                 insets.x += bw;
         }
         return insets;
@@ -250,11 +249,15 @@
     /**
      * show or hide arrows, called after scaler img is loaded.
      * 
+     * @param za New zoom area (optional)
      */
-    var renderZoomArrows = function(data) {
+    var renderZoomArrows = function(data, za) {
         var settings = data.settings;
         var arrows = data.arrows;
-        if (digilib.fn.isFullArea(data.zoomArea) || !settings.showZoomArrows) {
+        if (za == null) {
+            za = data.zoomArea;
+        }
+        if (digilib.fn.isFullArea(za) || !settings.showZoomArrows) {
             arrows.$up.hide();
             arrows.$down.hide();
             arrows.$left.hide();
@@ -262,28 +265,28 @@
             data.currentInsets['arrows'] = {'x' : 0, 'y' : 0};
             return;
         }
-        if (digilib.fn.canMove(data, 0, -1)) {
+        if (digilib.fn.canMove(data, 0, -1, za)) {
             arrows.$up.show();
         } else {
             arrows.$up.hide();
         }
-        if (digilib.fn.canMove(data, 0, 1)) {
+        if (digilib.fn.canMove(data, 0, 1, za)) {
             arrows.$down.show();
         } else {
             arrows.$down.hide();
         }
-        if (digilib.fn.canMove(data, -1, 0)) {
+        if (digilib.fn.canMove(data, -1, 0, za)) {
             arrows.$left.show();
         } else {
             arrows.$left.hide();
         }
-        if (digilib.fn.canMove(data, 1, 0)) {
+        if (digilib.fn.canMove(data, 1, 0, za)) {
             arrows.$right.show();
         } else {
             arrows.$right.hide();
         }
         // adjust insets
-        data.currentInsets['arrows'] = getInsets(data);
+        data.currentInsets['arrows'] = getInsets(data, za);
     };
 
     // plugin object with name and init
--- a/webapp/src/main/webapp/jquery/jquery.digilib.js	Tue Oct 01 12:27:12 2013 +0200
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.js	Wed Oct 09 14:40:39 2013 +0200
@@ -38,11 +38,14 @@
     var customConsole = false; // set to true if debugging for MS IE
 }
 
-(function($) {
+(/**
+ * @param $
+ */
+function($) {
 
     var defaults = {
         // version of this script
-        'version' : 'jquery.digilib.js 2.2.1',
+        'version' : 'jquery.digilib.js 2.2.2',
         // logo url
         'logoUrl' : 'img/digilib-logo-text1.png',
         // homepage url (behind logo)
@@ -379,8 +382,7 @@
          * @param mode
          */
         zoomFull : function (data, mode) {
-            var settings = data.settings;
-            data.zoomArea = FULL_AREA.copy();
+            setZoomArea(data, FULL_AREA.copy());
             setFitMode(data, mode);
             // zoom full only works in screen mode
             setScaleMode(data, 'screen');
@@ -1607,12 +1609,18 @@
         return border/2;
     };
 
-    /** return if the current zoomarea can be moved further.
+    /** 
+     * Return if the current zoomarea can be moved further in a given direction.
      * 
+     * @param data
+     * @param movx Move in x-direction
+     * @param movy Move in y-direction
+     * @param za New zoom area (optional, default current zoom area)
      */
-    var canMove = function(data, movx, movy) {
-
-        var za = data.zoomArea;
+    var canMove = function(data, movx, movy, za) {
+        if (za == null) {
+            za = data.zoomArea;
+        }
         if (isFullArea(za)) return false;
         var dx = movx;
         var dy = movy;