svghmi/widget_switch.ysl2
author Edouard Tisserant
Thu, 09 Apr 2020 09:52:34 +0200
branchsvghmi
changeset 2922 ddce4ebdf010
parent 2907 1695122a5e16
child 2962 02ea529fd08c
permissions -rw-r--r--
SVGHMI: intermediate commit while working on dropdown widget.

Here is the plan :
HMI:DropDown : svg:g of svg:rect + svg:text
rect is extended to match content size, and if content size exceed page size, user can scroll
HMI:List : either HMI:List:ListName as svg:text, one tspan per list entry
or HMI:List:ListName:Foreach:HMI_CLASS:SUB/PATH/TO/VALUE@/ROOT/PATH as empty svg:g
// widget_switch.ysl2

template "widget[@type='Switch']", mode="widget_defs" {
    param "hmi_element";
    |     frequency: 5,
    |     dispatch: function(value) {
    |         for(let choice of this.choices){
    |             if(value != choice.value){
    |                 choice.elt.setAttribute("style", "display:none");
    |             } else {
    |                 choice.elt.setAttribute("style", choice.style);
    |             }
    |         }
    |     },
    |     init: function() {
    |         // Hello Switch
    |     },
    |     choices: [
    const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+|false|true)(#.*)?$'"!;
    foreach "$hmi_element/*[regexp:test(@inkscape:label,$regex)]" {
        const "literal", "regexp:match(@inkscape:label,$regex)[2]";
    |         {
    |             elt:id("«@id»"),
    |             style:"«@style»",
    |             value:«$literal»
    |         }`if "position()!=last()" > ,`
    }
    |     ],
}