svghmi/widget_tooglebutton.ysl2
author Edouard Tisserant <edouard.tisserant@gmail.com>
Sun, 02 May 2021 23:15:23 +0200
branchsvghmi
changeset 3233 315f17e74ef5
parent 3232 7bdb766c2a4d
child 3241 fe945f1f48b7
permissions -rw-r--r--
SVGHMI: Added widget_desc to declare widget signature and description
// widget_tooglebutton.ysl2


widget_class("ToggleButton") {
    ||
        frequency = 5;
        state = 0;
        active_style = undefined;
        inactive_style = undefined;

        dispatch(value) {
            this.state = value;
            //redraw toggle button
            this.request_animate();
        }

        on_click(evt) {
            //toggle state and apply
            this.state = this.state ? false : true;
            this.apply_hmi_value(0, this.state);

            //redraw toggle button
            this.request_animate();
        }

        activate(val) {
            let [active, inactive] = val ? ["none",""] : ["", "none"];
            if (this.active_elt)
                this.active_elt.style.display = active;
            if (this.inactive_elt)
                this.inactive_elt.style.display = inactive;
        }

        animate(){
            // redraw toggle button on screen refresh
            this.activate(this.state);
        }

        init() {
            this.activate(false);
            this.element.onclick = (evt) => this.on_click(evt);
        }
    ||
}

widget_defs("ToggleButton") {
    param "hmi_element";
    optional_labels("active inactive");
}