svghmi/svghmi.js
branchsvghmi
changeset 2841 7c6050cde9e3
parent 2836 ce6cecdb7320
child 2843 94696b3f69fb
equal deleted inserted replaced
2840:e588f25e6c74 2841:7c6050cde9e3
   218 var current_page;
   218 var current_page;
   219 
   219 
   220 function switch_page(page_name) {
   220 function switch_page(page_name) {
   221     let old_desc = page_desc[current_page];
   221     let old_desc = page_desc[current_page];
   222     let new_desc = page_desc[page_name];
   222     let new_desc = page_desc[page_name];
   223     /* TODO hide / show widgets */
   223 
       
   224     if(new_desc == undefined){
       
   225         return;
       
   226     }
   224 
   227 
   225     /* remove subsribers of previous page if any */
   228     /* remove subsribers of previous page if any */
   226     if(old_desc) for(let widget of old_desc.widgets){
   229     if(old_desc){
       
   230         for(let widget of old_desc.widgets){
       
   231             for(let index of widget.indexes){
       
   232                 subscribers[index].delete(widget);
       
   233             }
       
   234         }
       
   235         old_desc.widget.element.style.display = "none";
       
   236     } else {
       
   237         /* initial page switch : set everybody hidden */
       
   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){
   227         for(let index of widget.indexes){
   247         for(let index of widget.indexes){
   228             subscribers[index].delete(widget);
   248             subscribers[index].add(widget);
   229         }
   249             /* dispatch current cache in newly opened page widgets */
   230     }
   250             let cached_val = cache[index];
   231 
   251             if(cached_val != undefined)
   232     if(new_desc) {
   252                 dispatch_value_to_widget(widget, index, cached_val, cached_val);
   233         /* add new subsribers if any */
   253         }
   234         for(let widget of new_desc.widgets){
   254     }
   235             for(let index of widget.indexes){
   255 
   236                 subscribers[index].add(widget);
   256     new_desc.widget.element.style.display = "inline";
   237                 let cached_val = cache[index];
   257 
   238                 if(cached_val != undefined)
   258     svg_root.setAttribute('viewBox',new_desc.bbox.join(" "));
   239                     dispatch_value_to_widget(widget, index, cached_val, cached_val);
       
   240             }
       
   241         }
       
   242         svg_root.setAttribute('viewBox',new_desc.bbox.join(" "));
       
   243         // TODO dispatch current cache in newly opened page
       
   244     }
       
   245     current_page = page_name;
   259     current_page = page_name;
   246 
   260 
   247     update_subscriptions();
   261     update_subscriptions();
   248 };
   262 };
   249 
   263