svghmi/widget_scrollbar.ysl2
author Edouard Tisserant <edouard.tisserant@gmail.com>
Sun, 02 May 2021 23:01:08 +0200
branchsvghmi
changeset 3232 7bdb766c2a4d
parent 3178 21cb76012c78
child 3241 fe945f1f48b7
permissions -rw-r--r--
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.
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     1
// widget_scrollbar.ysl2
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     2
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: 3178
diff changeset
     3
widget_class("ScrollBar") {
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     4
    ||
3139
1f5ca646ce6e SVGHMI: Add inhibition to widget's apply_hmi_value() so that it does not change variable more frquently than given widget's frequency. This prevents flooding network with many update if browser is producing events at high rate, as for exemple when dragging ScrollBar's cursor.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3138
diff changeset
     5
        frequency = 10;
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     6
        position = undefined;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     7
        range = undefined;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     8
        size = undefined;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
     9
        mincursize = 0.1;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    10
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    11
        dispatch(value,oldval, index) {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    12
            switch(index) {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    13
                case 0:
3178
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3151
diff changeset
    14
                    this.range = Math.max(1,value);
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    15
                    break;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    16
                case 1:
3178
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3151
diff changeset
    17
                    this.position = value;
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    18
                    break;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    19
                case 2:
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    20
                    this.size = value;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    21
                    break;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    22
            }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    23
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    24
            this.request_animate();
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    25
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    26
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    27
        get_ratios() {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    28
            let range = this.range;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    29
            let size = Math.max(this.range * this.mincursize, Math.min(this.size, range));
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    30
            let maxh = this.range_elt.height.baseVal.value;
3151
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3143
diff changeset
    31
            let pixels = maxh;
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3143
diff changeset
    32
            let units = range;
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    33
            return [size, maxh, range, pixels, units];
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    34
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    35
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    36
        animate(){
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    37
            if(this.position == undefined || this.range == undefined || this.size == undefined)
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    38
                return;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    39
            let [size, maxh, range, pixels, units] = this.get_ratios();
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    40
3151
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3143
diff changeset
    41
            let new_y = this.range_elt.y.baseVal.value + Math.round(Math.min(this.position,range-size) * pixels / units);
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    42
            let new_height = Math.round(maxh * size/range);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    43
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    44
            this.cursor_elt.y.baseVal.value = new_y;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    45
            this.cursor_elt.height.baseVal.value = new_height;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    46
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    47
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    48
        init_mandatory() {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    49
            this.cursor_elt.onpointerdown = () => this.on_cursor_down();
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    50
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    51
            this.bound_drag = this.drag.bind(this);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    52
            this.bound_drop = this.drop.bind(this);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    53
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    54
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    55
        apply_position(position){
3151
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3143
diff changeset
    56
            this.position = Math.round(Math.max(Math.min(position, this.range - this.size), 0));
3178
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3151
diff changeset
    57
            this.apply_hmi_value(1, this.position);
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    58
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    59
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    60
        on_page_click(is_up){
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    61
            this.apply_position(is_up ? this.position-this.size
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    62
                                      : this.position+this.size);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    63
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    64
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    65
        on_cursor_down(e){
3138
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    66
            // get scrollbar -> root transform
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    67
            let ctm = this.range_elt.getCTM();
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    68
            // relative motion -> discard translation
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    69
            ctm.e = 0;
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    70
            ctm.f = 0;
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    71
            // root -> scrollbar transform
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    72
            this.invctm = ctm.inverse();
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    73
            svg_root.addEventListener("pointerup", this.bound_drop, true);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    74
            svg_root.addEventListener("pointermove", this.bound_drag, true);
3143
8388e6d4aa61 SVGHMI: more straightforward implementation of dragging position computation in Scrollbar + some little fix about boundaries.
Edouard Tisserant
parents: 3139
diff changeset
    75
            this.dragpos = this.position;
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    76
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    77
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    78
        drop(e) {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    79
            svg_root.removeEventListener("pointerup", this.bound_drop, true);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    80
            svg_root.removeEventListener("pointermove", this.bound_drag, true);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    81
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    82
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    83
        drag(e) {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    84
            let [size, maxh, range, pixels, units] = this.get_ratios();
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    85
            if(pixels == 0) return;
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    86
            let point = new DOMPoint(e.movementX, e.movementY);
3138
1d724e8d5592 SVGHMI: fix scrollbar not behaving when rotated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3137
diff changeset
    87
            let movement = point.matrixTransform(this.invctm).y;
3143
8388e6d4aa61 SVGHMI: more straightforward implementation of dragging position computation in Scrollbar + some little fix about boundaries.
Edouard Tisserant
parents: 3139
diff changeset
    88
            this.dragpos += movement * units / pixels;
8388e6d4aa61 SVGHMI: more straightforward implementation of dragging position computation in Scrollbar + some little fix about boundaries.
Edouard Tisserant
parents: 3139
diff changeset
    89
            this.apply_position(this.dragpos);
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    90
        }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    91
    ||
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    92
}
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    93
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: 3178
diff changeset
    94
widget_defs("ScrollBar") {
3136
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    95
    param "hmi_element";
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    96
    labels("cursor range");
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    97
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    98
    const "pagebuttons" optional_labels("pageup pagedown");
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
    99
    const "have_pagebuttons","string-length($pagebuttons)>0";
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   100
    value "$pagebuttons";
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   101
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   102
    |     init: function() {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   103
    |         this.init_mandatory();
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   104
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   105
    if "$have_pagebuttons" {
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   106
    |         this.pageup_elt.onclick = () => this.on_page_click(true);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   107
    |         this.pagedown_elt.onclick = () => this.on_page_click(false);
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   108
    }
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   109
    |     },
784c839d4259 SVGHMI: Add a robust ScrollBar widget. HMI:ScrollBar@positionrange@size
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
diff changeset
   110
}