svghmi/gen_index_xhtml.xslt
author Edouard Tisserant <edouard.tisserant@gmail.com>
Sun, 19 Apr 2020 10:48:34 +0200
branchsvghmi
changeset 2940 034b6ce4f885
parent 2939 4296ab974d4d
child 2941 ef13a4007538
permissions -rw-r--r--
SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
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"?>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
     2
<xsl:stylesheet xmlns:func="http://exslt.org/functions" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:epilogue="epilogue" 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:preamble="preamble" 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:debug="debug" 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 func exsl regexp str dyn debug preamble epilogue">
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
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
     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_PLC_STATUS</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_CURRENT_PAGE</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
  </xsl:variable>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    14
  <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
    15
  <xsl:variable name="_indexed_hmitree">
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    16
    <xsl:apply-templates mode="index" select="$hmitree"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    17
  </xsl:variable>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    18
  <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
    19
  <xsl:template mode="index" match="*">
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    20
    <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
    21
    <xsl:param name="parentpath" select="''"/>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    22
    <xsl:variable name="content">
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    23
      <xsl:variable name="path">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    24
        <xsl:choose>
2890
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
    25
          <xsl:when test="count(ancestor::*)=0">
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
    26
            <xsl:text>/</xsl:text>
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
    27
          </xsl:when>
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
    28
          <xsl:when test="count(ancestor::*)=1">
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
    29
            <xsl:text>/</xsl:text>
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
    30
            <xsl:value-of select="@name"/>
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    31
          </xsl:when>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    32
          <xsl:otherwise>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    33
            <xsl:value-of select="$parentpath"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    34
            <xsl:text>/</xsl:text>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    35
            <xsl:value-of select="@name"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    36
          </xsl:otherwise>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    37
        </xsl:choose>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    38
      </xsl:variable>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    39
      <xsl:choose>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    40
        <xsl:when test="not(local-name() = $categories/noindex)">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    41
          <xsl:copy>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    42
            <xsl:attribute name="index">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    43
              <xsl:value-of select="$index"/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    44
            </xsl:attribute>
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    45
            <xsl:attribute name="hmipath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    46
              <xsl:value-of select="$path"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    47
            </xsl:attribute>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    48
            <xsl:for-each select="@*">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    49
              <xsl:copy/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    50
            </xsl:for-each>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    51
          </xsl:copy>
2867
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    52
          <xsl:apply-templates mode="index" select="*[1]">
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    53
            <xsl:with-param name="index" select="$index + 1"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    54
            <xsl:with-param name="parentpath">
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    55
              <xsl:value-of select="$path"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    56
            </xsl:with-param>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    57
          </xsl:apply-templates>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    58
        </xsl:when>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    59
        <xsl:otherwise>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    60
          <xsl:apply-templates mode="index" select="*[1]">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    61
            <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
    62
            <xsl:with-param name="parentpath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    63
              <xsl:value-of select="$path"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    64
            </xsl:with-param>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    65
          </xsl:apply-templates>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    66
        </xsl:otherwise>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    67
      </xsl:choose>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    68
    </xsl:variable>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    69
    <xsl:copy-of select="$content"/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    70
    <xsl:apply-templates mode="index" select="following-sibling::*[1]">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    71
      <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
    72
      <xsl:with-param name="parentpath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    73
        <xsl:value-of select="$parentpath"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    74
      </xsl:with-param>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    75
    </xsl:apply-templates>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    76
  </xsl:template>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
    77
  <xsl:template mode="parselabel" match="*">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
    78
    <xsl:variable name="label" select="@inkscape:label"/>
2792
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="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
    80
    <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
    81
    <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
    82
      <xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    83
        <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
    84
          <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
    85
        </xsl:when>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    86
        <xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    87
          <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
    88
        </xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    89
      </xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    90
    </xsl:variable>
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" 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
    92
    <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
    93
      <xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    94
        <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
    95
          <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
    96
        </xsl:when>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    97
        <xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
    98
          <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
    99
        </xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   100
      </xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   101
    </xsl:variable>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   102
    <xsl:if test="$type">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   103
      <widget>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   104
        <xsl:attribute name="id">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   105
          <xsl:value-of select="@id"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   106
        </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   107
        <xsl:attribute name="type">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   108
          <xsl:value-of select="$type"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   109
        </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   110
        <xsl:for-each select="str:split(substring-after($args, ':'), ':')">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   111
          <arg>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   112
            <xsl:attribute name="value">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   113
              <xsl:value-of select="."/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   114
            </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   115
          </arg>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   116
        </xsl:for-each>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   117
        <xsl:variable name="paths" select="substring-after($description,'@')"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   118
        <xsl:for-each select="str:split($paths, '@')">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   119
          <xsl:if test="string-length(.) &gt; 0">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   120
            <path>
2793
2a97688c94c5 SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents: 2792
diff changeset
   121
              <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
   122
                <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
   123
              </xsl:attribute>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   124
              <xsl:variable name="path" select="."/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   125
              <xsl:variable name="item" select="$indexed_hmitree/*[@hmipath = $path]"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   126
              <xsl:if test="count($item) = 1">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   127
                <xsl:attribute name="index">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   128
                  <xsl:value-of select="$item/@index"/>
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
   129
                </xsl:attribute>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   130
                <xsl:attribute name="type">
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   131
                  <xsl:value-of select="local-name($item)"/>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   132
                </xsl:attribute>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   133
              </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   134
            </path>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   135
          </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   136
        </xsl:for-each>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   137
      </widget>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   138
    </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   139
  </xsl:template>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   140
  <xsl:variable name="_parsed_widgets">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   141
    <xsl:apply-templates mode="parselabel" select="$hmi_elements"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   142
  </xsl:variable>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   143
  <xsl:variable name="parsed_widgets" select="exsl:node-set($_parsed_widgets)"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   144
  <func:function name="func:widget">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   145
    <xsl:param name="id"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   146
    <func:result select="$parsed_widgets/widget[@id = $id]"/>
2885
f398896b7ebf SVGHMI: intermediate untested state. Excluded ForEach widget from pages handled widgets.
Edouard Tisserant
parents: 2883
diff changeset
   147
  </func:function>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
   148
  <func:function name="func:is_descendant_path">
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
   149
    <xsl:param name="descend"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
   150
    <xsl:param name="ancest"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
   151
    <func:result select="string-length($ancest) &gt; 0 and starts-with($descend,$ancest)"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
   152
  </func:function>
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   153
  <func:function name="func:same_class_paths">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   154
    <xsl:param name="a"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   155
    <xsl:param name="b"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   156
    <xsl:variable name="class_a" select="$indexed_hmitree/*[@hmipath = $a]/@class"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   157
    <xsl:variable name="class_b" select="$indexed_hmitree/*[@hmipath = $b]/@class"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   158
    <func:result select="$class_a and $class_b and $class_a = $class_b"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   159
  </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
   160
  <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
   161
    <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
   162
    <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
   163
    <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
   164
    <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
   165
    <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
   166
    <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
   167
      <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
   168
      <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
   169
      <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
   170
      <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
   171
    </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
   172
    <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
   173
</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: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
   175
      <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
   176
        <xsl:value-of select="concat($indent,'&gt;')"/>
682bce953795 SVGHMI: 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: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
   178
    </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
   179
  </xsl:template>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   180
  <debug:hmi-tree/>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   181
  <xsl:template match="debug:hmi-tree">
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
   182
    <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
   183
</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
   184
    <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
   185
    <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
   186
</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
   187
    <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
   188
</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
   189
    <xsl:apply-templates mode="testtree" select="$indexed_hmitree"/>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   190
    <xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   191
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   192
    <xsl:text>Parsed Widgets
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   193
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   194
    <xsl:copy-of select="_parsed_widgets"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   195
    <xsl:apply-templates mode="testtree" select="$parsed_widgets"/>
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
   196
  </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
   197
  <xsl:variable name="geometry" select="ns:GetSVGGeometry()"/>
2939
4296ab974d4d SVGHMI: Move reflective debug tags from "reflect" to "debug" namespace, preparing for per-purpose namespaces.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2938
diff changeset
   198
  <debug:geometry/>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   199
  <xsl:template match="debug: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
   200
    <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
   201
</xsl:text>
2879
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
   202
    <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
   203
      <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
   204
      <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
   205
      <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
   206
      <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
   207
      <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
   208
      <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
   209
      <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
   210
      <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
   211
      <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
   212
      <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
   213
      <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
   214
</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
   215
    </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
   216
  </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
   217
  <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
   218
    <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
   219
    <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
   220
    <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
   221
    <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
   222
    <xsl:variable name="d0" select="$a0 &gt;= $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
   223
    <xsl:variable name="d1" select="$a1 &gt;= $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
   224
    <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
   225
      <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
   226
        <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
   227
      </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
   228
      <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
   229
        <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
   230
      </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
   231
      <xsl:when test="$d0 and $d1 and $a0 &lt; $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
   232
        <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
   233
      </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
   234
      <xsl:when test="not($d0) and not($d1) and $b0 &lt; $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
   235
        <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
   236
      </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
   237
      <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
   238
        <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
   239
      </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
   240
    </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
   241
  </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
   242
  <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
   243
    <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
   244
    <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
   245
    <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
   246
    <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
   247
      <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
   248
        <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
   249
        <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
   250
      </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
   251
      <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
   252
        <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
   253
      </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
   254
    </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
   255
  </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
   256
  <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
   257
    <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
   258
    <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
   259
    <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
   260
    <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
   261
    <func:result select="$candidates[(@Id = $groups/@id and (func:intersect($g, .) = 9)) or &#10;                          (not(@Id = $groups/@id) and (func:intersect($g, .) &gt; 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
   262
  </func:function>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   263
  <xsl:variable name="hmi_pages_descs" select="$parsed_widgets/widget[@type = 'Page']"/>
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   264
  <xsl:variable name="hmi_pages" select="$hmi_elements[@id = $hmi_pages_descs/@id]"/>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   265
  <xsl:variable name="keypads_descs" select="$parsed_widgets/widget[@type = 'Keypad']"/>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   266
  <xsl:variable name="keypads" select="$hmi_elements[@id = $keypads_descs/@id]"/>
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
   267
  <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
   268
    <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
   269
      <xsl:when test="count($hmi_pages) &gt; 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
   270
        <xsl:choose>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   271
          <xsl:when test="$hmi_pages_descs/arg[1]/@value = 'Home'">
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
   272
            <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
   273
          </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
   274
          <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
   275
            <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
   276
          </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
   277
        </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
   278
      </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
   279
      <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
   280
        <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
   281
      </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
   282
      <xsl:otherwise>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   283
        <xsl:value-of select="func:widget($hmi_pages/@id)/arg[1]/@value"/>
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
   284
      </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
   285
    </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
   286
  </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
   287
  <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
   288
    <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
   289
    <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
   290
    <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
   291
    <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
   292
    <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
   293
      <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
   294
        <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
   295
      </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
   296
      <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
   297
        <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
   298
      </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
   299
    </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
   300
  </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
   301
  <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
   302
    <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
   303
    <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
   304
    <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
   305
    <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
   306
    <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
   307
  </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
   308
  <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
   309
    <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
   310
    <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
   311
      <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
   312
        <func:result select="func:all_related_elements($pages[1])&#10;                      | 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
   313
      </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
   314
      <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
   315
        <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
   316
      </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
   317
    </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
   318
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   319
  <xsl:variable name="required_elements" select="//svg:defs/descendant-or-self::svg:*&#10;       | func:required_elements($hmi_pages | $keypads)/ancestor-or-self::svg:*"/>
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
   320
  <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
   321
  <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
   322
    <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
   323
    <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
   324
    <xsl:variable name="filled_groups" select="$short_list/parent::svg:*[&#10;        not(descendant::*[&#10;            not(self::svg:g) and&#10;            not(@id = $discardable_elements/@id) and&#10;            not(@id = $short_list/descendant-or-self::*[not(self::svg:g)]/@id)&#10;        ])]"/>
682bce953795 SVGHMI: 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: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
   326
    <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
   327
  </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
   328
  <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
   329
    <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
   330
    <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
   331
      <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
   332
        <func:result select="func:sumarized_elements(func:all_related_elements($pages[1]))&#10;                      | 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
   333
      </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
   334
      <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
   335
        <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
   336
      </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
   337
    </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
   338
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   339
  <xsl:variable name="_detachable_elements" select="func:detachable_elements($hmi_pages | $keypads)"/>
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
   340
  <xsl:variable name="detachable_elements" select="$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]"/>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   341
  <xsl:variable name="forEach_widgets_ids" select="$parsed_widgets/widget[@type = 'ForEach']/@id"/>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   342
  <xsl:variable name="forEach_widgets" select="$hmi_elements[@id = $forEach_widgets_ids]"/>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   343
  <xsl:variable name="in_forEach_widget_ids" select="func:refered_elements($forEach_widgets)[not(@id = $forEach_widgets_ids)]/@id"/>
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
   344
  <xsl:template mode="page_desc" match="svg:*">
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   345
    <xsl:variable name="desc" select="func:widget(@id)"/>
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
   346
    <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
   347
    <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
   348
    <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/>
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   349
    <xsl:variable name="all_page_widgets" select="$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id]"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   350
    <xsl:variable name="page_managed_widgets" select="$all_page_widgets[not(@id=$in_forEach_widget_ids)]"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   351
    <xsl:variable name="page_relative_widgets" select="$page_managed_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]"/>
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
   352
    <xsl:variable name="required_detachables" select="func:sumarized_elements($page_all_elements)/&#10;           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
   353
    <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
   354
    <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
   355
    <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
   356
</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: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
   358
    <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
   359
    <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
   360
</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: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
   362
    <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
   363
    <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
   364
    <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
   365
    <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
   366
    <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
   367
    <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
   368
    <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
   369
    <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
   370
</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: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
   372
      <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
   373
        <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
   374
          <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
   375
          <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
   376
          <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
   377
          <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
   378
          <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
   379
        </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
   380
      </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
   381
      <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
   382
      <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
   383
      <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
   384
</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: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
   386
    <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
   387
</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
   388
    <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
   389
      <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
   390
      <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
   391
      <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
   392
      <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
   393
        <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
   394
      </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
   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: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
   398
    <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
   399
</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: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
   401
</xsl:text>
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   402
    <xsl:for-each select="$page_managed_widgets[not(@id = $page_relative_widgets/@id)]">
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
   403
      <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
   404
      <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
   405
      <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
   406
      <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
   407
        <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
   408
      </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
   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: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
   411
    </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
   412
    <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
   413
</xsl:text>
2903
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   414
    <xsl:text>    jumps: [
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   415
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   416
    <xsl:for-each select="$parsed_widgets/widget[@id = $all_page_widgets/@id and @type='Jump']">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   417
      <xsl:variable name="_id" select="@id"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   418
      <xsl:variable name="opts">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   419
        <xsl:call-template name="jump_widget_activity">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   420
          <xsl:with-param name="hmi_element" select="$hmi_elements[@id=$_id]"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   421
        </xsl:call-template>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   422
      </xsl:variable>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   423
      <xsl:if test="string-length($opts)&gt;0">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   424
        <xsl:text>        hmi_widgets["</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   425
        <xsl:value-of select="@id"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   426
        <xsl:text>"]</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   427
        <xsl:if test="position()!=last()">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   428
          <xsl:text>,</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   429
        </xsl:if>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   430
        <xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   431
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   432
      </xsl:if>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   433
    </xsl:for-each>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   434
    <xsl:text>    ],
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
   435
</xsl:text>
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
   436
    <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
   437
</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: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
   439
      <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
   440
      <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
   441
      <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
   442
      <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
   443
      <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
   444
      <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
   445
        <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
   446
      </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
   447
      <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
   448
</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
   449
    </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
   450
    <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
   451
</xsl:text>
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   452
    <xsl:apply-templates mode="per_page_widget_template" select="$parsed_widgets/widget[@id = $all_page_widgets/@id]">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   453
      <xsl:with-param name="page_desc" select="$desc"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   454
    </xsl:apply-templates>
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
   455
    <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
   456
    <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
   457
      <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
   458
    </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
   459
    <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
   460
</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
  </xsl:template>
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
   462
  <xsl:template mode="per_page_widget_template" match="*"/>
2939
4296ab974d4d SVGHMI: Move reflective debug tags from "reflect" to "debug" namespace, preparing for per-purpose namespaces.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2938
diff changeset
   463
  <debug:detachable-pages/>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   464
  <xsl:template match="debug:detachable-pages">
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   465
    <xsl:text>DETACHABLES:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   466
</xsl:text>
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
   467
    <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
   468
      <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
   469
      <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
   470
      <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
   471
</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
   472
    </xsl:for-each>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   473
    <xsl:text>In Foreach:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   474
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   475
    <xsl:for-each select="$in_forEach_widget_ids">
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   476
      <xsl:text> </xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   477
      <xsl:value-of select="."/>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   478
      <xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   479
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   480
    </xsl:for-each>
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
   481
  </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
   482
  <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
   483
    <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
   484
      <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
   485
        <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
   486
      </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
   487
    </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
   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 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
   490
  <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
   491
  <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
   492
    <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
   493
      <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
   494
        <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
   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: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
   497
        <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
   498
      </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
   499
      <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
   500
        <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
   501
      </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
   502
      <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
   503
    </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
   504
  </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
   505
  <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
   506
    <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
   507
      <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
   508
    </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
   509
  </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
   510
  <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
   511
    <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
   512
      <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
   513
    </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
   514
  </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
   515
  <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
   516
  <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
   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: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
   519
        <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
   520
      </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
   521
      <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
   522
        <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
   523
          <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
   524
        </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
   525
      </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
   526
    </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
   527
  </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
   528
  <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
   529
    <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
   530
      <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
   531
    </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
   532
    <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
   533
      <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
   534
    </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
   535
    <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
   536
      <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
   537
    </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
   538
    <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
   539
      <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
   540
    </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
   541
    <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
   542
      <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
   543
    </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
   544
  </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
   545
  <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
   546
  <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
   547
    <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
   548
      <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
   549
        <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
   550
          <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
   551
        </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
   552
      </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
   553
      <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
   554
      <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
   555
        <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
   556
      </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
   557
    </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
   558
  </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
   559
  <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
   560
    <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
   561
    <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
   562
      <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
   563
      <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
   564
      <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
   565
    </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
   566
  </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
   567
  <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
   568
    <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
   569
  </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
   570
  <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
   571
    <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
   572
    <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
   573
      <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
   574
        <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
   575
          <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
   576
            <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
   577
          </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
   578
        </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
   579
      </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
   580
      <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
   581
        <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
   582
          <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
   583
            <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
   584
          </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
   585
        </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
   586
      </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
   587
    </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
   588
  </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
   589
  <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
   590
    <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
   591
  </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
   592
  <xsl:variable name="result_svg_ns" select="exsl:node-set($result_svg)"/>
2939
4296ab974d4d SVGHMI: Move reflective debug tags from "reflect" to "debug" namespace, preparing for per-purpose namespaces.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2938
diff changeset
   593
  <debug:inline-svg/>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   594
  <xsl:template match="debug:inline-svg">
2904
92d115d8828d SVGHMI: collect debug data through xslt reflectivity instead of yml2/python trick
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2903
diff changeset
   595
    <xsl:text>Unlinked :
92d115d8828d SVGHMI: collect debug data through xslt reflectivity instead of yml2/python trick
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2903
diff changeset
   596
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   597
    <xsl:for-each select="$to_unlink">
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   598
      <xsl:value-of select="@id"/>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   599
      <xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   600
</xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   601
    </xsl:for-each>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   602
  </xsl:template>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   603
  <preamble:hmi-widget/>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   604
  <xsl:template match="preamble:hmi-widget">
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   605
    <xsl:text>var hmi_widgets = {
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   606
</xsl:text>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   607
    <xsl:apply-templates mode="hmi_elements" select="$hmi_elements"/>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   608
    <xsl:text>}
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   609
</xsl:text>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
   610
  </xsl:template>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   611
  <xsl:template mode="hmi_elements" match="svg:*">
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   612
    <xsl:variable name="widget" select="func:widget(@id)"/>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   613
    <xsl:variable name="eltid" select="@id"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   614
    <xsl:text>  "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   615
    <xsl:value-of select="@id"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   616
    <xsl:text>": {
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   617
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   618
    <xsl:text>    type: "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   619
    <xsl:value-of select="$widget/@type"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   620
    <xsl:text>",
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   621
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   622
    <xsl:text>    args: [
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   623
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   624
    <xsl:for-each select="$widget/arg">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   625
      <xsl:text>        "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   626
      <xsl:value-of select="@value"/>
2798
ddb2c4668a6b SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant
parents: 2797
diff changeset
   627
      <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
   628
      <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
   629
        <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
   630
      </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
   631
      <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
   632
</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
   633
    </xsl:for-each>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   634
    <xsl:text>    ],
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   635
</xsl:text>
2889
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   636
    <xsl:text>    offset: 0,
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   637
</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   638
    <xsl:text>    indexes: [
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   639
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   640
    <xsl:for-each select="$widget/path">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   641
      <xsl:choose>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   642
        <xsl:when test="not(@index)">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   643
          <xsl:message terminate="no">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   644
            <xsl:text>Widget </xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   645
            <xsl:value-of select="$widget/@type"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   646
            <xsl:text> id="</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   647
            <xsl:value-of select="$eltid"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   648
            <xsl:text>" : No match for path "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   649
            <xsl:value-of select="@value"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   650
            <xsl:text>" in HMI tree</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   651
          </xsl:message>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   652
        </xsl:when>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   653
        <xsl:otherwise>
2890
ae8063127e95 SVGHMI: make root HMI tree node a HMI_NODE, droped HMI_ROOT node type
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2889
diff changeset
   654
          <xsl:text>        </xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   655
          <xsl:value-of select="@index"/>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
   656
          <xsl:text> /* </xsl:text>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
   657
          <xsl:value-of select="@value"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
   658
          <xsl:text> */ </xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   659
          <xsl:if test="position()!=last()">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   660
            <xsl:text>,</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   661
          </xsl:if>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   662
          <xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   663
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   664
        </xsl:otherwise>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   665
      </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
   666
    </xsl:for-each>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   667
    <xsl:text>    ],
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   668
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   669
    <xsl:text>    element: id("</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   670
    <xsl:value-of select="@id"/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   671
    <xsl:text>"),
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   672
</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   673
    <xsl:apply-templates mode="widget_defs" select="$widget">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   674
      <xsl:with-param name="hmi_element" select="."/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   675
    </xsl:apply-templates>
2889
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   676
    <xsl:apply-templates mode="widget_subscribe" select="$widget">
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   677
      <xsl:with-param name="hmi_element" select="."/>
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   678
    </xsl:apply-templates>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   679
    <xsl:text>  }</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   680
    <xsl:if test="position()!=last()">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   681
      <xsl:text>,</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   682
    </xsl:if>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
   683
    <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
   684
</xsl:text>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   685
  </xsl:template>
2889
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   686
  <xsl:template mode="widget_subscribe" match="widget">
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   687
    <xsl:text>    sub: subscribe,
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   688
</xsl:text>
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   689
    <xsl:text>    unsub: unsubscribe,
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   690
</xsl:text>
2897
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
   691
    <xsl:text>    apply_cache: widget_apply_cache,
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
   692
</xsl:text>
2889
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   693
  </xsl:template>
4eeed820fd3a SVGHMI: reworked widget (un)subscription now a method of widgect object, allowing special subscription methods
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2888
diff changeset
   694
  <xsl:template mode="widget_subscribe" match="widget[@type='Page']"/>
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
   695
  <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
   696
    <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
   697
    <xsl:param name="mandatory" select="'yes'"/>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   698
    <xsl:param name="subelements" select="/.."/>
2800
68cee1366b9c SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents: 2799
diff changeset
   699
    <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
   700
    <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
   701
    <xsl:for-each select="str:split($labels)">
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
   702
      <xsl:variable name="name" select="."/>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   703
      <xsl:variable name="elt" select="$result_svg_ns//*[@id = $hmi_element/@id]//*[@inkscape:label=$name][1]"/>
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
   704
      <xsl:choose>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   705
        <xsl:when test="not($elt/@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
   706
          <xsl:if test="$mandatory='yes'">
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   707
            <xsl:message terminate="yes">
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
   708
              <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
   709
              <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
   710
              <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
   711
              <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
   712
            </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
   713
          </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
   714
        </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
   715
        <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
   716
          <xsl:text>    </xsl:text>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
   717
          <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
   718
          <xsl:text>_elt: id("</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   719
          <xsl:value-of select="$elt/@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
   720
          <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
   721
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   722
          <xsl:if test="$subelements">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   723
            <xsl:text>    </xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   724
            <xsl:value-of select="$name"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   725
            <xsl:text>_sub: {
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   726
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   727
            <xsl:for-each select="str:split($subelements)">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   728
              <xsl:variable name="subname" select="."/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   729
              <xsl:variable name="subelt" select="$elt/*[@inkscape:label=$subname][1]"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   730
              <xsl:choose>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   731
                <xsl:when test="not($subelt/@id)">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   732
                  <xsl:if test="$mandatory='yes'">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   733
                    <xsl:message terminate="yes">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   734
                      <xsl:value-of select="$widget_type"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   735
                      <xsl:text> widget must have a </xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   736
                      <xsl:value-of select="$name"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   737
                      <xsl:text>/</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   738
                      <xsl:value-of select="$subname"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   739
                      <xsl:text> element</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   740
                    </xsl:message>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   741
                  </xsl:if>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   742
                  <xsl:text>        /* missing </xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   743
                  <xsl:value-of select="$name"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   744
                  <xsl:text>/</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   745
                  <xsl:value-of select="$subname"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   746
                  <xsl:text> element */
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   747
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   748
                </xsl:when>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   749
                <xsl:otherwise>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   750
                  <xsl:text>        "</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   751
                  <xsl:value-of select="$subname"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   752
                  <xsl:text>": id("</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   753
                  <xsl:value-of select="$subelt/@id"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   754
                  <xsl:text>")</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   755
                  <xsl:if test="position()!=last()">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   756
                    <xsl:text>,</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   757
                  </xsl:if>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   758
                  <xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   759
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   760
                </xsl:otherwise>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   761
              </xsl:choose>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   762
            </xsl:for-each>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   763
            <xsl:text>    },
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   764
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
   765
          </xsl:if>
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
   766
        </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
   767
      </xsl:choose>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
   768
    </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
   769
  </xsl:template>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   770
  <func:function name="func:escape_quotes">
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   771
    <xsl:param name="txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   772
    <xsl:variable name="frst" select="substring-before($txt,'&quot;')"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   773
    <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
   774
    <xsl:choose>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   775
      <xsl:when test="$frstln &gt; 0 and string-length($txt) &gt; $frstln">
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   776
        <func:result select="concat($frst,'\&quot;',func:escape_quotes(substring-after($txt,'&quot;')))"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   777
      </xsl:when>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   778
      <xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   779
        <func:result select="$txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   780
      </xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   781
    </xsl:choose>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
   782
  </func:function>
2902
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   783
  <xsl:template mode="widget_defs" match="widget[@type='Back']">
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   784
    <xsl:param name="hmi_element"/>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   785
    <xsl:text>    on_click: function(evt) {
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   786
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   787
    <xsl:text>        if(jump_history.length &gt; 1){
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   788
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   789
    <xsl:text>           jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   790
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   791
    <xsl:text>           let [page_name, index] = jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   792
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   793
    <xsl:text>           switch_page(page_name, index);
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   794
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   795
    <xsl:text>        }
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   796
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   797
    <xsl:text>    },
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   798
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   799
    <xsl:text>    init: function() {
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   800
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   801
    <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   802
    <xsl:value-of select="$hmi_element/@id"/>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   803
    <xsl:text>'].on_click(evt)");
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   804
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   805
    <xsl:text>    },
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   806
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
   807
  </xsl:template>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   808
  <xsl:template mode="widget_defs" match="widget[@type='Display']">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   809
    <xsl:param name="hmi_element"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   810
    <xsl:text>    frequency: 5,
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   811
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   812
    <xsl:text>    dispatch: function(value) {
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   813
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   814
    <xsl:choose>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   815
      <xsl:when test="$hmi_element[self::svg:text]">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   816
        <xsl:text>      this.element.textContent = String(value);
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   817
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   818
      </xsl:when>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   819
      <xsl:otherwise>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   820
        <xsl:message terminate="no">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   821
          <xsl:text>Display widget as a group not implemented</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   822
        </xsl:message>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   823
      </xsl:otherwise>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   824
    </xsl:choose>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   825
    <xsl:text>    },
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   826
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
   827
  </xsl:template>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   828
  <xsl:template mode="widget_defs" match="widget[@type='DropDown']">
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   829
    <xsl:param name="hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   830
    <xsl:call-template name="defs_by_labels">
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   831
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   832
      <xsl:with-param name="labels">
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   833
        <xsl:text>text box button</xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   834
      </xsl:with-param>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   835
    </xsl:call-template>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   836
    <xsl:text>    dispatch: function(value) {
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   837
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   838
    <xsl:text>        if(!this.opened) this.set_selection(value);
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   839
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   840
    <xsl:text>    },
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   841
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   842
    <xsl:text>    init: function() {
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   843
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   844
    <xsl:text>        this.button_elt.setAttribute("onclick", "hmi_widgets['</xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   845
    <xsl:value-of select="$hmi_element/@id"/>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   846
    <xsl:text>'].on_button_click()");
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   847
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   848
    <xsl:text>        // Save original size of rectangle
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   849
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   850
    <xsl:text>        this.box_bbox = this.box_elt.getBBox()
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   851
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   852
    <xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   853
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   854
    <xsl:text>        // Compute margins
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   855
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   856
    <xsl:text>        text_bbox = this.text_elt.getBBox()
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   857
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   858
    <xsl:text>        lmargin = text_bbox.x - this.box_bbox.x;
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   859
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   860
    <xsl:text>        tmargin = text_bbox.y - this.box_bbox.y;
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   861
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   862
    <xsl:text>        this.margins = [lmargin, tmargin].map(x =&gt; Math.max(x,0));
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   863
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   864
    <xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   865
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   866
    <xsl:text>        // It is assumed that list content conforms to Array interface.
2931
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   867
</xsl:text>
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   868
    <xsl:text>        this.content = [
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   869
</xsl:text>
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   870
    <xsl:for-each select="arg">
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   871
      <xsl:text>"</xsl:text>
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   872
      <xsl:value-of select="@value"/>
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   873
      <xsl:text>",
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   874
</xsl:text>
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   875
    </xsl:for-each>
f51c0e2e0bcb SVGHMI: HMI:DropDown now temporarily takes content from widget's arguments, until HMI:List is implemented.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2930
diff changeset
   876
    <xsl:text>        ];
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   877
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   878
    <xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   879
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   880
    <xsl:text>        // Index of first visible element in the menu, when opened
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   881
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   882
    <xsl:text>        this.menu_offset = 0;
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   883
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   884
    <xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   885
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   886
    <xsl:text>        // How mutch to lift the menu vertically so that it does not cross bottom border
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   887
</xsl:text>
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   888
    <xsl:text>        this.lift = 0;
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   889
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   890
    <xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   891
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   892
    <xsl:text>        // Event handlers cannot be object method ('this' is unknown)
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   893
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   894
    <xsl:text>        // as a workaround, handler given to addEventListener is bound in advance.
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   895
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   896
    <xsl:text>        this.bound_close_on_click_elsewhere = this.close_on_click_elsewhere.bind(this);
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   897
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   898
    <xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   899
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   900
    <xsl:text>        this.opened = false;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   901
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   902
    <xsl:text>    },
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   903
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   904
    <xsl:text>    // Called when a menu entry is clicked
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   905
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   906
    <xsl:text>    on_selection_click: function(selection) {
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   907
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   908
    <xsl:text>        this.close();
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   909
</xsl:text>
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
   910
    <xsl:text>        let orig = this.indexes[0];
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
   911
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
   912
    <xsl:text>        let idx = this.offset ? orig - this.offset : orig;
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
   913
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
   914
    <xsl:text>        apply_hmi_value(idx, selection);
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
   915
</xsl:text>
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
   916
    <xsl:text>    },
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
   917
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   918
    <xsl:text>    on_button_click: function() {
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   919
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   920
    <xsl:text>        this.open();
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   921
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   922
    <xsl:text>    },
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   923
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   924
    <xsl:text>    on_backward_click: function(){
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   925
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   926
    <xsl:text>        this.scroll(false);
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   927
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   928
    <xsl:text>    },
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   929
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   930
    <xsl:text>    on_forward_click:function(){
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   931
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   932
    <xsl:text>        this.scroll(true);
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   933
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   934
    <xsl:text>    },
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   935
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   936
    <xsl:text>    set_selection: function(value) {
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   937
</xsl:text>
2934
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   938
    <xsl:text>        let display_str;
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   939
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   940
    <xsl:text>        if(value &gt;= 0 &amp;&amp; value &lt; this.content.length){
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   941
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   942
    <xsl:text>            // if valid selection resolve content
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   943
</xsl:text>
2934
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   944
    <xsl:text>            display_str = this.content[value];
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   945
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   946
    <xsl:text>            this.last_selection = value;
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   947
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   948
    <xsl:text>        } else {
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   949
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   950
    <xsl:text>            // otherwise show problem
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   951
</xsl:text>
2934
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   952
    <xsl:text>            display_str = "?"+String(value)+"?";
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   953
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   954
    <xsl:text>        }
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   955
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   956
    <xsl:text>        // It is assumed that first span always stays,
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   957
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   958
    <xsl:text>        // and contains selection when menu is closed
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   959
</xsl:text>
2934
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
   960
    <xsl:text>        this.text_elt.firstElementChild.textContent = display_str;
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   961
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   962
    <xsl:text>    },
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   963
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   964
    <xsl:text>    grow_text: function(up_to) {
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   965
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   966
    <xsl:text>        let count = 1;
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   967
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   968
    <xsl:text>        let txt = this.text_elt; 
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   969
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   970
    <xsl:text>        let first = txt.firstElementChild;
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   971
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   972
    <xsl:text>        // Real world (pixels) boundaries of current page
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   973
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   974
    <xsl:text>        let bounds = svg_root.getBoundingClientRect(); 
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   975
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   976
    <xsl:text>        this.lift = 0;
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   977
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   978
    <xsl:text>        while(count &lt; up_to) {
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   979
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   980
    <xsl:text>            let next = first.cloneNode();
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   981
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   982
    <xsl:text>            // relative line by line text flow instead of absolute y coordinate
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   983
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   984
    <xsl:text>            next.removeAttribute("y");
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   985
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   986
    <xsl:text>            next.setAttribute("dy", "1.1em");
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   987
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   988
    <xsl:text>            // default content to allow computing text element bbox
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   989
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   990
    <xsl:text>            next.textContent = "...";
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   991
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   992
    <xsl:text>            // append new span to text element
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   993
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   994
    <xsl:text>            txt.appendChild(next);
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
   995
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   996
    <xsl:text>            // now check if text extended by one row fits to page
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   997
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   998
    <xsl:text>            // FIXME : exclude margins to be more accurate on box size
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
   999
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1000
    <xsl:text>            let rect = txt.getBoundingClientRect();
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1001
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1002
    <xsl:text>            if(rect.bottom &gt; bounds.bottom){
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1003
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1004
    <xsl:text>                // in case of overflow at the bottom, lift up one row
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1005
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1006
    <xsl:text>                let backup = first.getAttribute("dy");
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1007
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1008
    <xsl:text>                // apply lift asr a dy added too first span (y attrib stays)
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1009
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1010
    <xsl:text>                first.setAttribute("dy", "-"+String((this.lift+1)*1.1)+"em");
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1011
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1012
    <xsl:text>                rect = txt.getBoundingClientRect();
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1013
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1014
    <xsl:text>                if(rect.top &gt; bounds.top){
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1015
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1016
    <xsl:text>                    this.lift += 1;
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1017
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1018
    <xsl:text>                } else {
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1019
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1020
    <xsl:text>                    // if it goes over the top, then backtrack
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1021
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1022
    <xsl:text>                    // restore dy attribute on first span
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1023
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1024
    <xsl:text>                    if(backup)
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1025
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1026
    <xsl:text>                        first.setAttribute("dy", backup);
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1027
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1028
    <xsl:text>                    else
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1029
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1030
    <xsl:text>                        first.removeAttribute("dy");
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1031
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1032
    <xsl:text>                    // remove unwanted child
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1033
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1034
    <xsl:text>                    txt.removeChild(next);
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1035
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1036
    <xsl:text>                    return count;
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1037
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1038
    <xsl:text>                }
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1039
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1040
    <xsl:text>            }
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1041
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1042
    <xsl:text>            count++;
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1043
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1044
    <xsl:text>        }
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1045
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1046
    <xsl:text>        return count;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1047
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1048
    <xsl:text>    },
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1049
</xsl:text>
2933
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1050
    <xsl:text>    close_on_click_elsewhere: function(e) {
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1051
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1052
    <xsl:text>        // inhibit events not targetting spans (menu items)
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1053
</xsl:text>
2933
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1054
    <xsl:text>        if(e.target.parentNode !== this.text_elt){
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1055
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1056
    <xsl:text>            e.stopPropagation();
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1057
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1058
    <xsl:text>            // close menu in case click is outside box
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1059
</xsl:text>
2933
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1060
    <xsl:text>            if(e.target !== this.box_elt)
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1061
</xsl:text>
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1062
    <xsl:text>                this.close();
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1063
</xsl:text>
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1064
    <xsl:text>        }
ed3f712a8eef SVGHMI: When clicking outside of opened HMI:DropDown box, close it.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2932
diff changeset
  1065
</xsl:text>
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1066
    <xsl:text>    },
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1067
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1068
    <xsl:text>    close: function(){
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1069
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1070
    <xsl:text>        // Stop hogging all click events
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1071
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1072
    <xsl:text>        svg_root.removeEventListener("click", this.bound_close_on_click_elsewhere, true);
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1073
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1074
    <xsl:text>        // Restore position and sixe of widget elements
2932
abb995a30088 SVGHMI: Fix HMI:DropDown flicker on close.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2931
diff changeset
  1075
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1076
    <xsl:text>        this.reset_text();
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1077
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1078
    <xsl:text>        this.reset_box();
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1079
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1080
    <xsl:text>        // Put the button back in place
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1081
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1082
    <xsl:text>        this.element.appendChild(this.button_elt);
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1083
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1084
    <xsl:text>        // Mark as closed (to allow dispatch)
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1085
</xsl:text>
2932
abb995a30088 SVGHMI: Fix HMI:DropDown flicker on close.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2931
diff changeset
  1086
    <xsl:text>        this.opened = false;
abb995a30088 SVGHMI: Fix HMI:DropDown flicker on close.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2931
diff changeset
  1087
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1088
    <xsl:text>        // Dispatch last cached value
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1089
</xsl:text>
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1090
    <xsl:text>        this.apply_cache();
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1091
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1092
    <xsl:text>    },
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1093
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1094
    <xsl:text>    // Set text content when content is smaller than menu (no scrolling)
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1095
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1096
    <xsl:text>    set_complete_text: function(){
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1097
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1098
    <xsl:text>        let spans = this.text_elt.children; 
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1099
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1100
    <xsl:text>        let c = 0;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1101
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1102
    <xsl:text>        for(let item of this.content){
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1103
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1104
    <xsl:text>            let span=spans[c];
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1105
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1106
    <xsl:text>            span.textContent = item;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1107
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1108
    <xsl:text>            span.setAttribute("onclick", "hmi_widgets['</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1109
    <xsl:value-of select="$hmi_element/@id"/>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1110
    <xsl:text>'].on_selection_click("+c+")");
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1111
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1112
    <xsl:text>            c++;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1113
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1114
    <xsl:text>        }
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1115
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1116
    <xsl:text>    },
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1117
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1118
    <xsl:text>    // Move partial view :
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1119
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1120
    <xsl:text>    // false : upward, lower value
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1121
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1122
    <xsl:text>    // true  : downward, higher value
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1123
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1124
    <xsl:text>    scroll: function(forward){
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1125
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1126
    <xsl:text>        let contentlength = this.content.length;
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1127
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1128
    <xsl:text>        let spans = this.text_elt.children; 
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1129
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1130
    <xsl:text>        let spanslength = spans.length;
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1131
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1132
    <xsl:text>        // reduce accounted menu size according to jumps
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1133
</xsl:text>
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1134
    <xsl:text>        if(this.menu_offset != 0) spanslength--;
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1135
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1136
    <xsl:text>        if(this.menu_offset &lt; contentlength - 1) spanslength--;
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1137
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1138
    <xsl:text>        if(forward){
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1139
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1140
    <xsl:text>            this.menu_offset = Math.min(
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1141
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1142
    <xsl:text>                contentlength - spans.length + 1, 
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1143
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1144
    <xsl:text>                this.menu_offset + spanslength);
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1145
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1146
    <xsl:text>        }else{
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1147
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1148
    <xsl:text>            this.menu_offset = Math.max(
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1149
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1150
    <xsl:text>                0, 
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1151
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1152
    <xsl:text>                this.menu_offset - spanslength);
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1153
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1154
    <xsl:text>        }
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1155
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1156
    <xsl:text>        console.log(this.menu_offset);
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1157
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1158
    <xsl:text>        this.set_partial_text();
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1159
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1160
    <xsl:text>    },
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1161
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1162
    <xsl:text>    // Setup partial view text content
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1163
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1164
    <xsl:text>    // with jumps at first and last entry when appropriate
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1165
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1166
    <xsl:text>    set_partial_text: function(){
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1167
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1168
    <xsl:text>        let spans = this.text_elt.children; 
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1169
</xsl:text>
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1170
    <xsl:text>        let contentlength = this.content.length;
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1171
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1172
    <xsl:text>        let spanslength = spans.length;
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1173
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1174
    <xsl:text>        let i = this.menu_offset, c = 0;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1175
</xsl:text>
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1176
    <xsl:text>        while(c &lt; spanslength){
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1177
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1178
    <xsl:text>            let span=spans[c];
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1179
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1180
    <xsl:text>            // backward jump only present if not exactly at start
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1181
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1182
    <xsl:text>            if(c == 0 &amp;&amp; i != 0){
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1183
</xsl:text>
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1184
    <xsl:text>                span.textContent = "&#x2191;  &#x2191;  &#x2191;";
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1185
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1186
    <xsl:text>                span.setAttribute("onclick", "hmi_widgets['</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1187
    <xsl:value-of select="$hmi_element/@id"/>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1188
    <xsl:text>'].on_backward_click()");
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1189
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1190
    <xsl:text>            // presence of forward jump when not right at the end
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1191
</xsl:text>
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1192
    <xsl:text>            }else if(c == spanslength-1 &amp;&amp; i &lt; contentlength - 1){
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1193
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1194
    <xsl:text>                span.textContent = "&#x2193;  &#x2193;  &#x2193;";
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1195
</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1196
    <xsl:text>                span.setAttribute("onclick", "hmi_widgets['</xsl:text>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1197
    <xsl:value-of select="$hmi_element/@id"/>
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1198
    <xsl:text>'].on_forward_click()");
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1199
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1200
    <xsl:text>            // otherwise normal content
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1201
</xsl:text>
2925
220172cbdcff SVGHMI: HMI:DropDown now scrolls forward and backward
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2924
diff changeset
  1202
    <xsl:text>            }else{
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1203
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1204
    <xsl:text>                span.textContent = this.content[i];
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1205
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1206
    <xsl:text>                span.setAttribute("onclick", "hmi_widgets['</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1207
    <xsl:value-of select="$hmi_element/@id"/>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1208
    <xsl:text>'].on_selection_click("+i+")");
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1209
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1210
    <xsl:text>                i++;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1211
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1212
    <xsl:text>            }
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1213
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1214
    <xsl:text>            c++;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1215
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1216
    <xsl:text>        }
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1217
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1218
    <xsl:text>    },
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1219
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1220
    <xsl:text>    open: function(){
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1221
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1222
    <xsl:text>        let length = this.content.length;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1223
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1224
    <xsl:text>        // systematically reset text, to strip eventual whitespace spans
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1225
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1226
    <xsl:text>        this.reset_text();
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1227
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1228
    <xsl:text>        // grow as much as needed or possible
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1229
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1230
    <xsl:text>        let slots = this.grow_text(length);
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1231
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1232
    <xsl:text>        // Depending on final size
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1233
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1234
    <xsl:text>        if(slots == length) {
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1235
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1236
    <xsl:text>            // show all at once
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1237
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1238
    <xsl:text>            this.set_complete_text();
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1239
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1240
    <xsl:text>        } else {
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1241
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1242
    <xsl:text>            // eventualy align menu to current selection, compensating for lift
2934
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1243
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1244
    <xsl:text>            let offset = this.last_selection - this.lift;
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1245
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1246
    <xsl:text>            if(offset &gt; 0)
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1247
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1248
    <xsl:text>                this.menu_offset = Math.min(offset + 1, length - slots + 1);
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1249
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1250
    <xsl:text>            else
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1251
</xsl:text>
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1252
    <xsl:text>                this.menu_offset = 0;
ee483e8346f5 SVGHMI: HMI:DropDown menu aligns to selected when opening
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2933
diff changeset
  1253
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1254
    <xsl:text>            // show surrounding values
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1255
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1256
    <xsl:text>            this.set_partial_text();
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1257
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1258
    <xsl:text>        }
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1259
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1260
    <xsl:text>        // Now that text size is known, we can set the box around it
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1261
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1262
    <xsl:text>        this.adjust_box_to_text();
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1263
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1264
    <xsl:text>        // Take button out until menu closed
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1265
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1266
    <xsl:text>        this.element.removeChild(this.button_elt);
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1267
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1268
    <xsl:text>        // Rise widget to top by moving it to last position among siblings
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1269
</xsl:text>
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1270
    <xsl:text>        this.element.parentNode.appendChild(this.element.parentNode.removeChild(this.element));
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1271
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1272
    <xsl:text>        // disable interaction with background
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1273
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1274
    <xsl:text>        svg_root.addEventListener("click", this.bound_close_on_click_elsewhere, true);
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1275
</xsl:text>
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1276
    <xsl:text>        // mark as open
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1277
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1278
    <xsl:text>        this.opened = true;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1279
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1280
    <xsl:text>    },
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1281
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1282
    <xsl:text>    // Put text element in normalized state
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1283
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1284
    <xsl:text>    reset_text: function(){
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1285
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1286
    <xsl:text>        let txt = this.text_elt; 
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1287
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1288
    <xsl:text>        let first = txt.firstElementChild;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1289
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1290
    <xsl:text>        // remove attribute eventually added to first text line while opening
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1291
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1292
    <xsl:text>        first.removeAttribute("onclick");
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1293
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1294
    <xsl:text>        first.removeAttribute("dy");
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1295
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1296
    <xsl:text>        // keep only the first line of text
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1297
</xsl:text>
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1298
    <xsl:text>        for(let span of Array.from(txt.children).slice(1)){
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1299
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1300
    <xsl:text>            txt.removeChild(span)
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1301
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1302
    <xsl:text>        }
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1303
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1304
    <xsl:text>    },
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1305
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1306
    <xsl:text>    // Put rectangle element in saved original state
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1307
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1308
    <xsl:text>    reset_box: function(){
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1309
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1310
    <xsl:text>        let m = this.box_bbox;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1311
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1312
    <xsl:text>        let b = this.box_elt;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1313
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1314
    <xsl:text>        b.x.baseVal.value = m.x;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1315
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1316
    <xsl:text>        b.y.baseVal.value = m.y;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1317
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1318
    <xsl:text>        b.width.baseVal.value = m.width;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1319
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1320
    <xsl:text>        b.height.baseVal.value = m.height;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1321
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1322
    <xsl:text>    },
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1323
</xsl:text>
2936
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1324
    <xsl:text>    // Use margin and text size to compute box size
53fb11263ff1 SVGHMI: HMI:DropDown: more documentation.
Edouard Tisserant
parents: 2934
diff changeset
  1325
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1326
    <xsl:text>    adjust_box_to_text: function(){
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1327
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1328
    <xsl:text>        let [lmargin, tmargin] = this.margins;
2923
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1329
</xsl:text>
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1330
    <xsl:text>        let m = this.text_elt.getBBox();
5ec1c07ce582 SVGHMI: HMI:DropDown work in progress, intermediate commit. Now menu's rectangle grows up to viewport borders.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2922
diff changeset
  1331
</xsl:text>
2924
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1332
    <xsl:text>        let b = this.box_elt;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1333
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1334
    <xsl:text>        b.x.baseVal.value = m.x - lmargin;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1335
</xsl:text>
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1336
    <xsl:text>        b.y.baseVal.value = m.y - tmargin;
69bb58eb0eac SVGHMI: progress on HMI:DropDown - now selects some value on click, and close
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2923
diff changeset
  1337
</xsl:text>
2926
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1338
    <xsl:text>        b.width.baseVal.value = 2 * lmargin + m.width;
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1339
</xsl:text>
90f9d9782632 SVGHMI: Add button element to HMI:DropDown, also fix problem with computed box margins.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2925
diff changeset
  1340
    <xsl:text>        b.height.baseVal.value = 2 * tmargin + m.height;
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  1341
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  1342
    <xsl:text>    },
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  1343
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  1344
  </xsl:template>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1345
  <xsl:template mode="widget_defs" match="widget[@type='ForEach']">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1346
    <xsl:param name="hmi_element"/>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1347
    <xsl:variable name="widgets" select="func:refered_elements($forEach_widgets)[not(@id = $forEach_widgets_ids)]"/>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1348
    <xsl:variable name="class" select="arg[1]/@value"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1349
    <xsl:variable name="base_path" select="path/@value"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1350
    <xsl:variable name="hmi_index_base" select="$indexed_hmitree/*[@hmipath = $base_path]"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1351
    <xsl:variable name="hmi_tree_base" select="$hmitree/descendant-or-self::*[@path = $hmi_index_base/@path]"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1352
    <xsl:variable name="hmi_tree_items" select="$hmi_tree_base/*[@class = $class]"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1353
    <xsl:variable name="hmi_index_items" select="$indexed_hmitree/*[@path = $hmi_tree_items/@path]"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1354
    <xsl:variable name="items_paths" select="$hmi_index_items/@hmipath"/>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1355
    <xsl:text>    index_pool: [
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1356
</xsl:text>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1357
    <xsl:for-each select="$hmi_index_items">
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1358
      <xsl:text>      </xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1359
      <xsl:value-of select="@index"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1360
      <xsl:if test="position()!=last()">
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1361
        <xsl:text>,</xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1362
      </xsl:if>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1363
      <xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1364
</xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1365
    </xsl:for-each>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1366
    <xsl:text>    ],
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1367
</xsl:text>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1368
    <xsl:text>    init: function() {
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1369
</xsl:text>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1370
    <xsl:variable name="prefix" select="concat($class,':')"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1371
    <xsl:variable name="buttons_regex" select="concat('^',$prefix,'[+\-][0-9]+')"/>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1372
    <xsl:variable name="buttons" select="$hmi_element/*[regexp:test(@inkscape:label, $buttons_regex)]"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1373
    <xsl:for-each select="$buttons">
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1374
      <xsl:variable name="op" select="substring-after(@inkscape:label, $prefix)"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1375
      <xsl:text>        id("</xsl:text>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1376
      <xsl:value-of select="@id"/>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1377
      <xsl:text>").setAttribute("onclick", "hmi_widgets['</xsl:text>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1378
      <xsl:value-of select="$hmi_element/@id"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1379
      <xsl:text>'].on_click('</xsl:text>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1380
      <xsl:value-of select="$op"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1381
      <xsl:text>', evt)");
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1382
</xsl:text>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1383
    </xsl:for-each>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1384
    <xsl:text>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1385
</xsl:text>
2895
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1386
    <xsl:text>        this.items = [
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1387
</xsl:text>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1388
    <xsl:variable name="items_regex" select="concat('^',$prefix,'[0-9]+')"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1389
    <xsl:variable name="unordered_items" select="$hmi_element//*[regexp:test(@inkscape:label, $items_regex)]"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1390
    <xsl:for-each select="$unordered_items">
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1391
      <xsl:variable name="elt_label" select="concat($prefix, string(position()))"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1392
      <xsl:variable name="elt" select="$unordered_items[@inkscape:label = $elt_label]"/>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1393
      <xsl:variable name="pos" select="position()"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1394
      <xsl:variable name="item_path" select="$items_paths[$pos]"/>
2895
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1395
      <xsl:text>          [ /* item="</xsl:text>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1396
      <xsl:value-of select="$elt_label"/>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1397
      <xsl:text>" path="</xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1398
      <xsl:value-of select="$item_path"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1399
      <xsl:text>" */
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1400
</xsl:text>
2893
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1401
      <xsl:if test="count($elt)=0">
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1402
        <xsl:message terminate="yes">
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1403
          <xsl:text>Missing item labeled </xsl:text>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1404
          <xsl:value-of select="$elt_label"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1405
          <xsl:text> in ForEach widget </xsl:text>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1406
          <xsl:value-of select="$hmi_element/@id"/>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1407
        </xsl:message>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1408
      </xsl:if>
d57a12b8f5db SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents: 2892
diff changeset
  1409
      <xsl:for-each select="func:refered_elements($elt)[@id = $hmi_elements/@id][not(@id = $elt/@id)]">
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1410
        <xsl:if test="not(func:is_descendant_path(func:widget(@id)/path/@value, $item_path))">
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1411
          <xsl:message terminate="yes">
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1412
            <xsl:text>Widget id="</xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1413
            <xsl:value-of select="@id"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1414
            <xsl:text>" label="</xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1415
            <xsl:value-of select="@inkscape:label"/>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1416
            <xsl:text>" is having wrong path. Accroding to ForEach widget ancestor id="</xsl:text>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1417
            <xsl:value-of select="$hmi_element/@id"/>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1418
            <xsl:text>", path should be descendant of "</xsl:text>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1419
            <xsl:value-of select="$item_path"/>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  1420
            <xsl:text>".</xsl:text>
2894
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1421
          </xsl:message>
4cf9ad35e6d0 SVGHMI: Easier way to match HMI tree elements to paths. ForEach widget now looks for paths and indexes of all items, and enforce path to be consistent with ForEach items sub widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2893
diff changeset
  1422
        </xsl:if>
2895
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1423
        <xsl:text>            hmi_widgets["</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1424
        <xsl:value-of select="@id"/>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1425
        <xsl:text>"]</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1426
        <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1427
          <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1428
        </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1429
        <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1430
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1431
      </xsl:for-each>
2895
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1432
      <xsl:text>          ]</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1433
      <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1434
        <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1435
      </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1436
      <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1437
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1438
    </xsl:for-each>
2895
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1439
    <xsl:text>        ]
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1440
</xsl:text>
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1441
    <xsl:text>    },
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1442
</xsl:text>
89c02b452717 SVGHMI: ForEach now has working (un)subscribe. Fixed PageSwitch that wasn't behaving when jumping to current page with another path.
Edouard Tisserant
parents: 2894
diff changeset
  1443
    <xsl:text>    item_offset: 0,
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1444
</xsl:text>
2897
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1445
    <xsl:text>    on_click: foreach_onclick,
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1446
</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1447
  </xsl:template>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1448
  <xsl:template mode="widget_subscribe" match="widget[@type='ForEach']">
2897
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1449
    <xsl:text>    sub: foreach_subscribe,
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1450
</xsl:text>
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1451
    <xsl:text>    unsub: foreach_unsubscribe,
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1452
</xsl:text>
bf8a39cc65e4 SVGHMI: Generalize applying cache to widgets, be it from page or ForEach widgets. Now ForEach widget buttons work as expected.
Edouard Tisserant
parents: 2896
diff changeset
  1453
    <xsl:text>    apply_cache: foreach_apply_cache,
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1454
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  1455
  </xsl:template>
2800
68cee1366b9c SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents: 2799
diff changeset
  1456
  <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
  1457
    <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
  1458
    <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
  1459
      <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
  1460
        <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
  1461
        <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
  1462
          <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
  1463
        </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
  1464
        <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
  1465
      </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
  1466
    </xsl:variable>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  1467
    <xsl:variable name="have_value" select="string-length($value_elt)&gt;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
  1468
    <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
  1469
    <xsl:if test="$have_value">
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  1470
      <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
  1471
</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
  1472
    </xsl:if>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1473
    <xsl:text>    last_val: undefined,
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1474
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  1475
    <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
  1476
</xsl:text>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1477
    <xsl:text>        this.last_val = value;
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1478
</xsl:text>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  1479
    <xsl:if test="$have_value">
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  1480
      <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
  1481
</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
  1482
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  1483
    <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
  1484
</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
  1485
    <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
  1486
    <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
  1487
</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
  1488
    <xsl:if test="$edit_elt_id">
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  1489
      <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
  1490
      <xsl:value-of select="$edit_elt_id"/>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1491
      <xsl:text>").setAttribute("onclick", "hmi_widgets['</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1492
      <xsl:value-of select="$hmi_element/@id"/>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1493
      <xsl:text>'].on_edit_click()");
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
  1494
</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
  1495
    </xsl:if>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1496
    <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
  1497
      <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
  1498
      <xsl:value-of select="@id"/>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1499
      <xsl:text>").setAttribute("onclick", "hmi_widgets['</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1500
      <xsl:value-of select="$hmi_element/@id"/>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1501
      <xsl:text>'].on_op_click('</xsl:text>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1502
      <xsl:value-of select="func:escape_quotes(@inkscape:label)"/>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1503
      <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
  1504
</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
  1505
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  1506
    <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
  1507
</xsl:text>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1508
    <xsl:text>    on_op_click: function(opstr) {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1509
</xsl:text>
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1510
    <xsl:text>        let orig = this.indexes[0];
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1511
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1512
    <xsl:text>        let idx = this.offset ? orig - this.offset : orig;
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1513
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1514
    <xsl:text>        let new_val = change_hmi_value(idx, opstr);
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1515
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1516
    <xsl:text>    },
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1517
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1518
    <xsl:text>    on_edit_click: function(opstr) {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1519
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1520
    <xsl:text>        edit_value("</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1521
    <xsl:value-of select="path/@value"/>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1522
    <xsl:text>", "</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1523
    <xsl:value-of select="path/@type"/>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1524
    <xsl:text>", this, this.last_val);
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1525
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1526
    <xsl:text>    },
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1527
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1528
    <xsl:text>    edit_callback: function(new_val) {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1529
</xsl:text>
2930
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1530
    <xsl:text>        let orig = this.indexes[0];
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1531
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1532
    <xsl:text>        let idx = this.offset ? orig - this.offset : orig;
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1533
</xsl:text>
41edcb8e0a01 SVGHMI: Connect HMI:DropDown to value in HMI Tree, in svghmi test as well.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2926
diff changeset
  1534
    <xsl:text>        apply_hmi_value(idx, new_val);
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1535
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1536
    <xsl:text>    },
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1537
</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
  1538
  </xsl:template>
2903
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1539
  <xsl:template name="jump_widget_activity">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1540
    <xsl:param name="hmi_element"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1541
    <xsl:call-template name="defs_by_labels">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1542
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1543
      <xsl:with-param name="labels">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1544
        <xsl:text>active inactive</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1545
      </xsl:with-param>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1546
      <xsl:with-param name="mandatory" select="'no'"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1547
    </xsl:call-template>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1548
  </xsl:template>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1549
  <xsl:template name="jump_widget_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1550
    <xsl:param name="hmi_element"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1551
    <xsl:call-template name="defs_by_labels">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1552
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1553
      <xsl:with-param name="labels">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1554
        <xsl:text>disabled</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1555
      </xsl:with-param>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1556
      <xsl:with-param name="mandatory" select="'no'"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1557
    </xsl:call-template>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1558
  </xsl:template>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1559
  <xsl:template mode="widget_defs" match="widget[@type='Jump']">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1560
    <xsl:param name="hmi_element"/>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1561
    <xsl:variable name="activity">
2903
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1562
      <xsl:call-template name="jump_widget_activity">
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1563
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1564
      </xsl:call-template>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1565
    </xsl:variable>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1566
    <xsl:variable name="have_activity" select="string-length($activity)&gt;0"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1567
    <xsl:value-of select="$activity"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1568
    <xsl:variable name="disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1569
      <xsl:call-template name="jump_widget_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1570
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1571
      </xsl:call-template>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1572
    </xsl:variable>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1573
    <xsl:variable name="have_disability" select="$have_activity and string-length($disability)&gt;0"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1574
    <xsl:value-of select="$disability"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1575
    <xsl:if test="$have_activity">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1576
      <xsl:text>    active: false,
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1577
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1578
      <xsl:if test="$have_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1579
        <xsl:text>    disabled: false,
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1580
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1581
        <xsl:text>    frequency: 2,
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1582
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1583
        <xsl:text>    dispatch: function(value) {
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1584
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1585
        <xsl:text>        this.disabled = !Number(value);
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1586
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1587
        <xsl:text>        this.update();
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1588
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1589
        <xsl:text>    },
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1590
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1591
      </xsl:if>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1592
      <xsl:text>    update: function(){
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1593
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1594
      <xsl:if test="$have_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1595
        <xsl:text>      if(this.disabled) {
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1596
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1597
        <xsl:text>        /* show disabled */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1598
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1599
        <xsl:text>        this.disabled_elt.setAttribute("style", this.active_elt_style);
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1600
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1601
        <xsl:text>        /* hide inactive */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1602
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1603
        <xsl:text>        this.inactive_elt.setAttribute("style", "display:none");
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1604
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1605
        <xsl:text>        /* hide active */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1606
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1607
        <xsl:text>        this.active_elt.setAttribute("style", "display:none");
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1608
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1609
        <xsl:text>      } else {
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1610
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1611
        <xsl:text>        /* hide disabled */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1612
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1613
        <xsl:text>        this.disabled_elt.setAttribute("style", "display:none");
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1614
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1615
      </xsl:if>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1616
      <xsl:text>        if(this.active) {
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1617
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1618
      <xsl:text>             /* show active */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1619
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1620
      <xsl:text>             this.active_elt.setAttribute("style", this.active_elt_style);
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1621
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1622
      <xsl:text>             /* hide inactive */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1623
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1624
      <xsl:text>             this.inactive_elt.setAttribute("style", "display:none");
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1625
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1626
      <xsl:text>        } else {
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1627
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1628
      <xsl:text>             /* show inactive */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1629
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1630
      <xsl:text>             this.inactive_elt.setAttribute("style", this.inactive_elt_style);
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1631
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1632
      <xsl:text>             /* hide active */ 
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1633
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1634
      <xsl:text>             this.active_elt.setAttribute("style", "display:none");
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1635
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1636
      <xsl:text>        }
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1637
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1638
      <xsl:if test="$have_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1639
        <xsl:text>      }
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1640
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1641
      </xsl:if>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1642
      <xsl:text>    },
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1643
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1644
    </xsl:if>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1645
    <xsl:text>    on_click: function(evt) {
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1646
</xsl:text>
2898
a2910281fcb5 SVGHMI: Alow relative relative Jump. (i.e, relative jump from a foreach widget)
Edouard Tisserant
parents: 2897
diff changeset
  1647
    <xsl:text>        const index = this.indexes.length &gt; 0 ? this.indexes[0] + this.offset : undefined;
a2910281fcb5 SVGHMI: Alow relative relative Jump. (i.e, relative jump from a foreach widget)
Edouard Tisserant
parents: 2897
diff changeset
  1648
</xsl:text>
2902
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1649
    <xsl:text>        const name = this.args[0];
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1650
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1651
    <xsl:text>        switch_page(name, index);
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1652
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1653
    <xsl:text>    },
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1654
</xsl:text>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1655
    <xsl:if test="$have_activity">
2903
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1656
      <xsl:text>    notify_page_change: function(page_name, index){
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1657
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1658
      <xsl:text>        const ref_index = this.indexes.length &gt; 0 ? this.indexes[0] + this.offset : undefined;
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1659
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1660
      <xsl:text>        const ref_name = this.args[0];
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1661
</xsl:text>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1662
      <xsl:text>        this.active =((ref_name == undefined || ref_name == page_name) &amp;&amp; index == ref_index);
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1663
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1664
      <xsl:text>        this.update();
2903
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1665
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1666
      <xsl:text>    },
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1667
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1668
    </xsl:if>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1669
    <xsl:text>    init: function() {
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1670
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1671
    <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1672
    <xsl:value-of select="$hmi_element/@id"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1673
    <xsl:text>'].on_click(evt)");
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1674
</xsl:text>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1675
    <xsl:if test="$have_activity">
2903
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1676
      <xsl:text>        this.active_elt_style = this.active_elt.getAttribute("style");
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1677
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1678
      <xsl:text>        this.inactive_elt_style = this.inactive_elt.getAttribute("style");
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1679
</xsl:text>
881d0248b3ce SVGHMI: Jump widget can now display as active or inactive, if corresponfing "active" and "inactive labeled elements are provided.
Edouard Tisserant
parents: 2902
diff changeset
  1680
    </xsl:if>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1681
    <xsl:if test="$have_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1682
      <xsl:text>        this.disabled_elt_style = this.disabled_elt.getAttribute("style");
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1683
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1684
    </xsl:if>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1685
    <xsl:text>    },
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1686
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1687
  </xsl:template>
2906
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1688
  <xsl:template mode="widget_subscribe" match="widget[@type='Jump']">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1689
    <xsl:param name="hmi_element"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1690
    <xsl:variable name="activity">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1691
      <xsl:call-template name="jump_widget_activity">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1692
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1693
      </xsl:call-template>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1694
    </xsl:variable>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1695
    <xsl:variable name="have_activity" select="string-length($activity)&gt;0"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1696
    <xsl:variable name="disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1697
      <xsl:call-template name="jump_widget_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1698
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1699
      </xsl:call-template>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1700
    </xsl:variable>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1701
    <xsl:variable name="have_disability" select="$have_activity and string-length($disability)&gt;0"/>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1702
    <xsl:choose>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1703
      <xsl:when test="$have_disability">
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1704
        <xsl:text>    sub: subscribe,
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1705
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1706
        <xsl:text>    unsub: unsubscribe,
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1707
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1708
        <xsl:text>    apply_cache: widget_apply_cache,
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1709
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1710
      </xsl:when>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1711
      <xsl:otherwise>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1712
        <xsl:text>    sub: function(){},
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1713
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1714
        <xsl:text>    unsub: function(){},
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1715
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1716
        <xsl:text>    apply_cache: function(){},
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1717
</xsl:text>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1718
      </xsl:otherwise>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1719
    </xsl:choose>
3b4a1319da09 SVGHMI: Jump widget, if it has a 'disabled' labeled element, reflects value of the pointed HMITree variable by showing this element when value is False, and behaving normaly otherwise.
Edouard Tisserant
parents: 2905
diff changeset
  1720
  </xsl:template>
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1721
  <xsl:template mode="per_page_widget_template" match="widget[@type='Jump']">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1722
    <xsl:param name="page_desc"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1723
    <xsl:if test="path">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1724
      <xsl:variable name="target_page_name">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1725
        <xsl:choose>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1726
          <xsl:when test="arg">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1727
            <xsl:value-of select="arg[1]/@value"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1728
          </xsl:when>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1729
          <xsl:otherwise>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1730
            <xsl:value-of select="$page_desc/arg[1]/@value"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1731
          </xsl:otherwise>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1732
        </xsl:choose>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1733
      </xsl:variable>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1734
      <xsl:variable name="target_page_path">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1735
        <xsl:choose>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1736
          <xsl:when test="arg">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1737
            <xsl:value-of select="$hmi_pages_descs[arg[1]/@value = $target_page_name]/path[1]/@value"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1738
          </xsl:when>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1739
          <xsl:otherwise>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1740
            <xsl:value-of select="$page_desc/path[1]/@value"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1741
          </xsl:otherwise>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1742
        </xsl:choose>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1743
      </xsl:variable>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1744
      <xsl:if test="not(func:same_class_paths($target_page_path, path[1]/@value))">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1745
        <xsl:message terminate="yes">
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1746
          <xsl:text>Jump id="</xsl:text>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1747
          <xsl:value-of select="@id"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1748
          <xsl:text>" to page "</xsl:text>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1749
          <xsl:value-of select="$target_page_name"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1750
          <xsl:text>" with incompatible path "</xsl:text>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1751
          <xsl:value-of select="path[1]/@value"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1752
          <xsl:text> (must be same class as "</xsl:text>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1753
          <xsl:value-of select="$target_page_path"/>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1754
          <xsl:text>")</xsl:text>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1755
        </xsl:message>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1756
      </xsl:if>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1757
    </xsl:if>
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  1758
  </xsl:template>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1759
  <xsl:template mode="widget_defs" match="widget[@type='Keypad']">
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1760
    <xsl:param name="hmi_element"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1761
    <xsl:call-template name="defs_by_labels">
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1762
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1763
      <xsl:with-param name="labels">
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1764
        <xsl:text>Esc Enter BackSpace Keys Info Value</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1765
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1766
    </xsl:call-template>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1767
    <xsl:call-template name="defs_by_labels">
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1768
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1769
      <xsl:with-param name="labels">
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1770
        <xsl:text>Sign Space NumDot</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1771
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1772
      <xsl:with-param name="mandatory" select="'no'"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1773
    </xsl:call-template>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1774
    <xsl:call-template name="defs_by_labels">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1775
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1776
      <xsl:with-param name="labels">
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1777
        <xsl:text>CapsLock Shift</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1778
      </xsl:with-param>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1779
      <xsl:with-param name="mandatory" select="'no'"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1780
      <xsl:with-param name="subelements" select="'active inactive'"/>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1781
    </xsl:call-template>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1782
    <xsl:text>    init: function() {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1783
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1784
    <xsl:for-each select="$hmi_element/*[@inkscape:label = 'Keys']/*">
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1785
      <xsl:text>        id("</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1786
      <xsl:value-of select="@id"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1787
      <xsl:text>").setAttribute("onclick", "hmi_widgets['</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1788
      <xsl:value-of select="$hmi_element/@id"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1789
      <xsl:text>'].on_key_click('</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1790
      <xsl:value-of select="func:escape_quotes(@inkscape:label)"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1791
      <xsl:text>')");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1792
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1793
    </xsl:for-each>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1794
    <xsl:for-each select="str:split('Esc Enter BackSpace Sign Space NumDot CapsLock Shift')">
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1795
      <xsl:text>        if(this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1796
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1797
      <xsl:text>_elt)
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1798
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1799
      <xsl:text>            this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1800
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1801
      <xsl:text>_elt.setAttribute("onclick", "hmi_widgets['</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1802
      <xsl:value-of select="$hmi_element/@id"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1803
      <xsl:text>'].on_</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1804
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1805
      <xsl:text>_click()");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1806
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1807
    </xsl:for-each>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1808
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1809
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1810
    <xsl:text>    on_key_click: function(symbols) {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1811
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1812
    <xsl:text>        var syms = symbols.split(" ");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1813
</xsl:text>
2919
c6e6051898f5 SVGHMI: fixed keypad JS regarding shift/capslock and other details
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2917
diff changeset
  1814
    <xsl:text>        this.shift |= this.caps;
c6e6051898f5 SVGHMI: fixed keypad JS regarding shift/capslock and other details
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2917
diff changeset
  1815
</xsl:text>
c6e6051898f5 SVGHMI: fixed keypad JS regarding shift/capslock and other details
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2917
diff changeset
  1816
    <xsl:text>        this.editstr += syms[this.shift?syms.length-1:0];
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1817
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1818
    <xsl:text>        this.shift = false;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1819
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1820
    <xsl:text>        this.update();
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1821
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1822
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1823
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1824
    <xsl:text>    on_Esc_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1825
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1826
    <xsl:text>        end_modal.call(this);
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1827
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1828
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1829
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1830
    <xsl:text>    on_Enter_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1831
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1832
    <xsl:text>        end_modal.call(this);
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1833
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1834
    <xsl:text>        callback_obj = this.result_callback_obj;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1835
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1836
    <xsl:text>        callback_obj.edit_callback(this.editstr);
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1837
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1838
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1839
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1840
    <xsl:text>    on_BackSpace_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1841
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1842
    <xsl:text>        this.editstr = this.editstr.slice(0,this.editstr.length-1);
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1843
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1844
    <xsl:text>        this.update();
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1845
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1846
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1847
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1848
    <xsl:text>    on_Sign_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1849
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1850
    <xsl:text>        if(this.editstr[0] == "-")
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1851
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1852
    <xsl:text>            this.editstr = this.editstr.slice(1,this.editstr.length);
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1853
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1854
    <xsl:text>        else
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1855
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1856
    <xsl:text>            this.editstr = "-" + this.editstr;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1857
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1858
    <xsl:text>        this.update();
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1859
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1860
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1861
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1862
    <xsl:text>    on_NumDot_click: function() {
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1863
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1864
    <xsl:text>        if(this.editstr.indexOf(".") == "-1"){
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1865
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1866
    <xsl:text>            this.editstr += ".";
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1867
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1868
    <xsl:text>            this.update();
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1869
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1870
    <xsl:text>        }
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1871
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1872
    <xsl:text>    },
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1873
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1874
    <xsl:text>    on_Space_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1875
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1876
    <xsl:text>        this.editstr += " ";
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1877
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1878
    <xsl:text>        this.update();
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1879
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1880
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1881
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1882
    <xsl:text>    caps: false,
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1883
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1884
    <xsl:text>    _caps: undefined,
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1885
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1886
    <xsl:text>    on_CapsLock_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1887
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1888
    <xsl:text>        this.caps = !this.caps;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1889
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1890
    <xsl:text>        this.update();
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1891
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1892
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1893
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1894
    <xsl:text>    shift: false,
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1895
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1896
    <xsl:text>    _shift: undefined,
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1897
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1898
    <xsl:text>    on_Shift_click: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1899
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1900
    <xsl:text>        this.shift = !this.shift;
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1901
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1902
    <xsl:text>        this.caps = false;
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1903
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1904
    <xsl:text>        this.update();
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1905
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1906
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1907
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1908
    <xsl:variable name="g" select="$geometry[@Id = $hmi_element/@id]"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1909
    <xsl:text>    coordinates: [</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1910
    <xsl:value-of select="$g/@x"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1911
    <xsl:text>, </xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1912
    <xsl:value-of select="$g/@y"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1913
    <xsl:text>],
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1914
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1915
    <xsl:text>    editstr: "",
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1916
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1917
    <xsl:text>    _editstr: undefined,
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1918
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1919
    <xsl:text>    result_callback_obj: undefined,
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1920
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1921
    <xsl:text>    start_edit: function(info, valuetype, callback_obj, initial) {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1922
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1923
    <xsl:text>        show_modal.call(this);
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1924
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1925
    <xsl:text>        this.editstr = initial;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1926
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1927
    <xsl:text>        this.result_callback_obj = callback_obj;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1928
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1929
    <xsl:text>        this.Info_elt.textContent = info;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1930
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1931
    <xsl:text>        this.shift = false;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1932
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1933
    <xsl:text>        this.caps = false;
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1934
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1935
    <xsl:text>        this.update();
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1936
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1937
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1938
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1939
    <xsl:text>    update: function() {
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1940
</xsl:text>
2920
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1941
    <xsl:text>        if(this.editstr != this._editstr){
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1942
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1943
    <xsl:text>            this._editstr = this.editstr;
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1944
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1945
    <xsl:text>            this.Value_elt.textContent = this.editstr;
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1946
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1947
    <xsl:text>        }
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1948
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1949
    <xsl:text>        if(this.shift != this._shift){
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1950
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1951
    <xsl:text>            this._shift = this.shift;
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1952
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1953
    <xsl:text>            (this.shift?widget_active_activable:widget_inactive_activable)(this.Shift_sub);
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1954
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1955
    <xsl:text>        }
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1956
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1957
    <xsl:text>        if(this.caps != this._caps){
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1958
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1959
    <xsl:text>            this._caps = this.caps;
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1960
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1961
    <xsl:text>            (this.caps?widget_active_activable:widget_inactive_activable)(this.CapsLock_sub);
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1962
</xsl:text>
3ee337c8c769 SVGHMI: finished shift and capslock support n keypad widget. Added a helper in widgets_common to collect subelements likle active/inactive/disabled...
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2919
diff changeset
  1963
    <xsl:text>        }
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  1964
</xsl:text>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1965
    <xsl:text>    },
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1966
</xsl:text>
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  1967
  </xsl:template>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1968
  <xsl:template mode="widget_defs" match="widget[@type='Meter']">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1969
    <xsl:param name="hmi_element"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1970
    <xsl:text>    frequency: 10,
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1971
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1972
    <xsl:call-template name="defs_by_labels">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1973
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1974
      <xsl:with-param name="labels">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1975
        <xsl:text>needle range</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1976
      </xsl:with-param>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1977
    </xsl:call-template>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1978
    <xsl:call-template name="defs_by_labels">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1979
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1980
      <xsl:with-param name="labels">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1981
        <xsl:text>value min max</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1982
      </xsl:with-param>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1983
      <xsl:with-param name="mandatory" select="'no'"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1984
    </xsl:call-template>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1985
    <xsl:text>    dispatch: function(value) {
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1986
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1987
    <xsl:text>        if(this.value_elt)
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1988
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1989
    <xsl:text>            this.value_elt.textContent = String(value);
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1990
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1991
    <xsl:text>        let [min,max,totallength] = this.range;
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1992
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1993
    <xsl:text>        let length = Math.max(0,Math.min(totallength,(Number(value)-min)*totallength/(max-min)));
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1994
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1995
    <xsl:text>        let tip = this.range_elt.getPointAtLength(length);
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1996
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1997
    <xsl:text>        this.needle_elt.setAttribute('d', "M "+this.origin.x+","+this.origin.y+" "+tip.x+","+tip.y);
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1998
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  1999
    <xsl:text>    },
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2000
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2001
    <xsl:text>    origin: undefined,
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2002
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2003
    <xsl:text>    range: undefined,
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2004
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2005
    <xsl:text>    init: function() {
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2006
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2007
    <xsl:text>        let min = this.min_elt ?
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2008
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2009
    <xsl:text>                    Number(this.min_elt.textContent) :
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2010
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2011
    <xsl:text>                    this.args.length &gt;= 1 ? this.args[0] : 0;
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2012
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2013
    <xsl:text>        let max = this.max_elt ?
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2014
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2015
    <xsl:text>                    Number(this.max_elt.textContent) :
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2016
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2017
    <xsl:text>                    this.args.length &gt;= 2 ? this.args[1] : 100;
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2018
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2019
    <xsl:text>        this.range = [min, max, this.range_elt.getTotalLength()]
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2020
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2021
    <xsl:text>        this.origin = this.needle_elt.getPointAtLength(0);
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2022
</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  2023
    <xsl:text>    },
2800
68cee1366b9c SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents: 2799
diff changeset
  2024
</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
  2025
  </xsl:template>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2026
  <xsl:template mode="widget_defs" match="widget[@type='Switch']">
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2027
    <xsl:param name="hmi_element"/>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2028
    <xsl:text>    frequency: 5,
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2029
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2030
    <xsl:text>    dispatch: function(value) {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2031
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2032
    <xsl:text>        for(let choice of this.choices){
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2033
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2034
    <xsl:text>            if(value != choice.value){
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2035
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2036
    <xsl:text>                choice.elt.setAttribute("style", "display:none");
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2037
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2038
    <xsl:text>            } else {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2039
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2040
    <xsl:text>                choice.elt.setAttribute("style", choice.style);
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2041
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2042
    <xsl:text>            }
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2043
</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2044
    <xsl:text>        }
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2045
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2046
    <xsl:text>    },
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2047
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2048
    <xsl:text>    init: function() {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2049
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2050
    <xsl:text>        // Hello Switch
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2051
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2052
    <xsl:text>    },
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2053
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2054
    <xsl:text>    choices: [
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2055
</xsl:text>
2907
1695122a5e16 SVGHMI: HMI:Switch now accepts boolean values 'true' and 'false'
Edouard Tisserant
parents: 2906
diff changeset
  2056
    <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2057
    <xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,$regex)]">
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2058
      <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
  2059
      <xsl:text>        {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2060
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2061
      <xsl:text>            elt:id("</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2062
      <xsl:value-of select="@id"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2063
      <xsl:text>"),
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2064
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2065
      <xsl:text>            style:"</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2066
      <xsl:value-of select="@style"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2067
      <xsl:text>",
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2068
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2069
      <xsl:text>            value:</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2070
      <xsl:value-of select="$literal"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2071
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2072
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2073
      <xsl:text>        }</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2074
      <xsl:if test="position()!=last()">
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2075
        <xsl:text>,</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2076
      </xsl:if>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2077
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2078
</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  2079
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  2080
    <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
  2081
</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
  2082
  </xsl:template>
2938
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2083
  <xsl:template name="scripts">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2084
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2085
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2086
    <xsl:text>id = idstr =&gt; document.getElementById(idstr);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2087
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2088
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2089
</xsl:text>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  2090
    <xsl:apply-templates select="document('')/*/preamble:*"/>
2938
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2091
    <xsl:text>var hmi_hash = [</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2092
    <xsl:value-of select="$hmitree/@hash"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2093
    <xsl:text>];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2094
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2095
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2096
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2097
    <xsl:text>var heartbeat_index = </xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2098
    <xsl:value-of select="$indexed_hmitree/*[@hmipath = '/HEARTBEAT']/@index"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2099
    <xsl:text>;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2100
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2101
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2102
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2103
    <xsl:text>var hmitree_types = [
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2104
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2105
    <xsl:for-each select="$indexed_hmitree/*">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2106
      <xsl:text>    /* </xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2107
      <xsl:value-of select="@index"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2108
      <xsl:text>  </xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2109
      <xsl:value-of select="@hmipath"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2110
      <xsl:text> */ "</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2111
      <xsl:value-of select="substring(local-name(), 5)"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2112
      <xsl:text>"</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2113
      <xsl:if test="position()!=last()">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2114
        <xsl:text>,</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2115
      </xsl:if>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2116
      <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2117
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2118
    </xsl:for-each>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2119
    <xsl:text>]
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2120
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2121
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2122
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2123
    <xsl:text>var detachable_elements = {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2124
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2125
    <xsl:for-each select="$detachable_elements">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2126
      <xsl:text>    "</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2127
      <xsl:value-of select="@id"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2128
      <xsl:text>":[id("</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2129
      <xsl:value-of select="@id"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2130
      <xsl:text>"), id("</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2131
      <xsl:value-of select="../@id"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2132
      <xsl:text>")]</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2133
      <xsl:if test="position()!=last()">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2134
        <xsl:text>,</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2135
      </xsl:if>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2136
      <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2137
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2138
    </xsl:for-each>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2139
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2140
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2141
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2142
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2143
    <xsl:text>var page_desc = {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2144
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2145
    <xsl:apply-templates mode="page_desc" select="$hmi_pages"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2146
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2147
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2148
    <xsl:text>var keypads = {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2149
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2150
    <xsl:for-each select="$keypads_descs">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2151
      <xsl:variable name="keypad_id" select="@id"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2152
      <xsl:for-each select="arg">
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2153
        <xsl:variable name="g" select="$geometry[@Id = $keypad_id]"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2154
        <xsl:text>    "</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2155
        <xsl:value-of select="@value"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2156
        <xsl:text>":["</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2157
        <xsl:value-of select="$keypad_id"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2158
        <xsl:text>", </xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2159
        <xsl:value-of select="$g/@x"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2160
        <xsl:text>, </xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2161
        <xsl:value-of select="$g/@y"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2162
        <xsl:text>],
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2163
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2164
      </xsl:for-each>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2165
    </xsl:for-each>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2166
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2167
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2168
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2169
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2170
    <xsl:text>var default_page = "</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2171
    <xsl:value-of select="$default_page"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2172
    <xsl:text>";
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2173
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2174
    <xsl:text>var svg_root = id("</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2175
    <xsl:value-of select="/svg:svg/@id"/>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2176
    <xsl:text>");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2177
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2178
    <xsl:text>// svghmi.js
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2179
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2180
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2181
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2182
    <xsl:text>var cache = hmitree_types.map(_ignored =&gt; undefined);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2183
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2184
    <xsl:text>var updates = {};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2185
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2186
    <xsl:text>var need_cache_apply = []; 
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2187
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2188
    <xsl:text>var jumps_need_update = false;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2189
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2190
    <xsl:text>var jump_history = [[default_page, undefined]];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2191
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2192
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2193
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2194
    <xsl:text>function dispatch_value_to_widget(widget, index, value, oldval) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2195
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2196
    <xsl:text>    try {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2197
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2198
    <xsl:text>        let idx = widget.offset ? index - widget.offset : index;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2199
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2200
    <xsl:text>        let idxidx = widget.indexes.indexOf(idx);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2201
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2202
    <xsl:text>        let d = widget.dispatch;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2203
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2204
    <xsl:text>        if(typeof(d) == "function" &amp;&amp; idxidx == 0){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2205
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2206
    <xsl:text>            d.call(widget, value, oldval);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2207
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2208
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2209
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2210
    <xsl:text>        else if(typeof(d) == "object" &amp;&amp; d.length &gt;= idxidx){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2211
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2212
    <xsl:text>            d[idxidx].call(widget, value, oldval);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2213
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2214
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2215
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2216
    <xsl:text>        /* else dispatch_0, ..., dispatch_n ? */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2217
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2218
    <xsl:text>        /*else {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2219
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2220
    <xsl:text>            throw new Error("Dunno how to dispatch to widget at index = " + index);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2221
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2222
    <xsl:text>        }*/
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2223
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2224
    <xsl:text>    } catch(err) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2225
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2226
    <xsl:text>        console.log(err);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2227
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2228
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2229
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2230
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2231
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2232
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2233
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2234
    <xsl:text>function dispatch_value(index, value) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2235
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2236
    <xsl:text>    let widgets = subscribers[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2237
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2238
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2239
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2240
    <xsl:text>    let oldval = cache[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2241
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2242
    <xsl:text>    cache[index] = value;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2243
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2244
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2245
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2246
    <xsl:text>    if(widgets.size &gt; 0) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2247
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2248
    <xsl:text>        for(let widget of widgets){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2249
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2250
    <xsl:text>            dispatch_value_to_widget(widget, index, value, oldval);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2251
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2252
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2253
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2254
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2255
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2256
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2257
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2258
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2259
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2260
    <xsl:text>function init_widgets() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2261
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2262
    <xsl:text>    Object.keys(hmi_widgets).forEach(function(id) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2263
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2264
    <xsl:text>        let widget = hmi_widgets[id];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2265
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2266
    <xsl:text>        let init = widget.init;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2267
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2268
    <xsl:text>        if(typeof(init) == "function"){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2269
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2270
    <xsl:text>            try {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2271
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2272
    <xsl:text>                init.call(widget);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2273
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2274
    <xsl:text>            } catch(err) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2275
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2276
    <xsl:text>                console.log(err);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2277
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2278
    <xsl:text>            }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2279
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2280
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2281
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2282
    <xsl:text>    });
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2283
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2284
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2285
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2286
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2287
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2288
    <xsl:text>// Open WebSocket to relative "/ws" address
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2289
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2290
    <xsl:text>var ws = new WebSocket(window.location.href.replace(/^http(s?:\/\/[^\/]*)\/.*$/, 'ws$1/ws'));
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2291
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2292
    <xsl:text>ws.binaryType = 'arraybuffer';
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2293
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2294
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2295
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2296
    <xsl:text>const dvgetters = {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2297
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2298
    <xsl:text>    INT: (dv,offset) =&gt; [dv.getInt16(offset, true), 2],
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2299
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2300
    <xsl:text>    BOOL: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2301
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2302
    <xsl:text>    NODE: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2303
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2304
    <xsl:text>    STRING: (dv, offset) =&gt; {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2305
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2306
    <xsl:text>        size = dv.getInt8(offset);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2307
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2308
    <xsl:text>        return [
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2309
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2310
    <xsl:text>            String.fromCharCode.apply(null, new Uint8Array(
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2311
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2312
    <xsl:text>                dv.buffer, /* original buffer */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2313
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2314
    <xsl:text>                offset + 1, /* string starts after size*/
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2315
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2316
    <xsl:text>                size /* size of string */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2317
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2318
    <xsl:text>            )), size + 1]; /* total increment */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2319
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2320
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2321
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2322
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2323
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2324
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2325
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2326
    <xsl:text>// Apply updates recieved through ws.onmessage to subscribed widgets
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2327
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2328
    <xsl:text>function apply_updates() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2329
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2330
    <xsl:text>    for(let index in updates){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2331
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2332
    <xsl:text>        // serving as a key, index becomes a string
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2333
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2334
    <xsl:text>        // -&gt; pass Number(index) instead
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2335
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2336
    <xsl:text>        dispatch_value(Number(index), updates[index]);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2337
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2338
    <xsl:text>        delete updates[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2339
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2340
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2341
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2342
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2343
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2344
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2345
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2346
    <xsl:text>// Called on requestAnimationFrame, modifies DOM
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2347
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2348
    <xsl:text>var requestAnimationFrameID = null;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2349
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2350
    <xsl:text>function animate() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2351
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2352
    <xsl:text>    // Do the page swith if any one pending
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2353
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2354
    <xsl:text>    if(current_subscribed_page != current_visible_page){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2355
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2356
    <xsl:text>        switch_visible_page(current_subscribed_page);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2357
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2358
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2359
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2360
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2361
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2362
    <xsl:text>    while(widget = need_cache_apply.pop()){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2363
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2364
    <xsl:text>        widget.apply_cache();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2365
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2366
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2367
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2368
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2369
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2370
    <xsl:text>    if(jumps_need_update) update_jumps();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2371
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2372
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2373
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2374
    <xsl:text>    apply_updates();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2375
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2376
    <xsl:text>    requestAnimationFrameID = null;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2377
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2378
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2379
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2380
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2381
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2382
    <xsl:text>function requestHMIAnimation() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2383
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2384
    <xsl:text>    if(requestAnimationFrameID == null){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2385
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2386
    <xsl:text>        requestAnimationFrameID = window.requestAnimationFrame(animate);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2387
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2388
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2389
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2390
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2391
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2392
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2393
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2394
    <xsl:text>// Message reception handler
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2395
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2396
    <xsl:text>// Hash is verified and HMI values updates resulting from binary parsing
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2397
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2398
    <xsl:text>// are stored until browser can compute next frame, DOM is left untouched
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2399
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2400
    <xsl:text>ws.onmessage = function (evt) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2401
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2402
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2403
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2404
    <xsl:text>    let data = evt.data;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2405
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2406
    <xsl:text>    let dv = new DataView(data);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2407
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2408
    <xsl:text>    let i = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2409
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2410
    <xsl:text>    try {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2411
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2412
    <xsl:text>        for(let hash_int of hmi_hash) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2413
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2414
    <xsl:text>            if(hash_int != dv.getUint8(i)){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2415
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2416
    <xsl:text>                throw new Error("Hash doesn't match");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2417
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2418
    <xsl:text>            };
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2419
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2420
    <xsl:text>            i++;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2421
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2422
    <xsl:text>        };
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2423
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2424
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2425
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2426
    <xsl:text>        while(i &lt; data.byteLength){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2427
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2428
    <xsl:text>            let index = dv.getUint32(i, true);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2429
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2430
    <xsl:text>            i += 4;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2431
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2432
    <xsl:text>            let iectype = hmitree_types[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2433
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2434
    <xsl:text>            if(iectype != undefined){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2435
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2436
    <xsl:text>                let dvgetter = dvgetters[iectype];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2437
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2438
    <xsl:text>                let [value, bytesize] = dvgetter(dv,i);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2439
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2440
    <xsl:text>                updates[index] = value;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2441
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2442
    <xsl:text>                i += bytesize;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2443
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2444
    <xsl:text>            } else {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2445
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2446
    <xsl:text>                throw new Error("Unknown index "+index);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2447
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2448
    <xsl:text>            }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2449
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2450
    <xsl:text>        };
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2451
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2452
    <xsl:text>        // register for rendering on next frame, since there are updates
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2453
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2454
    <xsl:text>        requestHMIAnimation();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2455
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2456
    <xsl:text>    } catch(err) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2457
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2458
    <xsl:text>        // 1003 is for "Unsupported Data"
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2459
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2460
    <xsl:text>        // ws.close(1003, err.message);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2461
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2462
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2463
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2464
    <xsl:text>        // TODO : remove debug alert ?
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2465
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2466
    <xsl:text>        alert("Error : "+err.message+"\nHMI will be reloaded.");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2467
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2468
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2469
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2470
    <xsl:text>        // force reload ignoring cache
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2471
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2472
    <xsl:text>        location.reload(true);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2473
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2474
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2475
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2476
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2477
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2478
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2479
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2480
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2481
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2482
    <xsl:text>function send_blob(data) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2483
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2484
    <xsl:text>    if(data.length &gt; 0) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2485
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2486
    <xsl:text>        ws.send(new Blob([new Uint8Array(hmi_hash)].concat(data)));
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2487
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2488
    <xsl:text>    };
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2489
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2490
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2491
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2492
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2493
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2494
    <xsl:text>const typedarray_types = {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2495
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2496
    <xsl:text>    INT: (number) =&gt; new Int16Array([number]),
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2497
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2498
    <xsl:text>    BOOL: (truth) =&gt; new Int16Array([truth]),
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2499
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2500
    <xsl:text>    NODE: (truth) =&gt; new Int16Array([truth]),
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2501
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2502
    <xsl:text>    STRING: (str) =&gt; {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2503
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2504
    <xsl:text>        // beremiz default string max size is 128
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2505
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2506
    <xsl:text>        str = str.slice(0,128);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2507
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2508
    <xsl:text>        binary = new Uint8Array(str.length + 1);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2509
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2510
    <xsl:text>        binary[0] = str.length;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2511
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2512
    <xsl:text>        for(var i = 0; i &lt; str.length; i++){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2513
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2514
    <xsl:text>            binary[i+1] = str.charCodeAt(i);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2515
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2516
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2517
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2518
    <xsl:text>        return binary;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2519
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2520
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2521
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2522
    <xsl:text>    /* TODO */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2523
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2524
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2525
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2526
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2527
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2528
    <xsl:text>function send_reset() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2529
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2530
    <xsl:text>    send_blob(new Uint8Array([1])); /* reset = 1 */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2531
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2532
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2533
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2534
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2535
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2536
    <xsl:text>// subscription state, as it should be in hmi server
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2537
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2538
    <xsl:text>// hmitree indexed array of integers
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2539
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2540
    <xsl:text>var subscriptions =  hmitree_types.map(_ignored =&gt; 0);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2541
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2542
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2543
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2544
    <xsl:text>// subscription state as needed by widget now
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2545
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2546
    <xsl:text>// hmitree indexed array of Sets of widgets objects
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2547
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2548
    <xsl:text>var subscribers = hmitree_types.map(_ignored =&gt; new Set());
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2549
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2550
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2551
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2552
    <xsl:text>// artificially subscribe the watchdog widget to "/heartbeat" hmi variable
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2553
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2554
    <xsl:text>// Since dispatch directly calls change_hmi_value,
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2555
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2556
    <xsl:text>// PLC will periodically send variable at given frequency
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2557
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2558
    <xsl:text>subscribers[heartbeat_index].add({
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2559
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2560
    <xsl:text>    /* type: "Watchdog", */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2561
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2562
    <xsl:text>    frequency: 1,
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2563
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2564
    <xsl:text>    indexes: [heartbeat_index],
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2565
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2566
    <xsl:text>    dispatch: function(value) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2567
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2568
    <xsl:text>        change_hmi_value(heartbeat_index, "+1");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2569
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2570
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2571
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2572
    <xsl:text>});
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2573
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2574
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2575
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2576
    <xsl:text>function update_subscriptions() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2577
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2578
    <xsl:text>    let delta = [];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2579
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2580
    <xsl:text>    for(let index = 0; index &lt; subscribers.length; index++){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2581
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2582
    <xsl:text>        let widgets = subscribers[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2583
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2584
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2585
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2586
    <xsl:text>        // periods are in ms
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2587
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2588
    <xsl:text>        let previous_period = subscriptions[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2589
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2590
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2591
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2592
    <xsl:text>        // subscribing with a zero period is unsubscribing
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2593
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2594
    <xsl:text>        let new_period = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2595
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2596
    <xsl:text>        if(widgets.size &gt; 0) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2597
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2598
    <xsl:text>            let maxfreq = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2599
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2600
    <xsl:text>            for(let widget of widgets)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2601
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2602
    <xsl:text>                if(maxfreq &lt; widget.frequency)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2603
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2604
    <xsl:text>                    maxfreq = widget.frequency;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2605
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2606
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2607
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2608
    <xsl:text>            if(maxfreq != 0)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2609
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2610
    <xsl:text>                new_period = 1000/maxfreq;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2611
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2612
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2613
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2614
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2615
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2616
    <xsl:text>        if(previous_period != new_period) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2617
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2618
    <xsl:text>            subscriptions[index] = new_period;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2619
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2620
    <xsl:text>            delta.push(
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2621
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2622
    <xsl:text>                new Uint8Array([2]), /* subscribe = 2 */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2623
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2624
    <xsl:text>                new Uint32Array([index]),
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2625
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2626
    <xsl:text>                new Uint16Array([new_period]));
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2627
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2628
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2629
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2630
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2631
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2632
    <xsl:text>    send_blob(delta);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2633
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2634
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2635
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2636
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2637
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2638
    <xsl:text>function send_hmi_value(index, value) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2639
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2640
    <xsl:text>    let iectype = hmitree_types[index];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2641
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2642
    <xsl:text>    let tobinary = typedarray_types[iectype];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2643
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2644
    <xsl:text>    send_blob([
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2645
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2646
    <xsl:text>        new Uint8Array([0]),  /* setval = 0 */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2647
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2648
    <xsl:text>        new Uint32Array([index]),
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2649
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2650
    <xsl:text>        tobinary(value)]);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2651
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2652
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2653
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2654
    <xsl:text>    // DON'T DO THAT unless read_iterator in svghmi.c modifies wbuf as well, not only rbuf
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2655
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2656
    <xsl:text>    // cache[index] = value;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2657
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2658
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2659
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2660
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2661
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2662
    <xsl:text>function apply_hmi_value(index, new_val) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2663
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2664
    <xsl:text>    let old_val = cache[index]
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2665
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2666
    <xsl:text>    if(new_val != undefined &amp;&amp; old_val != new_val)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2667
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2668
    <xsl:text>        send_hmi_value(index, new_val);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2669
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2670
    <xsl:text>    return new_val;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2671
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2672
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2673
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2674
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2675
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2676
    <xsl:text>function change_hmi_value(index, opstr) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2677
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2678
    <xsl:text>    let op = opstr[0];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2679
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2680
    <xsl:text>    let given_val = opstr.slice(1);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2681
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2682
    <xsl:text>    let old_val = cache[index]
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2683
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2684
    <xsl:text>    let new_val;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2685
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2686
    <xsl:text>    switch(op){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2687
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2688
    <xsl:text>      case "=":
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2689
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2690
    <xsl:text>        eval("new_val"+opstr);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2691
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2692
    <xsl:text>        break;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2693
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2694
    <xsl:text>      case "+":
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2695
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2696
    <xsl:text>      case "-":
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2697
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2698
    <xsl:text>      case "*":
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2699
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2700
    <xsl:text>      case "/":
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2701
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2702
    <xsl:text>        if(old_val != undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2703
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2704
    <xsl:text>            new_val = eval("old_val"+opstr);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2705
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2706
    <xsl:text>        break;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2707
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2708
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2709
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2710
    <xsl:text>    if(new_val != undefined &amp;&amp; old_val != new_val)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2711
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2712
    <xsl:text>        send_hmi_value(index, new_val);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2713
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2714
    <xsl:text>    return new_val;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2715
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2716
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2717
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2718
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2719
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2720
    <xsl:text>var current_visible_page;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2721
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2722
    <xsl:text>var current_subscribed_page;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2723
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2724
    <xsl:text>var current_page_index;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2725
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2726
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2727
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2728
    <xsl:text>function prepare_svg() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2729
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2730
    <xsl:text>    for(let eltid in detachable_elements){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2731
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2732
    <xsl:text>        let [element,parent] = detachable_elements[eltid];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2733
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2734
    <xsl:text>        parent.removeChild(element);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2735
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2736
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2737
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2738
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2739
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2740
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2741
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2742
    <xsl:text>function switch_page(page_name, page_index) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2743
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2744
    <xsl:text>    if(current_subscribed_page != current_visible_page){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2745
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2746
    <xsl:text>        /* page switch already going */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2747
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2748
    <xsl:text>        /* TODO LOG ERROR */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2749
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2750
    <xsl:text>        return false;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2751
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2752
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2753
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2754
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2755
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2756
    <xsl:text>    if(page_name == undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2757
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2758
    <xsl:text>        page_name = current_subscribed_page;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2759
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2760
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2761
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2762
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2763
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2764
    <xsl:text>    let old_desc = page_desc[current_subscribed_page];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2765
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2766
    <xsl:text>    let new_desc = page_desc[page_name];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2767
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2768
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2769
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2770
    <xsl:text>    if(new_desc == undefined){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2771
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2772
    <xsl:text>        /* TODO LOG ERROR */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2773
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2774
    <xsl:text>        return false;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2775
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2776
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2777
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2778
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2779
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2780
    <xsl:text>    if(page_index == undefined){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2781
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2782
    <xsl:text>        page_index = new_desc.page_index;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2783
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2784
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2785
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2786
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2787
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2788
    <xsl:text>    if(old_desc){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2789
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2790
    <xsl:text>        old_desc.absolute_widgets.map(w=&gt;w.unsub());
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2791
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2792
    <xsl:text>        old_desc.relative_widgets.map(w=&gt;w.unsub());
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2793
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2794
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2795
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2796
    <xsl:text>    new_desc.absolute_widgets.map(w=&gt;w.sub());
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2797
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2798
    <xsl:text>    var new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2799
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2800
    <xsl:text>    new_desc.relative_widgets.map(w=&gt;w.sub(new_offset));
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2801
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2802
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2803
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2804
    <xsl:text>    update_subscriptions();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2805
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2806
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2807
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2808
    <xsl:text>    current_subscribed_page = page_name;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2809
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2810
    <xsl:text>    current_page_index = page_index;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2811
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2812
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2813
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2814
    <xsl:text>    jumps_need_update = true;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2815
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2816
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2817
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2818
    <xsl:text>    requestHMIAnimation();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2819
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2820
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2821
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2822
    <xsl:text>    jump_history.push([page_name, page_index]);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2823
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2824
    <xsl:text>    if(jump_history.length &gt; 42)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2825
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2826
    <xsl:text>        jump_history.shift();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2827
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2828
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2829
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2830
    <xsl:text>    return true;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2831
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2832
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2833
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2834
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2835
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2836
    <xsl:text>function* chain(a,b){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2837
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2838
    <xsl:text>    yield* a;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2839
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2840
    <xsl:text>    yield* b;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2841
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2842
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2843
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2844
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2845
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2846
    <xsl:text>function unsubscribe(){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2847
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2848
    <xsl:text>    /* remove subsribers */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2849
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2850
    <xsl:text>    for(let index of this.indexes){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2851
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2852
    <xsl:text>        let idx = index + this.offset;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2853
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2854
    <xsl:text>        subscribers[idx].delete(this);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2855
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2856
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2857
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2858
    <xsl:text>    this.offset = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2859
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2860
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2861
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2862
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2863
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2864
    <xsl:text>function subscribe(new_offset=0){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2865
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2866
    <xsl:text>    /* set the offset because relative */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2867
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2868
    <xsl:text>    this.offset = new_offset;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2869
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2870
    <xsl:text>    /* add this's subsribers */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2871
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2872
    <xsl:text>    for(let index of this.indexes){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2873
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2874
    <xsl:text>        subscribers[index + new_offset].add(this);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2875
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2876
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2877
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2878
    <xsl:text>    need_cache_apply.push(this); 
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2879
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2880
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2881
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2882
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2883
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2884
    <xsl:text>function foreach_unsubscribe(){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2885
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2886
    <xsl:text>    for(let item of this.items){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2887
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2888
    <xsl:text>        for(let widget of item) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2889
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2890
    <xsl:text>            unsubscribe.call(widget);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2891
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2892
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2893
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2894
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2895
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2896
    <xsl:text>    this.offset = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2897
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2898
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2899
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2900
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2901
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2902
    <xsl:text>function foreach_widgets_do(new_offset, todo){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2903
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2904
    <xsl:text>    this.offset = new_offset;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2905
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2906
    <xsl:text>    for(let i = 0; i &lt; this.items.length; i++) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2907
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2908
    <xsl:text>        let item = this.items[i];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2909
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2910
    <xsl:text>        let orig_item_index = this.index_pool[i];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2911
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2912
    <xsl:text>        let item_index = this.index_pool[i+this.item_offset];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2913
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2914
    <xsl:text>        let item_index_offset = item_index - orig_item_index;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2915
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2916
    <xsl:text>        for(let widget of item) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2917
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2918
    <xsl:text>            todo.call(widget, new_offset + item_index_offset);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2919
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2920
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2921
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2922
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2923
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2924
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2925
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2926
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2927
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2928
    <xsl:text>function foreach_subscribe(new_offset=0){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2929
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2930
    <xsl:text>    foreach_widgets_do.call(this, new_offset, subscribe);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2931
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2932
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2933
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2934
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2935
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2936
    <xsl:text>function widget_apply_cache() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2937
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2938
    <xsl:text>    for(let index of this.indexes){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2939
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2940
    <xsl:text>        /* dispatch current cache in newly opened page widgets */
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2941
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2942
    <xsl:text>        let realindex = index+this.offset;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2943
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2944
    <xsl:text>        let cached_val = cache[realindex];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2945
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2946
    <xsl:text>        if(cached_val != undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2947
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2948
    <xsl:text>            dispatch_value_to_widget(this, realindex, cached_val, cached_val);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2949
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2950
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2951
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2952
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2953
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2954
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2955
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2956
    <xsl:text>function foreach_apply_cache() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2957
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2958
    <xsl:text>    foreach_widgets_do.call(this, this.offset, widget_apply_cache);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2959
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2960
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2961
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2962
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2963
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2964
    <xsl:text>function foreach_onclick(opstr, evt) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2965
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2966
    <xsl:text>    new_item_offset = eval(String(this.item_offset)+opstr)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2967
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2968
    <xsl:text>    if(new_item_offset + this.items.length &gt; this.index_pool.length) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2969
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2970
    <xsl:text>        if(this.item_offset + this.items.length == this.index_pool.length)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2971
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2972
    <xsl:text>            new_item_offset = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2973
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2974
    <xsl:text>        else
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2975
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2976
    <xsl:text>            new_item_offset = this.index_pool.length - this.items.length;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2977
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2978
    <xsl:text>    } else if(new_item_offset &lt; 0) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2979
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2980
    <xsl:text>        if(this.item_offset == 0)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2981
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2982
    <xsl:text>            new_item_offset = this.index_pool.length - this.items.length;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2983
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2984
    <xsl:text>        else
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2985
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2986
    <xsl:text>            new_item_offset = 0;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2987
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2988
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2989
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2990
    <xsl:text>    this.item_offset = new_item_offset;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2991
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2992
    <xsl:text>    off = this.offset;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2993
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2994
    <xsl:text>    foreach_unsubscribe.call(this);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2995
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2996
    <xsl:text>    foreach_subscribe.call(this,off);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2997
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2998
    <xsl:text>    update_subscriptions();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  2999
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3000
    <xsl:text>    need_cache_apply.push(this);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3001
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3002
    <xsl:text>    jumps_need_update = true;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3003
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3004
    <xsl:text>    requestHMIAnimation();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3005
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3006
    <xsl:text>}
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3007
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3008
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3009
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3010
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3011
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3012
    <xsl:text>function switch_visible_page(page_name) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3013
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3014
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3015
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3016
    <xsl:text>    let old_desc = page_desc[current_visible_page];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3017
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3018
    <xsl:text>    let new_desc = page_desc[page_name];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3019
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3020
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3021
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3022
    <xsl:text>    if(old_desc){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3023
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3024
    <xsl:text>        for(let eltid in old_desc.required_detachables){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3025
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3026
    <xsl:text>            if(!(eltid in new_desc.required_detachables)){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3027
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3028
    <xsl:text>                let [element, parent] = old_desc.required_detachables[eltid];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3029
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3030
    <xsl:text>                parent.removeChild(element);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3031
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3032
    <xsl:text>            }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3033
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3034
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3035
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3036
    <xsl:text>        for(let eltid in new_desc.required_detachables){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3037
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3038
    <xsl:text>            if(!(eltid in old_desc.required_detachables)){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3039
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3040
    <xsl:text>                let [element, parent] = new_desc.required_detachables[eltid];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3041
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3042
    <xsl:text>                parent.appendChild(element);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3043
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3044
    <xsl:text>            }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3045
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3046
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3047
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3048
    <xsl:text>    }else{
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3049
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3050
    <xsl:text>        for(let eltid in new_desc.required_detachables){
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3051
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3052
    <xsl:text>            let [element, parent] = new_desc.required_detachables[eltid];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3053
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3054
    <xsl:text>            parent.appendChild(element);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3055
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3056
    <xsl:text>        }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3057
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3058
    <xsl:text>    }
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3059
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3060
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3061
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3062
    <xsl:text>    svg_root.setAttribute('viewBox',new_desc.bbox.join(" "));
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3063
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3064
    <xsl:text>    current_visible_page = page_name;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3065
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3066
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3067
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3068
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3069
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3070
    <xsl:text>function update_jumps() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3071
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3072
    <xsl:text>    page_desc[current_visible_page].jumps.map(w=&gt;w.notify_page_change(current_visible_page,current_page_index));
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3073
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3074
    <xsl:text>    jumps_need_update = false;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3075
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3076
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3077
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3078
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3079
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3080
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3081
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3082
    <xsl:text>// Once connection established
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3083
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3084
    <xsl:text>ws.onopen = function (evt) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3085
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3086
    <xsl:text>    init_widgets();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3087
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3088
    <xsl:text>    send_reset();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3089
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3090
    <xsl:text>    // show main page
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3091
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3092
    <xsl:text>    prepare_svg();
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3093
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3094
    <xsl:text>    switch_page(default_page);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3095
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3096
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3097
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3098
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3099
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3100
    <xsl:text>ws.onclose = function (evt) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3101
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3102
    <xsl:text>    // TODO : add visible notification while waiting for reload
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3103
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3104
    <xsl:text>    console.log("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+" Reload in 10s.");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3105
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3106
    <xsl:text>    // TODO : re-enable auto reload when not in debug
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3107
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3108
    <xsl:text>    //window.setTimeout(() =&gt; location.reload(true), 10000);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3109
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3110
    <xsl:text>    alert("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+".");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3111
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3112
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3113
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3114
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3115
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3116
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3117
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3118
    <xsl:text>var xmlns = "http://www.w3.org/2000/svg";
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3119
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3120
    <xsl:text>var edit_callback;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3121
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3122
    <xsl:text>function edit_value(path, valuetype, callback, initial) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3123
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3124
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3125
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3126
    <xsl:text>    let [keypadid, xcoord, ycoord] = keypads[valuetype];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3127
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3128
    <xsl:text>    console.log('XXX TODO : Edit value', path, valuetype, callback, initial, keypadid);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3129
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3130
    <xsl:text>    edit_callback = callback;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3131
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3132
    <xsl:text>    let widget = hmi_widgets[keypadid];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3133
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3134
    <xsl:text>    widget.start_edit(path, valuetype, callback, initial);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3135
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3136
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3137
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3138
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3139
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3140
    <xsl:text>var current_modal; /* TODO stack ?*/
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3141
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3142
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3143
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3144
    <xsl:text>function show_modal() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3145
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3146
    <xsl:text>    let [element, parent] = detachable_elements[this.element.id];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3147
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3148
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3149
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3150
    <xsl:text>    tmpgrp = document.createElementNS(xmlns,"g");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3151
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3152
    <xsl:text>    tmpgrpattr = document.createAttribute("transform");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3153
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3154
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3155
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3156
    <xsl:text>    let [xcoord,ycoord] = this.coordinates;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3157
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3158
    <xsl:text>    let [xdest,ydest] = page_desc[current_visible_page].bbox;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3159
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3160
    <xsl:text>    tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")";
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3161
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3162
    <xsl:text>    tmpgrp.setAttributeNode(tmpgrpattr);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3163
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3164
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3165
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3166
    <xsl:text>    tmpgrp.appendChild(element);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3167
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3168
    <xsl:text>    parent.appendChild(tmpgrp);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3169
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3170
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3171
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3172
    <xsl:text>    current_modal = [this.element.id, tmpgrp];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3173
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3174
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3175
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3176
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3177
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3178
    <xsl:text>function end_modal() {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3179
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3180
    <xsl:text>    let [eltid, tmpgrp] = current_modal;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3181
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3182
    <xsl:text>    let [element, parent] = detachable_elements[this.element.id];
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3183
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3184
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3185
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3186
    <xsl:text>    parent.removeChild(tmpgrp);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3187
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3188
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3189
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3190
    <xsl:text>    current_modal = undefined;
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3191
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3192
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3193
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3194
    <xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3195
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3196
    <xsl:text>function widget_active_activable(eltsub) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3197
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3198
    <xsl:text>    if(eltsub.inactive_style === undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3199
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3200
    <xsl:text>        eltsub.inactive_style = eltsub.inactive.getAttribute("style");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3201
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3202
    <xsl:text>    eltsub.inactive.setAttribute("style", "display:none");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3203
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3204
    <xsl:text>    if(eltsub.active_style !== undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3205
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3206
    <xsl:text>            eltsub.active.setAttribute("style", eltsub.active_style);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3207
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3208
    <xsl:text>    console.log("active", eltsub);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3209
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3210
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3211
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3212
    <xsl:text>function widget_inactive_activable(eltsub) {
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3213
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3214
    <xsl:text>    if(eltsub.active_style === undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3215
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3216
    <xsl:text>        eltsub.active_style = eltsub.active.getAttribute("style");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3217
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3218
    <xsl:text>    eltsub.active.setAttribute("style", "display:none");
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3219
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3220
    <xsl:text>    if(eltsub.inactive_style !== undefined)
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3221
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3222
    <xsl:text>            eltsub.inactive.setAttribute("style", eltsub.inactive_style);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3223
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3224
    <xsl:text>    console.log("inactive", eltsub);
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3225
</xsl:text>
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3226
    <xsl:text>};
1379cd5c69dd SVGHMI: Added scripts.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2936
diff changeset
  3227
</xsl:text>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3228
    <xsl:apply-templates select="document('')/*/epilogue:*"/>
2904
92d115d8828d SVGHMI: collect debug data through xslt reflectivity instead of yml2/python trick
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2903
diff changeset
  3229
  </xsl:template>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3230
  <xsl:template match="/">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3231
    <xsl:comment>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3232
      <xsl:text>Made with SVGHMI. https://beremiz.org</xsl:text>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3233
    </xsl:comment>
2940
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3234
    <xsl:for-each select="document('')/*/debug:*">
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3235
      <xsl:comment>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3236
        <xsl:value-of select="local-name()"/>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3237
        <xsl:text> :
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3238
</xsl:text>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3239
        <xsl:apply-templates select="."/>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3240
      </xsl:comment>
034b6ce4f885 SVGHMI: Introduced "emit" to simplify producing per-topic code and content from anywhere in code. Applied to debug output, next to JS.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2939
diff changeset
  3241
    </xsl:for-each>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3242
    <html xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3243
      <head/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3244
      <body style="margin:0;overflow:hidden;">
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3245
        <xsl:copy-of select="$result_svg"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3246
        <script>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3247
          <xsl:call-template name="scripts"/>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3248
        </script>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3249
      </body>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3250
    </html>
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
  3251
  </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
  3252
</xsl:stylesheet>