Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 779:62c3b902f878 jquery
better width calculation for scaler div
author | hertzhaft |
---|---|
date | Sun, 13 Feb 2011 16:16:42 +0100 |
parents | f8235c42f4a0 |
children | a34686e7c151 |
comparison
equal
deleted
inserted
replaced
778:f8235c42f4a0 | 779:62c3b902f878 |
---|---|
30 var console = { | 30 var console = { |
31 log : function(){}, | 31 log : function(){}, |
32 debug : function(){}, | 32 debug : function(){}, |
33 error : function(){} | 33 error : function(){} |
34 }; | 34 }; |
35 var customConsole = true; | 35 var customConsole = false; // set to true if debugging for MS IE |
36 } | 36 } |
37 | 37 |
38 (function($) { | 38 (function($) { |
39 var buttons = { | 39 var buttons = { |
40 reference : { | 40 reference : { |
246 'birdDivParams' : ['fn','pn','dw','dh'], | 246 'birdDivParams' : ['fn','pn','dw','dh'], |
247 // is the "about" window shown? | 247 // is the "about" window shown? |
248 'isAboutDivVisible' : false, | 248 'isAboutDivVisible' : false, |
249 // maximum width of background image for drag-scroll | 249 // maximum width of background image for drag-scroll |
250 'maxBgSize' : 10000, | 250 'maxBgSize' : 10000, |
251 // space to be left free in full page display | 251 // space to be left free in full page display, default value is for scrollbar |
252 'scalerInset' : 0, | 252 'scalerInset' : 10, |
253 }; | 253 }; |
254 | 254 |
255 // affine geometry classes | 255 // affine geometry classes |
256 var geom = dlGeometry(); | 256 var geom = dlGeometry(); |
257 | 257 |
342 } | 342 } |
343 // get image info from server if needed | 343 // get image info from server if needed |
344 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') { | 344 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') { |
345 loadImageInfo(data, updateDisplay); // updateDisplay(data) on completion | 345 loadImageInfo(data, updateDisplay); // updateDisplay(data) on completion |
346 } | 346 } |
347 // create HTML structure for scaler | 347 // create buttons before scaler |
348 setupScalerDiv(data); | |
349 // add buttons | |
350 for (var i = 0; i < elemSettings.visibleButtonSets; ++i) { | 348 for (var i = 0; i < elemSettings.visibleButtonSets; ++i) { |
351 showButtons(data, true, i); | 349 showButtons(data, true, i); |
352 } | 350 } |
351 // create HTML structure for scaler, taking width of buttons div into account | |
352 setupScalerDiv(data); | |
353 highlightButtons(data); | 353 highlightButtons(data); |
354 // bird's eye view creation | 354 // bird's eye view creation |
355 if (elemSettings.isBirdDivVisible) { | 355 if (elemSettings.isBirdDivVisible) { |
356 setupBirdDiv(data); | 356 setupBirdDiv(data); |
357 data.$birdDiv.show(); | 357 data.$birdDiv.show(); |
907 | 907 |
908 // returns maximum size for scaler img in fullscreen mode | 908 // returns maximum size for scaler img in fullscreen mode |
909 var getFullscreenImgSize = function (data) { | 909 var getFullscreenImgSize = function (data) { |
910 var $win = $(window); | 910 var $win = $(window); |
911 var winH = $win.height(); | 911 var winH = $win.height(); |
912 var winW = $win.width() - data.settings.scalerInset; | 912 var winW = $win.width(); |
913 // TODO: account for borders? | 913 var $body = $('body'); |
914 console.debug(winW, winH); | 914 // include standard body margin |
915 return geom.size(winW, winH); | 915 var bodyB = $body.outerWidth(true) - $body.width(); |
916 // get width of first button div | |
917 var buttonsW = 0; | |
918 if (data.$buttonSets) { | |
919 buttonsW = data.$buttonSets[0].outerWidth(); | |
920 } | |
921 // account for left/right border, body margins and additional requirements | |
922 var calcW = winW - bodyB - buttonsW - data.settings.scalerInset; | |
923 console.debug(winW, winH, 'winW:', $win.width(), 'bodyBorder:', bodyB, 'buttonsW:', buttonsW, 'calc:', calcW); | |
924 return geom.size(calcW, winH); | |
916 }; | 925 }; |
917 | 926 |
918 // creates HTML structure for digilib in elem | 927 // creates HTML structure for digilib in elem |
919 var setupScalerDiv = function (data) { | 928 var setupScalerDiv = function (data) { |
920 var settings = data.settings; | 929 var settings = data.settings; |
950 } | 959 } |
951 } else { | 960 } else { |
952 $img = $('<img/>'); | 961 $img = $('<img/>'); |
953 } | 962 } |
954 } | 963 } |
955 // create new html | 964 // create new inner html, keep buttons |
956 $elem.empty(); // TODO: should we keep stuff for customization? | 965 $elem.contents(":not(div.buttons)").remove(); |
957 var $scaler = $('<div class="scaler"/>'); | 966 var $scaler = $('<div class="scaler"/>'); |
958 $elem.append($scaler); | 967 // scaler should be the first child element? |
968 $elem.prepend($scaler); | |
959 $scaler.append($img); | 969 $scaler.append($img); |
960 $img.addClass('pic'); | 970 $img.addClass('pic'); |
961 data.$scaler = $scaler; | 971 data.$scaler = $scaler; |
962 data.$img = $img; | 972 data.$img = $img; |
963 // setup image load handler before setting the src attribute (IE bug) | 973 // setup image load handler before setting the src attribute (IE bug) |
1125 $set = createButtons(data, setIdx); | 1135 $set = createButtons(data, setIdx); |
1126 } | 1136 } |
1127 if ($set == null) return false; | 1137 if ($set == null) return false; |
1128 // include border in calculation | 1138 // include border in calculation |
1129 var btnWidth = $set.outerWidth(); | 1139 var btnWidth = $set.outerWidth(); |
1140 // console.debug("btnWidth", btnWidth); | |
1130 // move remaining sets left and show new set | 1141 // move remaining sets left and show new set |
1131 if ($otherSets.length > 0) { | 1142 if ($otherSets.length > 0) { |
1132 $otherSets.animate({right : '+='+btnWidth+'px'}, atime, | 1143 $otherSets.animate({right : '+='+btnWidth+'px'}, atime, |
1133 function () {$set.show();}); | 1144 function () {$set.show();}); |
1134 } else { | 1145 } else { |
1136 } | 1147 } |
1137 } else { | 1148 } else { |
1138 // remove set | 1149 // remove set |
1139 var $set = data.$buttonSets[setIdx]; | 1150 var $set = data.$buttonSets[setIdx]; |
1140 if ($set == null) return false; | 1151 if ($set == null) return false; |
1141 var btnWidth = $set.width(); | 1152 var btnWidth = $set.outerWidth(); |
1142 // hide last set | 1153 // hide last set |
1143 $set.hide(); | 1154 $set.hide(); |
1144 // take remaining sets and move right | 1155 // take remaining sets and move right |
1145 var $otherSets = data.$elem.find('div.buttons:visible'); | 1156 var $otherSets = data.$elem.find('div.buttons:visible'); |
1146 $otherSets.animate({right : '-='+btnWidth+'px'}, atime); | 1157 $otherSets.animate({right : '-='+btnWidth+'px'}, atime); |