annotate webapp/src/main/webapp/jquery/jquery.digilib.buttons.js @ 1020:0eedb4a5b674

sliders for rot/brgt/cont, needs some refactoring
author hertzhaft
date Tue, 21 Feb 2012 00:08:04 +0100
parents 287e2d2d2ae8
children 9aa282ceec8a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
1 /**
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
2 digilib buttons plugin
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
3 */
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
4
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
5 (function($) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
6
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
7 // plugin object with digilib data
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
8 var digilib = null;
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
9 // the functions made available by digilib
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
10 var fn = null;
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
11 // affine geometry plugin
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
12 var geom = null;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
13
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
14 var buttons = {
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
15 reference : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
16 onclick : "reference",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
17 tooltip : "get a reference URL",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
18 icon : "reference.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
19 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
20 zoomin : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
21 onclick : ["zoomBy", 1.4],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
22 tooltip : "zoom in",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
23 icon : "zoom-in.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
24 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
25 zoomout : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
26 onclick : ["zoomBy", 0.7],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
27 tooltip : "zoom out",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
28 icon : "zoom-out.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
29 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
30 zoomarea : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
31 onclick : "zoomArea",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
32 tooltip : "zoom area",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
33 icon : "zoom-area.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
34 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
35 zoomfull : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
36 onclick : "zoomFull",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
37 tooltip : "view the whole image",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
38 icon : "zoom-full.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
39 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
40 pagewidth : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
41 onclick : ["zoomFull", "width"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
42 tooltip : "page width",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
43 icon : "pagewidth.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
44 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
45 back : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
46 onclick : ["gotoPage", "-1"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
47 tooltip : "goto previous image",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
48 icon : "back.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
49 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
50 fwd : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
51 onclick : ["gotoPage", "+1"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
52 tooltip : "goto next image",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
53 icon : "fwd.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
54 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
55 page : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
56 onclick : "gotoPage",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
57 tooltip : "goto image number",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
58 icon : "page.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
59 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
60 help : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
61 onclick : "showAboutDiv",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
62 tooltip : "about Digilib",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
63 icon : "help.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
64 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
65 reset : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
66 onclick : "reset",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
67 tooltip : "reset image",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
68 icon : "reset.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
69 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
70 hmir : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
71 onclick : ["mirror", "h"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
72 tooltip : "mirror horizontally",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
73 icon : "mirror-horizontal.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
74 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
75 vmir : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
76 onclick : ["mirror", "v"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
77 tooltip : "mirror vertically",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
78 icon : "mirror-vertical.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
79 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
80 rot : {
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
81 onclick : "sliderRotate",
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
82 tooltip : "rotate image",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
83 icon : "rotate.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
84 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
85 brgt : {
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
86 onclick : "sliderBrightness",
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
87 tooltip : "set brightness",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
88 icon : "brightness.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
89 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
90 cont : {
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
91 onclick : "sliderContrast",
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
92 tooltip : "set contrast",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
93 icon : "contrast.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
94 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
95 rgb : {
1019
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
96 onclick : "setRGB",
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
97 // onclick : sliderRGB,
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
98 tooltip : "set rgb values",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
99 icon : "rgb.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
100 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
101 quality : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
102 onclick : "setQuality",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
103 tooltip : "set image quality",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
104 icon : "quality.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
105 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
106 size : {
1019
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
107 onclick : "setSize",
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
108 tooltip : "set page size",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
109 icon : "size.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
110 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
111 calibrationx : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
112 onclick : "showCalibrationDiv",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
113 tooltip : "calibrate screen resolution",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
114 icon : "calibration-x.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
115 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
116 scale : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
117 onclick : "showScaleModeSelector",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
118 tooltip : "change image scale",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
119 icon : "original-size.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
120 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
121 toggleoptions : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
122 onclick : "moreButtons",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
123 tooltip : "more options",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
124 icon : "options.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
125 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
126 moreoptions : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
127 onclick : ["moreButtons", "+1"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
128 tooltip : "more options",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
129 icon : "options.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
130 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
131 lessoptions : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
132 onclick : ["moreButtons", "-1"],
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
133 tooltip : "less options",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
134 icon : "options.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
135 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
136 SEP : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
137 icon : "sep.png"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
138 }
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
139 };
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
140
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
141 var sliders = {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
142 rot : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
143 label : "Rotation angle",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
144 tooltip : "rotate image",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
145 icon : "rotate.png",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
146 'min' : 0,
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
147 'max' : 360,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
148 'start' : 90
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
149 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
150 brgt : {
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
151 label : "Brightness",
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
152 tooltip : "set numeric value to be added",
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
153 icon : "brightness.png",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
154 'min' : -255,
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
155 'max' : 255,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
156 'start' : 0
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
157 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
158 cont : {
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
159 label : "Contrast",
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
160 tooltip : "set numeric value to be multiplied",
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
161 icon : "contrast.png",
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
162 'min' : -4,
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
163 'max' : 4,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
164 'start' : 0
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
165 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
166 red : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
167 label : "Red value",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
168 tooltip : "set red value",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
169 icon : "rgb.png",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
170 'min' : 0,
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
171 'max' : 255,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
172 'start' : 127
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
173 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
174
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
175 green : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
176 label : "Green value",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
177 tooltip : "set green value",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
178 icon : "rgb.png",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
179 'min' : 0,
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
180 'max' : 255,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
181 'start' : 127
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
182 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
183
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
184 blue : {
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
185 label : "Blue value",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
186 tooltip : "set blue value",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
187 icon : "rgb.png",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
188 'min' : 0,
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
189 'max' : 255,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
190 'start' : 127
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
191 },
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
192 };
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
193
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
194 var modes = [
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
195 { name : "screen",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
196 label : "fit to screen",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
197 tooltip : "scales the graphic file so that it fills the screen"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
198 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
199 { name : "pixel",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
200 label : "pixel by pixel",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
201 tooltip : "all pixels of the current part of the graphic file are shown"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
202 },
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
203 { name : "size",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
204 label : "original size",
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
205 tooltip : "tries to display the current part of the graphic file in the size of the orginal resource (after screen calibration)"
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
206 }
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
207 ];
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
208
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
209 var defaults = {
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
210 // buttons (reference added later)
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
211 'buttons' : null,
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
212 // defaults for digilib buttons
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
213 'buttonSettings' : {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
214 'fullscreen' : {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
215 // path to button images (must end with a slash)
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
216 'imagePath' : 'img/fullscreen/',
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
217 'buttonSetWidth' : 36,
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
218 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","back","fwd","page","help","reset","toggleoptions"],
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
219 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","lessoptions"],
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
220 'buttonSets' : ['standardSet', 'specialSet']
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
221 },
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
222 'embedded' : {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
223 'imagePath' : 'img/embedded/16/',
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
224 'buttonSetWidth' : 18,
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
225 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","help","reset","toggleoptions"],
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
226 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","scale","lessoptions"],
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
227 'buttonSets' : ['standardSet', 'specialSet']
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
228 }
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
229 },
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
230 // number of visible button groups
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
231 'visibleButtonSets' : 1
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
232 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
233
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
234 var actions = {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
235 // display more (or less) button sets
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
236 moreButtons : function (data, more) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
237 var settings = data.settings;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
238 if (more == null) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
239 // toggle more or less (only works for 2 sets)
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
240 var maxbtns = settings.buttonSettings[settings.interactionMode].buttonSets.length;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
241 if (settings.visibleButtonSets >= maxbtns) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
242 more = '-1';
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
243 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
244 more = '+1';
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
245 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
246 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
247 if (more === '-1') {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
248 // remove set
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
249 var setIdx = settings.visibleButtonSets - 1;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
250 if (showButtons(data, false, setIdx, true)) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
251 settings.visibleButtonSets--;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
252 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
253 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
254 // add set
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
255 var setIdx = settings.visibleButtonSets;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
256 if (showButtons(data, true, setIdx, true)) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
257 settings.visibleButtonSets++;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
258 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
259 }
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
260 // adjust insets
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
261 data.currentInsets['buttons'] = getInsets(data);
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
262 // persist setting
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
263 fn.storeOptions(data);
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
264 },
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
265
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
266 // slider to set a rotation angle
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
267 sliderRotate : function (data) {
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
268 var $elem = data.$elem;
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
269 var $panel = fn.setupPanel(data);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
270 if ($panel == null) {
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
271 return;
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
272 };
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
273 var opts = { 'start' : parseFloat(data.settings.rot) };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
274 var $slider = fn.setupSlider(data, 'rot', opts);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
275 var ok = function(d) {
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
276 var angle = $slider.slider('getval');
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
277 digilib.actions.rotate(d, angle);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
278 };
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
279 $panel.data['ok'] = ok;
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
280 $panel.fadeIn();
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
281 $panel.prepend($slider);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
282 centerOnScreen(data, $panel);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
283 $slider.slider('show');
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
284 },
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
285
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
286 // slider to set a brightness value
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
287 sliderBrightness : function (data) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
288 var $elem = data.$elem;
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
289 var $panel = fn.setupPanel(data);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
290 if ($panel == null) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
291 return;
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
292 };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
293 var opts = { 'start' : parseFloat(data.settings.brgt) };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
294 var $slider = fn.setupSlider(data, 'brgt', opts);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
295 var ok = function(d) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
296 var brgt = $slider.slider('getval');
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
297 digilib.actions.brightness(d, brgt);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
298 };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
299 $panel.data['ok'] = ok;
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
300 $panel.fadeIn();
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
301 $panel.prepend($slider);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
302 centerOnScreen(data, $panel);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
303 $slider.slider('show');
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
304 },
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
305
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
306 // slider to set a contrast value
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
307 sliderContrast : function (data) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
308 var $elem = data.$elem;
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
309 var $panel = fn.setupPanel(data);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
310 if ($panel == null) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
311 return;
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
312 };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
313 var opts = { 'start' : parseFloat(data.settings.cont) };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
314 var $slider = fn.setupSlider(data, 'cont', opts);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
315 var ok = function(d) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
316 var cont = $slider.slider('getval');
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
317 digilib.actions.contrast(d, cont, true);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
318 };
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
319 $panel.data['ok'] = ok;
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
320 $panel.fadeIn();
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
321 $panel.prepend($slider);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
322 centerOnScreen(data, $panel);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
323 $slider.slider('show');
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
324 },
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
325
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
326 // shows Calibration Div
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
327 showCalibrationDiv : function (data) {
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
328 var $elem = data.$elem;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
329 var cssPrefix = data.settings.cssPrefix;
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
330 var $calDiv = $elem.find('.'+cssPrefix+'calibration');
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
331 var $input = $elem.find('.'+cssPrefix+'calibration-input');
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
332 $calDiv.fadeIn();
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
333 $input.focus();
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
334 },
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
335
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
336 // shows ScaleModeSelector
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
337 showScaleModeSelector : function (data) {
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
338 var $elem = data.$elem;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
339 var cssPrefix = data.settings.cssPrefix;
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
340 var $div = $elem.find('div#'+cssPrefix+'scalemode');
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
341 if ($div.is(':visible')) {
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
342 $div.fadeOut();
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
343 return;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
344 }
975
fed2f0ba586c scale mode select reflects current mode.
robcast
parents: 974
diff changeset
345 // select current mode
fed2f0ba586c scale mode select reflects current mode.
robcast
parents: 974
diff changeset
346 var mode = data.scaleMode;
fed2f0ba586c scale mode select reflects current mode.
robcast
parents: 974
diff changeset
347 $div.find('option').each(function () {
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
348 $(this).prop('selected', $(this).attr('name') == mode);
975
fed2f0ba586c scale mode select reflects current mode.
robcast
parents: 974
diff changeset
349 });
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
350 var $button = $elem.find('div.'+cssPrefix+'button-scale');
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
351 var buttonRect = geom.rectangle($button);
977
17bf6ac7a8cd attach click event to body instead of document?
hertzhaft
parents: 975
diff changeset
352 $('body').on("click.scalemode", function(event) {
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
353 $div.fadeOut();
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
354 });
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
355 $div.fadeIn();
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
356 var divRect = geom.rectangle($div);
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
357 $div.offset({
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
358 left : Math.abs(buttonRect.x - divRect.width - 4),
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
359 top : buttonRect.y + 4
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
360 });
965
2673b88d7beb more commas
hertzhaft
parents: 962
diff changeset
361 }
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
362 };
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
363
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
364 // plugin installation called by digilib on plugin object.
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
365 var install = function(plugin) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
366 digilib = plugin;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
367 console.debug('installing buttons plugin. digilib:', digilib);
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
368 fn = digilib.fn;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
369 // import geometry classes
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
370 geom = fn.geometry;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
371 // add defaults, actions, buttons
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
372 $.extend(digilib.buttons, buttons);
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
373 $.extend(true, digilib.defaults, defaults); // make deep copy
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
374 $.extend(digilib.actions, actions);
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
375 // update buttons reference in defaults
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
376 digilib.defaults.buttons = digilib.buttons;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
377 // export functions
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
378 fn.createButton = createButton;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
379 fn.highlightButtons = highlightButtons;
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
380 fn.setupSlider = setupSlider;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
381 fn.setupPanel = setupPanel;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
382 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
383
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
384 // plugin initialization
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
385 var init = function (data) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
386 console.debug('initialising buttons plugin. data:', data);
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
387 // add insets
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
388 data.currentInsets['buttons'] = getInsets(data);
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
389 // install event handler
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
390 var $data = $(data);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
391 $data.bind('setup', handleSetup);
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
392 sliderPlugin(jQuery, data);
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
393 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
394
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
395 var handleSetup = function (evt) {
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
396 console.debug("buttons: handleSetup");
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
397 var data = this;
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
398 var settings = data.settings;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
399 // create buttons before scaler
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
400 for (var i = 0; i < settings.visibleButtonSets; ++i) {
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
401 showButtons(data, true, i);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
402 }
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
403 // create ScaleMode selector;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
404 setupScaleModeDiv(data);
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
405 // create Calibration div;
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
406 setupCalibrationDiv(data);
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
407 };
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
408
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
409 /**
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
410 * returns insets for buttons (based on visibleButtonSets and buttonSetWidth
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
411 */
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
412 var getInsets = function (data) {
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
413 var settings = data.settings;
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
414 var bw = settings.visibleButtonSets * settings.buttonSettings[settings.interactionMode].buttonSetWidth;
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
415 var insets = {'x' : bw, 'y' : 0};
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
416 return insets;
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
417 };
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
418
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
419 var centerOnScreen = function (data, $div) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
420 var r = geom.rectangle($div);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
421 var s = fn.getFullscreenRect(data);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
422 r.setCenter(s.getCenter());
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
423 r.adjustDiv($div);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
424 };
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
425
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
426 // slider
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
427 var sliderPlugin = function($, digilibdata) {
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
428 var cssPrefix = digilibdata.settings.cssPrefix;
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
429 var defaults = {
1002
ff2f2d0fa8ad IE doesn't like class, neither
hertzhaft
parents: 1001
diff changeset
430 'cssclass' : cssPrefix+'slider',
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
431 'label' : 'Slider',
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
432 'direction' : 'x',
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
433 'handlesize' : 16,
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
434 'min' : 0,
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
435 'max' : 100,
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
436 'start' : 33,
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
437 'numberoffset' : -24,
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
438 'labeloffset' : 16,
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
439 'rect' : null,
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
440 'factor' : null,
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
441 'onmove' : null // callback function
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
442 };
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
443 var methods = {
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
444 init : function( options ) {
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
445 // make a slider from each element
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
446 return this.each(function() {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
447 var $this = $(this);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
448 // var settings = data.settings;
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
449 var settings = $.extend( defaults, options);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
450 console.debug('new slider: ', $this, ' settings:', settings);
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
451 $this.data('digilib', digilibdata);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
452 var data = $this.data('settings');
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
453 if (!data) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
454 $this.data('settings', settings);
1002
ff2f2d0fa8ad IE doesn't like class, neither
hertzhaft
parents: 1001
diff changeset
455 $this.addClass(settings.cssclass);
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
456 var $handle = $('<div class="'+settings.cssclass+'handle" />');
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
457 var $label = $('<div class="'+settings.cssclass+'label">'
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
458 +settings.label+': '+settings.start+'</div>');
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
459 var $min = $('<div class="'+settings.cssclass+'number">'+settings.min+'</div>');
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
460 var $max = $('<div class="'+settings.cssclass+'number">'+settings.max+'</div>');
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
461 $this.append($handle);
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
462 $this.append($label);
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
463 $this.append($min);
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
464 $this.append($max);
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
465 $.extend(settings, {
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
466 '$handle' : $handle,
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
467 '$label' : $label,
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
468 '$min' : $min,
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
469 '$max' : $max,
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
470 'diff' : settings.max - settings.min,
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
471 'vertical' : settings.direction == 'y',
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
472 'val' : settings.start,
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
473 'handlerect' : geom.rectangle(0, 0, settings.handlesize, settings.handlesize)
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
474 });
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
475 }
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
476 });
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
477 },
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
478 getval : function(data) {
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
479 // returns the slider value
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
480 var $this = this;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
481 var settings = $this.data('settings');
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
482 return settings.val;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
483 },
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
484 setval : function(data, val) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
485 // sets the slider value and moves the handle acordingly
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
486 var $this = this;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
487 var settings = $this.data('settings');
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
488 if (val != null) settings.val = val;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
489 var ratio = (settings.val - settings.min) / settings.diff;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
490 var r = settings.rect;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
491 var newpos = settings.vertical
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
492 ? geom.position(r.x + r.width / 2, r.y + ratio * r.height)
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
493 : geom.position(r.x + ratio * r.width, r.y + r.height / 2);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
494 $this.slider('moveto', newpos);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
495 },
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
496 moveto : function(data, pos, calc) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
497 // move the handle in response to a mouse position
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
498 var $this = this;
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
499 var settings = $this.data('settings');
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
500 var r = settings.rect;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
501 var h = settings.handlerect;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
502 var handlepos = r.getCenter();
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
503 if (settings.vertical) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
504 handlepos.y = Math.min(Math.max(r.y, pos.y), r.y + r.height)
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
505 } else {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
506 handlepos.x = Math.min(Math.max(r.x, pos.x), r.x + r.width)
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
507 }
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
508 h.setCenter(handlepos);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
509 h.adjustDiv(settings.$handle);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
510 if (calc) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
511 // calculate new slider value
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
512 var temp = settings.vertical
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
513 ? (handlepos.y - r.y)
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
514 : (handlepos.x - r.x);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
515 settings.val = fn.cropFloat(temp * settings.factor + settings.min);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
516 }
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
517 if (settings.onmove) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
518 settings.onmove($this);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
519 }
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
520 },
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
521 show : function(data) {
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
522 var $this = this;
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
523 $this.fadeIn();
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
524 var settings = $this.data('settings');
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
525 // the jquery elements we need
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
526 var $body = $('body');
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
527 // some variables for easier calculation
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
528 var label = settings.label + ': ';
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
529 // calculate positions for the slider elements
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
530 var r = geom.rectangle($this);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
531 settings.rect = r;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
532 var v = settings.vertical;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
533 settings.factor = v
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
534 ? settings.diff / r.height
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
535 : settings.diff / r.width;
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
536 var labelpos = geom.position(r.x, r.y + settings.labeloffset);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
537 var minpos = v
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
538 ? geom.position(r.x + settings.numberoffset, r.y)
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
539 : geom.position(r.x, r.y + settings.numberoffset);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
540 var maxpos = v
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
541 ? geom.position(r.x + settings.numberoffset, r.y + r.width)
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
542 : geom.position(r.x + r.width - settings.$max.width(), r.y + settings.numberoffset);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
543 // adjust elements
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
544 labelpos.adjustDiv(settings.$label);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
545 minpos.adjustDiv(settings.$min);
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
546 maxpos.adjustDiv(settings.$max);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
547 // set the handle
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
548 $this.slider('setval');
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
549
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
550 // mousedown handler: start sliding
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
551 var sliderStart = function (event) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
552 $body.on("mousemove.slider", sliderMove);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
553 $body.on("mouseup.slider", sliderEnd);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
554 return false;
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
555 };
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
556
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
557 // mousemove handler: move slider
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
558 var sliderMove = function (event) {
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
559 var pos = geom.position(event);
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
560 $this.slider('moveto', pos, true);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
561 settings.$label.text(label + settings.val);
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
562 return false;
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
563 };
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
564
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
565 // mouseup handler: end sliding
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
566 var sliderEnd = function (event) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
567 $body.off("mousemove.slider");
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
568 $body.off("mouseup.slider");
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
569 return false;
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
570 };
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
571
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
572 // bind mousedown handler to sliderhandle
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
573 settings.$handle.on('mousedown.slider', sliderStart);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
574 console.debug('show slider: ', $this, ' settings:', settings);
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
575 },
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
576 destroy : function( ) {
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
577 var $this = this;
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
578 var settings = $this.data('settings');
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
579 var $handle = settings.$handle;
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
580 $handle.off('mousedown.slider');
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
581 $this.fadeOut(function(){
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
582 $this.remove()
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
583 });
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
584 }
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
585 };
1004
8fe70597f7e7 more slider
hertzhaft
parents: 1002
diff changeset
586
988
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
587 // TODO:
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
588 // - take start value from a given param
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
589 // - set the param after sliding
b6261d3d68c2 slider is now moveable
hertzhaft
parents: 985
diff changeset
590 // - show min/max/current values on slider
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
591 $.fn.slider = function( method ) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
592 if ( methods[method] ) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
593 // call a method
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
594 var $elem = $(this);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
595 var data = $elem.data('digilib');
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
596 var args = Array.prototype.slice.call(arguments, 1);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
597 args.unshift(data);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
598 return methods[method].apply(this, args);
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
599 }
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
600 else if ( !method || typeof method === 'object' ) {
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
601 // call init(), with an optional object containing options
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
602 return methods.init.apply( this, arguments );
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
603 }
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
604 else {
999
db78076e7e7e oops, replaced 1 'button' too many
hertzhaft
parents: 998
diff changeset
605 $.error( 'Method ' + method + ' does not exist on digilib.buttons.slider!' );
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
606 }
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
607 };
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
608 };
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
609
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
610 /** creates the HTML structure for a panel div
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
611 */
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
612 var setupPanel = function (data) {
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
613 var $elem = data.$elem;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
614 var panelClass = data.settings.cssPrefix + 'panel';
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
615 var $panel = $elem.find('.' + panelClass);
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
616 // remove panel if it exists already
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
617 if ($panel.length > 0) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
618 $panel.fadeOut(function() {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
619 $panel.remove();
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
620 });
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
621 return null;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
622 }
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
623 $panel = $('<div/>');
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
624 $panel.addClass(panelClass);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
625 var $okcancel = setupOkCancel(data);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
626 $panel.append($okcancel);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
627 $elem.append($panel);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
628 return $panel;
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
629 };
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
630
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
631 /** creates the HTML structure for a slider div
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
632 */
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
633 var setupSlider = function (data, paramname, opts) {
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
634 var id = paramname + "-slider";
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
635 var $div = $('#' + id);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
636 if ($div.length == 0) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
637 // slider not yet created
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
638 $div = $('<div/>');
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
639 var options = sliders[paramname];
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
640 if (opts != null) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
641 $.extend(options, opts);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
642 }
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
643 $div.attr('id', paramname + "-slider");
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
644 $div.slider(options);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
645 }
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
646 return $div;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
647 };
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
648
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
649 /** creates the HTML structure for a ok and cancel div
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
650 */
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
651 var setupOkCancel = function (data) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
652 var settings = data.settings;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
653 var cssPrefix = settings.cssPrefix;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
654 var html = '\
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
655 <div>\
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
656 <button class="'+cssPrefix+'button" id="'+cssPrefix+'Ok">OK</button>\
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
657 <button class="'+cssPrefix+'button" id="'+cssPrefix+'Cancel">Cancel</button>\
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
658 </div>';
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
659 var $div = $(html);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
660 var handler = function(event) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
661 var $panel = $(this).parents('.'+cssPrefix+'panel');
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
662 if (event.keyCode == 27 || event.target.id == cssPrefix+'Cancel') {
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
663 var callback = $panel.data['cancel'];
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
664 if (callback) {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
665 callback(data);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
666 }
1020
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
667 }
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
668 if (event.keyCode == 13 || event.target.id == cssPrefix+'Ok') {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
669 var callback = $panel.data['ok'];
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
670 if (callback) {
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
671 callback(data);
0eedb4a5b674 sliders for rot/brgt/cont, needs some refactoring
hertzhaft
parents: 1019
diff changeset
672 }
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
673 }
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
674 $panel.fadeOut(function() {
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
675 $panel.remove();
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
676 });
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
677 return false;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
678 };
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
679 $div.children().on('click', handler);
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
680 return $div;
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
681 };
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
682
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
683
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
684 /** creates HTML structure for the calibration div
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
685 */
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
686 var setupCalibrationDiv = function (data) {
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
687 var $elem = data.$elem;
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
688 var settings = data.settings;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
689 var cssPrefix = settings.cssPrefix;
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
690 var html = '\
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
691 <div id="'+cssPrefix+'calibration" class="'+cssPrefix+'calibration">\
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
692 <div class="'+cssPrefix+'ruler">\
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
693 <div class="'+cssPrefix+'cm">Please enter the length of this scale on your screen</div>\
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
694 <div>\
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
695 <input id="'+cssPrefix+'calibration-input" size="5"/> cm\
1018
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
696 <button class="'+cssPrefix+'button" id="'+cssPrefix+'calibrationOk">OK</button>\
7f8aaae89f9b rotation slider now working
hertzhaft
parents: 1017
diff changeset
697 <button class="'+cssPrefix+'button" id="'+cssPrefix+'calibrationCancel">Cancel</button>\
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
698 </div>\
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
699 <div class="'+cssPrefix+'calibration-error">Please enter a numeric value like this: 12.3</div>\
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
700 </div>\
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
701 </div>';
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
702 var $calDiv = $(html);
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
703 $elem.append($calDiv);
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
704 var $input = $calDiv.find('input');
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
705 var $ok = $calDiv.find('#'+cssPrefix+'calibrationOk');
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
706 var $cancel = $calDiv.find("#calibrationCancel");
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
707 data.calibrationDiv = $calDiv;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
708 data.calibrationErrorDiv = $calDiv.find('div.'+cssPrefix+'calibration-error');
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
709 data.calibrationInput = $input;
985
7f93dc476cdf halfway up the slider
hertzhaft
parents: 978
diff changeset
710 centerOnScreen(data, $calDiv);
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
711 var handler = function(event) {
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
712 var _data = data;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
713 if (event.keyCode == 27 || event.target.id == cssPrefix+'calibrationCancel') {
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
714 $calDiv.fadeOut();
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
715 return false;
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
716 }
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
717 if (event.keyCode == 13 || event.target.id == cssPrefix+'calibrationOk') {
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
718 changeCalibration(_data);
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
719 return false;
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
720 }
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
721 _data.calibrationInput.removeClass(cssPrefix+'error');
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
722 };
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
723 $ok.on("click", handler);
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
724 $cancel.on("click", handler);
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
725 $input.on("keypress", handler);
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
726 };
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
727
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
728 /** creates HTML structure for the scale mode menu
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
729 */
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
730 var setupScaleModeDiv = function (data) {
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
731 var $elem = data.$elem;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
732 var settings = data.settings;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
733 var cssPrefix = settings.cssPrefix;
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
734 var currentMode = digilib.fn.getScaleMode(data);
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
735 var $scaleModeDiv = $('<div id="'+cssPrefix+'scalemode" style="display:none; z-index:9999; position:absolute"/>');
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
736 data.scaleModeDiv = $scaleModeDiv;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
737 var $scaleModeSelect = $('<select class="'+cssPrefix+'scalemode" />');
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
738 $elem.append($scaleModeDiv);
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
739 $scaleModeDiv.append($scaleModeSelect);
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
740 for (var i = 0; i < modes.length; i++) {
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
741 var mode = modes[i];
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
742 var selected = (mode.name == currentMode) ? ' selected="selected"' : '';
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
743 $scaleModeSelect.append($('<option name="'
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
744 + mode.name + '"' + selected + '>'
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
745 + mode.label + '</option>'));
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
746 }
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
747 $scaleModeDiv.on("click.scalemode", function(event) {
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
748 return false;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
749 });
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
750 $scaleModeSelect.on('change.scalemode', function(event) {
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
751 var d = data;
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
752 changeMode(event, d);
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
753 });
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
754 };
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
755
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
756 /** event handler
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
757 */
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
758 var changeMode = function (event, data) {
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
759 var $select = $(event.target);
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
760 var newMode = $select.find("option:selected").attr("name");
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
761 console.debug('setting mode to:', newMode);
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
762 var $div = data.scaleModeDiv;
977
17bf6ac7a8cd attach click event to body instead of document?
hertzhaft
parents: 975
diff changeset
763 $('body').off("click.scalemode");
968
665fd0e912f9 set scale mode widget
hertzhaft
parents: 965
diff changeset
764 $div.fadeOut();
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 968
diff changeset
765 digilib.actions.setScaleMode(data, newMode);
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
766 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
767
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
768 /** event handler
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
769 */
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
770 var changeCalibration = function (data) {
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
771 var $calDiv = data.calibrationDiv;
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
772 var $input = data.calibrationInput;
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
773 var cm = $input.val();
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
774 var w = $calDiv.width();
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
775 var dpi = fn.cropFloat(w / parseFloat(cm) * 2.54);
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
776 console.debug('width', w, 'cm', cm, 'input dpi:', dpi);
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
777 if(!fn.isNumber(dpi)) {
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
778 $input.addClass(data.settings.cssPrefix+'error');
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
779 return;
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
780 }
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
781 digilib.actions.calibrate(data, dpi);
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
782 $calDiv.fadeOut();
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
783 };
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 977
diff changeset
784
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
785 /**
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
786 * creates HTML structure for a single button
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
787 */
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
788 var createButton = function (data, $div, buttonName) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
789 var $elem = data.$elem;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
790 var settings = data.settings;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
791 var cssPrefix = settings.cssPrefix;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
792 var mode = settings.interactionMode;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
793 var imagePath = settings.buttonSettings[mode].imagePath;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
794 // make relative imagePath absolute
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
795 if (imagePath.charAt(0) !== '/' && imagePath.substring(0,3) !== 'http') {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
796 imagePath = settings.digilibBaseUrl + '/jquery/' + imagePath;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
797 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
798 var buttonConfig = settings.buttons[buttonName];
1017
c3931ec5485f write a console error when a button is not defined
hertzhaft
parents: 1007
diff changeset
799 if (buttonConfig == null) {
c3931ec5485f write a console error when a button is not defined
hertzhaft
parents: 1007
diff changeset
800 console.error('Could not create button: ' + buttonName);
c3931ec5485f write a console error when a button is not defined
hertzhaft
parents: 1007
diff changeset
801 return;
c3931ec5485f write a console error when a button is not defined
hertzhaft
parents: 1007
diff changeset
802 }
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
803 // button properties
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
804 var action = buttonConfig.onclick;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
805 var tooltip = buttonConfig.tooltip;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
806 var icon = imagePath + buttonConfig.icon;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
807 // construct the button html
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
808 var $button = $('<div class="'+cssPrefix+'button"></div>');
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 988
diff changeset
809 var $a = $('<a href=""/>');
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
810 var $img = $('<img class="'+cssPrefix+'button"/>');
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
811 $div.append($button);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
812 $button.append($a);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
813 $a.append($img);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
814 // add attributes and bindings
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
815 $button.attr('title', tooltip);
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
816 $button.addClass(cssPrefix+'button-'+buttonName);
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
817 $img.attr('src', icon);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
818 // create handler for the buttons
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
819 $button.on('click.digilib', (function () {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
820 // we create a new closure to capture the value of action
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
821 if ($.isArray(action)) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
822 // the handler function calls digilib with action and parameters
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
823 return function (evt) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
824 console.debug('click action=', action, ' evt=', evt);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
825 $elem.digilib.apply($elem, action);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
826 return false;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
827 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
828 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
829 // the handler function calls digilib with action
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
830 return function (evt) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
831 console.debug('click action=', action, ' evt=', evt);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
832 $elem.digilib(action);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
833 return false;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
834 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
835 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
836 })());
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
837 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
838
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
839 // creates HTML structure for buttons in elem
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
840 var createButtons = function (data, buttonSetIdx) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
841 var $elem = data.$elem;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
842 var settings = data.settings;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
843 var mode = settings.interactionMode;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
844 var cssPrefix = settings.cssPrefix;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
845 var buttonSettings = settings.buttonSettings[mode];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
846 var buttonGroup = buttonSettings.buttonSets[buttonSetIdx];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
847 if (buttonGroup == null) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
848 // no buttons here
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
849 return;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
850 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
851 // button divs are marked with class "keep"
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
852 var $buttonsDiv = $('<div class="'+cssPrefix+'keep '+cssPrefix+'buttons"/>');
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
853 var buttonNames = buttonSettings[buttonGroup];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
854 for (var i = 0; i < buttonNames.length; i++) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
855 var buttonName = buttonNames[i];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
856 createButton(data, $buttonsDiv, buttonName);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
857 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
858 // make buttons div scroll if too large for window
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
859 if ($buttonsDiv.height() > $(window).height() - 10) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
860 $buttonsDiv.css('position', 'absolute');
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
861 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
862 // buttons hidden at first
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
863 $buttonsDiv.hide();
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
864 $elem.append($buttonsDiv);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
865 if (data.$buttonSets == null) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
866 // first button set
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
867 data.$buttonSets = [$buttonsDiv];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
868 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
869 $elem.append($buttonsDiv);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
870 data.$buttonSets[buttonSetIdx] = $buttonsDiv;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
871 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
872 return $buttonsDiv;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
873 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
874
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
875 // display more (or less) button sets
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
876 var showButtons = function (data, more, setIdx, animated) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
877 var atime = animated ? 'fast': 0;
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
878 var cssPrefix = data.settings.cssPrefix;
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
879 // get button width from settings
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
880 var mode = data.settings.interactionMode;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
881 var btnWidth = data.settings.buttonSettings[mode].buttonSetWidth;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
882 if (more) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
883 // add set
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
884 var $otherSets = data.$elem.find('div.'+cssPrefix+'buttons:visible');
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
885 var $set;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
886 if (data.$buttonSets && data.$buttonSets[setIdx]) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
887 // set exists
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
888 $set = data.$buttonSets[setIdx];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
889 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
890 $set = createButtons(data, setIdx);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
891 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
892 if ($set == null) return false;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
893 // include border in calculation
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
894 //var btnWidth = $set.outerWidth();
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
895 // console.debug("btnWidth", btnWidth);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
896 // move remaining sets left and show new set
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
897 if ($otherSets.length > 0) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
898 $otherSets.animate({right : '+='+btnWidth+'px'}, atime,
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
899 function () {$set.show();});
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
900 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
901 $set.show();
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
902 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
903 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
904 // remove set
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
905 var $set = data.$buttonSets[setIdx];
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
906 if ($set == null) return false;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
907 //var btnWidth = $set.outerWidth();
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
908 // hide last set
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
909 $set.hide();
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
910 // take remaining sets and move right
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
911 var $otherSets = data.$elem.find('div.'+cssPrefix+'buttons:visible');
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
912 $otherSets.animate({right : '-='+btnWidth+'px'}, atime);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
913 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
914 return true;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
915 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
916
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
917 // check for buttons to highlight TODO: improve this!
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
918 var highlightButtons = function (data, name, on) {
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
919 var cssPrefix = data.settings.cssPrefix;
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
920 var $buttons = data.$elem.find('div.'+cssPrefix+'buttons:visible'); // include hidden?
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
921 // add a class for highlighted button
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
922 var highlight = function (name, on) {
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
923 var $button = $buttons.find('div.'+cssPrefix+'button-' + name);
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
924 if (on) {
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
925 $button.addClass(cssPrefix+'button-on');
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
926 } else {
996
0b63093d598e cssPrefix works now.
robcast
parents: 991
diff changeset
927 $button.removeClass(cssPrefix+'button-on');
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
928 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
929 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
930 if (name != null) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
931 return highlight(name, on);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
932 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
933 var flags = data.scalerFlags;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
934 var settings = data.settings;
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
935 highlight('rot', settings.rot);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
936 highlight('brgt', settings.brgt);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
937 highlight('cont', settings.cont);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
938 highlight('bird', settings.isBirdDivVisible);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
939 highlight('help', settings.isAboutDivVisible);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
940 highlight('hmir', flags.hmir);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
941 highlight('vmir', flags.vmir);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
942 highlight('quality', flags.q1 || flags.q2);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
943 highlight('zoomin', ! isFullArea(data.zoomArea));
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
944 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
945
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
946 // plugin object with name and init
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
947 // shared objects filled by digilib on registration
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
948 var plugin = {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
949 name : 'buttons',
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
950 install : install,
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
951 init : init,
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
952 buttons : {},
946
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
953 actions : {},
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
954 fn : {},
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
955 plugins : {}
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
956 };
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
957
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
958 if ($.fn.digilib == null) {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
959 $.error("jquery.digilib.buttons must be loaded after jquery.digilib!");
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
960 } else {
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
961 $.fn.digilib('plugin', plugin);
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
962 }
aa5a978a5311 moved button code into plugin
robcast
parents:
diff changeset
963 })(jQuery);