Mercurial > hg > digilib
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;