Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 690:dfdee83a0a32 jquery
better handling of button sets
author | robcast |
---|---|
date | Thu, 27 Jan 2011 16:53:09 +0100 |
parents | 7ef3bc87ab19 |
children | 98c42d573ebd |
comparison
equal
deleted
inserted
replaced
688:7ef3bc87ab19 | 690:dfdee83a0a32 |
---|---|
202 'imagePath' : 'img/embedded/16/', | 202 'imagePath' : 'img/embedded/16/', |
203 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","back","fwd","page","bird","SEP","help","reset","moreoptions"], | 203 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","back","fwd","page","bird","SEP","help","reset","moreoptions"], |
204 'specialSet' : ["hmir","vmir","rot","brgt","cont","rgb","quality","size","SEP","lessoptions"], | 204 'specialSet' : ["hmir","vmir","rot","brgt","cont","rgb","quality","size","SEP","lessoptions"], |
205 'buttonSets' : ['standardSet', 'specialSet'] | 205 'buttonSets' : ['standardSet', 'specialSet'] |
206 } | 206 } |
207 }, | 207 }, |
208 // button groups | 208 // number of visible button groups |
209 'visibleButtonSets' : 1, | |
209 // is birdView shown? | 210 // is birdView shown? |
210 'isBirdDivVisible' : false, | 211 'isBirdDivVisible' : false, |
211 // dimensions of bird's eye div | 212 // dimensions of bird's eye div |
212 'birdDivWidth' : 200, | 213 'birdDivWidth' : 200, |
213 'birdDivHeight' : 200, | 214 'birdDivHeight' : 200, |
260 } else { | 261 } else { |
261 params = parseImgParams($elem); | 262 params = parseImgParams($elem); |
262 }; | 263 }; |
263 // store $(this) element in the settings | 264 // store $(this) element in the settings |
264 elemSettings = $.extend({}, settings, params); | 265 elemSettings = $.extend({}, settings, params); |
265 data = { | 266 data = { |
266 $elem : $elem, | 267 $elem : $elem, |
267 settings : elemSettings, | 268 settings : elemSettings, |
268 queryParams : params | 269 queryParams : params |
269 }; | 270 }; |
270 // store in data element | 271 // store in data element |
271 $elem.data('digilib', data); | 272 $elem.data('digilib', data); |
272 } | 273 } |
273 unpackParams(data); | 274 unpackParams(data); |
274 // create HTML structure for scaler | 275 // create HTML structure for scaler |
275 setupScalerDiv(data); | 276 setupScalerDiv(data); |
276 // HTML for buttons (default is first button set) | 277 // add buttons |
277 setupButtons(data, 0); | 278 for (var i = 0; i < elemSettings.visibleButtonSets; ++i) { |
279 showButtons(data, true, i); | |
280 } | |
278 // bird's eye view creation | 281 // bird's eye view creation |
279 if (elemSettings.isBirdDivVisible) { | 282 if (elemSettings.isBirdDivVisible) { |
280 setupBirdDiv(data); | 283 setupBirdDiv(data); |
281 } | 284 } |
282 // about window creation - TODO: could be deferred? restrict to only one item? | 285 // about window creation - TODO: could be deferred? restrict to only one item? |
429 redisplay(data); | 432 redisplay(data); |
430 }, | 433 }, |
431 | 434 |
432 // display more (or less) button sets | 435 // display more (or less) button sets |
433 morebuttons : function (data, more) { | 436 morebuttons : function (data, more) { |
437 var settings = data.settings; | |
434 if (more === '-1') { | 438 if (more === '-1') { |
435 // remove set | 439 // remove set |
436 var setIdx = data.visibleButtonSets - 1; | 440 var setIdx = settings.visibleButtonSets - 1; |
437 var $lastSet = data.$buttonSets[setIdx]; | 441 if (showButtons(data, false, setIdx, true)) { |
438 if ($lastSet == null) return; | 442 settings.visibleButtonSets--; |
439 var btnWidth = $lastSet.width(); | 443 } |
440 // hide last set | |
441 $lastSet.hide(); | |
442 // take remaining sets and move right | |
443 var $otherSets = data.$elem.find('div.buttons:visible'); | |
444 $otherSets.animate({left : '+='+btnWidth+'px'}); | |
445 data.visibleButtonSets -= 1; | |
446 } else { | 444 } else { |
447 // add set | 445 // add set |
448 var $oldSets = data.$elem.find('div.buttons:visible'); | 446 var setIdx = settings.visibleButtonSets; |
449 var setIdx = data.visibleButtonSets; | 447 if (showButtons(data, true, setIdx, true)) { |
450 var $newSet; | 448 settings.visibleButtonSets++; |
451 if (data.$buttonSets[setIdx]) { | 449 } |
452 // set exists | |
453 $newSet = data.$buttonSets[setIdx]; | |
454 } else { | |
455 $newSet = setupButtons(data, setIdx); | |
456 } | |
457 if ($newSet == null) return; | |
458 var btnWidth = $newSet.width(); | |
459 // move remaining sets left and show new set | |
460 $oldSets.animate({left : '-='+btnWidth+'px'}, | |
461 function () {$newSet.show();}); | |
462 data.visibleButtonSets += 1; | |
463 } | 450 } |
464 }, | 451 }, |
465 | 452 |
466 reset : function (data) { | 453 reset : function (data) { |
467 var settings = data.settings; | 454 var settings = data.settings; |
760 $img.load(scalerImgLoadedHandler(data)); | 747 $img.load(scalerImgLoadedHandler(data)); |
761 $img.attr('src', scalerUrl); | 748 $img.attr('src', scalerUrl); |
762 }; | 749 }; |
763 | 750 |
764 // creates HTML structure for buttons in elem | 751 // creates HTML structure for buttons in elem |
765 var setupButtons = function (data, buttonSetIdx) { | 752 var createButtons = function (data, buttonSetIdx) { |
766 var $elem = data.$elem; | 753 var $elem = data.$elem; |
767 var settings = data.settings; | 754 var settings = data.settings; |
768 var mode = settings.interactionMode; | 755 var mode = settings.interactionMode; |
769 var buttonSettings = settings.buttonSettings[mode]; | 756 var buttonSettings = settings.buttonSettings[mode]; |
770 var buttonGroup = buttonSettings.buttonSets[buttonSetIdx]; | 757 var buttonGroup = buttonSettings.buttonSets[buttonSetIdx]; |
811 } | 798 } |
812 // make buttons div scroll if too large for window | 799 // make buttons div scroll if too large for window |
813 if ($buttonsDiv.height() > $(window).height() - 10) { | 800 if ($buttonsDiv.height() > $(window).height() - 10) { |
814 $buttonsDiv.css('position', 'absolute'); | 801 $buttonsDiv.css('position', 'absolute'); |
815 } | 802 } |
803 // buttons hidden at first | |
804 $buttonsDiv.hide(); | |
805 $elem.append($buttonsDiv); | |
816 if (data.$buttonSets == null) { | 806 if (data.$buttonSets == null) { |
817 // show first button set | 807 // first button set |
818 $elem.append($buttonsDiv); | |
819 data.$buttonSets = [$buttonsDiv]; | 808 data.$buttonSets = [$buttonsDiv]; |
820 data.visibleButtonSets = 1; | |
821 } else { | 809 } else { |
822 // hide later button sets | |
823 $buttonsDiv.hide(); | |
824 $elem.append($buttonsDiv); | 810 $elem.append($buttonsDiv); |
825 data.$buttonSets[buttonSetIdx] = $buttonsDiv; | 811 data.$buttonSets[buttonSetIdx] = $buttonsDiv; |
826 } | 812 } |
827 return $buttonsDiv; | 813 return $buttonsDiv; |
828 }; | 814 }; |
898 $div.fadeIn(); | 884 $div.fadeIn(); |
899 } else { | 885 } else { |
900 $div.fadeOut(); | 886 $div.fadeOut(); |
901 } | 887 } |
902 return isVisible; | 888 return isVisible; |
889 }; | |
890 | |
891 // display more (or less) button sets | |
892 var showButtons = function (data, more, setIdx, animated) { | |
893 if (more) { | |
894 // add set | |
895 var $otherSets = data.$elem.find('div.buttons:visible'); | |
896 var $set; | |
897 if (data.$buttonSets && data.$buttonSets[setIdx]) { | |
898 // set exists | |
899 $set = data.$buttonSets[setIdx]; | |
900 } else { | |
901 $set = createButtons(data, setIdx); | |
902 } | |
903 if ($set == null) return false; | |
904 var btnWidth = $set.width(); | |
905 // move remaining sets left and show new set | |
906 if (animated) { | |
907 $otherSets.animate({left : '-='+btnWidth+'px'}, 'fast', | |
908 function () {$set.show();}); | |
909 } else { | |
910 $otherSets.css({left : '-='+btnWidth+'px'}); | |
911 $set.show(); | |
912 } | |
913 } else { | |
914 // remove set | |
915 var $set = data.$buttonSets[setIdx]; | |
916 if ($set == null) return false; | |
917 var btnWidth = $set.width(); | |
918 // hide last set | |
919 $set.hide(); | |
920 // take remaining sets and move right | |
921 var $otherSets = data.$elem.find('div.buttons:visible'); | |
922 if (animated) { | |
923 $otherSets.animate({left : '+='+btnWidth+'px'}, 'fast'); | |
924 } else { | |
925 $otherSets.css({left : '+='+btnWidth+'px'}); | |
926 } | |
927 } | |
928 return true; | |
903 }; | 929 }; |
904 | 930 |
905 // create Transform from area and $img | 931 // create Transform from area and $img |
906 var getImgTrafo = function ($img, area, rot, hmir, vmir) { | 932 var getImgTrafo = function ($img, area, rot, hmir, vmir) { |
907 var picrect = geom.rectangle($img); | 933 var picrect = geom.rectangle($img); |