comparison client/digitallibrary/jquery/jquery.digilib.js @ 619:1035891fb6f1 jquery

Merge with HEAD
author robcast
date Mon, 17 Jan 2011 22:10:12 +0100
parents 8bdc9659ecfa 8b1e255b617c
children b930fa64c684
comparison
equal deleted inserted replaced
618:8bdc9659ecfa 619:1035891fb6f1
34 onclick : "javascript:zoomFullpage('width')", 34 onclick : "javascript:zoomFullpage('width')",
35 tooltip : "page width", 35 tooltip : "page width",
36 img : "pagewidth.png" 36 img : "pagewidth.png"
37 }, 37 },
38 back : { 38 back : {
39 onclick : "javascript:gotoPage('-1')", 39 onclick : ["gotoPage", "-1"],
40 tooltip : "goto previous image", 40 tooltip : "goto previous image",
41 img : "back.png" 41 img : "back.png"
42 }, 42 },
43 fwd : { 43 fwd : {
44 onclick : "javascript:gotoPage('+1')", 44 onclick : ["gotoPage", "+1"],
45 tooltip : "goto next image", 45 tooltip : "goto next image",
46 img : "fwd.png" 46 img : "fwd.png"
47 }, 47 },
48 page : { 48 page : {
49 onclick : "javascript:gotoPageWin()", 49 onclick : "javascript:gotoPageWin()",
54 onclick : "toggleBirdDiv", 54 onclick : "toggleBirdDiv",
55 tooltip : "show bird's eye view", 55 tooltip : "show bird's eye view",
56 img : "birds-eye.png" 56 img : "birds-eye.png"
57 }, 57 },
58 help : { 58 help : {
59 onclick : ["toggleAboutDiv", 0.2], 59 onclick : "toggleAboutDiv",
60 tooltip : "about Digilib", 60 tooltip : "about Digilib",
61 img : "help.png" 61 img : "help.png"
62 }, 62 },
63 reset : { 63 reset : {
64 onclick : "javascript:resetImage()", 64 onclick : "javascript:resetImage()",
243 return false; 243 return false;
244 }, 244 },
245 245
246 // event handler: toggles the visibility of the bird's eye window 246 // event handler: toggles the visibility of the bird's eye window
247 toggleBirdDiv : function () { 247 toggleBirdDiv : function () {
248 // xxx: red frame functionality still to be done! 248 // TODO: red frame functionality
249 var $elem = $(this); // the clicked button 249 var $elem = $(this); // the clicked button
250 var settings = $elem.data('digilib').settings; 250 var settings = $elem.data('digilib').settings;
251 var $root = settings.digilibRoot; 251 var $root = settings.digilibRoot;
252 var $bird = $root.find('div.birdview'); 252 var $bird = $root.find('div.birdview');
253 settings.isBirdDivVisible = !settings.isBirdDivVisible; 253 settings.isBirdDivVisible = !settings.isBirdDivVisible;
255 $bird.fadeIn(); 255 $bird.fadeIn();
256 } else { 256 } else {
257 $bird.fadeOut(); 257 $bird.fadeOut();
258 }; 258 };
259 return false; 259 return false;
260 },
261
262 // goto given page nr (+/-: relative)
263 gotoPage : function(pageNr, keepMarks) {
264 var $elem = $(this); // the clicked button
265 var settings = $elem.data('digilib').settings;
266 var oldpn = settings.pn;
267 var pn = setNumValue(settings, "pn", pageNr);
268 if (pn == null) return false; // nothing happened
269 if (pn < 1) {
270 alert("no such page (page number too low)");
271 settings.pn = oldpn;
272 return false;
273 };
274 if (settings.pt) {
275 if (pn > settings.pt) {
276 alert("no such page (page number too high)");
277 settings.pn = oldpn;
278 return false;
279 }
280 };
281 // TODO: keepMarks
282 var $root = settings.digilibRoot;
283 var $img = $root.find('img.pic');
284 display($img, settings);
285 return false;
260 } 286 }
261 }; 287 };
262 288
289 // sets a key to a value (relative values with +/- if relative=true)
290 var setNumValue = function(settings, key, value) {
291 // TODO: type and error checking
292 if (settings[key] == null) return null;
293 var sign = value.substring(0,1);
294 if (sign === '+' || sign === '-') {
295 settings[key] = parseFloat(settings[key]) + parseFloat(value);
296 } else {
297 settings[key] = value;
298 }
299 return settings[key];
300 };
301
263 // returns parameters from page url 302 // returns parameters from page url
264 var parseQueryParams = function() { 303 var parseQueryParams = function() {
265 return parseQueryString(location.search.slice(1)); 304 return parseQueryString(location.search.slice(1));
266 }; 305 };
267 306
324 var winW = $(window).width(); 363 var winW = $(window).width();
325 // TODO: account for borders? 364 // TODO: account for borders?
326 return geom.size(winW, winH); 365 return geom.size(winW, winH);
327 }; 366 };
328 367
368 // (re)load the img from a new scaler URL
369 var display = function ($img, settings) {
370 // TODO: update location.href (browser URL) in fullscreen mode
371 var scalerUrl = getScalerString(settings);
372 $img.attr('src', scalerUrl);
373 // TODO: update bird view?
374 };
375
329 // creates HTML structure for digilib in elem 376 // creates HTML structure for digilib in elem
330 var setupScalerDiv = function ($elem, settings) { 377 var setupScalerDiv = function ($elem, settings) {
331 var rewrite; 378 var $img;
332 if (settings.interactionMode === 'fullscreen') { 379 if (settings.interactionMode === 'fullscreen') {
333 // fullscreen 380 // fullscreen
334 var imgSize = getFullscreenImgSize($elem); 381 var imgSize = getFullscreenImgSize($elem);
335 settings.dw = imgSize.width; 382 settings.dw = imgSize.width;
336 settings.dh = imgSize.height; 383 settings.dh = imgSize.height;
337 $img = $('<img/>'); 384 $img = $('<img/>');
338 var scalerUrl = getScalerString(settings); 385 display($img, settings);
339 $img.attr('src', scalerUrl);
340 $img.addClass('pic');
341 } else { 386 } else {
342 // embedded mode -- try to keep img tag 387 // embedded mode -- try to keep img tag
343 var $img = $elem.find('img'); 388 $img = $elem.find('img');
344 if ($img.length > 0) { 389 if ($img.length > 0) {
345 console.debug("img detach:",$img); 390 console.debug("img detach:",$img);
346 $img.detach(); 391 $img.detach();
347 $img.addClass('picsi');
348 } else { 392 } else {
349 $img = $('<img/>'); 393 $img = $('<img/>');
350 var scalerUrl = getScalerString(settings); 394 display($img, settings);
351 $img.attr('src', scalerUrl);
352 $img.addClass('pic');
353 } 395 }
354 } 396 }
355 // create new html 397 // create new html
356 $elem.empty(); // TODO: should we keep stuff for customization? 398 $elem.empty(); // TODO: should we keep stuff for customization?
357 var $scaler = $('<div class="scaler"/>'); 399 var $scaler = $('<div class="scaler"/>');
358 $elem.append($scaler); 400 $elem.append($scaler);
359 $scaler.append($img); 401 $scaler.append($img);
402 $img.addClass('pic');
360 $img.load(scalerImgLoadedFn(settings)); 403 $img.load(scalerImgLoadedFn(settings));
361 }; 404 };
362 405
363 // creates HTML structure for buttons in elem 406 // creates HTML structure for buttons in elem
364 var setupButtons = function ($elem, settings, actionGroup) { 407 var setupButtons = function ($elem, settings, actionGroup) {