Reworked button widget so it uses classes. svghmi
authorusveticic
Wed, 05 Aug 2020 15:04:53 +0200
branchsvghmi
changeset 3009 7c6960f09881
parent 3004 705e34c6fe93
child 3010 893cc309f5e2
Reworked button widget so it uses classes.
svghmi/widget_button.ysl2
--- a/svghmi/widget_button.ysl2	Tue Aug 04 11:53:39 2020 +0200
+++ b/svghmi/widget_button.ysl2	Wed Aug 05 15:04:53 2020 +0200
@@ -1,33 +1,47 @@
 // widget_button.ysl2
 
+template "widget[@type='Button']", mode="widget_class"
+    ||
+    class ButtonWidget extends Widget{
+        frequency = 5;
+        state = 0;
+        active_style = undefined;
+        inactive_style = undefined;
+
+         on_mouse_down(evt) {
+             if (this.active_style && this.inactive_style) {
+                 this.active_elt.setAttribute("style", this.active_style);
+                 this.inactive_elt.setAttribute("style", "display:none");
+             }
+             change_hmi_value(this.indexes[0], "=1");
+         }
+
+         on_mouse_up(evt) {
+             if (this.active_style && this.inactive_style) {
+                 this.active_elt.setAttribute("style", "display:none");
+                 this.inactive_elt.setAttribute("style", this.inactive_style);
+             }
+             change_hmi_value(this.indexes[0], "=0");
+         }
+
+         init() {
+            this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined;
+            this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined;
+
+            if (this.active_style && this.inactive_style) {
+                this.active_elt.setAttribute("style", "display:none");
+                this.inactive_elt.setAttribute("style", this.inactive_style);
+            }
+
+            this.element.setAttribute("onmousedown", "hmi_widgets['«$hmi_element/@id»'].on_mouse_down(evt)");
+            this.element.setAttribute("onmouseup", "hmi_widgets['«$hmi_element/@id»'].on_mouse_up(evt)");
+         }
+    }
+    ||
+
+
 template "widget[@type='Button']", mode="widget_defs" {
     param "hmi_element";
     optional_labels("active inactive");
-    | frequency: 5,
-    | on_mouse_down: function(evt) {
-    |     if (this.active_style && this.inactive_style) {
-    |         this.active_elt.setAttribute("style", this.active_style);
-    |         this.inactive_elt.setAttribute("style", "display:none");
-    |     }
-    |     this.apply_hmi_value(0, 1);
-    | },
-    | on_mouse_up: function(evt) {
-    |     if (this.active_style && this.inactive_style) {
-    |         this.active_elt.setAttribute("style", "display:none");
-    |         this.inactive_elt.setAttribute("style", this.inactive_style);
-    |     }
-    |     this.apply_hmi_value(0, 0);
-    | },
-    | active_style: undefined,
-    | inactive_style: undefined,
-    | init: function() {
-    |   this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined;
-    |   this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined;
-    |   if (this.active_style && this.inactive_style) {
-    |       this.active_elt.setAttribute("style", "display:none");
-    |       this.inactive_elt.setAttribute("style", this.inactive_style);
-    |   }
-    |   this.element.setAttribute("onmousedown", "hmi_widgets['«$hmi_element/@id»'].on_mouse_down(evt)");
-    |   this.element.setAttribute("onmouseup", "hmi_widgets['«$hmi_element/@id»'].on_mouse_up(evt)");
-    | },
+    |,
 }