# HG changeset patch
# User robcast
# Date 1295298612 -3600
# Node ID f2ab7d4eedc2470ac785b02deb57f7ee10d78c07
# Parent 5f3564a21a9c198deac3e04a64563a4d9d6050cc# Parent 7d13b7e5140e0a3994c3b8280d7d61eb4c7762ea
Merge with HEAD
diff -r 5f3564a21a9c -r f2ab7d4eedc2 client/digitallibrary/jquery/jquery.digilib.js
--- a/client/digitallibrary/jquery/jquery.digilib.js Mon Jan 17 22:05:07 2011 +0100
+++ b/client/digitallibrary/jquery/jquery.digilib.js Mon Jan 17 22:10:12 2011 +0100
@@ -36,12 +36,12 @@
img : "pagewidth.png"
},
back : {
- onclick : "javascript:gotoPage('-1')",
+ onclick : ["gotoPage", "-1"],
tooltip : "goto previous image",
img : "back.png"
},
fwd : {
- onclick : "javascript:gotoPage('+1')",
+ onclick : ["gotoPage", "+1"],
tooltip : "goto next image",
img : "fwd.png"
},
@@ -56,7 +56,7 @@
img : "birds-eye.png"
},
help : {
- onclick : ["toggleAboutDiv", 0.2],
+ onclick : "toggleAboutDiv",
tooltip : "about Digilib",
img : "help.png"
},
@@ -245,7 +245,7 @@
// event handler: toggles the visibility of the bird's eye window
toggleBirdDiv : function () {
- // xxx: red frame functionality still to be done!
+ // TODO: red frame functionality
var $elem = $(this); // the clicked button
var settings = $elem.data('digilib').settings;
var $root = settings.digilibRoot;
@@ -257,9 +257,48 @@
$bird.fadeOut();
};
return false;
+ },
+
+ // goto given page nr (+/-: relative)
+ gotoPage : function(pageNr, keepMarks) {
+ var $elem = $(this); // the clicked button
+ var settings = $elem.data('digilib').settings;
+ var oldpn = settings.pn;
+ var pn = setNumValue(settings, "pn", pageNr);
+ if (pn == null) return false; // nothing happened
+ if (pn < 1) {
+ alert("no such page (page number too low)");
+ settings.pn = oldpn;
+ return false;
+ };
+ if (settings.pt) {
+ if (pn > settings.pt) {
+ alert("no such page (page number too high)");
+ settings.pn = oldpn;
+ return false;
+ }
+ };
+ // TODO: keepMarks
+ var $root = settings.digilibRoot;
+ var $img = $root.find('img.pic');
+ display($img, settings);
+ return false;
}
};
+ // sets a key to a value (relative values with +/- if relative=true)
+ var setNumValue = function(settings, key, value) {
+ // TODO: type and error checking
+ if (settings[key] == null) return null;
+ var sign = value.substring(0,1);
+ if (sign === '+' || sign === '-') {
+ settings[key] = parseFloat(settings[key]) + parseFloat(value);
+ } else {
+ settings[key] = value;
+ }
+ return settings[key];
+ };
+
// returns parameters from page url
var parseQueryParams = function() {
return parseQueryString(location.search.slice(1));
@@ -326,30 +365,33 @@
return geom.size(winW, winH);
};
+ // (re)load the img from a new scaler URL
+ var display = function ($img, settings) {
+ // TODO: update location.href (browser URL) in fullscreen mode
+ var scalerUrl = getScalerString(settings);
+ $img.attr('src', scalerUrl);
+ // TODO: update bird view?
+ };
+
// creates HTML structure for digilib in elem
var setupScalerDiv = function ($elem, settings) {
- var rewrite;
+ var $img;
if (settings.interactionMode === 'fullscreen') {
// fullscreen
var imgSize = getFullscreenImgSize($elem);
settings.dw = imgSize.width;
settings.dh = imgSize.height;
$img = $('');
- var scalerUrl = getScalerString(settings);
- $img.attr('src', scalerUrl);
- $img.addClass('pic');
+ display($img, settings);
} else {
// embedded mode -- try to keep img tag
- var $img = $elem.find('img');
+ $img = $elem.find('img');
if ($img.length > 0) {
console.debug("img detach:",$img);
$img.detach();
- $img.addClass('picsi');
} else {
$img = $('
');
- var scalerUrl = getScalerString(settings);
- $img.attr('src', scalerUrl);
- $img.addClass('pic');
+ display($img, settings);
}
}
// create new html
@@ -357,6 +399,7 @@
var $scaler = $('