SVGHMI: added ListSwitch widget
authorEdouard Tisserant
Fri, 14 Jan 2022 11:40:22 +0100
changeset 3403 4a048b5b9e3b
parent 3402 3f54a680fe45
child 3404 6f5cd8d5dc11
SVGHMI: added ListSwitch widget
svghmi/widget_listswitch.ysl2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svghmi/widget_listswitch.ysl2	Fri Jan 14 11:40:22 2022 +0100
@@ -0,0 +1,38 @@
+// widget_switch.ysl2
+
+widget_desc("ListSwitch") {
+    longdesc
+    ||
+    ListSwitch widget displays one item of an HMI:List depending on value of
+    given variable. Main element of the widget must be a clone of the list or
+    of an item of that list.  
+
+    Given variable's current value is compared to list items
+    label. For exemple if given variable type
+    is HMI_INT and value is 1, then item with label '1' will be displayed.
+    If matching variable of type HMI_STRING, then no quotes are needed. 
+    For exemple, 'hello' match HMI_STRING 'hello'.
+    ||
+
+    shortdesc > Displays item of an HMI:List whose label matches value.
+
+    path name="value" accepts="HMI_INT,HMI_STRING" > value to compare to labels
+    
+}
+
+widget_class("ListSwitch"){
+    ||
+        frequency = 5;
+    ||
+}
+
+widget_defs("ListSwitch") {
+    // cloned element must be part of a HMI:List or a HMI:List
+    const "targetid", "substring-after($hmi_element/@xlink:href,'#')";
+    const "from_list", "$hmi_lists[(@id | */@id) = $targetid]";
+    ||
+        dispatch: function(value) {
+            this.element.href.baseVal = "#"+hmi_widgets["«$from_list/@id»"].items[value];
+        },
+    ||
+}