svghmi/widget_animaterotation.ysl2
author usveticic
Mon, 19 Oct 2020 09:29:11 +0200
branchsvghmi
changeset 3064 4b44d09c48a7
parent 3062 svghmi/widget_animate.ysl2@9ec338a99a18
child 3232 7bdb766c2a4d
permissions -rw-r--r--
- New widget customHtml which allows to insert block of html code
- widget animate transfered to animaterotation
- widget animate, left to be more customizable
- changes to svghmi_v2/svghmi.svg
// widget_animaterotation.ysl2

template "widget[@type='AnimateRotation']", mode="widget_class"{
    ||
    class AnimateRotationWidget extends Widget{
        frequency = 5;
        speed = 0;
        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 == "animateTransform"){
                    if(this.speed > 0){
                        child.setAttribute("dur", this.speed+"s");
                        child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
                        child.setAttribute("to", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
                    }
                    else if(this.speed < 0){
                        child.setAttribute("dur", (-1)*this.speed+"s");
                        child.setAttribute("from", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
                        child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
                    }
                    else{
                        child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
                        child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
                    }
                }
           }
        }

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


template "widget[@type='AnimateRotation']", mode="widget_defs" {
    param "hmi_element";
    |,
}