215 return new_val; |
215 return new_val; |
216 } |
216 } |
217 |
217 |
218 var current_page; |
218 var current_page; |
219 |
219 |
|
220 function prepare_svg() { |
|
221 /* set everybody hidden initially for better performance */ |
|
222 for(let widget in hmi_widgets){ |
|
223 if(widget.element != undefined) |
|
224 widget.element.style.display = "none"; |
|
225 } |
|
226 /*for(let name in page_desc){ |
|
227 if(name != new_desc){ |
|
228 page_desc[name].widget.element.style.display = "none"; |
|
229 } |
|
230 }*/ |
|
231 }; |
|
232 |
220 function switch_page(page_name) { |
233 function switch_page(page_name) { |
221 let old_desc = page_desc[current_page]; |
234 let old_desc = page_desc[current_page]; |
222 let new_desc = page_desc[page_name]; |
235 let new_desc = page_desc[page_name]; |
223 |
236 |
224 if(new_desc == undefined){ |
237 if(new_desc == undefined){ |
|
238 /* TODO LOG ERROR */ |
225 return; |
239 return; |
226 } |
240 } |
227 |
241 |
228 /* remove subsribers of previous page if any */ |
|
229 if(old_desc){ |
242 if(old_desc){ |
230 for(let widget of old_desc.widgets){ |
243 for(let widget of old_desc.widgets){ |
|
244 |
|
245 /* hide widget */ |
|
246 if(widget.element != undefined) |
|
247 widget.element.style.display = "none"; |
|
248 |
|
249 /* remove subsribers */ |
231 for(let index of widget.indexes){ |
250 for(let index of widget.indexes){ |
232 subscribers[index].delete(widget); |
251 subscribers[index].delete(widget); |
233 } |
252 } |
234 } |
253 } |
235 old_desc.widget.element.style.display = "none"; |
254 old_desc.widget.element.style.display = "none"; |
236 } else { |
255 } |
237 /* initial page switch : set everybody hidden */ |
256 |
238 for(let name in page_desc){ |
|
239 if(name != new_desc){ |
|
240 page_desc[name].widget.element.style.display = "none"; |
|
241 } |
|
242 } |
|
243 } |
|
244 |
|
245 /* add new subsribers if any */ |
|
246 for(let widget of new_desc.widgets){ |
257 for(let widget of new_desc.widgets){ |
|
258 |
|
259 /* unhide widget */ |
|
260 if(widget.element != undefined) |
|
261 widget.element.style.display = "inline"; |
|
262 |
|
263 /* add widget's subsribers */ |
247 for(let index of widget.indexes){ |
264 for(let index of widget.indexes){ |
248 subscribers[index].add(widget); |
265 subscribers[index].add(widget); |
249 /* dispatch current cache in newly opened page widgets */ |
266 /* dispatch current cache in newly opened page widgets */ |
250 let cached_val = cache[index]; |
267 let cached_val = cache[index]; |
251 if(cached_val != undefined) |
268 if(cached_val != undefined) |
265 // Once connection established |
282 // Once connection established |
266 ws.onopen = function (evt) { |
283 ws.onopen = function (evt) { |
267 init_widgets(); |
284 init_widgets(); |
268 send_reset(); |
285 send_reset(); |
269 // show main page |
286 // show main page |
|
287 prepare_svg(); |
270 switch_page(default_page); |
288 switch_page(default_page); |
271 }; |
289 }; |
272 |
290 |
273 ws.onclose = function (evt) { |
291 ws.onclose = function (evt) { |
274 // TODO : add visible notification while waiting for reload |
292 // TODO : add visible notification while waiting for reload |