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);