author | Edouard Tisserant <edouard.tisserant@gmail.com> |
Tue, 09 Aug 2022 09:33:26 +0200 | |
branch | wxPython4 |
changeset 3574 | 889cbde22ec4 |
parent 3553 | 406eb8a13648 |
child 3577 | 6c7a7b22bec9 |
permissions | -rw-r--r-- |
2883
8e3d130399b0
SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2882
diff
changeset
|
1 |
// widget_jump.ysl2 |
2779
75c6a31caca6
SVGHMI: Work In Progress : fixed pointer types in ctypes interface, cleaned up server startup and cleanup code, changed document type to XHTML, cleaner JS script : encapsulated in a function and in CDATA.
Edouard Tisserant
parents:
2763
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("Jump") { |
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 |
Jump widget brings focus to a different page. Mandatory single argument |
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 |
gives name of the page. |
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 |
Optional single path is used as new reference when jumping to a relative |
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 |
page, it must point to a HMI_NODE. |
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 |
"active"+"inactive" labeled elements can be provided and reflect current |
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 |
page being shown. |
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 |
"disabled" labeled element, if provided, is shown instead of "active" or |
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
|
16 |
"inactive" widget when pointed HMI_NODE is null. |
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
|
17 |
|| |
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
|
18 |
|
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
|
19 |
shortdesc > Jump to given page |
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
|
20 |
|
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
|
21 |
arg name="page" accepts="string" > name of page to jump to |
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
|
22 |
|
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
|
23 |
path name="reference" count="optional" accepts="HMI_NODE" > reference for relative jump |
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
|
24 |
} |
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
|
25 |
|
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:
3107
diff
changeset
|
26 |
widget_class("Jump") { |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
27 |
|| |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
28 |
activable = false; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
29 |
active = false; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
30 |
disabled = false; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
31 |
frequency = 2; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
32 |
|
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
33 |
update_activity() { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
34 |
if(this.active) { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
35 |
/* show active */ |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
36 |
this.active_elt.style.display = ""; |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
37 |
/* hide inactive */ |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
38 |
this.inactive_elt.style.display = "none"; |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
39 |
} else { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
40 |
/* show inactive */ |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
41 |
this.inactive_elt.style.display = ""; |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
42 |
/* hide active */ |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
43 |
this.active_elt.style.display = "none"; |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
44 |
} |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
45 |
} |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
46 |
|
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
47 |
update_disability() { |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
48 |
if(this.disabled) { |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
49 |
/* show disabled */ |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
50 |
this.disabled_elt.style.display = ""; |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
51 |
/* hide inactive */ |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
52 |
this.inactive_elt.style.display = "none"; |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
53 |
/* hide active */ |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
54 |
this.active_elt.style.display = "none"; |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
55 |
} else { |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
56 |
/* hide disabled */ |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
57 |
this.disabled_elt.style.display = "none"; |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
58 |
this.update_activity(); |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
59 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
60 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
61 |
|
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
62 |
make_on_click() { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
63 |
let that = this; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
64 |
const name = this.args[0]; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
65 |
return function(evt){ |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
66 |
/* TODO: in order to allow jumps to page selected through for exemple a dropdown, |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
67 |
support path pointing to local variable whom value |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
68 |
would be an HMI_TREE index and then jump to a relative page not hard-coded in advance */ |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
69 |
if(!that.disabled) { |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
70 |
const index = that.indexes.length > 0 ? that.indexes[0] + that.offset : undefined; |
3512
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
71 |
fading_page_switch(name, index); |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
72 |
} |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
73 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
74 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
75 |
|
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
76 |
notify_page_change(page_name, index) { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
77 |
if(this.activable) { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
78 |
const ref_index = this.indexes.length > 0 ? this.indexes[0] + this.offset : undefined; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
79 |
const ref_name = this.args[0]; |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
80 |
this.active = ((ref_name == undefined || ref_name == page_name) && index == ref_index); |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
81 |
this.update_state(); |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
82 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
83 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
84 |
|
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
85 |
dispatch(value) { |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
86 |
this.disabled = !Number(value); |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
87 |
this.update_state(); |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
88 |
} |
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
89 |
|| |
2906
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
90 |
} |
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
91 |
|
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:
3107
diff
changeset
|
92 |
widget_defs("Jump") { |
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
|
93 |
// TODO: ensure both active and inactive are provided |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
94 |
const "activity" optional_labels("active inactive"); |
2906
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
95 |
const "have_activity","string-length($activity)>0"; |
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
96 |
value "$activity"; |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
97 |
|
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
98 |
const "disability" optional_labels("disabled"); |
2906
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
99 |
const "have_disability","$have_activity and string-length($disability)>0"; |
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
100 |
value "$disability"; |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
101 |
|
2883
8e3d130399b0
SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2882
diff
changeset
|
102 |
| init: function() { |
3081
9e55061c87fa
SVGHMI: more attempts to prevent losing memory in JS closure
Edouard Tisserant
parents:
2980
diff
changeset
|
103 |
| this.element.onclick = this.make_on_click(); |
2906
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
104 |
if "$have_activity" { |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
105 |
| this.activable = true; |
2903
881d0248b3ce
SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents:
2902
diff
changeset
|
106 |
} |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
107 |
if "not($have_disability)" { |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
108 |
| this.unsubscribable = true; |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
109 |
} |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
110 |
> this.update_state = |
2953
15bebe9a2806
SVGHMI: apply per class overloading of sub/unsub to Jump widget
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2943
diff
changeset
|
111 |
choose { |
15bebe9a2806
SVGHMI: apply per class overloading of sub/unsub to Jump widget
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2943
diff
changeset
|
112 |
when "$have_disability" { |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
113 |
> this.update_disability |
2953
15bebe9a2806
SVGHMI: apply per class overloading of sub/unsub to Jump widget
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2943
diff
changeset
|
114 |
} |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
115 |
when "$have_activity" { |
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
116 |
> this.update_activity |
2953
15bebe9a2806
SVGHMI: apply per class overloading of sub/unsub to Jump widget
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2943
diff
changeset
|
117 |
} |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
118 |
otherwise > null |
2906
3b4a1319da09
SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents:
2903
diff
changeset
|
119 |
} |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
120 |
> ;\n |
2883
8e3d130399b0
SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2882
diff
changeset
|
121 |
| }, |
3240
5f756332ada1
SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents:
3107
diff
changeset
|
122 |
|
2753
9a7e12e96399
SVGHMI: Added XSLT transformation, Makefile to get XSLT from ysl2 (copy of plcopen/Makefile) and a minimal stylesheet to start with.
Edouard Tisserant
parents:
diff
changeset
|
123 |
} |
2901
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
124 |
|
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:
3107
diff
changeset
|
125 |
widget_page("Jump"){ |
2901
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
126 |
param "page_desc"; |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
127 |
/* check that given path is compatible with page's reference path */ |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
128 |
if "path" { |
3107
ee0704cc6dc8
SVGHMI: Jump widget: switch to class based declaraion, and add some TODO comments to prepare for jump to relative page being selected through a DropDown widget.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3081
diff
changeset
|
129 |
/* TODO: suport local variable containing an HMI_TREE index to jump to a relative page */ |
2901
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
130 |
/* when no page name provided, check for same page */ |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
131 |
const "target_page_name" choose { |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
132 |
when "arg" value "arg[1]/@value"; |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
133 |
otherwise value "$page_desc/arg[1]/@value"; |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
134 |
} |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
135 |
const "target_page_path" choose { |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
136 |
when "arg" value "$hmi_pages_descs[arg[1]/@value = $target_page_name]/path[1]/@value"; |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
137 |
otherwise value "$page_desc/path[1]/@value"; |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
138 |
} |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
139 |
|
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
140 |
if "not(func:same_class_paths($target_page_path, path[1]/@value))" |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
141 |
error > Jump id="«@id»" to page "«$target_page_name»" with incompatible path "«path[1]/@value» (must be same class as "«$target_page_path»") |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
142 |
} |
3f5194bba67d
SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents:
2900
diff
changeset
|
143 |
} |
2942
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
144 |
|
3512
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
145 |
emit "cssdefs:jump" |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
146 |
|| |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
147 |
.fade-out-page { |
3553
406eb8a13648
SVGHMI: re-organize animate() to ensure that page fade-out is always visible, also make fade-out curve more aggressive to enhance visual feedback.
Edouard Tisserant
parents:
3515
diff
changeset
|
148 |
animation: cubic-bezier(0, 0.8, 0.6, 1) fadeOut 0.6s both; |
3512
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
149 |
} |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
150 |
|
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
151 |
@keyframes fadeOut { |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
152 |
0% { opacity: 1; } |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
153 |
100% { opacity: 0; } |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
154 |
} |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
155 |
|
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
156 |
|| |
fce3d407bb46
SVGHMI: add fading transition to make page switch feel more responsive on slow machines.
Edouard Tisserant
parents:
3242
diff
changeset
|
157 |
|
2943
304e88bae115
SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2942
diff
changeset
|
158 |
emit "declarations:jump" |
2942
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
159 |
|| |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
160 |
var jumps_need_update = false; |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
161 |
var jump_history = [[default_page, undefined]]; |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
162 |
|
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
163 |
function update_jumps() { |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
164 |
page_desc[current_visible_page].jumps.map(w=>w.notify_page_change(current_visible_page,current_page_index)); |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
165 |
jumps_need_update = false; |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
166 |
}; |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
167 |
|
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
168 |
|| |
b07ad97e6019
SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2912
diff
changeset
|
169 |