svghmi/widget_switch.ysl2
author Edouard Tisserant <edouard.tisserant@gmail.com>
Sun, 21 Feb 2021 21:38:44 +0100
branchsvghmi
changeset 3155 99ce78ddd353
parent 2969 88988edb2e93
child 3220 ec365ef396b1
permissions -rw-r--r--
SVGHMI: finally found why HMI:Input wasnt't initializing properly: vsprintf takes a list. Also, removed intermediate variable last_val, since edit_value() works on strings anyhow, and in case of formated floats, it is better to workl on already formated value.
// widget_switch.ysl2

template "widget[@type='Switch']", mode="widget_class"
    ||
    class SwitchWidget extends Widget{
        frequency = 5;
        dispatch(value) {
            for(let choice of this.choices){
                if(value != choice.value){
                    choice.elt.setAttribute("style", "display:none");
                } else {
                    choice.elt.setAttribute("style", choice.style);
                }
            }
        }
    }
    ||

template "widget[@type='Switch']", mode="widget_defs" {
    param "hmi_element";
    |     choices: [
    const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+|false|true)(#.*)?$'"!;
    foreach "$result_svg_ns//*[@id = $hmi_element/@id]//*[regexp:test(@inkscape:label,$regex)]" {
        const "literal", "regexp:match(@inkscape:label,$regex)[2]";
    |         {
    |             elt:id("«@id»"),
    |             style:"«@style»",
    |             value:«$literal»
    |         }`if "position()!=last()" > ,`
    }
    |     ],
}