svghmi/widget_jump.ysl2
branchsvghmi
changeset 3081 9e55061c87fa
parent 2980 2a21d6060d64
child 3107 ee0704cc6dc8
--- a/svghmi/widget_jump.ysl2	Fri Nov 27 18:06:34 2020 +0100
+++ b/svghmi/widget_jump.ysl2	Wed Dec 02 14:30:58 2020 +0100
@@ -57,11 +57,6 @@
     }
     |     },
     }
-    |     on_click: function(evt) {
-    |         const index = this.indexes.length > 0 ? this.indexes[0] + this.offset : undefined;
-    |         const name = this.args[0];
-    |         switch_page(name, index);
-    |     },
     if "$have_activity" {
     |     notify_page_change: function(page_name, index){
     |         const ref_index = this.indexes.length > 0 ? this.indexes[0] + this.offset : undefined;
@@ -70,13 +65,21 @@
     |         this.update();
     |     },
     }
+    |     make_on_click(){
+    |         let that = this;
+    |         const name = this.args[0];
+    |         return function(evt){
+    |             const index = that.indexes.length > 0 ? that.indexes[0] + that.offset : undefined;
+    |             switch_page(name, index);
+    |         }
+    |     },
     |     init: function() {
     /* registering event this way does not "click" through svg:use 
     |     this.element.onclick = evt => switch_page(this.args[0]);
     event must be registered by adding attribute to element instead
     TODO : generalize mouse event handling by global event capture + getElementsAtPoint()
     */
-    |         this.element.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_click(evt)");
+    |         this.element.onclick = this.make_on_click();
     if "$have_activity" {
     |         this.active_elt_style = this.active_elt.getAttribute("style");
     |         this.inactive_elt_style = this.inactive_elt.getAttribute("style");