Mercurial > hg > digilib
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) { |