# HG changeset patch # User Edouard Tisserant # Date 1642156822 -3600 # Node ID 4a048b5b9e3bf22ab8b3ff0e0db3b2ddcb1c5b01 # Parent 3f54a680fe456d956342939e8f676f0315da423a SVGHMI: added ListSwitch widget diff -r 3f54a680fe45 -r 4a048b5b9e3b 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]; + }, + || +}