svghmi/widget_animaterotation.ysl2
author Edouard Tisserant
Wed, 01 Dec 2021 09:54:02 +0100
branchRuntimeLists
changeset 3394 9ea29ac18837
parent 3241 fe945f1f48b7
permissions -rw-r--r--
RUNTIME: Variable trace now uses limited list and buffer instead of flags in instance tree that was requiring systematical instance tree traversal, and worst size buffer. Forcing and retain still use tree traversal.
3064
4b44d09c48a7 - New widget customHtml which allows to insert block of html code
usveticic
parents: 3062
diff changeset
     1
// widget_animaterotation.ysl2
2944
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents:
diff changeset
     2
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     3
widget_desc("AnimateRotation") {
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     4
    longdesc
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     5
    ||
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     6
    AnimateRotation - DEPRECATED, do not use.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     7
    Doesn't follow WYSIWYG principle, and forces user to add animateTransform tag in SVG (using inkscape XML editor for exemple)
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     8
    ||
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
     9
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    10
    shortdesc > AnimateRotation - DEPRECATED
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    11
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    12
    path name="speed" accepts="HMI_INT,HMI_REAL" > speed
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    13
    
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    14
}
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    15
3232
7bdb766c2a4d SVGHMI: In order to allow widget signature and description to coexist in same ysl2 file, introduced widget_class, widget_defs to declare widget codegen templates and gen_index_xhtml to mark templates that are only usefull in gen_index_xhtml.xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3064
diff changeset
    16
widget_class("AnimateRotation") {
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    17
    ||
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    18
        frequency = 5;
3059
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    19
        speed = 0;
3062
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    20
        widget_center = undefined;
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    21
3056
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    22
        dispatch(value) {
3062
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    23
            this.speed = value / 5;
3059
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    24
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    25
            //reconfigure animation
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    26
            this.request_animate();
3056
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    27
        }
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    28
3059
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    29
        animate(){
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    30
           // change animation properties
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3232
diff changeset
    31
           // TODO : rewrite with proper es6
3062
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    32
           for(let child of this.element.children){
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    33
                if(child.nodeName == "animateTransform"){
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    34
                    if(this.speed > 0){
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    35
                        child.setAttribute("dur", this.speed+"s");
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    36
                        child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    37
                        child.setAttribute("to", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    38
                    }
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    39
                    else if(this.speed < 0){
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    40
                        child.setAttribute("dur", (-1)*this.speed+"s");
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    41
                        child.setAttribute("from", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    42
                        child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    43
                    }
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    44
                    else{
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    45
                        child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    46
                        child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    47
                    }
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    48
                }
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    49
           }
3059
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    50
        }
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    51
3059
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    52
        init() {
3062
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    53
            let widget_pos = this.element.getBBox();
9ec338a99a18 Button fix if no active or inactive state,
usveticic
parents: 3059
diff changeset
    54
            this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
3059
e0db3f6a5f39 Button and toggle reworked to use animate and dispatch
usveticic
parents: 3058
diff changeset
    55
        }
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    56
    ||
3024
Edouard Tisserant
parents: 3018
diff changeset
    57
}
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    58