12 with "mandatory","'no'"; |
12 with "mandatory","'no'"; |
13 content; |
13 content; |
14 } |
14 } |
15 }; |
15 }; |
16 |
16 |
|
17 decl activable() alias - { |
|
18 | activable_sub:{ |
|
19 labels("/active /inactive") { |
|
20 content; |
|
21 } |
|
22 | } |
|
23 }; |
17 decl activable_labels(*ptr) alias - { |
24 decl activable_labels(*ptr) alias - { |
18 optional_labels(*ptr) { |
25 optional_labels(*ptr) { |
19 with "subelements","'active inactive'"; |
26 with "subelements","'active inactive'"; |
20 content; |
27 content; |
21 } |
28 } |
162 } |
169 } |
163 |
170 |
164 emit "preamble:widget-base-class" { |
171 emit "preamble:widget-base-class" { |
165 || |
172 || |
166 var pending_widget_animates = []; |
173 var pending_widget_animates = []; |
|
174 |
|
175 function _hide(elt, placeholder){ |
|
176 if(elt.parentNode != null) |
|
177 placeholder.parentNode.removeChild(elt); |
|
178 } |
|
179 function _show(elt, placeholder){ |
|
180 placeholder.parentNode.insertBefore(elt, placeholder); |
|
181 } |
|
182 |
|
183 function set_activation_state(eltsub, state){ |
|
184 if(eltsub.active_elt_placeholder == undefined){ |
|
185 eltsub.active_elt_placeholder = document.createComment(""); |
|
186 eltsub.active_elt.parentNode.insertBefore(eltsub.active_elt_placeholder, eltsub.active_elt); |
|
187 eltsub.inactive_elt_placeholder = document.createComment(""); |
|
188 eltsub.inactive_elt.parentNode.insertBefore(eltsub.inactive_elt_placeholder, eltsub.inactive_elt); |
|
189 } |
|
190 (state?_show:_hide)(eltsub.active_elt, eltsub.active_elt_placeholder); |
|
191 ((state || state==undefined)?_hide:_show)(eltsub.inactive_elt, eltsub.inactive_elt_placeholder); |
|
192 } |
|
193 |
|
194 function activate_activable(eltsub) { |
|
195 set_activation_state(eltsub, true); |
|
196 } |
|
197 |
|
198 function inactivate_activable(eltsub) { |
|
199 set_activation_state(eltsub, false); |
|
200 } |
167 |
201 |
168 class Widget { |
202 class Widget { |
169 offset = 0; |
203 offset = 0; |
170 frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */ |
204 frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */ |
171 unsubscribable = false; |
205 unsubscribable = false; |
409 if(!this.pending_animate){ |
443 if(!this.pending_animate){ |
410 pending_widget_animates.push(this); |
444 pending_widget_animates.push(this); |
411 this.pending_animate = true; |
445 this.pending_animate = true; |
412 requestHMIAnimation(); |
446 requestHMIAnimation(); |
413 } |
447 } |
414 |
448 } |
415 } |
449 |
416 |
450 set_activation_state(state){ |
417 activate_activable(eltsub) { |
451 set_activation_state(this.activable_sub, state); |
418 eltsub.inactive.style.display = "none"; |
|
419 eltsub.active.style.display = ""; |
|
420 } |
|
421 |
|
422 inactivate_activable(eltsub) { |
|
423 eltsub.active.style.display = "none"; |
|
424 eltsub.inactive.style.display = ""; |
|
425 } |
452 } |
426 } |
453 } |
427 || |
454 || |
428 } |
455 } |
429 |
456 |