svghmi/widget_animate.ysl2
author Edouard Tisserant <edouard.tisserant@gmail.com>
Mon, 18 Oct 2021 12:40:53 +0200
branchwxPython4
changeset 3337 6097bca230e8
parent 3232 7bdb766c2a4d
permissions -rw-r--r--
Add OPC-UA simple synchronous client extension.

This extension uses python-opcua to growse server nodes, and generates runtime C code that use open62541.
- python-opcua must be available in python path (i.e. "import opcua" must succeed). Can be installed from pypi with "python2 -m pip install opcua --user" .
- at build time, open62541 is expected to be build in "open62541" directory, aside "beremiz" directory.
// widget_animate.ysl2

widget_class("Animate") {
    ||
        frequency = 5;
        speed = 0;
        start = false;
        widget_center = undefined;

        dispatch(value) {
            this.speed = value / 5;

            //reconfigure animation
            this.request_animate();
        }

        animate(){
           // change animation properties
           for(let child of this.element.children){
                if(child.nodeName.startsWith("animate")){
                    if(this.speed != 0 && !this.start){
                        this.start = true;
                        this.element.beginElement();
                    }

                    if(this.speed > 0){
                        child.setAttribute("dur", this.speed+"s");
                    }
                    else if(this.speed < 0){
                        child.setAttribute("dur", (-1)*this.speed+"s");
                    }
                    else{
                        this.start = false;
                        this.element.endElement();
                    }
                }
           }
        }

        init() {
            let widget_pos = this.element.getBBox();
            this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
        }
    ||
}