svghmi/svghmi.js
branchsvghmi
changeset 2843 94696b3f69fb
parent 2841 7c6050cde9e3
child 2850 e38654ec6281
--- a/svghmi/svghmi.js	Fri Feb 21 16:22:44 2020 +0100
+++ b/svghmi/svghmi.js	Thu Feb 27 13:14:24 2020 +0100
@@ -217,33 +217,50 @@
 
 var current_page;
 
+function prepare_svg() {
+    /* set everybody hidden initially for better performance */
+    for(let widget in hmi_widgets){
+        if(widget.element != undefined)
+            widget.element.style.display = "none";
+    }
+        /*for(let name in page_desc){
+            if(name != new_desc){
+                page_desc[name].widget.element.style.display = "none";
+            }
+        }*/
+};
+
 function switch_page(page_name) {
     let old_desc = page_desc[current_page];
     let new_desc = page_desc[page_name];
 
     if(new_desc == undefined){
+        /* TODO LOG ERROR */
         return;
     }
 
-    /* remove subsribers of previous page if any */
     if(old_desc){
         for(let widget of old_desc.widgets){
+
+            /* hide widget */
+            if(widget.element != undefined)
+                widget.element.style.display = "none";
+
+            /* remove subsribers */
             for(let index of widget.indexes){
                 subscribers[index].delete(widget);
             }
         }
         old_desc.widget.element.style.display = "none";
-    } else {
-        /* initial page switch : set everybody hidden */
-        for(let name in page_desc){
-            if(name != new_desc){
-                page_desc[name].widget.element.style.display = "none";
-            }
-        }
-    }
-
-    /* add new subsribers if any */
+    }
+
     for(let widget of new_desc.widgets){
+
+        /* unhide widget */
+        if(widget.element != undefined)
+            widget.element.style.display = "inline";
+
+        /* add widget's subsribers */
         for(let index of widget.indexes){
             subscribers[index].add(widget);
             /* dispatch current cache in newly opened page widgets */
@@ -267,6 +284,7 @@
     init_widgets();
     send_reset();
     // show main page
+    prepare_svg();
     switch_page(default_page);
 };