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