svghmi/svghmi.js
branchsvghmi
changeset 2843 94696b3f69fb
parent 2841 7c6050cde9e3
child 2850 e38654ec6281
equal deleted inserted replaced
2842:2f73f001955a 2843:94696b3f69fb
   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