--- /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];
+ },
+ ||
+}