author | Edouard Tisserant |
Thu, 12 Mar 2020 13:16:18 +0100 | |
branch | svghmi |
changeset 2868 | 8d9757191f05 |
parent 2867 | 901c89c0cc08 |
child 2869 | d9eb50c015d1 |
permissions | -rw-r--r-- |
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
|
1 |
<?xml version="1.0"?> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
2 |
<xsl:stylesheet xmlns:func="http://exslt.org/functions" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:str="http://exslt.org/strings" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:exsl="http://exslt.org/common" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ns="beremiz" xmlns:cc="http://creativecommons.org/ns#" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/" extension-element-prefixes="ns func exsl regexp str dyn" version="1.0" exclude-result-prefixes="ns str regexp exsl func dyn"> |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
3 |
<xsl:output method="xml" cdata-section-elements="xhtml:script"/> |
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
|
4 |
<xsl:variable name="geometry" select="ns:GetSVGGeometry()"/> |
2763
ce04d79b8e57
Pass HMITree to SVG transform. It seems it could really help to reduce JS tree binding logic in the end.
Edouard Tisserant
parents:
2756
diff
changeset
|
5 |
<xsl:variable name="hmitree" select="ns:GetHMITree()"/> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
6 |
<xsl:variable name="svg_root_id" select="/svg:svg/@id"/> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
7 |
<xsl:variable name="hmi_elements" select="//svg:*[starts-with(@inkscape:label, 'HMI:')]"/> |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
8 |
<xsl:variable name="hmi_geometry" select="$geometry[@Id = $hmi_elements/@id]"/> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
9 |
<xsl:variable name="hmi_pages" select="$hmi_elements[func:parselabel(@inkscape:label)/widget/@type = 'Page']"/> |
2795 | 10 |
<xsl:variable name="default_page"> |
11 |
<xsl:choose> |
|
12 |
<xsl:when test="count($hmi_pages) > 1"> |
|
13 |
<xsl:variable name="Home_page" select="$hmi_pages[func:parselabel(@inkscape:label)/widget/arg[1]/@value = 'Home']"/> |
|
14 |
<xsl:choose> |
|
15 |
<xsl:when test="$Home_page"> |
|
16 |
<xsl:text>Home</xsl:text> |
|
17 |
</xsl:when> |
|
18 |
<xsl:otherwise> |
|
19 |
<xsl:message terminate="yes">No Home page defined!</xsl:message> |
|
20 |
</xsl:otherwise> |
|
21 |
</xsl:choose> |
|
22 |
</xsl:when> |
|
23 |
<xsl:when test="count($hmi_pages) = 0"> |
|
24 |
<xsl:message terminate="yes">No page defined!</xsl:message> |
|
25 |
</xsl:when> |
|
26 |
<xsl:otherwise> |
|
27 |
<xsl:value-of select="func:parselabel($hmi_pages/@inkscape:label)/widget/arg[1]/@value"/> |
|
28 |
</xsl:otherwise> |
|
29 |
</xsl:choose> |
|
30 |
</xsl:variable> |
|
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
31 |
<xsl:variable name="_categories"> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
32 |
<noindex> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
33 |
<xsl:text>HMI_ROOT</xsl:text> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
34 |
</noindex> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
35 |
<noindex> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
36 |
<xsl:text>HMI_PLC_STATUS</xsl:text> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
37 |
</noindex> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
38 |
<noindex> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
39 |
<xsl:text>HMI_CURRENT_PAGE</xsl:text> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
40 |
</noindex> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
41 |
</xsl:variable> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
42 |
<xsl:variable name="categories" select="exsl:node-set($_categories)"/> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
43 |
<func:function name="func:refered_elements"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
44 |
<xsl:param name="elems"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
45 |
<xsl:variable name="descend" select="$elems/descendant-or-self::svg:*"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
46 |
<xsl:variable name="clones" select="$descend[self::svg:use]"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
47 |
<xsl:variable name="originals" select="//svg:*[concat('#',@id) = $clones/@xlink:href]"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
48 |
<xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
49 |
<xsl:when test="$originals"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
50 |
<func:result select="$descend | func:refered_elements($originals)"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
51 |
</xsl:when> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
52 |
<xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
53 |
<func:result select="$descend"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
54 |
</xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
55 |
</xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
56 |
</func:function> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
57 |
<func:function name="func:intersect_1d"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
58 |
<xsl:param name="a0"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
59 |
<xsl:param name="a1"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
60 |
<xsl:param name="b0"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
61 |
<xsl:param name="b1"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
62 |
<xsl:variable name="d0" select="$a0 >= $b0"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
63 |
<xsl:variable name="d1" select="$a1 >= $b1"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
64 |
<xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
65 |
<xsl:when test="not($d0) and $d1"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
66 |
<func:result select="3"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
67 |
</xsl:when> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
68 |
<xsl:when test="$d0 and not($d1)"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
69 |
<func:result select="2"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
70 |
</xsl:when> |
2845
61548f7d1bef
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant
parents:
2844
diff
changeset
|
71 |
<xsl:when test="$d0 and $d1 and $a0 < $b1"> |
61548f7d1bef
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant
parents:
2844
diff
changeset
|
72 |
<func:result select="1"/> |
61548f7d1bef
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant
parents:
2844
diff
changeset
|
73 |
</xsl:when> |
61548f7d1bef
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant
parents:
2844
diff
changeset
|
74 |
<xsl:when test="not($d0) and not($d1) and $b0 < $a1"> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
75 |
<func:result select="1"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
76 |
</xsl:when> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
77 |
<xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
78 |
<func:result select="0"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
79 |
</xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
80 |
</xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
81 |
</func:function> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
82 |
<func:function name="func:intersect"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
83 |
<xsl:param name="a"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
84 |
<xsl:param name="b"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
85 |
<xsl:variable name="x_intersect" select="func:intersect_1d($a/@x, $a/@x+$a/@w, $b/@x, $b/@x+$b/@w)"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
86 |
<xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
87 |
<xsl:when test="$x_intersect != 0"> |
2845
61548f7d1bef
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant
parents:
2844
diff
changeset
|
88 |
<xsl:variable name="y_intersect" select="func:intersect_1d($a/@y, $a/@y+$a/@h, $b/@y, $b/@y+$b/@h)"/> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
89 |
<func:result select="$x_intersect * $y_intersect"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
90 |
</xsl:when> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
91 |
<xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
92 |
<func:result select="0"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
93 |
</xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
94 |
</xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
95 |
</func:function> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
96 |
<func:function name="func:overlapping_geometry"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
97 |
<xsl:param name="elt"/> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
98 |
<xsl:variable name="groups" select="/svg:svg | //svg:g"/> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
99 |
<xsl:variable name="g" select="$geometry[@Id = $elt/@id]"/> |
2845
61548f7d1bef
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant
parents:
2844
diff
changeset
|
100 |
<xsl:variable name="candidates" select="$geometry[@Id != $elt/@id]"/> |
2846
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
101 |
<func:result select="$candidates[(@Id = $groups/@id and (func:intersect($g, .) = 9)) or (not(@Id = $groups/@id) and (func:intersect($g, .) > 0 ))]"/> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
102 |
</func:function> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
103 |
<func:function name="func:all_related_elements"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
104 |
<xsl:param name="page"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
105 |
<xsl:variable name="page_overlapping_geometry" select="func:overlapping_geometry($page)"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
106 |
<xsl:variable name="page_overlapping_elements" select="//svg:*[@id = $page_overlapping_geometry/@Id]"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
107 |
<xsl:variable name="page_sub_elements" select="func:refered_elements($page | $page_overlapping_elements)"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
108 |
<func:result select="$page_sub_elements"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
109 |
</func:function> |
2846
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
110 |
<func:function name="func:required_elements"> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
111 |
<xsl:param name="pages"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
112 |
<xsl:choose> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
113 |
<xsl:when test="$pages"> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
114 |
<func:result select="func:all_related_elements($pages[1]) | func:required_elements($pages[position()!=1])"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
115 |
</xsl:when> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
116 |
<xsl:otherwise> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
117 |
<func:result select="/.."/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
118 |
</xsl:otherwise> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
119 |
</xsl:choose> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
120 |
</func:function> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
121 |
<xsl:variable name="required_elements" select="//svg:defs/descendant-or-self::svg:* | func:required_elements($hmi_pages)/ancestor-or-self::svg:*"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
122 |
<xsl:variable name="discardable_elements" select="//svg:*[not(@id = $required_elements/@id)]"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
123 |
<func:function name="func:sumarized_elements"> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
124 |
<xsl:param name="elements"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
125 |
<xsl:variable name="short_list" select="$elements[not(ancestor::*/@id = $elements/@id)]"/> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
126 |
<xsl:variable name="filled_groups" select="$short_list/parent::svg:*[ not(descendant::*[ not(self::svg:g) and not(@id = $discardable_elements/@id) and not(@id = $short_list/descendant-or-self::*[not(self::svg:g)]/@id) ])]"/> |
2846
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
127 |
<xsl:variable name="groups_to_add" select="$filled_groups[not(ancestor::*/@id = $filled_groups/@id)]"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
128 |
<func:result select="$groups_to_add | $short_list[not(ancestor::svg:g/@id = $filled_groups/@id)]"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
129 |
</func:function> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
130 |
<func:function name="func:detachable_elements"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
131 |
<xsl:param name="pages"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
132 |
<xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
133 |
<xsl:when test="$pages"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
134 |
<func:result select="func:sumarized_elements(func:all_related_elements($pages[1])) | func:detachable_elements($pages[position()!=1])"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
135 |
</xsl:when> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
136 |
<xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
137 |
<func:result select="/.."/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
138 |
</xsl:otherwise> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
139 |
</xsl:choose> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
140 |
</func:function> |
2858
39c8d6079f0f
SVGHMI: Fix disapearing elements in case of nested detachable elements.
Edouard Tisserant
parents:
2857
diff
changeset
|
141 |
<xsl:variable name="_detachable_elements" select="func:detachable_elements($hmi_pages)"/> |
39c8d6079f0f
SVGHMI: Fix disapearing elements in case of nested detachable elements.
Edouard Tisserant
parents:
2857
diff
changeset
|
142 |
<xsl:variable name="detachable_elements" select="$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]"/> |
2867
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
143 |
<xsl:variable name="_indexed_hmitree"> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
144 |
<xsl:apply-templates mode="index" select="$hmitree"/> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
145 |
</xsl:variable> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
146 |
<xsl:variable name="indexed_hmitree" select="exsl:node-set($_indexed_hmitree)"/> |
2791
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
147 |
<xsl:template mode="index" match="*"> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
148 |
<xsl:param name="index" select="0"/> |
2791
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
149 |
<xsl:param name="parentpath" select="''"/> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
150 |
<xsl:variable name="content"> |
2791
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
151 |
<xsl:variable name="path"> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
152 |
<xsl:choose> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
153 |
<xsl:when test="local-name() = 'HMI_ROOT'"> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
154 |
<xsl:value-of select="$parentpath"/> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
155 |
</xsl:when> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
156 |
<xsl:otherwise> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
157 |
<xsl:value-of select="$parentpath"/> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
158 |
<xsl:text>/</xsl:text> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
159 |
<xsl:value-of select="@name"/> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
160 |
</xsl:otherwise> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
161 |
</xsl:choose> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
162 |
</xsl:variable> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
163 |
<xsl:choose> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
164 |
<xsl:when test="not(local-name() = $categories/noindex)"> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
165 |
<xsl:copy> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
166 |
<xsl:attribute name="index"> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
167 |
<xsl:value-of select="$index"/> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
168 |
</xsl:attribute> |
2791
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
169 |
<xsl:attribute name="hmipath"> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
170 |
<xsl:value-of select="$path"/> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
171 |
</xsl:attribute> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
172 |
<xsl:for-each select="@*"> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
173 |
<xsl:copy/> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
174 |
</xsl:for-each> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
175 |
</xsl:copy> |
2867
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
176 |
<xsl:apply-templates mode="index" select="*[1]"> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
177 |
<xsl:with-param name="index" select="$index + 1"/> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
178 |
<xsl:with-param name="parentpath"> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
179 |
<xsl:value-of select="$path"/> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
180 |
</xsl:with-param> |
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
181 |
</xsl:apply-templates> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
182 |
</xsl:when> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
183 |
<xsl:otherwise> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
184 |
<xsl:apply-templates mode="index" select="*[1]"> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
185 |
<xsl:with-param name="index" select="$index"/> |
2791
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
186 |
<xsl:with-param name="parentpath"> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
187 |
<xsl:value-of select="$path"/> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
188 |
</xsl:with-param> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
189 |
</xsl:apply-templates> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
190 |
</xsl:otherwise> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
191 |
</xsl:choose> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
192 |
</xsl:variable> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
193 |
<xsl:copy-of select="$content"/> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
194 |
<xsl:apply-templates mode="index" select="following-sibling::*[1]"> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
195 |
<xsl:with-param name="index" select="$index + count(exsl:node-set($content)/*)"/> |
2791
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
196 |
<xsl:with-param name="parentpath"> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
197 |
<xsl:value-of select="$parentpath"/> |
d022523cb621
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents:
2790
diff
changeset
|
198 |
</xsl:with-param> |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
199 |
</xsl:apply-templates> |
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
200 |
</xsl:template> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
201 |
<xsl:template mode="inline_svg" match="@* | node()"> |
2846
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
202 |
<xsl:if test="not(@id = $discardable_elements/@id)"> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
203 |
<xsl:copy> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
204 |
<xsl:apply-templates mode="inline_svg" select="@* | node()"/> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
205 |
</xsl:copy> |
7b1db17287b6
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant
parents:
2845
diff
changeset
|
206 |
</xsl:if> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
207 |
</xsl:template> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
208 |
<xsl:template mode="inline_svg" match="svg:svg/@width"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
209 |
<xsl:template mode="inline_svg" match="svg:svg/@height"/> |
2842
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
210 |
<xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="svg:svg"> |
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
211 |
<svg> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
212 |
<xsl:attribute name="preserveAspectRatio"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
213 |
<xsl:text>none</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
214 |
</xsl:attribute> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
215 |
<xsl:attribute name="height"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
216 |
<xsl:text>100vh</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
217 |
</xsl:attribute> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
218 |
<xsl:attribute name="width"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
219 |
<xsl:text>100vw</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
220 |
</xsl:attribute> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
221 |
<xsl:apply-templates mode="inline_svg" select="@* | node()"/> |
2842
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
222 |
</svg> |
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
|
223 |
</xsl:template> |
2837
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
224 |
<xsl:template mode="inline_svg" match="svg:svg[@viewBox!=concat('0 0 ', @width, ' ', @height)]"> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
225 |
<xsl:message terminate="yes"> |
2838
459bf80d3f46
SVGHMI: HMI:Page can now be a svg:g group or a svg:use clone, and included/linked widget are included in page. HMI:Jump was updated to be clickable through svg:use, to be generalized.
Edouard Tisserant
parents:
2837
diff
changeset
|
226 |
<xsl:text>ViewBox settings other than X=0, Y=0 and Scale=1 are not supported</xsl:text> |
2837
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
227 |
</xsl:message> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
228 |
</xsl:template> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
229 |
<xsl:template mode="inline_svg" match="sodipodi:namedview[@units!='px' or @inkscape:document-units!='px']"> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
230 |
<xsl:message terminate="yes"> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
231 |
<xsl:text>All units must be set to "px" in Inkscape's document properties</xsl:text> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
232 |
</xsl:message> |
53d9eb6a7498
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant
parents:
2836
diff
changeset
|
233 |
</xsl:template> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
234 |
<xsl:variable name="to_unlink" select="$hmi_elements[not(@id = $hmi_pages)]//svg:use"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
235 |
<xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="svg:use"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
236 |
<xsl:choose> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
237 |
<xsl:when test="@id = $to_unlink/@id"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
238 |
<xsl:call-template name="unlink_clone"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
239 |
</xsl:when> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
240 |
<xsl:otherwise> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
241 |
<xsl:copy> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
242 |
<xsl:apply-templates mode="inline_svg" select="@* | node()"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
243 |
</xsl:copy> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
244 |
</xsl:otherwise> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
245 |
</xsl:choose> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
246 |
</xsl:template> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
247 |
<xsl:variable name="_excluded_use_attrs"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
248 |
<name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
249 |
<xsl:text>href</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
250 |
</name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
251 |
<name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
252 |
<xsl:text>width</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
253 |
</name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
254 |
<name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
255 |
<xsl:text>height</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
256 |
</name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
257 |
<name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
258 |
<xsl:text>x</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
259 |
</name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
260 |
<name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
261 |
<xsl:text>y</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
262 |
</name> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
263 |
</xsl:variable> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
264 |
<xsl:variable name="excluded_use_attrs" select="exsl:node-set($_excluded_use_attrs)"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
265 |
<xsl:template xmlns="http://www.w3.org/2000/svg" name="unlink_clone"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
266 |
<g> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
267 |
<xsl:for-each select="@*[not(local-name() = $excluded_use_attrs/name)]"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
268 |
<xsl:attribute name="{name()}"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
269 |
<xsl:value-of select="."/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
270 |
</xsl:attribute> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
271 |
</xsl:for-each> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
272 |
<xsl:variable name="targetid" select="substring-after(@xlink:href,'#')"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
273 |
<xsl:apply-templates mode="unlink_clone" select="//svg:*[@id = $targetid]"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
274 |
<xsl:with-param name="seed" select="@id"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
275 |
</xsl:apply-templates> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
276 |
</g> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
277 |
</xsl:template> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
278 |
<xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="@id"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
279 |
<xsl:param name="seed"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
280 |
<xsl:attribute name="id"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
281 |
<xsl:value-of select="$seed"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
282 |
<xsl:text>_</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
283 |
<xsl:value-of select="."/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
284 |
</xsl:attribute> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
285 |
</xsl:template> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
286 |
<xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="@*"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
287 |
<xsl:copy/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
288 |
</xsl:template> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
289 |
<xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="svg:*"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
290 |
<xsl:param name="seed"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
291 |
<xsl:choose> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
292 |
<xsl:when test="@id = $hmi_elements/@id"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
293 |
<use> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
294 |
<xsl:attribute name="xlink:href"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
295 |
<xsl:value-of select="concat('#',@id)"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
296 |
</xsl:attribute> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
297 |
</use> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
298 |
</xsl:when> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
299 |
<xsl:otherwise> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
300 |
<xsl:copy> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
301 |
<xsl:apply-templates mode="unlink_clone" select="@* | node()"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
302 |
<xsl:with-param name="seed" select="$seed"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
303 |
</xsl:apply-templates> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
304 |
</xsl:copy> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
305 |
</xsl:otherwise> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
306 |
</xsl:choose> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
307 |
</xsl:template> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
308 |
<xsl:variable name="result_svg"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
309 |
<xsl:apply-templates mode="inline_svg" select="/"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
310 |
</xsl:variable> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
311 |
<xsl:variable name="result_svg_ns" select="exsl:node-set($result_svg)"/> |
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
|
312 |
<xsl:template match="/"> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
313 |
<xsl:comment> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
314 |
<xsl:text>Made with SVGHMI. https://beremiz.org</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
315 |
</xsl:comment> |
2814
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
316 |
<xsl:comment> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
317 |
<xsl:apply-templates mode="testgeo" select="$hmi_geometry"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
318 |
</xsl:comment> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
319 |
<xsl:comment> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
320 |
<xsl:apply-templates mode="testtree" select="$hmitree"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
321 |
</xsl:comment> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
322 |
<xsl:comment> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
323 |
<xsl:apply-templates mode="testtree" select="$indexed_hmitree"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
324 |
</xsl:comment> |
2844
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
325 |
<xsl:comment> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
326 |
<xsl:text>Detachable : |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
327 |
</xsl:text> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
328 |
<xsl:for-each select="$detachable_elements"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
329 |
<xsl:value-of select="@id"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
330 |
<xsl:text> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
331 |
</xsl:text> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
332 |
</xsl:for-each> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
333 |
</xsl:comment> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
334 |
<xsl:comment> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
335 |
<xsl:text>Discardable : |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
336 |
</xsl:text> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
337 |
<xsl:for-each select="$discardable_elements"> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
338 |
<xsl:value-of select="@id"/> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
339 |
<xsl:text> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
340 |
</xsl:text> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
341 |
</xsl:for-each> |
eee5dcd9fc92
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Edouard Tisserant
parents:
2843
diff
changeset
|
342 |
</xsl:comment> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
343 |
<xsl:comment> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
344 |
<xsl:text>Unlinked : |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
345 |
</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
346 |
<xsl:for-each select="$to_unlink"> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
347 |
<xsl:value-of select="@id"/> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
348 |
<xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
349 |
</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
350 |
</xsl:for-each> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
351 |
</xsl:comment> |
2842
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
352 |
<html xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml"> |
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
|
353 |
<head/> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
354 |
<body style="margin:0;overflow:hidden;"> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
355 |
<xsl:copy-of select="$result_svg"/> |
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
|
356 |
<script> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
357 |
<xsl:call-template name="scripts"/> |
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
|
358 |
</script> |
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
|
359 |
</body> |
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
|
360 |
</html> |
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
|
361 |
</xsl:template> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
362 |
<func:function name="func:parselabel"> |
2792
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
363 |
<xsl:param name="label"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
364 |
<xsl:variable name="description" select="substring-after($label,'HMI:')"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
365 |
<xsl:variable name="_args" select="substring-before($description,'@')"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
366 |
<xsl:variable name="args"> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
367 |
<xsl:choose> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
368 |
<xsl:when test="$_args"> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
369 |
<xsl:value-of select="$_args"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
370 |
</xsl:when> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
371 |
<xsl:otherwise> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
372 |
<xsl:value-of select="$description"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
373 |
</xsl:otherwise> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
374 |
</xsl:choose> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
375 |
</xsl:variable> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
376 |
<xsl:variable name="_type" select="substring-before($args,':')"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
377 |
<xsl:variable name="type"> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
378 |
<xsl:choose> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
379 |
<xsl:when test="$_type"> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
380 |
<xsl:value-of select="$_type"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
381 |
</xsl:when> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
382 |
<xsl:otherwise> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
383 |
<xsl:value-of select="$args"/> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
384 |
</xsl:otherwise> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
385 |
</xsl:choose> |
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
386 |
</xsl:variable> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
387 |
<xsl:variable name="ast"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
388 |
<xsl:if test="$type"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
389 |
<widget> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
390 |
<xsl:attribute name="type"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
391 |
<xsl:value-of select="$type"/> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
392 |
</xsl:attribute> |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
393 |
<xsl:for-each select="str:split(substring-after($args, ':'), ':')"> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
394 |
<arg> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
395 |
<xsl:attribute name="value"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
396 |
<xsl:value-of select="."/> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
397 |
</xsl:attribute> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
398 |
</arg> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
399 |
</xsl:for-each> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
400 |
<xsl:variable name="paths" select="substring-after($description,'@')"/> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
401 |
<xsl:for-each select="str:split($paths, '@')"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
402 |
<path> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
403 |
<xsl:attribute name="value"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
404 |
<xsl:value-of select="."/> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
405 |
</xsl:attribute> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
406 |
</path> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
407 |
</xsl:for-each> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
408 |
</widget> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
409 |
</xsl:if> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
410 |
</xsl:variable> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
411 |
<func:result select="exsl:node-set($ast)"/> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
412 |
</func:function> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
413 |
<xsl:template name="scripts"> |
2799
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
414 |
<xsl:text>//(function(){ |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
415 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
416 |
<xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
417 |
</xsl:text> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
418 |
<xsl:text>id = idstr => document.getElementById(idstr); |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
419 |
</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
420 |
<xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
421 |
</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
422 |
<xsl:text>var hmi_hash = [</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
423 |
<xsl:value-of select="$hmitree/@hash"/> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
424 |
<xsl:text>]; |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
425 |
</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
426 |
<xsl:text>var hmi_widgets = { |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
427 |
</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
428 |
<xsl:for-each select="$hmi_elements"> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
429 |
<xsl:variable name="widget" select="func:parselabel(@inkscape:label)/widget"/> |
2856
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
430 |
<xsl:variable name="eltid" select="@id"/> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
431 |
<xsl:text> "</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
432 |
<xsl:value-of select="@id"/> |
2833
e74123b966ac
SVGHMI : fixed bug happening when some SVG ids are containing dashes
Edouard Tisserant
parents:
2829
diff
changeset
|
433 |
<xsl:text>": { |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
434 |
</xsl:text> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
435 |
<xsl:text> type: "</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
436 |
<xsl:value-of select="$widget/@type"/> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
437 |
<xsl:text>", |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
438 |
</xsl:text> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
439 |
<xsl:text> args: [ |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
440 |
</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
441 |
<xsl:for-each select="$widget/arg"> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
442 |
<xsl:text> "</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
443 |
<xsl:value-of select="@value"/> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
444 |
<xsl:text>"</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
445 |
<xsl:if test="position()!=last()"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
446 |
<xsl:text>,</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
447 |
</xsl:if> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
448 |
<xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
449 |
</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
450 |
</xsl:for-each> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
451 |
<xsl:text> ], |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
452 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
453 |
<xsl:text> indexes: [ |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
454 |
</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
455 |
<xsl:for-each select="$widget/path"> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
456 |
<xsl:variable name="hmipath" select="@value"/> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
457 |
<xsl:variable name="hmitree_match" select="$indexed_hmitree/*[@hmipath = $hmipath]"/> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
458 |
<xsl:choose> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
459 |
<xsl:when test="count($hmitree_match) = 0"> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
460 |
<xsl:message terminate="no"> |
2856
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
461 |
<xsl:text>Widget </xsl:text> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
462 |
<xsl:value-of select="$widget/@type"/> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
463 |
<xsl:text> id="</xsl:text> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
464 |
<xsl:value-of select="$eltid"/> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
465 |
<xsl:text>" : No match for path "</xsl:text> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
466 |
<xsl:value-of select="$hmipath"/> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
467 |
<xsl:text>" in HMI tree</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
468 |
</xsl:message> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
469 |
</xsl:when> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
470 |
<xsl:otherwise> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
471 |
<xsl:text> </xsl:text> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
472 |
<xsl:value-of select="$hmitree_match/@index"/> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
473 |
<xsl:if test="position()!=last()"> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
474 |
<xsl:text>,</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
475 |
</xsl:if> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
476 |
<xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
477 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
478 |
</xsl:otherwise> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
479 |
</xsl:choose> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
480 |
</xsl:for-each> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
481 |
<xsl:text> ], |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
482 |
</xsl:text> |
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
483 |
<xsl:text> element: id("</xsl:text> |
2800
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
484 |
<xsl:value-of select="@id"/> |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
485 |
<xsl:text>"), |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
486 |
</xsl:text> |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
487 |
<xsl:apply-templates mode="widget_defs" select="$widget"> |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
488 |
<xsl:with-param name="hmi_element" select="."/> |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
489 |
</xsl:apply-templates> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
490 |
<xsl:text> }</xsl:text> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
491 |
<xsl:if test="position()!=last()"> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
492 |
<xsl:text>,</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
493 |
</xsl:if> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
494 |
<xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
495 |
</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
496 |
</xsl:for-each> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
497 |
<xsl:text>} |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
498 |
</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
499 |
<xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
500 |
</xsl:text> |
2822
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
501 |
<xsl:text>var heartbeat_index = </xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
502 |
<xsl:value-of select="$indexed_hmitree/*[@hmipath = '/HEARTBEAT']/@index"/> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
503 |
<xsl:text>; |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
504 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
505 |
<xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
506 |
</xsl:text> |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
507 |
<xsl:text>var hmitree_types = [ |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
508 |
</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
509 |
<xsl:for-each select="$indexed_hmitree/*"> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
510 |
<xsl:text> /* </xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
511 |
<xsl:value-of select="@index"/> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
512 |
<xsl:text> </xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
513 |
<xsl:value-of select="@hmipath"/> |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
514 |
<xsl:text> */ "</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
515 |
<xsl:value-of select="substring(local-name(), 5)"/> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
516 |
<xsl:text>"</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
517 |
<xsl:if test="position()!=last()"> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
518 |
<xsl:text>,</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
519 |
</xsl:if> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
520 |
<xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
521 |
</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
522 |
</xsl:for-each> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
523 |
<xsl:text>] |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
524 |
</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
525 |
<xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
526 |
</xsl:text> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
527 |
<xsl:text>var detachable_elements = { |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
528 |
</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
529 |
<xsl:for-each select="$detachable_elements"> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
530 |
<xsl:text> "</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
531 |
<xsl:value-of select="@id"/> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
532 |
<xsl:text>":[id("</xsl:text> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
533 |
<xsl:value-of select="@id"/> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
534 |
<xsl:text>"), id("</xsl:text> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
535 |
<xsl:value-of select="../@id"/> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
536 |
<xsl:text>")]</xsl:text> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
537 |
<xsl:if test="position()!=last()"> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
538 |
<xsl:text>,</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
539 |
</xsl:if> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
540 |
<xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
541 |
</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
542 |
</xsl:for-each> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
543 |
<xsl:text>} |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
544 |
</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
545 |
<xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
546 |
</xsl:text> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
547 |
<xsl:text>var page_desc = { |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
548 |
</xsl:text> |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
549 |
<xsl:for-each select="$hmi_pages"> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
550 |
<xsl:variable name="desc" select="func:parselabel(@inkscape:label)/widget"/> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
551 |
<xsl:variable name="page" select="."/> |
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
552 |
<xsl:variable name="p" select="$geometry[@Id = $page/@id]"/> |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
553 |
<xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/> |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
554 |
<xsl:variable name="all_page_ids" select="$page_all_elements[@id = $hmi_elements/@id and @id != $page/@id]/@id"/> |
2858
39c8d6079f0f
SVGHMI: Fix disapearing elements in case of nested detachable elements.
Edouard Tisserant
parents:
2857
diff
changeset
|
555 |
<xsl:variable name="required_detachables" select="func:sumarized_elements($page_all_elements)/ ancestor-or-self::*[@id = $detachable_elements/@id]"/> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
556 |
<xsl:text> "</xsl:text> |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
557 |
<xsl:value-of select="$desc/arg[1]/@value"/> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
558 |
<xsl:text>": { |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
559 |
</xsl:text> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
560 |
<xsl:text> widget: hmi_widgets["</xsl:text> |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
561 |
<xsl:value-of select="@id"/> |
2842
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
562 |
<xsl:text>"], |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
563 |
</xsl:text> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
564 |
<xsl:text> bbox: [</xsl:text> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
565 |
<xsl:value-of select="$p/@x"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
566 |
<xsl:text>, </xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
567 |
<xsl:value-of select="$p/@y"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
568 |
<xsl:text>, </xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
569 |
<xsl:value-of select="$p/@w"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
570 |
<xsl:text>, </xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
571 |
<xsl:value-of select="$p/@h"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
572 |
<xsl:text>], |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
573 |
</xsl:text> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
574 |
<xsl:text> widgets: [ |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
575 |
</xsl:text> |
2838
459bf80d3f46
SVGHMI: HMI:Page can now be a svg:g group or a svg:use clone, and included/linked widget are included in page. HMI:Jump was updated to be clickable through svg:use, to be generalized.
Edouard Tisserant
parents:
2837
diff
changeset
|
576 |
<xsl:for-each select="$all_page_ids"> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
577 |
<xsl:text> hmi_widgets["</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
578 |
<xsl:value-of select="."/> |
2833
e74123b966ac
SVGHMI : fixed bug happening when some SVG ids are containing dashes
Edouard Tisserant
parents:
2829
diff
changeset
|
579 |
<xsl:text>"]</xsl:text> |
2794
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
580 |
<xsl:if test="position()!=last()"> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
581 |
<xsl:text>,</xsl:text> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
582 |
</xsl:if> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
583 |
<xsl:text> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
584 |
</xsl:text> |
c10069a02ed0
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant
parents:
2793
diff
changeset
|
585 |
</xsl:for-each> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
586 |
<xsl:text> ], |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
587 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
588 |
<xsl:text> required_detachables: { |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
589 |
</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
590 |
<xsl:for-each select="$required_detachables"> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
591 |
<xsl:text> "</xsl:text> |
2848
c525b1083653
SVGHMI: declares pages detachable requirements as an object, to find more efficiently common requirements
Edouard Tisserant
parents:
2847
diff
changeset
|
592 |
<xsl:value-of select="@id"/> |
c525b1083653
SVGHMI: declares pages detachable requirements as an object, to find more efficiently common requirements
Edouard Tisserant
parents:
2847
diff
changeset
|
593 |
<xsl:text>": detachable_elements["</xsl:text> |
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
594 |
<xsl:value-of select="@id"/> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
595 |
<xsl:text>"]</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
596 |
<xsl:if test="position()!=last()"> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
597 |
<xsl:text>,</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
598 |
</xsl:if> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
599 |
<xsl:text> |
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
600 |
</xsl:text> |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
601 |
</xsl:for-each> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
602 |
<xsl:text> } |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
603 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
604 |
<xsl:text> }</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
605 |
<xsl:if test="position()!=last()"> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
606 |
<xsl:text>,</xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
607 |
</xsl:if> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
608 |
<xsl:text> |
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
609 |
</xsl:text> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
610 |
</xsl:for-each> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
611 |
<xsl:text>} |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
612 |
</xsl:text> |
2795 | 613 |
<xsl:text> |
614 |
</xsl:text> |
|
615 |
<xsl:text>var default_page = "</xsl:text> |
|
616 |
<xsl:value-of select="$default_page"/> |
|
617 |
<xsl:text>"; |
|
618 |
</xsl:text> |
|
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
619 |
<xsl:text>var svg_root = id("</xsl:text> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
620 |
<xsl:value-of select="$svg_root_id"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
621 |
<xsl:text>"); |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
622 |
</xsl:text> |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
623 |
<xsl:text>// svghmi.js |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
624 |
</xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
625 |
<xsl:text> |
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
626 |
</xsl:text> |
2803
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
627 |
<xsl:text>var cache = hmitree_types.map(_ignored => undefined); |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
628 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
629 |
<xsl:text>var updates = {}; |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
630 |
</xsl:text> |
2803
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
631 |
<xsl:text> |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
632 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
633 |
<xsl:text>function dispatch_value_to_widget(widget, index, value, oldval) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
634 |
</xsl:text> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
635 |
<xsl:text> try { |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
636 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
637 |
<xsl:text> let idxidx = widget.indexes.indexOf(index); |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
638 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
639 |
<xsl:text> let d = widget.dispatch; |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
640 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
641 |
<xsl:text> if(typeof(d) == "function" && idxidx == 0){ |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
642 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
643 |
<xsl:text> d.call(widget, value, oldval); |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
644 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
645 |
<xsl:text> }else if(typeof(d) == "object" && d.length >= idxidx){ |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
646 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
647 |
<xsl:text> d[idxidx].call(widget, value, oldval); |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
648 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
649 |
<xsl:text> }/* else dispatch_0, ..., dispatch_n ? */ |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
650 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
651 |
<xsl:text> /*else { |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
652 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
653 |
<xsl:text> throw new Error("Dunno how to dispatch to widget at index = " + index); |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
654 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
655 |
<xsl:text> }*/ |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
656 |
</xsl:text> |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
657 |
<xsl:text> } catch(err) { |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
658 |
</xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
659 |
<xsl:text> console.log(err); |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
660 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
661 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
662 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
663 |
<xsl:text>} |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
664 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
665 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
666 |
</xsl:text> |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
667 |
<xsl:text>function dispatch_value(index, value) { |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
668 |
</xsl:text> |
2800
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
669 |
<xsl:text> let widgets = subscribers[index]; |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
670 |
</xsl:text> |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
671 |
<xsl:text> |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
672 |
</xsl:text> |
2805
e521e0d133d5
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant
parents:
2803
diff
changeset
|
673 |
<xsl:text> let oldval = cache[index]; |
e521e0d133d5
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant
parents:
2803
diff
changeset
|
674 |
</xsl:text> |
e521e0d133d5
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant
parents:
2803
diff
changeset
|
675 |
<xsl:text> cache[index] = value; |
e521e0d133d5
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant
parents:
2803
diff
changeset
|
676 |
</xsl:text> |
e521e0d133d5
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant
parents:
2803
diff
changeset
|
677 |
<xsl:text> |
e521e0d133d5
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant
parents:
2803
diff
changeset
|
678 |
</xsl:text> |
2803
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
679 |
<xsl:text> if(widgets.size > 0) { |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
680 |
</xsl:text> |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
681 |
<xsl:text> for(let widget of widgets){ |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
682 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
683 |
<xsl:text> dispatch_value_to_widget(widget, index, value, oldval); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
684 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
685 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
686 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
687 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
688 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
689 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
690 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
691 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
692 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
693 |
<xsl:text>function init_widgets() { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
694 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
695 |
<xsl:text> Object.keys(hmi_widgets).forEach(function(id) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
696 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
697 |
<xsl:text> let widget = hmi_widgets[id]; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
698 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
699 |
<xsl:text> let init = widget.init; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
700 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
701 |
<xsl:text> if(typeof(init) == "function"){ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
702 |
</xsl:text> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
703 |
<xsl:text> try { |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
704 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
705 |
<xsl:text> init.call(widget); |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
706 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
707 |
<xsl:text> } catch(err) { |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
708 |
</xsl:text> |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
709 |
<xsl:text> console.log(err); |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
710 |
</xsl:text> |
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
711 |
<xsl:text> } |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
712 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
713 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
714 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
715 |
<xsl:text> }); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
716 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
717 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
718 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
719 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
720 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
721 |
<xsl:text>// Open WebSocket to relative "/ws" address |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
722 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
723 |
<xsl:text>var ws = new WebSocket(window.location.href.replace(/^http(s?:\/\/[^\/]*)\/.*$/, 'ws$1/ws')); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
724 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
725 |
<xsl:text>ws.binaryType = 'arraybuffer'; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
726 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
727 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
728 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
729 |
<xsl:text>const dvgetters = { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
730 |
</xsl:text> |
2826
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
731 |
<xsl:text> INT: (dv,offset) => [dv.getInt16(offset, true), 2], |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
732 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
733 |
<xsl:text> BOOL: (dv,offset) => [dv.getInt8(offset, true), 1], |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
734 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
735 |
<xsl:text> STRING: (dv, offset) => { |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
736 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
737 |
<xsl:text> size = dv.getInt8(offset); |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
738 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
739 |
<xsl:text> return [ |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
740 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
741 |
<xsl:text> String.fromCharCode.apply(null, new Uint8Array( |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
742 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
743 |
<xsl:text> dv.buffer, /* original buffer */ |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
744 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
745 |
<xsl:text> offset + 1, /* string starts after size*/ |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
746 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
747 |
<xsl:text> size /* size of string */ |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
748 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
749 |
<xsl:text> )), size + 1]; /* total increment */ |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
750 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
751 |
<xsl:text> } |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
752 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
753 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
754 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
755 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
756 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
757 |
<xsl:text>// Apply updates recieved through ws.onmessage to subscribed widgets |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
758 |
</xsl:text> |
2865 | 759 |
<xsl:text>function apply_updates() { |
760 |
</xsl:text> |
|
761 |
<xsl:text> for(let index in updates){ |
|
762 |
</xsl:text> |
|
763 |
<xsl:text> // serving as a key, index becomes a string |
|
764 |
</xsl:text> |
|
765 |
<xsl:text> // -> pass Number(index) instead |
|
766 |
</xsl:text> |
|
767 |
<xsl:text> dispatch_value(Number(index), updates[index]); |
|
768 |
</xsl:text> |
|
769 |
<xsl:text> delete updates[index]; |
|
770 |
</xsl:text> |
|
771 |
<xsl:text> } |
|
772 |
</xsl:text> |
|
773 |
<xsl:text>} |
|
774 |
</xsl:text> |
|
775 |
<xsl:text> |
|
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
776 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
777 |
<xsl:text>// Called on requestAnimationFrame, modifies DOM |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
778 |
</xsl:text> |
2865 | 779 |
<xsl:text>var requestAnimationFrameID = null; |
780 |
</xsl:text> |
|
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
781 |
<xsl:text>function animate() { |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
782 |
</xsl:text> |
2865 | 783 |
<xsl:text> // Do the page swith if any one pending |
784 |
</xsl:text> |
|
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
785 |
<xsl:text> if(current_subscribed_page != current_visible_page){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
786 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
787 |
<xsl:text> switch_visible_page(current_subscribed_page); |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
788 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
789 |
<xsl:text> } |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
790 |
</xsl:text> |
2865 | 791 |
<xsl:text> apply_updates(); |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
792 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
793 |
<xsl:text> requestAnimationFrameID = null; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
794 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
795 |
<xsl:text>} |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
796 |
</xsl:text> |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
797 |
<xsl:text> |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
798 |
</xsl:text> |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
799 |
<xsl:text>function requestHMIAnimation() { |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
800 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
801 |
<xsl:text> if(requestAnimationFrameID == null){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
802 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
803 |
<xsl:text> requestAnimationFrameID = window.requestAnimationFrame(animate); |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
804 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
805 |
<xsl:text> } |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
806 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
807 |
<xsl:text>} |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
808 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
809 |
<xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
810 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
811 |
<xsl:text>// Message reception handler |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
812 |
</xsl:text> |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
813 |
<xsl:text>// Hash is verified and HMI values updates resulting from binary parsing |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
814 |
</xsl:text> |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
815 |
<xsl:text>// are stored until browser can compute next frame, DOM is left untouched |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
816 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
817 |
<xsl:text>ws.onmessage = function (evt) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
818 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
819 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
820 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
821 |
<xsl:text> let data = evt.data; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
822 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
823 |
<xsl:text> let dv = new DataView(data); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
824 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
825 |
<xsl:text> let i = 0; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
826 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
827 |
<xsl:text> try { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
828 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
829 |
<xsl:text> for(let hash_int of hmi_hash) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
830 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
831 |
<xsl:text> if(hash_int != dv.getUint8(i)){ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
832 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
833 |
<xsl:text> throw new Error("Hash doesn't match"); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
834 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
835 |
<xsl:text> }; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
836 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
837 |
<xsl:text> i++; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
838 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
839 |
<xsl:text> }; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
840 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
841 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
842 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
843 |
<xsl:text> while(i < data.byteLength){ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
844 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
845 |
<xsl:text> let index = dv.getUint32(i, true); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
846 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
847 |
<xsl:text> i += 4; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
848 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
849 |
<xsl:text> let iectype = hmitree_types[index]; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
850 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
851 |
<xsl:text> if(iectype != undefined){ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
852 |
</xsl:text> |
2826
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
853 |
<xsl:text> let dvgetter = dvgetters[iectype]; |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
854 |
</xsl:text> |
1e5abecc3cde
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2822
diff
changeset
|
855 |
<xsl:text> let [value, bytesize] = dvgetter(dv,i); |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
856 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
857 |
<xsl:text> updates[index] = value; |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
858 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
859 |
<xsl:text> i += bytesize; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
860 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
861 |
<xsl:text> } else { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
862 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
863 |
<xsl:text> throw new Error("Unknown index "+index); |
2803
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
864 |
</xsl:text> |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
865 |
<xsl:text> } |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
866 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
867 |
<xsl:text> }; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
868 |
</xsl:text> |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
869 |
<xsl:text> // register for rendering on next frame, since there are updates |
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
870 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
871 |
<xsl:text> requestHMIAnimation(); |
2859
517583e21bfd
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2858
diff
changeset
|
872 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
873 |
<xsl:text> } catch(err) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
874 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
875 |
<xsl:text> // 1003 is for "Unsupported Data" |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
876 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
877 |
<xsl:text> // ws.close(1003, err.message); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
878 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
879 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
880 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
881 |
<xsl:text> // TODO : remove debug alert ? |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
882 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
883 |
<xsl:text> alert("Error : "+err.message+"\nHMI will be reloaded."); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
884 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
885 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
886 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
887 |
<xsl:text> // force reload ignoring cache |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
888 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
889 |
<xsl:text> location.reload(true); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
890 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
891 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
892 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
893 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
894 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
895 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
896 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
897 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
898 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
899 |
<xsl:text>function send_blob(data) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
900 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
901 |
<xsl:text> if(data.length > 0) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
902 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
903 |
<xsl:text> ws.send(new Blob([new Uint8Array(hmi_hash)].concat(data))); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
904 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
905 |
<xsl:text> }; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
906 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
907 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
908 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
909 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
910 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
911 |
<xsl:text>const typedarray_types = { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
912 |
</xsl:text> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
913 |
<xsl:text> INT: (number) => new Int16Array([number]), |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
914 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
915 |
<xsl:text> BOOL: (truth) => new Int16Array([truth]), |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
916 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
917 |
<xsl:text> STRING: (str) => { |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
918 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
919 |
<xsl:text> // beremiz default string max size is 128 |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
920 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
921 |
<xsl:text> str = str.slice(0,128); |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
922 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
923 |
<xsl:text> binary = new Uint8Array(str.length + 1); |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
924 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
925 |
<xsl:text> binary[0] = str.length; |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
926 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
927 |
<xsl:text> for(var i = 0; i < str.length; i++){ |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
928 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
929 |
<xsl:text> binary[i+1] = str.charCodeAt(i); |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
930 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
931 |
<xsl:text> } |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
932 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
933 |
<xsl:text> return binary; |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
934 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
935 |
<xsl:text> } |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
936 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
937 |
<xsl:text> /* TODO */ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
938 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
939 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
940 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
941 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
942 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
943 |
<xsl:text>function send_reset() { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
944 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
945 |
<xsl:text> send_blob(new Uint8Array([1])); /* reset = 1 */ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
946 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
947 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
948 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
949 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
950 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
951 |
<xsl:text>// subscription state, as it should be in hmi server |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
952 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
953 |
<xsl:text>// hmitree indexed array of integers |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
954 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
955 |
<xsl:text>var subscriptions = hmitree_types.map(_ignored => 0); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
956 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
957 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
958 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
959 |
<xsl:text>// subscription state as needed by widget now |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
960 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
961 |
<xsl:text>// hmitree indexed array of Sets of widgets objects |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
962 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
963 |
<xsl:text>var subscribers = hmitree_types.map(_ignored => new Set()); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
964 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
965 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
966 |
</xsl:text> |
2822
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
967 |
<xsl:text>// artificially subscribe the watchdog widget to "/heartbeat" hmi variable |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
968 |
</xsl:text> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
969 |
<xsl:text>// Since dispatch directly calls change_hmi_value, |
2822
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
970 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
971 |
<xsl:text>// PLC will periodically send variable at given frequency |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
972 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
973 |
<xsl:text>subscribers[heartbeat_index].add({ |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
974 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
975 |
<xsl:text> /* type: "Watchdog", */ |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
976 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
977 |
<xsl:text> frequency: 1, |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
978 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
979 |
<xsl:text> indexes: [heartbeat_index], |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
980 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
981 |
<xsl:text> dispatch: function(value) { |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
982 |
</xsl:text> |
2828 | 983 |
<xsl:text> // console.log("Heartbeat" + value); |
2822
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
984 |
</xsl:text> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
985 |
<xsl:text> change_hmi_value(heartbeat_index, "+1"); |
2822
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
986 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
987 |
<xsl:text> } |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
988 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
989 |
<xsl:text>}); |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
990 |
</xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
991 |
<xsl:text> |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
992 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
993 |
<xsl:text>function update_subscriptions() { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
994 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
995 |
<xsl:text> let delta = []; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
996 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
997 |
<xsl:text> for(let index = 0; index < subscribers.length; index++){ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
998 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
999 |
<xsl:text> let widgets = subscribers[index]; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1000 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1001 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1002 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1003 |
<xsl:text> // periods are in ms |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1004 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1005 |
<xsl:text> let previous_period = subscriptions[index]; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1006 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1007 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1008 |
</xsl:text> |
2822
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
1009 |
<xsl:text> // subscribing with a zero period is unsubscribing |
9101a72a1da0
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant
parents:
2814
diff
changeset
|
1010 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1011 |
<xsl:text> let new_period = 0; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1012 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1013 |
<xsl:text> if(widgets.size > 0) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1014 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1015 |
<xsl:text> let maxfreq = 0; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1016 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1017 |
<xsl:text> for(let widget of widgets) |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1018 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1019 |
<xsl:text> if(maxfreq < widget.frequency) |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1020 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1021 |
<xsl:text> maxfreq = widget.frequency; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1022 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1023 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1024 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1025 |
<xsl:text> if(maxfreq != 0) |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1026 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1027 |
<xsl:text> new_period = 1000/maxfreq; |
2803
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
1028 |
</xsl:text> |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
1029 |
<xsl:text> } |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
1030 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1031 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1032 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1033 |
<xsl:text> if(previous_period != new_period) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1034 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1035 |
<xsl:text> subscriptions[index] = new_period; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1036 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1037 |
<xsl:text> delta.push( |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1038 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1039 |
<xsl:text> new Uint8Array([2]), /* subscribe = 2 */ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1040 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1041 |
<xsl:text> new Uint32Array([index]), |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1042 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1043 |
<xsl:text> new Uint16Array([new_period])); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1044 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1045 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1046 |
</xsl:text> |
2803
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
1047 |
<xsl:text> } |
f48121cf31b6
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant
parents:
2802
diff
changeset
|
1048 |
</xsl:text> |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1049 |
<xsl:text> send_blob(delta); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1050 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1051 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1052 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1053 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1054 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1055 |
<xsl:text>function send_hmi_value(index, value) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1056 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1057 |
<xsl:text> let iectype = hmitree_types[index]; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1058 |
</xsl:text> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1059 |
<xsl:text> let tobinary = typedarray_types[iectype]; |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1060 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1061 |
<xsl:text> send_blob([ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1062 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1063 |
<xsl:text> new Uint8Array([0]), /* setval = 0 */ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1064 |
</xsl:text> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1065 |
<xsl:text> new Uint32Array([index]), |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1066 |
</xsl:text> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1067 |
<xsl:text> tobinary(value)]); |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1068 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1069 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1070 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1071 |
<xsl:text> cache[index] = value; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1072 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1073 |
<xsl:text>}; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1074 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1075 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1076 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1077 |
<xsl:text>function change_hmi_value(index, opstr) { |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1078 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1079 |
<xsl:text> let op = opstr[0]; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1080 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1081 |
<xsl:text> let given_val = opstr.slice(1); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1082 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1083 |
<xsl:text> let old_val = cache[index] |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1084 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1085 |
<xsl:text> let new_val; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1086 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1087 |
<xsl:text> switch(op){ |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1088 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1089 |
<xsl:text> case "=": |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1090 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1091 |
<xsl:text> eval("new_val"+opstr); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1092 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1093 |
<xsl:text> break; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1094 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1095 |
<xsl:text> case "+": |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1096 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1097 |
<xsl:text> case "-": |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1098 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1099 |
<xsl:text> case "*": |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1100 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1101 |
<xsl:text> case "/": |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1102 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1103 |
<xsl:text> if(old_val != undefined) |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1104 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1105 |
<xsl:text> new_val = eval("old_val"+opstr); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1106 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1107 |
<xsl:text> break; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1108 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1109 |
<xsl:text> } |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1110 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1111 |
<xsl:text> if(new_val != undefined && old_val != new_val) |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1112 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1113 |
<xsl:text> send_hmi_value(index, new_val); |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1114 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1115 |
<xsl:text> return new_val; |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1116 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1117 |
<xsl:text>} |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1118 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1119 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1120 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1121 |
<xsl:text>var current_visible_page; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1122 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1123 |
<xsl:text>var current_subscribed_page; |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1124 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1125 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1126 |
</xsl:text> |
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1127 |
<xsl:text>function prepare_svg() { |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1128 |
</xsl:text> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1129 |
<xsl:text> for(let eltid in detachable_elements){ |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1130 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1131 |
<xsl:text> let [element,parent] = detachable_elements[eltid]; |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1132 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1133 |
<xsl:text> parent.removeChild(element); |
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1134 |
</xsl:text> |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1135 |
<xsl:text> } |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1136 |
</xsl:text> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1137 |
<xsl:text>}; |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1138 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1139 |
<xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1140 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1141 |
<xsl:text>function switch_page(page_name) { |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1142 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1143 |
<xsl:text> if(current_subscribed_page != current_visible_page){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1144 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1145 |
<xsl:text> /* page switch already going */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1146 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1147 |
<xsl:text> /* TODO LOG ERROR */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1148 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1149 |
<xsl:text> return; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1150 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1151 |
<xsl:text> } else if(page_name == current_visible_page){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1152 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1153 |
<xsl:text> /* already in that page */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1154 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1155 |
<xsl:text> /* TODO LOG ERROR */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1156 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1157 |
<xsl:text> return; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1158 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1159 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1160 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1161 |
<xsl:text> switch_subscribed_page(page_name); |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1162 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1163 |
<xsl:text>}; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1164 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1165 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1166 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1167 |
<xsl:text>function switch_subscribed_page(page_name) { |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1168 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1169 |
<xsl:text> let old_desc = page_desc[current_subscribed_page]; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1170 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1171 |
<xsl:text> let new_desc = page_desc[page_name]; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1172 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1173 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1174 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1175 |
<xsl:text> if(new_desc == undefined){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1176 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1177 |
<xsl:text> /* TODO LOG ERROR */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1178 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1179 |
<xsl:text> return; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1180 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1181 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1182 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1183 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1184 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1185 |
<xsl:text> if(old_desc){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1186 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1187 |
<xsl:text> for(let widget of old_desc.widgets){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1188 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1189 |
<xsl:text> /* remove subsribers */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1190 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1191 |
<xsl:text> for(let index of widget.indexes){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1192 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1193 |
<xsl:text> subscribers[index].delete(widget); |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1194 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1195 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1196 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1197 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1198 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1199 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1200 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1201 |
<xsl:text> for(let widget of new_desc.widgets){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1202 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1203 |
<xsl:text> /* add widget's subsribers */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1204 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1205 |
<xsl:text> for(let index of widget.indexes){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1206 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1207 |
<xsl:text> subscribers[index].add(widget); |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1208 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1209 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1210 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1211 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1212 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1213 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1214 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1215 |
<xsl:text> update_subscriptions(); |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1216 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1217 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1218 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1219 |
<xsl:text> current_subscribed_page = page_name; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1220 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1221 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1222 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1223 |
<xsl:text> requestHMIAnimation(); |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1224 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1225 |
<xsl:text>} |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1226 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1227 |
<xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1228 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1229 |
<xsl:text>function switch_visible_page(page_name) { |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1230 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1231 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1232 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1233 |
<xsl:text> let old_desc = page_desc[current_visible_page]; |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1234 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1235 |
<xsl:text> let new_desc = page_desc[page_name]; |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1236 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1237 |
<xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1238 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1239 |
<xsl:text> if(old_desc){ |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1240 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1241 |
<xsl:text> for(let eltid in old_desc.required_detachables){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1242 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1243 |
<xsl:text> if(!(eltid in new_desc.required_detachables)){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1244 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1245 |
<xsl:text> let [element, parent] = old_desc.required_detachables[eltid]; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1246 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1247 |
<xsl:text> parent.removeChild(element); |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
1248 |
</xsl:text> |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
1249 |
<xsl:text> } |
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
1250 |
</xsl:text> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1251 |
<xsl:text> } |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1252 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1253 |
<xsl:text> for(let eltid in new_desc.required_detachables){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1254 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1255 |
<xsl:text> if(!(eltid in old_desc.required_detachables)){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1256 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1257 |
<xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1258 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1259 |
<xsl:text> parent.appendChild(element); |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1260 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1261 |
<xsl:text> } |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1262 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1263 |
<xsl:text> } |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1264 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1265 |
<xsl:text> }else{ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1266 |
</xsl:text> |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1267 |
<xsl:text> for(let eltid in new_desc.required_detachables){ |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1268 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1269 |
<xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1270 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1271 |
<xsl:text> parent.appendChild(element); |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1272 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1273 |
<xsl:text> } |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1274 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1275 |
<xsl:text> } |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1276 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1277 |
<xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1278 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1279 |
<xsl:text> for(let widget of new_desc.widgets){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1280 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1281 |
<xsl:text> for(let index of widget.indexes){ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1282 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1283 |
<xsl:text> /* dispatch current cache in newly opened page widgets */ |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1284 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1285 |
<xsl:text> let cached_val = cache[index]; |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1286 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1287 |
<xsl:text> if(cached_val != undefined) |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1288 |
</xsl:text> |
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1289 |
<xsl:text> dispatch_value_to_widget(widget, index, cached_val, cached_val); |
2850
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1290 |
</xsl:text> |
e38654ec6281
SVGHMI: detach/re-attach elements required by pages on page switch
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2848
diff
changeset
|
1291 |
<xsl:text> } |
2842
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
1292 |
</xsl:text> |
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
1293 |
<xsl:text> } |
2811
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1294 |
</xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1295 |
<xsl:text> |
4a81cec5f786
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant
parents:
2810
diff
changeset
|
1296 |
</xsl:text> |
2842
2f73f001955a
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant
parents:
2839
diff
changeset
|
1297 |
<xsl:text> svg_root.setAttribute('viewBox',new_desc.bbox.join(" ")); |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1298 |
</xsl:text> |
2864
36f78f6cfabd
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant
parents:
2862
diff
changeset
|
1299 |
<xsl:text> current_visible_page = page_name; |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1300 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1301 |
<xsl:text>}; |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1302 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1303 |
<xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1304 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1305 |
<xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1306 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1307 |
<xsl:text>// Once connection established |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1308 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1309 |
<xsl:text>ws.onopen = function (evt) { |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1310 |
</xsl:text> |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1311 |
<xsl:text> init_widgets(); |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1312 |
</xsl:text> |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1313 |
<xsl:text> send_reset(); |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1314 |
</xsl:text> |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1315 |
<xsl:text> // show main page |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1316 |
</xsl:text> |
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1317 |
<xsl:text> prepare_svg(); |
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
1318 |
</xsl:text> |
2798
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1319 |
<xsl:text> switch_page(default_page); |
ddb2c4668a6b
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents:
2797
diff
changeset
|
1320 |
</xsl:text> |
2799
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1321 |
<xsl:text>}; |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1322 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1323 |
<xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1324 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1325 |
<xsl:text>ws.onclose = function (evt) { |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1326 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1327 |
<xsl:text> // TODO : add visible notification while waiting for reload |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1328 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1329 |
<xsl:text> console.log("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+" Reload in 10s."); |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1330 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1331 |
<xsl:text> // TODO : re-enable auto reload when not in debug |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1332 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1333 |
<xsl:text> //window.setTimeout(() => location.reload(true), 10000); |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1334 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1335 |
<xsl:text> alert("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+"."); |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1336 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1337 |
<xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1338 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1339 |
<xsl:text>}; |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1340 |
</xsl:text> |
f5da343b9b63
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant
parents:
2798
diff
changeset
|
1341 |
<xsl:text>//})(); |
2793
2a97688c94c5
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents:
2792
diff
changeset
|
1342 |
</xsl:text> |
2792
0c0d3895b036
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents:
2791
diff
changeset
|
1343 |
</xsl:template> |
2814
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1344 |
<xsl:template mode="testgeo" match="bbox"> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1345 |
<xsl:text>ID: </xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1346 |
<xsl:value-of select="@Id"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1347 |
<xsl:text> x: </xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1348 |
<xsl:value-of select="@x"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1349 |
<xsl:text> y: </xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1350 |
<xsl:value-of select="@y"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1351 |
<xsl:text> w: </xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1352 |
<xsl:value-of select="@w"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1353 |
<xsl:text> h: </xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1354 |
<xsl:value-of select="@h"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1355 |
<xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1356 |
</xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1357 |
</xsl:template> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1358 |
<xsl:template mode="testtree" match="*"> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1359 |
<xsl:param name="indent" select="''"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1360 |
<xsl:value-of select="$indent"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1361 |
<xsl:text> </xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1362 |
<xsl:value-of select="local-name()"/> |
2867
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
1363 |
<xsl:text> </xsl:text> |
2814
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1364 |
<xsl:for-each select="@*"> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1365 |
<xsl:value-of select="local-name()"/> |
2867
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
1366 |
<xsl:text>="</xsl:text> |
2814
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1367 |
<xsl:value-of select="."/> |
2867
901c89c0cc08
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents:
2865
diff
changeset
|
1368 |
<xsl:text>" </xsl:text> |
2814
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1369 |
</xsl:for-each> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1370 |
<xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1371 |
</xsl:text> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1372 |
<xsl:apply-templates mode="testtree" select="*"> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1373 |
<xsl:with-param name="indent"> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1374 |
<xsl:value-of select="concat($indent,'>')"/> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1375 |
</xsl:with-param> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1376 |
</xsl:apply-templates> |
2cabc4773885
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
Edouard Tisserant
parents:
2811
diff
changeset
|
1377 |
</xsl:template> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1378 |
<xsl:template name="defs_by_labels"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1379 |
<xsl:param name="labels" select="''"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1380 |
<xsl:param name="mandatory" select="'yes'"/> |
2800
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
1381 |
<xsl:param name="hmi_element"/> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
1382 |
<xsl:variable name="widget_type" select="@type"/> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1383 |
<xsl:for-each select="str:split($labels)"> |
2807 | 1384 |
<xsl:variable name="name" select="."/> |
2854
c7d5f46cc306
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Edouard Tisserant
parents:
2852
diff
changeset
|
1385 |
<xsl:variable name="elt_id" select="$result_svg_ns//*[@id = $hmi_element/@id]//*[@inkscape:label=$name][1]/@id"/> |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1386 |
<xsl:choose> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1387 |
<xsl:when test="not($elt_id)"> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1388 |
<xsl:if test="$mandatory='yes'"> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1389 |
<xsl:message terminate="no"> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1390 |
<xsl:value-of select="$widget_type"/> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1391 |
<xsl:text> widget must have a </xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1392 |
<xsl:value-of select="$name"/> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1393 |
<xsl:text> element</xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1394 |
</xsl:message> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1395 |
</xsl:if> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1396 |
</xsl:when> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1397 |
<xsl:otherwise> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1398 |
<xsl:text> </xsl:text> |
2807 | 1399 |
<xsl:value-of select="$name"/> |
2847
dffade5c83d3
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2846
diff
changeset
|
1400 |
<xsl:text>_elt: id("</xsl:text> |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1401 |
<xsl:value-of select="$elt_id"/> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1402 |
<xsl:text>"), |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1403 |
</xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1404 |
</xsl:otherwise> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1405 |
</xsl:choose> |
2807 | 1406 |
</xsl:for-each> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1407 |
</xsl:template> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1408 |
<xsl:template mode="widget_defs" match="widget[@type='Display']"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1409 |
<xsl:param name="hmi_element"/> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1410 |
<xsl:text> frequency: 5, |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1411 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1412 |
<xsl:text> dispatch: function(value) { |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1413 |
</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1414 |
<xsl:choose> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1415 |
<xsl:when test="$hmi_element[self::svg:text]"> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1416 |
<xsl:text> this.element.textContent = String(value); |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1417 |
</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1418 |
</xsl:when> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1419 |
<xsl:otherwise> |
2834
6ac6a9dff594
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant
parents:
2833
diff
changeset
|
1420 |
<xsl:message terminate="no"> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1421 |
<xsl:text>Display widget as a group not implemented</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1422 |
</xsl:message> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1423 |
</xsl:otherwise> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1424 |
</xsl:choose> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1425 |
<xsl:text> }, |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1426 |
</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1427 |
</xsl:template> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1428 |
<xsl:template mode="widget_defs" match="widget[@type='Meter']"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1429 |
<xsl:param name="hmi_element"/> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1430 |
<xsl:text> frequency: 10, |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1431 |
</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1432 |
<xsl:call-template name="defs_by_labels"> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1433 |
<xsl:with-param name="hmi_element" select="$hmi_element"/> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1434 |
<xsl:with-param name="labels"> |
2856
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1435 |
<xsl:text>needle range</xsl:text> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1436 |
</xsl:with-param> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1437 |
</xsl:call-template> |
2856
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1438 |
<xsl:call-template name="defs_by_labels"> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1439 |
<xsl:with-param name="hmi_element" select="$hmi_element"/> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1440 |
<xsl:with-param name="labels"> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1441 |
<xsl:text>value min max</xsl:text> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1442 |
</xsl:with-param> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1443 |
<xsl:with-param name="mandatory" select="'no'"/> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1444 |
</xsl:call-template> |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1445 |
<xsl:text> dispatch: function(value) { |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1446 |
</xsl:text> |
2856
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1447 |
<xsl:text> if(this.value_elt) |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1448 |
</xsl:text> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1449 |
<xsl:text> this.value_elt.textContent = String(value); |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1450 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1451 |
<xsl:text> let [min,max,totallength] = this.range; |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1452 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1453 |
<xsl:text> let length = Math.max(0,Math.min(totallength,(Number(value)-min)*totallength/(max-min))); |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1454 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1455 |
<xsl:text> let tip = this.range_elt.getPointAtLength(length); |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1456 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1457 |
<xsl:text> this.needle_elt.setAttribute('d', "M "+this.origin.x+","+this.origin.y+" "+tip.x+","+tip.y); |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1458 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1459 |
<xsl:text> }, |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1460 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1461 |
<xsl:text> origin: undefined, |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1462 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1463 |
<xsl:text> range: undefined, |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1464 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1465 |
<xsl:text> init: function() { |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1466 |
</xsl:text> |
2857
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1467 |
<xsl:text> let min = this.min_elt ? |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1468 |
</xsl:text> |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1469 |
<xsl:text> Number(this.min_elt.textContent) : |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1470 |
</xsl:text> |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1471 |
<xsl:text> this.args.length >= 1 ? this.args[0] : 0; |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1472 |
</xsl:text> |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1473 |
<xsl:text> let max = this.max_elt ? |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1474 |
</xsl:text> |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1475 |
<xsl:text> Number(this.max_elt.textContent) : |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1476 |
</xsl:text> |
a5c781b2f8f9
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2856
diff
changeset
|
1477 |
<xsl:text> this.args.length >= 2 ? this.args[1] : 100; |
2856
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1478 |
</xsl:text> |
1b529ba018ad
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2854
diff
changeset
|
1479 |
<xsl:text> this.range = [min, max, this.range_elt.getTotalLength()] |
2852
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1480 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1481 |
<xsl:text> this.origin = this.needle_elt.getPointAtLength(0); |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1482 |
</xsl:text> |
f7349ca820c9
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant
parents:
2851
diff
changeset
|
1483 |
<xsl:text> }, |
2807 | 1484 |
</xsl:text> |
2800
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
1485 |
</xsl:template> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1486 |
<func:function name="func:escape_quotes"> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1487 |
<xsl:param name="txt"/> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1488 |
<xsl:variable name="frst" select="substring-before($txt,'"')"/> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1489 |
<xsl:variable name="frstln" select="string-length($frst)"/> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1490 |
<xsl:choose> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1491 |
<xsl:when test="$frstln > 0 and string-length($txt) > $frstln"> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1492 |
<func:result select="concat($frst,'\"',func:escape_quotes(substring-after($txt,'"')))"/> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1493 |
</xsl:when> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1494 |
<xsl:otherwise> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1495 |
<func:result select="$txt"/> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1496 |
</xsl:otherwise> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1497 |
</xsl:choose> |
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1498 |
</func:function> |
2800
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
1499 |
<xsl:template mode="widget_defs" match="widget[@type='Input']"> |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1500 |
<xsl:param name="hmi_element"/> |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1501 |
<xsl:variable name="value_elt"> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1502 |
<xsl:call-template name="defs_by_labels"> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1503 |
<xsl:with-param name="hmi_element" select="$hmi_element"/> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1504 |
<xsl:with-param name="labels"> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1505 |
<xsl:text>value</xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1506 |
</xsl:with-param> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1507 |
<xsl:with-param name="mandatory" select="'no'"/> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1508 |
</xsl:call-template> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1509 |
</xsl:variable> |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1510 |
<xsl:variable name="have_value" select="string-length($value_elt)>0"/> |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1511 |
<xsl:value-of select="$value_elt"/> |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1512 |
<xsl:if test="$have_value"> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1513 |
<xsl:text> frequency: 5, |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1514 |
</xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1515 |
</xsl:if> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1516 |
<xsl:text> dispatch: function(value) { |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1517 |
</xsl:text> |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1518 |
<xsl:if test="$have_value"> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1519 |
<xsl:text> this.value_elt.textContent = String(value); |
2836
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1520 |
</xsl:text> |
ce6cecdb7320
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents:
2834
diff
changeset
|
1521 |
</xsl:if> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1522 |
<xsl:text> }, |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1523 |
</xsl:text> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1524 |
<xsl:variable name="edit_elt_id" select="$hmi_element/*[@inkscape:label='edit'][1]/@id"/> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1525 |
<xsl:text> init: function() { |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1526 |
</xsl:text> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1527 |
<xsl:if test="$edit_elt_id"> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1528 |
<xsl:text> id("</xsl:text> |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1529 |
<xsl:value-of select="$edit_elt_id"/> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1530 |
<xsl:text>").addEventListener( |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1531 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1532 |
<xsl:text> "click", |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1533 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1534 |
<xsl:text> evt => alert('XXX TODO : Edit value')); |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1535 |
</xsl:text> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1536 |
</xsl:if> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1537 |
<xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]"> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1538 |
<xsl:text> id("</xsl:text> |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1539 |
<xsl:value-of select="@id"/> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1540 |
<xsl:text>").addEventListener( |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1541 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1542 |
<xsl:text> "click", |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1543 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1544 |
<xsl:text> evt => {let new_val = change_hmi_value(this.indexes[0], "</xsl:text> |
2829
4c2c50f60730
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents:
2828
diff
changeset
|
1545 |
<xsl:value-of select="func:escape_quotes(@inkscape:label)"/> |
2806
7d0e81cdedb0
SVGHMI: Quicker update path for input widget when pressing on buttons, do not wait until data comes back, and simply update value text of the pressed widget. Updated PLC prog for more amimated value to display
Edouard Tisserant
parents:
2805
diff
changeset
|
1546 |
<xsl:text>"); |
7d0e81cdedb0
SVGHMI: Quicker update path for input widget when pressing on buttons, do not wait until data comes back, and simply update value text of the pressed widget. Updated PLC prog for more amimated value to display
Edouard Tisserant
parents:
2805
diff
changeset
|
1547 |
</xsl:text> |
2861
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1548 |
<xsl:if test="$have_value"> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1549 |
<xsl:text> this.value_elt.textContent = String(new_val); |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1550 |
</xsl:text> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1551 |
</xsl:if> |
84c16ece8e10
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents:
2859
diff
changeset
|
1552 |
<xsl:text> }); |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1553 |
</xsl:text> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1554 |
</xsl:for-each> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1555 |
<xsl:text> }, |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1556 |
</xsl:text> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1557 |
</xsl:template> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1558 |
<xsl:template mode="widget_defs" match="widget[@type='Button']"/> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1559 |
<xsl:template mode="widget_defs" match="widget[@type='Toggle']"> |
2800
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
1560 |
<xsl:text> frequency: 5, |
68cee1366b9c
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents:
2799
diff
changeset
|
1561 |
</xsl:text> |
2797
c5ba1e77f054
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant
parents:
2796
diff
changeset
|
1562 |
</xsl:template> |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1563 |
<xsl:template mode="widget_defs" match="widget[@type='Switch']"> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1564 |
<xsl:param name="hmi_element"/> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1565 |
<xsl:text> frequency: 5, |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1566 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1567 |
<xsl:text> dispatch: function(value) { |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1568 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1569 |
<xsl:text> for(let choice of this.choices){ |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1570 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1571 |
<xsl:text> if(value != choice.value){ |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1572 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1573 |
<xsl:text> choice.elt.setAttribute("style", "display:none"); |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1574 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1575 |
<xsl:text> } else { |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1576 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1577 |
<xsl:text> choice.elt.setAttribute("style", choice.style); |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1578 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1579 |
<xsl:text> } |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1580 |
</xsl:text> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1581 |
<xsl:text> } |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1582 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1583 |
<xsl:text> }, |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1584 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1585 |
<xsl:text> init: function() { |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1586 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1587 |
<xsl:text> // Hello Switch |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1588 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1589 |
<xsl:text> }, |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1590 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1591 |
<xsl:text> choices: [ |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1592 |
</xsl:text> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1593 |
<xsl:variable name="regex" select="'^("[^"].*"|\-?[0-9]+)(#.*)?$'"/> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1594 |
<xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,$regex)]"> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1595 |
<xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1596 |
<xsl:text> { |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1597 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1598 |
<xsl:text> elt:id("</xsl:text> |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1599 |
<xsl:value-of select="@id"/> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1600 |
<xsl:text>"), |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1601 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1602 |
<xsl:text> style:"</xsl:text> |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1603 |
<xsl:value-of select="@style"/> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1604 |
<xsl:text>", |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1605 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1606 |
<xsl:text> value:</xsl:text> |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1607 |
<xsl:value-of select="$literal"/> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1608 |
<xsl:text> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1609 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1610 |
<xsl:text> }</xsl:text> |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1611 |
<xsl:if test="position()!=last()"> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1612 |
<xsl:text>,</xsl:text> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1613 |
</xsl:if> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1614 |
<xsl:text> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1615 |
</xsl:text> |
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1616 |
</xsl:for-each> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1617 |
<xsl:text> ], |
2801
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1618 |
</xsl:text> |
390acff12755
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant
parents:
2800
diff
changeset
|
1619 |
</xsl:template> |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1620 |
<xsl:template mode="widget_defs" match="widget[@type='Jump']"> |
2838
459bf80d3f46
SVGHMI: HMI:Page can now be a svg:g group or a svg:use clone, and included/linked widget are included in page. HMI:Jump was updated to be clickable through svg:use, to be generalized.
Edouard Tisserant
parents:
2837
diff
changeset
|
1621 |
<xsl:param name="hmi_element"/> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1622 |
<xsl:text> on_click: function(evt) { |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1623 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1624 |
<xsl:text> switch_page(this.args[0]); |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1625 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1626 |
<xsl:text> }, |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1627 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1628 |
<xsl:text> init: function() { |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1629 |
</xsl:text> |
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1630 |
<xsl:text> this.element.setAttribute("onclick", "hmi_widgets['</xsl:text> |
2838
459bf80d3f46
SVGHMI: HMI:Page can now be a svg:g group or a svg:use clone, and included/linked widget are included in page. HMI:Jump was updated to be clickable through svg:use, to be generalized.
Edouard Tisserant
parents:
2837
diff
changeset
|
1631 |
<xsl:value-of select="$hmi_element/@id"/> |
2839
f4dd234faa11
SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents:
2838
diff
changeset
|
1632 |
<xsl:text>'].on_click(evt)"); |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1633 |
</xsl:text> |
2851
8d15c6238e62
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2850
diff
changeset
|
1634 |
<xsl:text> }, |
2808
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1635 |
</xsl:text> |
dc78ffa5253d
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents:
2807
diff
changeset
|
1636 |
</xsl:template> |
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
|
1637 |
</xsl:stylesheet> |