svghmi/widget_button.ysl2
author usveticic
Wed, 16 Sep 2020 09:41:52 +0200
branchsvghmi
changeset 3056 827bf284feec
parent 3024 0a9f6f29b7dd
child 3058 6ea4b7e1a9ed
permissions -rw-r--r--
Button, ToggleButton and slider updated. Error to warning when building

Button fixed so it doesn't release until it gets feedback from plc

Toggle button changed so it makes changes instantly. There was too big delay if we waited for feedback.

Slider added new features need some changes for final version.
2944
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents:
diff changeset
     1
// widget_button.ysl2
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents:
diff changeset
     2
3024
Edouard Tisserant
parents: 3018
diff changeset
     3
template "widget[@type='Button']", mode="widget_class"{
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
     4
    ||
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
     5
    class ButtonWidget extends Widget{
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
     6
        frequency = 5;
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
     7
        state = 0;
3056
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
     8
        plc_lock = false;
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
     9
        active_style = undefined;
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    10
        inactive_style = undefined;
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    11
3056
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    12
        dispatch(value) {
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    13
            if(value){
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    14
                this.button_release();
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    15
            }
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    16
        }
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    17
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    18
         on_mouse_down(evt) {
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    19
             if (this.active_style && this.inactive_style) {
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    20
                 this.active_elt.setAttribute("style", this.active_style);
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    21
                 this.inactive_elt.setAttribute("style", "display:none");
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    22
             }
3018
Edouard Tisserant
parents: 3009
diff changeset
    23
             this.apply_hmi_value(0, 1);
3056
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    24
             this.plc_lock = false;
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    25
         }
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    26
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    27
         on_mouse_up(evt) {
3056
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    28
             this.button_release();
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    29
         }
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    30
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    31
         button_release(){
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    32
            if(!this.plc_lock){
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    33
                this.plc_lock = true;
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    34
            }
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    35
            else{
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    36
                if (this.active_style && this.inactive_style) {
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    37
                     this.active_elt.setAttribute("style", "display:none");
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    38
                     this.inactive_elt.setAttribute("style", this.inactive_style);
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    39
                 }
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    40
                 this.apply_hmi_value(0, 0);
827bf284feec Button, ToggleButton and slider updated. Error to warning when building
usveticic
parents: 3024
diff changeset
    41
            }
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    42
         }
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    43
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    44
         init() {
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    45
            this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined;
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    46
            this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined;
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    47
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    48
            if (this.active_style && this.inactive_style) {
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    49
                this.active_elt.setAttribute("style", "display:none");
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    50
                this.inactive_elt.setAttribute("style", this.inactive_style);
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    51
            }
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    52
3018
Edouard Tisserant
parents: 3009
diff changeset
    53
            this.element.setAttribute("onmousedown", "hmi_widgets["+this.element_id+"].on_mouse_down(evt)");
Edouard Tisserant
parents: 3009
diff changeset
    54
            this.element.setAttribute("onmouseup", "hmi_widgets["+this.element_id+"].on_mouse_up(evt)");
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    55
         }
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    56
    }
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    57
    ||
3024
Edouard Tisserant
parents: 3018
diff changeset
    58
}
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    59
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    60
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2961
diff changeset
    61
template "widget[@type='Button']", mode="widget_defs" {
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2961
diff changeset
    62
    param "hmi_element";
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2961
diff changeset
    63
    optional_labels("active inactive");
3009
7c6960f09881 Reworked button widget so it uses classes.
usveticic
parents: 3004
diff changeset
    64
    |,
3000
a9a45977bac0 SVGHMI: prefer apply_hmi_value() to change_hmi_value() when possible
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2976
diff changeset
    65
}