Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 758:7429edfd363a jquery
state indicators for buttons
author | hertzhaft |
---|---|
date | Thu, 10 Feb 2011 16:56:48 +0100 |
parents | 8087657fc7bd |
children | c988cfaa6e42 |
comparison
equal
deleted
inserted
replaced
757:aaaf5ad520c4 | 758:7429edfd363a |
---|---|
38 (function($) { | 38 (function($) { |
39 var buttons = { | 39 var buttons = { |
40 reference : { | 40 reference : { |
41 onclick : "reference", | 41 onclick : "reference", |
42 tooltip : "get a reference URL", | 42 tooltip : "get a reference URL", |
43 img : "reference.png" | 43 icon : "reference.png" |
44 }, | 44 }, |
45 zoomin : { | 45 zoomin : { |
46 onclick : ["zoomBy", 1.4], | 46 onclick : ["zoomBy", 1.4], |
47 tooltip : "zoom in", | 47 tooltip : "zoom in", |
48 img : "zoom-in.png" | 48 icon : "zoom-in.png" |
49 }, | 49 }, |
50 zoomout : { | 50 zoomout : { |
51 onclick : ["zoomBy", 0.7], | 51 onclick : ["zoomBy", 0.7], |
52 tooltip : "zoom out", | 52 tooltip : "zoom out", |
53 img : "zoom-out.png" | 53 icon : "zoom-out.png" |
54 }, | 54 }, |
55 zoomarea : { | 55 zoomarea : { |
56 onclick : "zoomArea", | 56 onclick : "zoomArea", |
57 tooltip : "zoom area", | 57 tooltip : "zoom area", |
58 img : "zoom-area.png" | 58 icon : "zoom-area.png" |
59 }, | 59 }, |
60 zoomfull : { | 60 zoomfull : { |
61 onclick : "zoomFull", | 61 onclick : "zoomFull", |
62 tooltip : "view the whole image", | 62 tooltip : "view the whole image", |
63 img : "zoom-full.png" | 63 icon : "zoom-full.png" |
64 }, | 64 }, |
65 pagewidth : { | 65 pagewidth : { |
66 onclick : ["zoomFull", "width"], | 66 onclick : ["zoomFull", "width"], |
67 tooltip : "page width", | 67 tooltip : "page width", |
68 img : "pagewidth.png" | 68 icon : "pagewidth.png" |
69 }, | 69 }, |
70 back : { | 70 back : { |
71 onclick : ["gotoPage", "-1"], | 71 onclick : ["gotoPage", "-1"], |
72 tooltip : "goto previous image", | 72 tooltip : "goto previous image", |
73 img : "back.png" | 73 icon : "back.png" |
74 }, | 74 }, |
75 fwd : { | 75 fwd : { |
76 onclick : ["gotoPage", "+1"], | 76 onclick : ["gotoPage", "+1"], |
77 tooltip : "goto next image", | 77 tooltip : "goto next image", |
78 img : "fwd.png" | 78 icon : "fwd.png" |
79 }, | 79 }, |
80 page : { | 80 page : { |
81 onclick : "gotoPage", | 81 onclick : "gotoPage", |
82 tooltip : "goto image number", | 82 tooltip : "goto image number", |
83 img : "page.png" | 83 icon : "page.png" |
84 }, | 84 }, |
85 bird : { | 85 bird : { |
86 onclick : "showBirdDiv", | 86 onclick : "showBirdDiv", |
87 tooltip : "show bird's eye view", | 87 tooltip : "show bird's eye view", |
88 img : "birds-eye.png" | 88 icon : "birds-eye.png" |
89 }, | 89 }, |
90 help : { | 90 help : { |
91 onclick : "showAboutDiv", | 91 onclick : "showAboutDiv", |
92 tooltip : "about Digilib", | 92 tooltip : "about Digilib", |
93 img : "help.png" | 93 icon : "help.png" |
94 }, | 94 }, |
95 reset : { | 95 reset : { |
96 onclick : "reset", | 96 onclick : "reset", |
97 tooltip : "reset image", | 97 tooltip : "reset image", |
98 img : "reset.png" | 98 icon : "reset.png" |
99 }, | 99 }, |
100 mark : { | 100 mark : { |
101 onclick : "setMark", | 101 onclick : "setMark", |
102 tooltip : "set a mark", | 102 tooltip : "set a mark", |
103 img : "mark.png" | 103 icon : "mark.png" |
104 }, | 104 }, |
105 delmark : { | 105 delmark : { |
106 onclick : "removeMark", | 106 onclick : "removeMark", |
107 tooltip : "delete the last mark", | 107 tooltip : "delete the last mark", |
108 img : "delmark.png" | 108 icon : "delmark.png" |
109 }, | 109 }, |
110 hmir : { | 110 hmir : { |
111 onclick : ["mirror", "h"], | 111 onclick : ["mirror", "h"], |
112 tooltip : "mirror horizontally", | 112 tooltip : "mirror horizontally", |
113 img : "mirror-horizontal.png" | 113 icon : "mirror-horizontal.png" |
114 }, | 114 }, |
115 vmir : { | 115 vmir : { |
116 onclick : ["mirror", "v"], | 116 onclick : ["mirror", "v"], |
117 tooltip : "mirror vertically", | 117 tooltip : "mirror vertically", |
118 img : "mirror-vertical.png" | 118 icon : "mirror-vertical.png" |
119 }, | 119 }, |
120 rot : { | 120 rot : { |
121 onclick : "rotate", | 121 onclick : "rotate", |
122 tooltip : "rotate image", | 122 tooltip : "rotate image", |
123 img : "rotate.png" | 123 icon : "rotate.png" |
124 }, | 124 }, |
125 brgt : { | 125 brgt : { |
126 onclick : "brightness", | 126 onclick : "brightness", |
127 tooltip : "set brightness", | 127 tooltip : "set brightness", |
128 img : "brightness.png" | 128 icon : "brightness.png" |
129 }, | 129 }, |
130 cont : { | 130 cont : { |
131 onclick : "contrast", | 131 onclick : "contrast", |
132 tooltip : "set contrast", | 132 tooltip : "set contrast", |
133 img : "contrast.png" | 133 icon : "contrast.png" |
134 }, | 134 }, |
135 rgb : { | 135 rgb : { |
136 onclick : "javascript:setParamWin('rgb', '...')", | 136 onclick : "javascript:setParamWin('rgb', '...')", |
137 tooltip : "set rgb values", | 137 tooltip : "set rgb values", |
138 img : "rgb.png" | 138 icon : "rgb.png" |
139 }, | 139 }, |
140 quality : { | 140 quality : { |
141 onclick : "setQuality", | 141 onclick : "setQuality", |
142 tooltip : "set image quality", | 142 tooltip : "set image quality", |
143 img : "quality.png" | 143 icon : "quality.png" |
144 }, | 144 }, |
145 size : { | 145 size : { |
146 onclick : "javascript:toggleSizeMenu()", | 146 onclick : "javascript:toggleSizeMenu()", |
147 tooltip : "set page size", | 147 tooltip : "set page size", |
148 img : "size.png" | 148 icon : "size.png" |
149 }, | 149 }, |
150 calibrationx : { | 150 calibrationx : { |
151 onclick : "calibrate", | 151 onclick : "calibrate", |
152 tooltip : "calibrate screen resolution", | 152 tooltip : "calibrate screen resolution", |
153 img : "calibration-x.png" | 153 icon : "calibration-x.png" |
154 }, | 154 }, |
155 scale : { | 155 scale : { |
156 onclick : "setScaleMode", | 156 onclick : "setScaleMode", |
157 tooltip : "change image scale", | 157 tooltip : "change image scale", |
158 img : "original-size.png" | 158 icon : "original-size.png" |
159 }, | 159 }, |
160 toggleoptions : { | 160 toggleoptions : { |
161 onclick : "moreButtons", | 161 onclick : "moreButtons", |
162 tooltip : "more options", | 162 tooltip : "more options", |
163 img : "options.png" | 163 icon : "options.png" |
164 }, | 164 }, |
165 moreoptions : { | 165 moreoptions : { |
166 onclick : ["moreButtons", "+1"], | 166 onclick : ["moreButtons", "+1"], |
167 tooltip : "more options", | 167 tooltip : "more options", |
168 img : "options.png" | 168 icon : "options.png" |
169 }, | 169 }, |
170 lessoptions : { | 170 lessoptions : { |
171 onclick : ["moreButtons", "-1"], | 171 onclick : ["moreButtons", "-1"], |
172 tooltip : "less options", | 172 tooltip : "less options", |
173 img : "options.png" | 173 icon : "options.png" |
174 }, | 174 }, |
175 SEP : { | 175 SEP : { |
176 img : "sep.png" | 176 icon : "sep.png" |
177 } | 177 } |
178 }; | 178 }; |
179 | 179 |
180 var defaults = { | 180 var defaults = { |
181 // version of this script | 181 // version of this script |
232 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","bird","help","reset","toggleoptions"], | 232 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","bird","help","reset","toggleoptions"], |
233 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","toggleoptions"], | 233 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","toggleoptions"], |
234 'buttonSets' : ['standardSet', 'specialSet'] | 234 'buttonSets' : ['standardSet', 'specialSet'] |
235 } | 235 } |
236 }, | 236 }, |
237 | |
237 // number of visible button groups | 238 // number of visible button groups |
238 'visibleButtonSets' : 1, | 239 'visibleButtonSets' : 1, |
239 // is birdView shown? | 240 // is birdView shown? |
240 'isBirdDivVisible' : false, | 241 'isBirdDivVisible' : false, |
241 // dimensions of bird's eye div | 242 // dimensions of bird's eye div |
336 } else { | 337 } else { |
337 var url = elemSettings.scalerBaseUrl; | 338 var url = elemSettings.scalerBaseUrl; |
338 if (url) { | 339 if (url) { |
339 // build it from scaler URL | 340 // build it from scaler URL |
340 var bp = url.indexOf('/servlet/Scaler'); | 341 var bp = url.indexOf('/servlet/Scaler'); |
341 elemSettings.digilibBaseUrl = url.substring(0, bp) + '/digilib.jsp'; | 342 elemSettings.digilibBaseUrl = url.substring(0, bp) + '/digilib.jsp'; |
342 } | 343 } |
343 } | 344 } |
344 } | 345 } |
345 // get image info from server if needed | 346 // get image info from server if needed |
346 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') { | 347 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') { |
350 setupScalerDiv(data); | 351 setupScalerDiv(data); |
351 // add buttons | 352 // add buttons |
352 for (var i = 0; i < elemSettings.visibleButtonSets; ++i) { | 353 for (var i = 0; i < elemSettings.visibleButtonSets; ++i) { |
353 showButtons(data, true, i); | 354 showButtons(data, true, i); |
354 } | 355 } |
356 highlightButtons(data); | |
355 // bird's eye view creation | 357 // bird's eye view creation |
356 if (elemSettings.isBirdDivVisible) { | 358 if (elemSettings.isBirdDivVisible) { |
357 setupBirdDiv(data); | 359 setupBirdDiv(data); |
358 data.$birdDiv.show(); | 360 data.$birdDiv.show(); |
359 } | 361 } |
374 }); | 376 }); |
375 }, | 377 }, |
376 | 378 |
377 // show or hide the 'about' window | 379 // show or hide the 'about' window |
378 showAboutDiv : function(data, show) { | 380 showAboutDiv : function(data, show) { |
379 data.settings.isAboutDivVisible = showDiv(data.settings.isAboutDivVisible, data.$aboutDiv, show); | 381 var on = showDiv(data.settings.isAboutDivVisible, data.$aboutDiv, show); |
382 data.settings.isAboutDivVisible = on; | |
383 highlightButtons(data, 'help', on); | |
380 }, | 384 }, |
381 | 385 |
382 // event handler: toggles the visibility of the bird's eye window | 386 // event handler: toggles the visibility of the bird's eye window |
383 showBirdDiv : function (data, show) { | 387 showBirdDiv : function (data, show) { |
384 var settings = data.settings; | 388 var settings = data.settings; |
385 if (data.$birdDiv == null) { | 389 if (data.$birdDiv == null) { |
386 // no bird div -> create | 390 // no bird div -> create |
387 setupBirdDiv(data); | 391 setupBirdDiv(data); |
388 } | 392 } |
389 settings.isBirdDivVisible = showDiv(settings.isBirdDivVisible, data.$birdDiv, show); | 393 var on = showDiv(settings.isBirdDivVisible, data.$birdDiv, show); |
394 settings.isBirdDivVisible = on; | |
395 highlightButtons(data, 'bird', on); | |
390 updateBirdDiv(data); | 396 updateBirdDiv(data); |
391 storeOptions(data); | 397 storeOptions(data); |
392 }, | 398 }, |
393 | 399 |
394 // goto given page nr (+/-: relative) | 400 // goto given page nr (+/-: relative) |
857 // embedded mode -- just change img src | 863 // embedded mode -- just change img src |
858 var url = getScalerUrl(data); | 864 var url = getScalerUrl(data); |
859 data.$img.attr('src', url); | 865 data.$img.attr('src', url); |
860 // redisplay bird img | 866 // redisplay bird img |
861 updateBirdDiv(data); | 867 updateBirdDiv(data); |
868 highlightButtons(data); | |
862 } | 869 } |
863 }; | 870 }; |
864 | 871 |
865 // returns maximum size for scaler img in fullscreen mode | 872 // returns maximum size for scaler img in fullscreen mode |
866 var getFullscreenImgSize = function($elem) { | 873 var getFullscreenImgSize = function($elem) { |
965 $elem.digilib(action); | 972 $elem.digilib(action); |
966 return false; | 973 return false; |
967 }; | 974 }; |
968 } | 975 } |
969 })()); | 976 })()); |
970 $img.attr('src', buttonSettings.imagePath + buttonConfig.img); | 977 $img.attr('src', buttonSettings.imagePath + buttonConfig.icon); |
971 } | 978 } |
972 // make buttons div scroll if too large for window | 979 // make buttons div scroll if too large for window |
973 if ($buttonsDiv.height() > $(window).height() - 10) { | 980 if ($buttonsDiv.height() > $(window).height() - 10) { |
974 $buttonsDiv.css('position', 'absolute'); | 981 $buttonsDiv.css('position', 'absolute'); |
975 } | 982 } |
1078 $set = data.$buttonSets[setIdx]; | 1085 $set = data.$buttonSets[setIdx]; |
1079 } else { | 1086 } else { |
1080 $set = createButtons(data, setIdx); | 1087 $set = createButtons(data, setIdx); |
1081 } | 1088 } |
1082 if ($set == null) return false; | 1089 if ($set == null) return false; |
1083 var btnWidth = $set.width(); | 1090 // include border in calculation |
1091 var btnWidth = $set.outerWidth(); | |
1084 // move remaining sets left and show new set | 1092 // move remaining sets left and show new set |
1085 if ($otherSets.length > 0) { | 1093 if ($otherSets.length > 0) { |
1086 $otherSets.animate({right : '+='+btnWidth+'px'}, atime, | 1094 $otherSets.animate({right : '+='+btnWidth+'px'}, atime, |
1087 function () {$set.show();}); | 1095 function () {$set.show();}); |
1088 } else { | 1096 } else { |
1100 $otherSets.animate({right : '-='+btnWidth+'px'}, atime); | 1108 $otherSets.animate({right : '-='+btnWidth+'px'}, atime); |
1101 } | 1109 } |
1102 return true; | 1110 return true; |
1103 }; | 1111 }; |
1104 | 1112 |
1113 // check for buttons to highlight | |
1114 var highlightButtons = function (data, name, on) { | |
1115 var $buttons = data.$elem.find('div.buttons:visible'); // include hidden? | |
1116 // add a class for highlighted button | |
1117 var highlight = function (name, on) { | |
1118 var $button = $buttons.find('div.button-' + name); | |
1119 if (on) { | |
1120 $button.addClass('button-on'); | |
1121 } else { | |
1122 $button.removeClass('button-on'); | |
1123 } | |
1124 }; | |
1125 if (name != null) { | |
1126 return highlight(name, on); | |
1127 } | |
1128 var flags = data.scalerFlags; | |
1129 var settings = data.settings; | |
1130 highlight('rot', settings.rot); | |
1131 highlight('brgt', settings.brgt); | |
1132 highlight('cont', settings.cont); | |
1133 highlight('bird', settings.isBirdDivVisible); | |
1134 highlight('help', settings.isAboutDivVisible); | |
1135 highlight('hmir', flags.hmir); | |
1136 highlight('vmir', flags.vmir); | |
1137 highlight('help', flags.q1 || flags.q2); | |
1138 highlight('zoomin', ! isFullArea(data.zoomArea)); | |
1139 }; | |
1140 | |
1105 // create Transform from area and $img | 1141 // create Transform from area and $img |
1106 var getImgTrafo = function ($img, area, rot, hmir, vmir, mode, imgInfo) { | 1142 var getImgTrafo = function ($img, area, rot, hmir, vmir, mode, imgInfo) { |
1107 var picrect = geom.rectangle($img); | 1143 var picrect = geom.rectangle($img); |
1108 if (mode != null) { | 1144 if (mode != null) { |
1109 if (mode === 'pixel') { | 1145 if (mode === 'pixel') { |