Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 748:fb4ffac2950d jquery
ugly workaround for IE7 image load handler bug
author | hertzhaft |
---|---|
date | Sun, 06 Feb 2011 18:25:41 +0100 |
parents | 5d3da97089bc |
children | 8452a485e0e7 |
comparison
equal
deleted
inserted
replaced
747:5d3da97089bc | 748:fb4ffac2950d |
---|---|
354 data.$birdDiv.show(); | 354 data.$birdDiv.show(); |
355 } | 355 } |
356 // about window creation - TODO: could be deferred? restrict to only one item? | 356 // about window creation - TODO: could be deferred? restrict to only one item? |
357 setupAboutDiv(data); | 357 setupAboutDiv(data); |
358 // drag zoom area around in scaler div | 358 // drag zoom area around in scaler div |
359 setupZoomDrag(data); | 359 // setupZoomDrag(data); // is done in scalerImgLoadedHandler() |
360 }); | 360 }); |
361 }, | 361 }, |
362 | 362 |
363 // destroy: clean up digilib | 363 // destroy: clean up digilib |
364 destroy : function(data) { | 364 destroy : function(data) { |
1141 }; | 1141 }; |
1142 | 1142 |
1143 // returns function for load event of bird's eye view img | 1143 // returns function for load event of bird's eye view img |
1144 var birdImgLoadedHandler = function (data) { | 1144 var birdImgLoadedHandler = function (data) { |
1145 return function () { | 1145 return function () { |
1146 var $img = $(this); | 1146 var $birdImg = $(this); |
1147 console.debug("birdimg loaded! this=", this, " data=", data); | 1147 var birdRect = geom.rectangle($birdImg); |
1148 // create Transform from current area and picsize | 1148 console.debug("birdImg loaded!", $birdImg, "rect=", birdRect, "data=", data); |
1149 data.birdTrafo = getImgTrafo($img, FULL_AREA); | 1149 if (birdRect.width === 0) { |
1150 // malheureusement IE7 calls load handler when there is no size info yet | |
1151 setTimeout(function () { $birdImg.triggerHandler('load') }, 200); | |
1152 } | |
1150 // display red indicator around zoomarea | 1153 // display red indicator around zoomarea |
1151 renderBirdArea(data); | 1154 renderBirdArea(data); |
1152 // enable click and drag | 1155 // enable click and drag |
1153 setupBirdDrag(data); | 1156 setupBirdDrag(data); |
1154 }; | 1157 }; |
1183 $birdZoom.hide(); | 1186 $birdZoom.hide(); |
1184 return; | 1187 return; |
1185 } else { | 1188 } else { |
1186 $birdZoom.show(); | 1189 $birdZoom.show(); |
1187 } | 1190 } |
1188 // position may have changed | 1191 // create Transform from current area and picsize |
1189 data.birdTrafo = getImgTrafo(data.$birdImg, FULL_AREA); | 1192 data.birdTrafo = getImgTrafo(data.$birdImg, FULL_AREA); |
1190 var zoomRect = data.birdTrafo.transform(zoomArea); | 1193 var zoomRect = data.birdTrafo.transform(zoomArea); |
1194 console.debug("renderBirdArea:", zoomRect, "zoomArea:", zoomArea, "$birdTrafo:", data.birdTrafo); | |
1191 // acount for border width | 1195 // acount for border width |
1192 zoomRect.addPosition({x : -2, y : -2}); | 1196 zoomRect.addPosition({x : -2, y : -2}); |
1193 if (data.settings.interactionMode === 'fullscreen') { | 1197 if (data.settings.interactionMode === 'fullscreen') { |
1194 // no animation for fullscreen | 1198 // no animation for fullscreen |
1195 zoomRect.adjustDiv($birdZoom); | 1199 zoomRect.adjustDiv($birdZoom); |
1196 } else { | 1200 } else { |
1197 // nice animation for embedded mode :-) | 1201 // nice animation for embedded mode :-) |
1198 // correct offsetParent because animate doesn't use offset | 1202 // correct offsetParent because animate doesn't use offset |
1199 var ppos = $birdZoom.offsetParent().offset(); | 1203 var ppos = $birdZoom.offsetParent().offset(); |
1200 var dest = { | 1204 var dest = { |
1201 left : (zoomRect.x - ppos.left) + 'px', | 1205 left : (zoomRect.x - ppos.left) + 'px', |
1202 top : (zoomRect.y - ppos.top) + 'px', | 1206 top : (zoomRect.y - ppos.top) + 'px', |
1203 width : zoomRect.width, | 1207 width : zoomRect.width, |
1204 height : zoomRect.height}; | 1208 height : zoomRect.height |
1209 }; | |
1205 $birdZoom.animate(dest); | 1210 $birdZoom.animate(dest); |
1206 } | 1211 } |
1207 }; | 1212 }; |
1208 | 1213 |
1209 // zooms by the given factor | 1214 // zooms by the given factor |
1338 // reflect birdview zoom position in scaler image | 1343 // reflect birdview zoom position in scaler image |
1339 var area = data.birdTrafo.invtransform(newRect); | 1344 var area = data.birdTrafo.invtransform(newRect); |
1340 var imgArea = data.imgTrafo.transform(area); | 1345 var imgArea = data.imgTrafo.transform(area); |
1341 var offset = imgArea.getPosition().neg(); | 1346 var offset = imgArea.getPosition().neg(); |
1342 offset.add(scalerPos); | 1347 offset.add(scalerPos); |
1343 console.log('offset', offset); | |
1344 if (fullRect) { | 1348 if (fullRect) { |
1345 var bgPos = fullRect.getPosition().add(offset); | 1349 var bgPos = fullRect.getPosition().add(offset); |
1346 } else { | 1350 } else { |
1347 var bgPos = offset; | 1351 var bgPos = offset; |
1348 } | 1352 } |