svghmi/gen_index_xhtml.xslt
author Edouard Tisserant <edouard.tisserant@gmail.com>
Thu, 04 Feb 2021 21:20:01 +0100
branchsvghmi
changeset 3125 1fb0c07bd97b
parent 3124 f263359d8108
child 3128 32a4675af377
permissions -rw-r--r--
SVGHMI: widget activable elements : moved code to wher it belongs, rewrote cleaner
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"?>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
     2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:str="http://exslt.org/strings" xmlns:func="http://exslt.org/functions" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:debug="debug" xmlns:preamble="preamble" xmlns:declarations="declarations" xmlns:definitions="definitions" xmlns:epilogue="epilogue" xmlns:ns="beremiz" version="1.0" extension-element-prefixes="ns func exsl regexp str dyn" exclude-result-prefixes="ns func exsl regexp str dyn debug preamble epilogue declarations definitions">
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
     3
  <xsl:output cdata-section-elements="xhtml:script" method="xml"/>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
     4
  <xsl:variable name="svg" select="/svg:svg"/>
2879
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
     5
  <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
     6
  <xsl:variable name="hmitree" select="ns:GetHMITree()"/>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
     7
  <xsl:variable name="_categories">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
     8
    <noindex>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
     9
      <xsl:text>HMI_PLC_STATUS</xsl:text>
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
    <noindex>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    12
      <xsl:text>HMI_CURRENT_PAGE</xsl:text>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    13
    </noindex>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    14
  </xsl:variable>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    15
  <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
    16
  <xsl:variable name="_indexed_hmitree">
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
    17
    <xsl:apply-templates mode="index" select="$hmitree"/>
2867
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    18
  </xsl:variable>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    19
  <xsl:variable name="indexed_hmitree" select="exsl:node-set($_indexed_hmitree)"/>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    20
  <preamble:hmi-tree/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    21
  <xsl:template match="preamble:hmi-tree">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    22
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    23
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    24
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    25
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    26
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    27
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    28
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    29
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    30
    <xsl:text>var hmi_hash = [</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    31
    <xsl:value-of select="$hmitree/@hash"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    32
    <xsl:text>];
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    33
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    34
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    35
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    36
    <xsl:text>var heartbeat_index = </xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    37
    <xsl:value-of select="$indexed_hmitree/*[@hmipath = '/HEARTBEAT']/@index"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    38
    <xsl:text>;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    39
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    40
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    41
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    42
    <xsl:text>var hmitree_types = [
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    43
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    44
    <xsl:for-each select="$indexed_hmitree/*">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    45
      <xsl:text>    /* </xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    46
      <xsl:value-of select="@index"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    47
      <xsl:text>  </xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    48
      <xsl:value-of select="@hmipath"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    49
      <xsl:text> */ "</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    50
      <xsl:value-of select="substring(local-name(), 5)"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    51
      <xsl:text>"</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    52
      <xsl:if test="position()!=last()">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    53
        <xsl:text>,</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    54
      </xsl:if>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    55
      <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    56
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    57
    </xsl:for-each>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
    58
    <xsl:text>];
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
    59
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
    60
    <xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
    61
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    62
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    63
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    64
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
    65
  <xsl:template mode="index" match="*">
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    66
    <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
    67
    <xsl:param name="parentpath" select="''"/>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    68
    <xsl:variable name="content">
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    69
      <xsl:variable name="path">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    70
        <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
    71
          <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
    72
            <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
    73
          </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
    74
          <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
    75
            <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
    76
            <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
    77
          </xsl:when>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    78
          <xsl:otherwise>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    79
            <xsl:value-of select="$parentpath"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    80
            <xsl:text>/</xsl:text>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    81
            <xsl:value-of select="@name"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    82
          </xsl:otherwise>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    83
        </xsl:choose>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    84
      </xsl:variable>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    85
      <xsl:choose>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    86
        <xsl:when test="not(local-name() = $categories/noindex)">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    87
          <xsl:copy>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    88
            <xsl:attribute name="index">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    89
              <xsl:value-of select="$index"/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    90
            </xsl:attribute>
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    91
            <xsl:attribute name="hmipath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    92
              <xsl:value-of select="$path"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
    93
            </xsl:attribute>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    94
            <xsl:for-each select="@*">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    95
              <xsl:copy/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    96
            </xsl:for-each>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    97
          </xsl:copy>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
    98
          <xsl:apply-templates mode="index" select="*[1]">
2867
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    99
            <xsl:with-param name="index" select="$index + 1"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   100
            <xsl:with-param name="parentpath">
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   101
              <xsl:value-of select="$path"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   102
            </xsl:with-param>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   103
          </xsl:apply-templates>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   104
        </xsl:when>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   105
        <xsl:otherwise>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   106
          <xsl:apply-templates mode="index" select="*[1]">
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   107
            <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
   108
            <xsl:with-param name="parentpath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   109
              <xsl:value-of select="$path"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   110
            </xsl:with-param>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   111
          </xsl:apply-templates>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   112
        </xsl:otherwise>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   113
      </xsl:choose>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   114
    </xsl:variable>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   115
    <xsl:copy-of select="$content"/>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   116
    <xsl:apply-templates mode="index" select="following-sibling::*[1]">
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   117
      <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
   118
      <xsl:with-param name="parentpath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   119
        <xsl:value-of select="$parentpath"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   120
      </xsl:with-param>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   121
    </xsl:apply-templates>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   122
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   123
  <xsl:template mode="parselabel" match="*">
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="label" select="@inkscape:label"/>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   125
    <xsl:variable name="id" select="@id"/>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   126
    <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
   127
    <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
   128
    <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
   129
      <xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   130
        <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
   131
          <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
   132
        </xsl:when>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   133
        <xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   134
          <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
   135
        </xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   136
      </xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   137
    </xsl:variable>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   138
    <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
   139
    <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
   140
      <xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   141
        <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
   142
          <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
   143
        </xsl:when>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   144
        <xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   145
          <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
   146
        </xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   147
      </xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   148
    </xsl:variable>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   149
    <xsl:if test="$type">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   150
      <widget>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   151
        <xsl:attribute name="id">
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   152
          <xsl:value-of select="$id"/>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   153
        </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   154
        <xsl:attribute name="type">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   155
          <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
   156
        </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   157
        <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
   158
          <arg>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   159
            <xsl:attribute name="value">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   160
              <xsl:value-of select="."/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   161
            </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   162
          </arg>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   163
        </xsl:for-each>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   164
        <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
   165
        <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
   166
          <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
   167
            <path>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   168
              <xsl:variable name="pathminmax" select="str:split(.,',')"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   169
              <xsl:variable name="path" select="$pathminmax[1]"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   170
              <xsl:variable name="pathminmaxcount" select="count($pathminmax)"/>
2793
2a97688c94c5 SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents: 2792
diff changeset
   171
              <xsl:attribute name="value">
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   172
                <xsl:value-of select="$path"/>
2793
2a97688c94c5 SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant
parents: 2792
diff changeset
   173
              </xsl:attribute>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   174
              <xsl:choose>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   175
                <xsl:when test="$pathminmaxcount = 3">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   176
                  <xsl:attribute name="min">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   177
                    <xsl:value-of select="$pathminmax[2]"/>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   178
                  </xsl:attribute>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   179
                  <xsl:attribute name="max">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   180
                    <xsl:value-of select="$pathminmax[3]"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   181
                  </xsl:attribute>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   182
                </xsl:when>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   183
                <xsl:when test="$pathminmaxcount = 2">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   184
                  <xsl:message terminate="yes">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   185
                    <xsl:text>Widget id:</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   186
                    <xsl:value-of select="$id"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   187
                    <xsl:text> label:</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   188
                    <xsl:value-of select="$label"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   189
                    <xsl:text> has wrong syntax of path section </xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   190
                    <xsl:value-of select="$pathminmax"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   191
                  </xsl:message>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   192
                </xsl:when>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   193
              </xsl:choose>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   194
              <xsl:choose>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   195
                <xsl:when test="regexp:test($path,'^\.[a-zA-Z0-9_]+')">
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   196
                  <xsl:attribute name="type">
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   197
                    <xsl:text>PAGE_LOCAL</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   198
                  </xsl:attribute>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   199
                </xsl:when>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   200
                <xsl:when test="regexp:test($path,'^[a-zA-Z0-9_]+')">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   201
                  <xsl:attribute name="type">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   202
                    <xsl:text>HMI_LOCAL</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   203
                  </xsl:attribute>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   204
                </xsl:when>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   205
                <xsl:otherwise>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   206
                  <xsl:variable name="item" select="$indexed_hmitree/*[@hmipath = $path]"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   207
                  <xsl:variable name="pathtype" select="local-name($item)"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   208
                  <xsl:if test="$pathminmaxcount = 3 and not($pathtype = 'HMI_INT' or $pathtype = 'HMI_REAL')">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   209
                    <xsl:message terminate="yes">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   210
                      <xsl:text>Widget id:</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   211
                      <xsl:value-of select="$id"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   212
                      <xsl:text> label:</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   213
                      <xsl:value-of select="$label"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   214
                      <xsl:text> path section </xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   215
                      <xsl:value-of select="$pathminmax"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   216
                      <xsl:text> use min and max on non mumeric value</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   217
                    </xsl:message>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   218
                  </xsl:if>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   219
                  <xsl:if test="count($item) = 1">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   220
                    <xsl:attribute name="index">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   221
                      <xsl:value-of select="$item/@index"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   222
                    </xsl:attribute>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   223
                    <xsl:attribute name="type">
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   224
                      <xsl:value-of select="$pathtype"/>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   225
                    </xsl:attribute>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
   226
                  </xsl:if>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   227
                </xsl:otherwise>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
   228
              </xsl:choose>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   229
            </path>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   230
          </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   231
        </xsl:for-each>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   232
      </widget>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   233
    </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   234
  </xsl:template>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   235
  <xsl:variable name="_parsed_widgets">
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   236
    <xsl:apply-templates mode="parselabel" select="$hmi_elements"/>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   237
  </xsl:variable>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   238
  <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
   239
  <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
   240
    <xsl:param name="id"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   241
    <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
   242
  </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
   243
  <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
   244
    <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
   245
    <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
   246
    <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
   247
  </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
   248
  <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
   249
    <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
   250
    <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
   251
    <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
   252
    <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
   253
    <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
   254
  </func:function>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   255
  <xsl:template mode="testtree" match="*">
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
   256
    <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
   257
    <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
   258
    <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
   259
    <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
   260
    <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
   261
    <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
   262
      <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
   263
      <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
   264
      <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
   265
      <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
   266
    </xsl:for-each>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   267
    <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
   268
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   269
    <xsl:apply-templates mode="testtree" select="*">
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
   270
      <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
   271
        <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
   272
      </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
   273
    </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
   274
  </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
   275
  <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
   276
  <xsl:template match="debug:hmi-tree">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   277
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   278
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   279
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   280
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   281
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   282
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   283
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   284
</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
   285
    <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
   286
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   287
    <xsl:apply-templates mode="testtree" select="$hmitree"/>
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
   288
    <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
   289
</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
   290
    <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
   291
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   292
    <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
   293
    <xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   294
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   295
    <xsl:text>Parsed Widgets
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   296
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   297
    <xsl:copy-of select="_parsed_widgets"/>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   298
    <xsl:apply-templates mode="testtree" select="$parsed_widgets"/>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   299
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   300
</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
   301
  </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
   302
  <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
   303
  <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
   304
  <xsl:template match="debug:geometry">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   305
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   306
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   307
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   308
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   309
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   310
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   311
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   312
</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
   313
    <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
   314
</xsl:text>
2879
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
   315
    <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
   316
      <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
   317
      <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
   318
      <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
   319
      <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
   320
      <xsl:text> </xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   321
      <xsl:value-of select="@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
   322
      <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
   323
      <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
   324
      <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
   325
      <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
   326
      <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   327
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   328
    </xsl:for-each>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   329
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   330
</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
   331
  </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
   332
  <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
   333
    <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
   334
    <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
   335
    <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
   336
    <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
   337
    <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
   338
    <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
   339
    <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
   340
      <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
   341
        <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
   342
      </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
   343
      <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
   344
        <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
   345
      </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
   346
      <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
   347
        <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
   348
      </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
   349
      <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
   350
        <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
   351
      </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
   352
      <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
   353
        <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
   354
      </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
   355
    </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
   356
  </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
   357
  <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
   358
    <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
   359
    <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
   360
    <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
   361
    <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
   362
      <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
   363
        <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
   364
        <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
   365
      </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
   366
      <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
   367
        <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
   368
      </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
   369
    </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
   370
  </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
   371
  <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
   372
    <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
   373
    <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
   374
    <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
   375
    <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
   376
    <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
   377
  </func:function>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   378
  <xsl:variable name="hmi_pages_descs" select="$parsed_widgets/widget[@type = 'Page']"/>
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   379
  <xsl:variable name="hmi_pages" select="$hmi_elements[@id = $hmi_pages_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
   380
  <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
   381
    <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
   382
      <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
   383
        <xsl:choose>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   384
          <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
   385
            <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
   386
          </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
   387
          <xsl:otherwise>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   388
            <xsl:message terminate="yes">
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   389
              <xsl:text>No Home page defined!</xsl:text>
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   390
            </xsl:message>
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
   391
          </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
   392
        </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
   393
      </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
   394
      <xsl:when test="count($hmi_pages) = 0">
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   395
        <xsl:message terminate="yes">
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   396
          <xsl:text>No page defined!</xsl:text>
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   397
        </xsl:message>
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
   398
      </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
   399
      <xsl:otherwise>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   400
        <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
   401
      </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
   402
    </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
   403
  </xsl:variable>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   404
  <preamble:default-page/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   405
  <xsl:template match="preamble:default-page">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   406
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   407
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   408
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   409
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   410
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   411
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   412
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   413
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   414
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   415
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   416
    <xsl:text>var default_page = "</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   417
    <xsl:value-of select="$default_page"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   418
    <xsl:text>";
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   419
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   420
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   421
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   422
  </xsl:template>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   423
  <xsl:variable name="keypads_descs" select="$parsed_widgets/widget[@type = 'Keypad']"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   424
  <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
   425
  <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
   426
    <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
   427
    <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
   428
    <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
   429
    <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
   430
    <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
   431
      <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
   432
        <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
   433
      </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
   434
      <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
   435
        <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
   436
      </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
   437
    </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
   438
  </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
   439
  <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
   440
    <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
   441
    <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
   442
    <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
   443
    <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
   444
    <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
   445
  </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
   446
  <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
   447
    <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
   448
    <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
   449
      <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
   450
        <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
   451
      </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
   452
      <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
   453
        <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
   454
      </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
   455
    </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
   456
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   457
  <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
   458
  <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
   459
  <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
   460
    <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
   461
    <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
   462
    <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
   463
    <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
   464
    <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
   465
  </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
   466
  <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
   467
    <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
   468
    <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
   469
      <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
   470
        <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
   471
      </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
   472
      <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
   473
        <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
   474
      </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
   475
    </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
   476
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   477
  <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
   478
  <xsl:variable name="detachable_elements" select="$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]"/>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
   479
  <declarations:detachable-elements/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
   480
  <xsl:template match="declarations:detachable-elements">
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   481
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   482
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   483
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   484
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   485
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   486
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   487
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   488
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   489
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   490
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   491
    <xsl:text>var detachable_elements = {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   492
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   493
    <xsl:for-each select="$detachable_elements">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   494
      <xsl:text>    "</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   495
      <xsl:value-of select="@id"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   496
      <xsl:text>":[id("</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   497
      <xsl:value-of select="@id"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   498
      <xsl:text>"), id("</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   499
      <xsl:value-of select="../@id"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   500
      <xsl:text>")]</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   501
      <xsl:if test="position()!=last()">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   502
        <xsl:text>,</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   503
      </xsl:if>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   504
      <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   505
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   506
    </xsl:for-each>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   507
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   508
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   509
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   510
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   511
  </xsl:template>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   512
  <xsl:variable name="forEach_widgets_ids" select="$parsed_widgets/widget[@type = 'ForEach']/@id"/>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
   513
  <xsl:variable name="forEach_widgets" select="$hmi_widgets[@id = $forEach_widgets_ids]"/>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   514
  <xsl:variable name="in_forEach_widget_ids" select="func:refered_elements($forEach_widgets)[not(@id = $forEach_widgets_ids)]/@id"/>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   515
  <xsl:template mode="page_desc" match="svg:*">
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   516
    <xsl:if test="ancestor::*[@id = $hmi_pages/@id]">
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   517
      <xsl:message terminate="yes">
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   518
        <xsl:text>HMI:Page </xsl:text>
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   519
        <xsl:value-of select="@id"/>
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   520
        <xsl:text> is nested in another HMI:Page</xsl:text>
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   521
      </xsl:message>
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
   522
    </xsl:if>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   523
    <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
   524
    <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
   525
    <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
   526
    <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
   527
    <xsl:variable name="all_page_widgets" select="$hmi_widgets[@id = $page_all_elements/@id and @id != $page/@id]"/>
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
   528
    <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
   529
    <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
   530
    <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
   531
    <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
   532
    <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
   533
    <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
</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
   535
    <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
   536
    <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
   537
    <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
   538
    <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
   539
    <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
   540
    <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
   541
    <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
   542
    <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
   543
    <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
   544
</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
   545
    <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
   546
      <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
   547
        <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
   548
          <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
   549
          <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
   550
          <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
   551
          <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
   552
          <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
   553
        </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
   554
      </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
   555
      <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
   556
      <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
   557
      <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
   558
</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
   559
    </xsl:if>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   560
    <xsl:text>    widgets: [
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   561
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   562
    <xsl:for-each select="$page_managed_widgets">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   563
      <xsl:variable name="widget_paths_relativeness">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   564
        <xsl:for-each select="func:widget(@id)/path">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   565
          <xsl:value-of select="func:is_descendant_path(@value, $desc/path/@value)"/>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   566
          <xsl:if test="position()!=last()">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   567
            <xsl:text>,</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   568
          </xsl:if>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   569
        </xsl:for-each>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   570
      </xsl:variable>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   571
      <xsl:text>        [hmi_widgets["</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
   572
      <xsl:value-of select="@id"/>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   573
      <xsl:text>"], [</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   574
      <xsl:value-of select="$widget_paths_relativeness"/>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   575
      <xsl:text>]]</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
   576
      <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
   577
        <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
   578
      </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
   579
      <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
   580
</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
   581
    </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
   582
    <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
   583
</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
   584
    <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
   585
</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
   586
    <xsl:for-each select="$parsed_widgets/widget[@id = $all_page_widgets/@id and @type='Jump']">
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   587
      <xsl:text>        hmi_widgets["</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   588
      <xsl:value-of select="@id"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   589
      <xsl:text>"]</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   590
      <xsl:if test="position()!=last()">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   591
        <xsl:text>,</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
   592
      </xsl:if>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   593
      <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   594
</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
   595
    </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
   596
    <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
   597
</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
   598
    <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
   599
</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
   600
    <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
   601
      <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
   602
      <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
   603
      <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
   604
      <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
   605
      <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
   606
      <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
   607
        <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
   608
      </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
   609
      <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
   610
</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
   611
    </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
   612
    <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
   613
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   614
    <xsl:apply-templates mode="per_page_widget_template" select="$parsed_widgets/widget[@id = $all_page_widgets/@id]">
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
   615
      <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
   616
    </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
   617
    <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
   618
    <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
   619
      <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
   620
    </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
   621
    <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
   622
</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
   623
  </xsl:template>
3008
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
   624
  <definitions:page-desc/>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
   625
  <xsl:template match="definitions:page-desc">
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   626
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   627
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   628
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   629
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   630
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   631
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   632
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   633
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   634
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   635
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   636
    <xsl:text>var page_desc = {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   637
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   638
    <xsl:apply-templates mode="page_desc" select="$hmi_pages"/>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   639
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   640
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   641
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   642
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   643
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   644
  <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
   645
  <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
   646
  <xsl:template match="debug:detachable-pages">
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   647
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   648
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   649
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   650
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   651
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   652
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   653
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   654
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   655
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   656
</xsl:text>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   657
    <xsl:text>DETACHABLES:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   658
</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
   659
    <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
   660
      <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
   661
      <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
   662
      <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
   663
</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
   664
    </xsl:for-each>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   665
    <xsl:text>In Foreach:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   666
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   667
    <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
   668
      <xsl:text> </xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   669
      <xsl:value-of select="."/>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   670
      <xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   671
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   672
    </xsl:for-each>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   673
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   674
</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
   675
  </xsl:template>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   676
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="@*">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   677
    <xsl:copy/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   678
  </xsl:template>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   679
  <xsl:template mode="inline_svg" match="node()">
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
   680
    <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
   681
      <xsl:copy>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   682
        <xsl:apply-templates mode="inline_svg" select="@* | node()"/>
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
   683
      </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
   684
    </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
   685
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   686
  <xsl:template mode="inline_svg" match="svg:svg/@width"/>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   687
  <xsl:template mode="inline_svg" match="svg:svg/@height"/>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   688
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="svg: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
   689
    <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
   690
      <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
   691
        <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
   692
      </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
   693
      <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
   694
        <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
   695
      </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
   696
      <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
   697
        <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
   698
      </xsl:attribute>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   699
      <xsl:apply-templates mode="inline_svg" select="@* | node()"/>
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
   700
    </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
   701
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   702
  <xsl:template mode="inline_svg" match="svg:svg[@viewBox!=concat('0 0 ', @width, ' ', @height)]">
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
   703
    <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
   704
      <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
   705
    </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
   706
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   707
  <xsl:template mode="inline_svg" match="sodipodi:namedview[@units!='px' or @inkscape:document-units!='px']">
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
   708
    <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
   709
      <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
   710
    </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
   711
  </xsl:template>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   712
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="svg:text/@inkscape:label[starts-with(., '_')]">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   713
    <xsl:attribute name="{name()}">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   714
      <xsl:value-of select="substring(., 2)"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   715
    </xsl:attribute>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   716
  </xsl:template>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   717
  <xsl:variable name="hmi_lists_descs" select="$parsed_widgets/widget[@type = 'List']"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   718
  <xsl:variable name="hmi_lists" select="$hmi_elements[@id = $hmi_lists_descs/@id]"/>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   719
  <xsl:variable name="targets_not_to_unlink" select="$hmi_lists/descendant-or-self::svg:*"/>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   720
  <xsl:variable name="to_unlink" select="$hmi_elements[not(@id = $hmi_pages/@id)]/descendant-or-self::svg:use"/>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   721
  <func:function name="func:is_unlinkable">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   722
    <xsl:param name="targetid"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   723
    <xsl:param name="eltid"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   724
    <func:result select="$eltid = $to_unlink/@id and not($targetid = $targets_not_to_unlink/@id)"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   725
  </func:function>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   726
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="svg:use">
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   727
    <xsl:variable name="targetid" select="substring-after(@xlink:href,'#')"/>
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
   728
    <xsl:choose>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   729
      <xsl:when test="func:is_unlinkable($targetid, @id)">
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   730
        <xsl:call-template name="unlink_clone">
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   731
          <xsl:with-param name="targetid" select="$targetid"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   732
        </xsl:call-template>
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
   733
      </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
   734
      <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
   735
        <xsl:copy>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   736
          <xsl:apply-templates mode="inline_svg" select="@*"/>
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
   737
        </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
   738
      </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
   739
    </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
   740
  </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
   741
  <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
   742
    <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
   743
      <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
   744
    </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
   745
    <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
   746
      <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
   747
    </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
   748
    <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
   749
      <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
   750
    </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
   751
    <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
   752
      <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
   753
    </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
   754
    <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
   755
      <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
   756
    </name>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   757
    <name>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   758
      <xsl:text>id</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   759
    </name>
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
   760
  </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
   761
  <xsl:variable name="excluded_use_attrs" select="exsl:node-set($_excluded_use_attrs)"/>
2969
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   762
  <xsl:variable name="_merge_use_attrs">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   763
    <name>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   764
      <xsl:text>transform</xsl:text>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   765
    </name>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   766
    <name>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   767
      <xsl:text>style</xsl:text>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   768
    </name>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   769
  </xsl:variable>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   770
  <xsl:variable name="merge_use_attrs" select="exsl:node-set($_merge_use_attrs)"/>
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
   771
  <xsl:template xmlns="http://www.w3.org/2000/svg" name="unlink_clone">
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   772
    <xsl:param name="targetid"/>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   773
    <xsl:param name="seed" select="''"/>
2969
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   774
    <xsl:variable name="target" select="//svg:*[@id = $targetid]"/>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   775
    <xsl:variable name="seeded_id">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   776
      <xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   777
        <xsl:when test="string-length($seed) &gt; 0">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   778
          <xsl:value-of select="$seed"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   779
          <xsl:text>_</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   780
          <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   781
        </xsl:when>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   782
        <xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   783
          <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   784
        </xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   785
      </xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   786
    </xsl:variable>
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
   787
    <g>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   788
      <xsl:attribute name="id">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   789
        <xsl:value-of select="$seeded_id"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   790
      </xsl:attribute>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   791
      <xsl:attribute name="original">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   792
        <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   793
      </xsl:attribute>
2969
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   794
      <xsl:choose>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   795
        <xsl:when test="$target[self::svg:g]">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   796
          <xsl:for-each select="@*[not(local-name() = $excluded_use_attrs/name | $merge_use_attrs)]">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   797
            <xsl:attribute name="{name()}">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   798
              <xsl:value-of select="."/>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   799
            </xsl:attribute>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   800
          </xsl:for-each>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   801
          <xsl:if test="@style | $target/@style">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   802
            <xsl:attribute name="style">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   803
              <xsl:value-of select="@style"/>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   804
              <xsl:if test="@style and $target/@style">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   805
                <xsl:text>;</xsl:text>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   806
              </xsl:if>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   807
              <xsl:value-of select="$target/@style"/>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   808
            </xsl:attribute>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   809
          </xsl:if>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   810
          <xsl:if test="@transform | $target/@transform">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   811
            <xsl:attribute name="transform">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   812
              <xsl:value-of select="@transform"/>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   813
              <xsl:if test="@transform and $target/@transform">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   814
                <xsl:text> </xsl:text>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   815
              </xsl:if>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   816
              <xsl:value-of select="$target/@transform"/>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   817
            </xsl:attribute>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   818
          </xsl:if>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   819
          <xsl:apply-templates mode="unlink_clone" select="$target/*">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   820
            <xsl:with-param name="seed" select="$seeded_id"/>
2969
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   821
          </xsl:apply-templates>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   822
        </xsl:when>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   823
        <xsl:otherwise>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   824
          <xsl:for-each select="@*[not(local-name() = $excluded_use_attrs/name)]">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   825
            <xsl:attribute name="{name()}">
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   826
              <xsl:value-of select="."/>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   827
            </xsl:attribute>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   828
          </xsl:for-each>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   829
          <xsl:apply-templates mode="unlink_clone" select="$target">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   830
            <xsl:with-param name="seed" select="$seeded_id"/>
2969
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   831
          </xsl:apply-templates>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   832
        </xsl:otherwise>
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
   833
      </xsl:choose>
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
   834
    </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
   835
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   836
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="@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
   837
    <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
   838
    <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
   839
      <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
   840
      <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
   841
      <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
   842
    </xsl:attribute>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   843
    <xsl:attribute name="original">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   844
      <xsl:value-of select="."/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   845
    </xsl:attribute>
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
   846
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   847
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="@*">
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
   848
    <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
   849
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   850
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="svg:use">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   851
    <xsl:param name="seed"/>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   852
    <xsl:variable name="targetid" select="substring-after(@xlink:href,'#')"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   853
    <xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   854
      <xsl:when test="func:is_unlinkable($targetid, @id)">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   855
        <xsl:call-template name="unlink_clone">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   856
          <xsl:with-param name="targetid" select="$targetid"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   857
          <xsl:with-param name="seed" select="$seed"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   858
        </xsl:call-template>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   859
      </xsl:when>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   860
      <xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   861
        <xsl:copy>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   862
          <xsl:apply-templates mode="unlink_clone" select="@*">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   863
            <xsl:with-param name="seed" select="$seed"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   864
          </xsl:apply-templates>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   865
        </xsl:copy>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   866
      </xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
   867
    </xsl:choose>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   868
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   869
  <xsl:template xmlns="http://www.w3.org/2000/svg" mode="unlink_clone" match="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
   870
    <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
   871
    <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
   872
      <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
   873
        <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
   874
          <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
   875
            <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
   876
          </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
   877
        </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
   878
      </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
   879
      <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
   880
        <xsl:copy>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   881
          <xsl:apply-templates mode="unlink_clone" select="@* | node()">
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
   882
            <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
   883
          </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
   884
        </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
   885
      </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
   886
    </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
   887
  </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
   888
  <xsl:variable name="result_svg">
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
   889
    <xsl:apply-templates mode="inline_svg" select="/"/>
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
   890
  </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
   891
  <xsl:variable name="result_svg_ns" select="exsl:node-set($result_svg)"/>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   892
  <preamble:inline-svg/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   893
  <xsl:template match="preamble:inline-svg">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   894
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   895
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   896
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   897
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   898
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   899
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   900
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   901
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   902
    <xsl:text>let id = document.getElementById.bind(document);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   903
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   904
    <xsl:text>var svg_root = id("</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   905
    <xsl:value-of select="$svg/@id"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   906
    <xsl:text>");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   907
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   908
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   909
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   910
  </xsl:template>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   911
  <debug:clone-unlinking/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   912
  <xsl:template match="debug:clone-unlinking">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   913
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   914
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   915
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   916
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   917
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   918
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   919
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   920
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   921
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   922
</xsl:text>
2904
92d115d8828d SVGHMI: collect debug data through xslt reflectivity instead of yml2/python trick
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2903
diff changeset
   923
    <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
   924
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   925
    <xsl:for-each select="$to_unlink">
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   926
      <xsl:value-of select="@id"/>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   927
      <xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   928
</xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   929
    </xsl:for-each>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   930
    <xsl:text>Not to unlink :
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   931
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   932
    <xsl:for-each select="$targets_not_to_unlink">
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   933
      <xsl:value-of select="@id"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   934
      <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   935
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   936
    </xsl:for-each>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   937
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   938
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   939
  </xsl:template>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   940
  <xsl:template mode="extract_i18n" match="svg:tspan">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   941
    <xsl:if test="string-length(.) &gt; 0">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   942
      <line>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   943
        <xsl:value-of select="."/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   944
      </line>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   945
    </xsl:if>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   946
  </xsl:template>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   947
  <xsl:template mode="extract_i18n" match="svg:text">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   948
    <msg>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   949
      <xsl:attribute name="id">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   950
        <xsl:value-of select="@id"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   951
      </xsl:attribute>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   952
      <xsl:attribute name="label">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   953
        <xsl:value-of select="substring(@inkscape:label,2)"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   954
      </xsl:attribute>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   955
      <xsl:apply-templates mode="extract_i18n" select="svg:*"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   956
    </msg>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   957
  </xsl:template>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   958
  <xsl:variable name="translatable_texts" select="//svg:text[starts-with(@inkscape:label, '_')]"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   959
  <xsl:variable name="translatable_strings">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   960
    <xsl:apply-templates mode="extract_i18n" select="$translatable_texts"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   961
  </xsl:variable>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   962
  <preamble:i18n/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   963
  <xsl:template match="preamble:i18n">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   964
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   965
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   966
    <xsl:text>/* </xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   967
    <xsl:value-of select="local-name()"/>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   968
    <xsl:text> */
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   969
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   970
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   971
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
   972
    <xsl:variable name="translations" select="ns:GetTranslations($translatable_strings)"/>
3116
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   973
    <xsl:text>var langs = [</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   974
    <xsl:for-each select="$translations/langs/lang">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   975
      <xsl:value-of select="."/>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   976
      <xsl:if test="position()!=last()">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   977
        <xsl:text>,</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   978
      </xsl:if>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   979
    </xsl:for-each>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   980
    <xsl:text>];
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   981
</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   982
    <xsl:text>var translations = [
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   983
</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   984
    <xsl:for-each select="$translatable_texts">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   985
      <xsl:variable name="n" select="position()"/>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   986
      <xsl:text>  ["</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   987
      <xsl:value-of select="@id"/>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   988
      <xsl:text>",[</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   989
      <xsl:for-each select="$translations/messages/msgid[$n]/msg">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   990
        <xsl:text>"</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   991
        <xsl:for-each select="line">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   992
          <xsl:value-of select="."/>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   993
          <xsl:if test="position()!=last()">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   994
            <xsl:text>\n</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   995
          </xsl:if>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   996
        </xsl:for-each>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   997
        <xsl:text>"</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   998
        <xsl:if test="position()!=last()">
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
   999
          <xsl:text>,</xsl:text>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
  1000
        </xsl:if>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
  1001
      </xsl:for-each>
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
  1002
      <xsl:text>]]</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1003
      <xsl:if test="position()!=last()">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1004
        <xsl:text>,</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1005
      </xsl:if>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1006
      <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1007
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1008
    </xsl:for-each>
3116
6da94ec04325 SVGHMI: i18n: finished passing back translated messaged to xslt proc, finished template to generate corresponding javascript literals.
Edouard Tisserant
parents: 3112
diff changeset
  1009
    <xsl:text>]
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1010
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1011
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1012
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  1013
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1014
  <xsl:template mode="hmi_widgets" match="svg:*">
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
  1015
    <xsl:variable name="widget" select="func:widget(@id)"/>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1016
    <xsl:variable name="eltid" select="@id"/>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1017
    <xsl:variable name="args">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1018
      <xsl:for-each select="$widget/arg">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1019
        <xsl:text>"</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1020
        <xsl:value-of select="func:escape_quotes(@value)"/>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1021
        <xsl:text>"</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1022
        <xsl:if test="position()!=last()">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1023
          <xsl:text>,</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1024
        </xsl:if>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1025
      </xsl:for-each>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1026
    </xsl:variable>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1027
    <xsl:variable name="indexes">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1028
      <xsl:for-each select="$widget/path">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1029
        <xsl:choose>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1030
          <xsl:when test="not(@index)">
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1031
            <xsl:choose>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1032
              <xsl:when test="not(@type)">
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1033
                <xsl:message terminate="no">
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1034
                  <xsl:text>Widget </xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1035
                  <xsl:value-of select="$widget/@type"/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1036
                  <xsl:text> id="</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1037
                  <xsl:value-of select="$eltid"/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1038
                  <xsl:text>" : No match for path "</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1039
                  <xsl:value-of select="@value"/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1040
                  <xsl:text>" in HMI tree</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1041
                </xsl:message>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1042
                <xsl:text>undefined</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1043
              </xsl:when>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1044
              <xsl:when test="@type = 'PAGE_LOCAL'">
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1045
                <xsl:text>"</xsl:text>
3025
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1046
                <xsl:value-of select="@value"/>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1047
                <xsl:text>"</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1048
              </xsl:when>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1049
              <xsl:when test="@type = 'HMI_LOCAL'">
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1050
                <xsl:text>hmi_local_index("</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1051
                <xsl:value-of select="@value"/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1052
                <xsl:text>")</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1053
              </xsl:when>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1054
              <xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1055
                <xsl:message terminate="yes">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1056
                  <xsl:text>Internal error while processing widget's non indexed HMI tree path : unknown type</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1057
                </xsl:message>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1058
              </xsl:otherwise>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1059
            </xsl:choose>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1060
          </xsl:when>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1061
          <xsl:otherwise>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1062
            <xsl:value-of select="@index"/>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1063
          </xsl:otherwise>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1064
        </xsl:choose>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1065
        <xsl:if test="position()!=last()">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1066
          <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1067
        </xsl:if>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1068
      </xsl:for-each>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1069
    </xsl:variable>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1070
    <xsl:variable name="minmaxes">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1071
      <xsl:for-each select="$widget/path">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1072
        <xsl:choose>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1073
          <xsl:when test="@min and @max">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1074
            <xsl:text>[</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1075
            <xsl:value-of select="@min"/>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1076
            <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1077
            <xsl:value-of select="@max"/>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1078
            <xsl:text>]</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1079
          </xsl:when>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1080
          <xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1081
            <xsl:text>undefined</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1082
          </xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1083
        </xsl:choose>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1084
        <xsl:if test="position()!=last()">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1085
          <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1086
        </xsl:if>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1087
      </xsl:for-each>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1088
    </xsl:variable>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1089
    <xsl:text>  "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1090
    <xsl:value-of select="@id"/>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1091
    <xsl:text>": new </xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1092
    <xsl:value-of select="$widget/@type"/>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1093
    <xsl:text>Widget ("</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1094
    <xsl:value-of select="@id"/>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1095
    <xsl:text>",[</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1096
    <xsl:value-of select="$args"/>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1097
    <xsl:text>],[</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1098
    <xsl:value-of select="$indexes"/>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1099
    <xsl:text>],[</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1100
    <xsl:value-of select="$minmaxes"/>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1101
    <xsl:text>],{
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1102
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1103
    <xsl:apply-templates mode="widget_defs" select="$widget">
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1104
      <xsl:with-param name="hmi_element" select="."/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1105
    </xsl:apply-templates>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1106
    <xsl:text>  })</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1107
    <xsl:if test="position()!=last()">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1108
      <xsl:text>,</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1109
    </xsl:if>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1110
    <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
  1111
</xsl:text>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
  1112
  </xsl:template>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1113
  <preamble:local-variable-indexes/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1114
  <xsl:template match="preamble:local-variable-indexes">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1115
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1116
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1117
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1118
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1119
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1120
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1121
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1122
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1123
    <xsl:text>let hmi_locals = {};
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1124
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1125
    <xsl:text>var last_remote_index = hmitree_types.length - 1;
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1126
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1127
    <xsl:text>var next_available_index = hmitree_types.length;
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1128
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1129
    <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1130
</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1131
    <xsl:text>const local_defaults = {
Edouard Tisserant
parents: 3022 3021
diff changeset
  1132
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1133
    <xsl:for-each select="$parsed_widgets/widget[@type = 'VarInit']">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1134
      <xsl:if test="count(path) != 1">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1135
        <xsl:message terminate="yes">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1136
          <xsl:text>VarInit </xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1137
          <xsl:value-of select="@id"/>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1138
          <xsl:text> must have only one variable given.</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1139
        </xsl:message>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1140
      </xsl:if>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1141
      <xsl:if test="path/@type != 'PAGE_LOCAL' and path/@type != 'HMI_LOCAL'">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1142
        <xsl:message terminate="yes">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1143
          <xsl:text>VarInit </xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1144
          <xsl:value-of select="@id"/>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1145
          <xsl:text> only applies to HMI variable.</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1146
        </xsl:message>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1147
      </xsl:if>
3025
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1148
      <xsl:text>"</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1149
      <xsl:value-of select="path/@value"/>
3025
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1150
      <xsl:text>":</xsl:text>
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1151
      <xsl:value-of select="arg[1]/@value"/>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1152
      <xsl:if test="position()!=last()">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1153
        <xsl:text>,</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1154
      </xsl:if>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1155
      <xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1156
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1157
    </xsl:for-each>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1158
    <xsl:text>};
Edouard Tisserant
parents: 3022 3021
diff changeset
  1159
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1160
    <xsl:text>var cache = hmitree_types.map(_ignored =&gt; undefined);
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1161
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1162
    <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1163
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1164
    <xsl:text>function page_local_index(varname, pagename){
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1165
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1166
    <xsl:text>    let pagevars = hmi_locals[pagename];
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1167
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1168
    <xsl:text>    let new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1169
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1170
    <xsl:text>    if(pagevars == undefined){
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1171
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1172
    <xsl:text>        new_index = next_available_index++;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1173
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1174
    <xsl:text>        hmi_locals[pagename] = {[varname]:new_index}
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1175
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1176
    <xsl:text>    } else {
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1177
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1178
    <xsl:text>        let result = pagevars[varname];
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1179
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1180
    <xsl:text>        if(result != undefined) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1181
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1182
    <xsl:text>            return result;
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1183
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1184
    <xsl:text>        }
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1185
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1186
    <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1187
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1188
    <xsl:text>        new_index = next_available_index++;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1189
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1190
    <xsl:text>        pagevars[varname] = new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1191
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1192
    <xsl:text>    }
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1193
</xsl:text>
3025
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1194
    <xsl:text>    let defaultval = local_defaults[varname];
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1195
</xsl:text>
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1196
    <xsl:text>    if(defaultval != undefined) 
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1197
</xsl:text>
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1198
    <xsl:text>        cache[new_index] = defaultval; 
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1199
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1200
    <xsl:text>    return new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1201
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1202
    <xsl:text>}
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1203
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1204
    <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1205
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1206
    <xsl:text>function hmi_local_index(varname){
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1207
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1208
    <xsl:text>    return page_local_index(varname, "HMI_LOCAL");
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1209
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1210
    <xsl:text>}
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1211
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1212
    <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1213
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1214
  </xsl:template>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1215
  <preamble:widget-base-class/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1216
  <xsl:template match="preamble:widget-base-class">
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1217
    <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1218
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1219
    <xsl:text>/* </xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1220
    <xsl:value-of select="local-name()"/>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1221
    <xsl:text> */
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1222
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1223
    <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1224
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1225
    <xsl:text>var pending_widget_animates = [];
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1226
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1227
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1228
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1229
    <xsl:text>class Widget {
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1230
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1231
    <xsl:text>    offset = 0;
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1232
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1233
    <xsl:text>    frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1234
</xsl:text>
2980
2a21d6060d64 SVGHMI: add "unsubscribable" property to widgets in order to generalize what already happens for jump buttons.
Edouard Tisserant
parents: 2979
diff changeset
  1235
    <xsl:text>    unsubscribable = false;
2a21d6060d64 SVGHMI: add "unsubscribable" property to widgets in order to generalize what already happens for jump buttons.
Edouard Tisserant
parents: 2979
diff changeset
  1236
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1237
    <xsl:text>    pending_animate = false;
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1238
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1239
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1240
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1241
    <xsl:text>    constructor(elt_id,args,indexes,minmaxes,members){
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1242
</xsl:text>
2961
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1243
    <xsl:text>        this.element_id = elt_id;
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1244
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1245
    <xsl:text>        this.element = id(elt_id);
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1246
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1247
    <xsl:text>        this.args = args;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1248
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1249
    <xsl:text>        this.indexes = indexes;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1250
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1251
    <xsl:text>        this.minmaxes = minmaxes;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1252
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1253
    <xsl:text>        Object.keys(members).forEach(prop =&gt; this[prop]=members[prop]);
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1254
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1255
    <xsl:text>    }
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1256
</xsl:text>
2961
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1257
    <xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1258
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1259
    <xsl:text>    unsub(){
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1260
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1261
    <xsl:text>        /* remove subsribers */
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1262
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1263
    <xsl:text>        if(!this.unsubscribable)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1264
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1265
    <xsl:text>            for(let i = 0; i &lt; this.indexes.length; i++) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1266
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1267
    <xsl:text>                let index = this.indexes[i];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1268
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1269
    <xsl:text>                if(this.relativeness[i])
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1270
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1271
    <xsl:text>                    index += this.offset;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1272
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1273
    <xsl:text>                subscribers(index).delete(this);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1274
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1275
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1276
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1277
    <xsl:text>        this.offset = 0;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1278
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1279
    <xsl:text>        this.relativeness = undefined;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1280
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1281
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1282
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1283
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1284
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1285
    <xsl:text>    sub(new_offset=0, relativeness, container_id){
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1286
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1287
    <xsl:text>        this.offset = new_offset;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1288
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1289
    <xsl:text>        this.relativeness = relativeness;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1290
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1291
    <xsl:text>        this.container_id = container_id ;
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1292
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1293
    <xsl:text>        /* add this's subsribers */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1294
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1295
    <xsl:text>        if(!this.unsubscribable)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1296
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1297
    <xsl:text>            for(let i = 0; i &lt; this.indexes.length; i++) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1298
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1299
    <xsl:text>                let index = this.get_variable_index(i);
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  1300
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1301
    <xsl:text>                if(index == undefined) continue;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1302
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1303
    <xsl:text>                subscribers(index).add(this);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1304
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1305
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1306
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1307
    <xsl:text>        need_cache_apply.push(this); 
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1308
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1309
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1310
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1311
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1312
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1313
    <xsl:text>    apply_cache() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1314
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1315
    <xsl:text>        if(!this.unsubscribable) for(let index in this.indexes){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1316
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1317
    <xsl:text>            /* dispatch current cache in newly opened page widgets */
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1318
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1319
    <xsl:text>            let realindex = this.get_variable_index(index);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1320
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1321
    <xsl:text>            if(realindex == undefined) continue;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1322
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1323
    <xsl:text>            let cached_val = cache[realindex];
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1324
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1325
    <xsl:text>            if(cached_val != undefined)
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1326
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1327
    <xsl:text>                this._dispatch(cached_val, cached_val, index);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1328
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1329
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1330
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1331
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1332
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1333
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1334
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1335
    <xsl:text>    get_variable_index(varnum) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1336
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1337
    <xsl:text>        let index = this.indexes[varnum];
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1338
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1339
    <xsl:text>        if(typeof(index) == "string"){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1340
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1341
    <xsl:text>            index = page_local_index(index, this.container_id);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1342
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1343
    <xsl:text>        } else {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1344
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1345
    <xsl:text>            if(this.relativeness[varnum]){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1346
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1347
    <xsl:text>                index += this.offset;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1348
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1349
    <xsl:text>            }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1350
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1351
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1352
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1353
    <xsl:text>        return index;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1354
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1355
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1356
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1357
    <xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1358
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1359
    <xsl:text>    overshot(new_val, max) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1360
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1361
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1362
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1363
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1364
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1365
    <xsl:text>    undershot(new_val, min) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1366
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1367
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1368
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1369
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1370
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1371
    <xsl:text>    clip_min_max(index, new_val) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1372
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1373
    <xsl:text>        let minmax = this.minmaxes[index];
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1374
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1375
    <xsl:text>        if(minmax !== undefined &amp;&amp; typeof new_val == "number") {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1376
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1377
    <xsl:text>            let [min,max] = minmax;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1378
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1379
    <xsl:text>            if(new_val &lt; min){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1380
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1381
    <xsl:text>                this.undershot(new_val, min);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1382
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1383
    <xsl:text>                return min;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1384
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1385
    <xsl:text>            }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1386
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1387
    <xsl:text>            if(new_val &gt; max){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1388
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1389
    <xsl:text>                this.overshot(new_val, max);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1390
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1391
    <xsl:text>                return max;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1392
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1393
    <xsl:text>            }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1394
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1395
    <xsl:text>        }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1396
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1397
    <xsl:text>        return new_val;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1398
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1399
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1400
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1401
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1402
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1403
    <xsl:text>    change_hmi_value(index, opstr) {
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1404
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1405
    <xsl:text>        let realindex = this.get_variable_index(index);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1406
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1407
    <xsl:text>        if(realindex == undefined) return undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1408
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1409
    <xsl:text>        let old_val = cache[realindex];
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1410
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1411
    <xsl:text>        let new_val = eval_operation_string(old_val, opstr);
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1412
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1413
    <xsl:text>        new_val = this.clip_min_max(index, new_val);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1414
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  1415
    <xsl:text>        return apply_hmi_value(realindex, new_val);
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1416
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1417
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1418
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1419
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1420
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1421
    <xsl:text>    apply_hmi_value(index, new_val) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1422
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1423
    <xsl:text>        let realindex = this.get_variable_index(index);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1424
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1425
    <xsl:text>        if(realindex == undefined) return undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1426
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1427
    <xsl:text>        new_val = this.clip_min_max(index, new_val);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1428
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1429
    <xsl:text>        return apply_hmi_value(realindex, new_val);
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1430
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1431
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1432
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1433
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1434
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1435
    <xsl:text>    new_hmi_value(index, value, oldval) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1436
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1437
    <xsl:text>        // TODO avoid searching, store index at sub()
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1438
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1439
    <xsl:text>        for(let i = 0; i &lt; this.indexes.length; i++) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1440
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1441
    <xsl:text>            let refindex = this.get_variable_index(i);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1442
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1443
    <xsl:text>            if(refindex == undefined) continue;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1444
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1445
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1446
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1447
    <xsl:text>            if(index == refindex) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1448
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1449
    <xsl:text>                this._dispatch(value, oldval, i);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1450
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1451
    <xsl:text>                break;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1452
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1453
    <xsl:text>            }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1454
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1455
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1456
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1457
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1458
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1459
    <xsl:text>    
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1460
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1461
    <xsl:text>    _dispatch(value, oldval, varnum) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1462
</xsl:text>
3025
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1463
    <xsl:text>        let dispatch = this.dispatch;
48e7e336c052 SVGHMI: HMI:VarInit:"a string"@a_value : empty widget (i.e. empty svg:group) that initialize content of local variables to value given as first argument.
Edouard Tisserant
parents: 3024
diff changeset
  1464
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1465
    <xsl:text>        if(dispatch != undefined){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1466
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1467
    <xsl:text>            try {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1468
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1469
    <xsl:text>                dispatch.call(this, value, oldval, varnum);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1470
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1471
    <xsl:text>            } catch(err) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1472
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1473
    <xsl:text>                console.log(err);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1474
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1475
    <xsl:text>            }
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1476
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1477
    <xsl:text>        }
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1478
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1479
    <xsl:text>    }
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1480
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1481
    <xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1482
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1483
    <xsl:text>    _animate(){
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1484
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1485
    <xsl:text>        this.animate();
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1486
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1487
    <xsl:text>        this.pending_animate = false;
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1488
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1489
    <xsl:text>    }
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1490
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1491
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1492
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1493
    <xsl:text>    request_animate(){
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1494
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1495
    <xsl:text>        if(!this.pending_animate){
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1496
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1497
    <xsl:text>            pending_widget_animates.push(this);
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1498
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1499
    <xsl:text>            this.pending_animate = true;
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1500
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1501
    <xsl:text>            requestHMIAnimation();
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1502
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1503
    <xsl:text>        }
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1504
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1505
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1506
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1507
    <xsl:text>    }
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1508
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1509
    <xsl:text>}
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1510
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1511
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1512
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1513
  </xsl:template>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1514
  <xsl:variable name="excluded_types" select="str:split('Page VarInit')"/>
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1515
  <xsl:key name="TypesKey" match="widget" use="@type"/>
3008
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  1516
  <declarations:hmi-classes/>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  1517
  <xsl:template match="declarations:hmi-classes">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1518
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1519
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1520
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1521
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1522
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1523
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1524
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1525
</xsl:text>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1526
    <xsl:variable name="used_widget_types" select="$parsed_widgets/widget[&#10;                                    generate-id() = generate-id(key('TypesKey', @type)) and &#10;                                    not(@type = $excluded_types)]"/>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1527
    <xsl:apply-templates mode="widget_class" select="$used_widget_types"/>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1528
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1529
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1530
  </xsl:template>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1531
  <xsl:template mode="widget_class" match="widget">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1532
    <xsl:text>class </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1533
    <xsl:value-of select="@type"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1534
    <xsl:text>Widget extends Widget{
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1535
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1536
    <xsl:text>    /* empty class, as </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1537
    <xsl:value-of select="@type"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1538
    <xsl:text> widget didn't provide any */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1539
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1540
    <xsl:text>}
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1541
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1542
  </xsl:template>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  1543
  <xsl:variable name="included_ids" select="$parsed_widgets/widget[not(@type = $excluded_types) and not(@id = $discardable_elements/@id)]/@id"/>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1544
  <xsl:variable name="hmi_widgets" select="$hmi_elements[@id = $included_ids]"/>
3008
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  1545
  <declarations:hmi-elements/>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  1546
  <xsl:template match="declarations:hmi-elements">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1547
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1548
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1549
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1550
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1551
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1552
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1553
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1554
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1555
    <xsl:text>var hmi_widgets = {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1556
</xsl:text>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1557
    <xsl:apply-templates mode="hmi_widgets" select="$hmi_widgets"/>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1558
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1559
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1560
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1561
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1562
  </xsl:template>
2808
dc78ffa5253d SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant
parents: 2807
diff changeset
  1563
  <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
  1564
    <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
  1565
    <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
  1566
    <xsl:param name="subelements" select="/.."/>
2800
68cee1366b9c SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents: 2799
diff changeset
  1567
    <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
  1568
    <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
  1569
    <xsl:for-each select="str:split($labels)">
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  1570
      <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
  1571
      <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
  1572
      <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
  1573
        <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
  1574
          <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
  1575
            <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
  1576
              <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
  1577
              <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
  1578
              <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
  1579
              <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
  1580
            </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
  1581
          </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
  1582
        </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
  1583
        <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
  1584
          <xsl:text>    </xsl:text>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  1585
          <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
  1586
          <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
  1587
          <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
  1588
          <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
  1589
</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
  1590
          <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
  1591
            <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
  1592
            <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
  1593
            <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
  1594
</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
  1595
            <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
  1596
              <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
  1597
              <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
  1598
              <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
  1599
                <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
  1600
                  <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
  1601
                    <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
  1602
                      <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
  1603
                      <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
  1604
                      <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
  1605
                      <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
  1606
                      <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
  1607
                      <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
  1608
                    </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
  1609
                  </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
  1610
                  <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
  1611
                  <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
  1612
                  <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
  1613
                  <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
  1614
                  <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
  1615
</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
  1616
                </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
  1617
                <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
  1618
                  <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
  1619
                  <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
  1620
                  <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
  1621
                  <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
  1622
                  <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
  1623
                  <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
  1624
                    <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
  1625
                  </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
  1626
                  <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
  1627
</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
  1628
                </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
  1629
              </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
  1630
            </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
  1631
            <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
  1632
</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
  1633
          </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
  1634
        </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
  1635
      </xsl:choose>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  1636
    </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
  1637
  </xsl:template>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1638
  <func:function name="func:escape_quotes">
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1639
    <xsl:param name="txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1640
    <xsl:choose>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1641
      <xsl:when test="contains($txt,'&quot;')">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1642
        <func:result select="concat(substring-before($txt,'&quot;'),'\&quot;',func:escape_quotes(substring-after($txt,'&quot;')))"/>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1643
      </xsl:when>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1644
      <xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1645
        <func:result select="$txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1646
      </xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1647
    </xsl:choose>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1648
  </func:function>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1649
  <xsl:template mode="widget_class" match="widget[@type='Animate']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1650
    <xsl:text>class AnimateWidget extends Widget{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1651
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1652
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1653
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1654
    <xsl:text>    speed = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1655
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1656
    <xsl:text>    start = false;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1657
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1658
    <xsl:text>    widget_center = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1659
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1660
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1661
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1662
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1663
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1664
    <xsl:text>        this.speed = value / 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1665
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1666
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1667
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1668
    <xsl:text>        //reconfigure animation
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1669
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1670
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1671
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1672
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1673
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1674
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1675
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1676
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1677
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1678
    <xsl:text>       // change animation properties
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1679
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1680
    <xsl:text>       for(let child of this.element.children){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1681
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1682
    <xsl:text>            if(child.nodeName.startsWith("animate")){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1683
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1684
    <xsl:text>                if(this.speed != 0 &amp;&amp; !this.start){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1685
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1686
    <xsl:text>                    this.start = true;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1687
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1688
    <xsl:text>                    this.element.beginElement();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1689
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1690
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1691
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1692
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1693
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1694
    <xsl:text>                if(this.speed &gt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1695
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1696
    <xsl:text>                    child.setAttribute("dur", this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1697
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1698
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1699
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1700
    <xsl:text>                else if(this.speed &lt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1701
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1702
    <xsl:text>                    child.setAttribute("dur", (-1)*this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1703
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1704
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1705
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1706
    <xsl:text>                else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1707
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1708
    <xsl:text>                    this.start = false;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1709
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1710
    <xsl:text>                    this.element.endElement();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1711
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1712
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1713
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1714
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1715
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1716
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1717
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1718
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1719
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1720
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1721
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1722
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1723
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1724
    <xsl:text>        let widget_pos = this.element.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1725
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1726
    <xsl:text>        this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1727
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1728
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1729
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1730
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1731
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1732
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1733
  <xsl:template mode="widget_defs" match="widget[@type='Animate']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1734
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1735
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1736
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1737
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1738
  <xsl:template mode="widget_class" match="widget[@type='AnimateRotation']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1739
    <xsl:text>class AnimateRotationWidget extends Widget{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1740
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1741
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1742
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1743
    <xsl:text>    speed = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1744
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1745
    <xsl:text>    widget_center = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1746
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1747
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1748
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1749
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1750
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1751
    <xsl:text>        this.speed = value / 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1752
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1753
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1754
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1755
    <xsl:text>        //reconfigure animation
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1756
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1757
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1758
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1759
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1760
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1761
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1762
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1763
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1764
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1765
    <xsl:text>       // change animation properties
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1766
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1767
    <xsl:text>       for(let child of this.element.children){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1768
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1769
    <xsl:text>            if(child.nodeName == "animateTransform"){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1770
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1771
    <xsl:text>                if(this.speed &gt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1772
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1773
    <xsl:text>                    child.setAttribute("dur", this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1774
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1775
    <xsl:text>                    child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1776
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1777
    <xsl:text>                    child.setAttribute("to", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1778
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1779
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1780
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1781
    <xsl:text>                else if(this.speed &lt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1782
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1783
    <xsl:text>                    child.setAttribute("dur", (-1)*this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1784
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1785
    <xsl:text>                    child.setAttribute("from", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1786
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1787
    <xsl:text>                    child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1788
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1789
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1790
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1791
    <xsl:text>                else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1792
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1793
    <xsl:text>                    child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1794
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1795
    <xsl:text>                    child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1796
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1797
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1798
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1799
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1800
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1801
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1802
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1803
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1804
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1805
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1806
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1807
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1808
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1809
    <xsl:text>        let widget_pos = this.element.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1810
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1811
    <xsl:text>        this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1812
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1813
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1814
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1815
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1816
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1817
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1818
  <xsl:template mode="widget_defs" match="widget[@type='AnimateRotation']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1819
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1820
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1821
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1822
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1823
  <xsl:template mode="widget_class" match="widget[@type='Back']">
2961
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1824
    <xsl:text>class BackWidget extends Widget{
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1825
</xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1826
    <xsl:text>    on_click(evt) {
2902
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1827
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1828
    <xsl:text>        if(jump_history.length &gt; 1){
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1829
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1830
    <xsl:text>           jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1831
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1832
    <xsl:text>           let [page_name, index] = jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1833
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1834
    <xsl:text>           switch_page(page_name, index);
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1835
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1836
    <xsl:text>        }
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1837
</xsl:text>
2961
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1838
    <xsl:text>    }
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1839
</xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1840
    <xsl:text>    init() {
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1841
</xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1842
    <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)");
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1843
</xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1844
    <xsl:text>    }
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1845
</xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1846
    <xsl:text>}
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1847
</xsl:text>
00825316ed00 SVGHMI: Update Button widget to class declaration, and add a button widget in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2955
diff changeset
  1848
  </xsl:template>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1849
  <xsl:variable name="_button_fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1850
    <fsm>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1851
      <state name="init">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1852
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1853
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1854
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1855
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1856
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1857
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1858
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1859
      <state name="pressing">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1860
        <hmi-value value="true"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1861
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1862
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1863
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1864
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1865
          <jump state="shortpress"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1866
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1867
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1868
      <state name="pressed">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1869
        <show eltname="active"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1870
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1871
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1872
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1873
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1874
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1875
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1876
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1877
      <state name="shortpress">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1878
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1879
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1880
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1881
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1882
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1883
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1884
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1885
      <state name="releasing">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1886
        <hmi-value value="false"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1887
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1888
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1889
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1890
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1891
          <jump state="shortrelease"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1892
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1893
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1894
      <state name="released">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1895
        <show eltname="inactive"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1896
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1897
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1898
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1899
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1900
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1901
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1902
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1903
      <state name="shortrelease">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1904
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1905
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1906
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1907
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1908
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1909
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1910
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1911
    </fsm>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1912
  </xsl:variable>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1913
  <xsl:template mode="dispatch_transition" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1914
    <xsl:text>        switch (this.state) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1915
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1916
    <xsl:apply-templates mode="dispatch_transition" select="state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1917
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1918
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1919
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1920
  <xsl:template mode="dispatch_transition" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1921
    <xsl:text>          case "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1922
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1923
    <xsl:text>":
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1924
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1925
    <xsl:apply-templates select="on-dispatch"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1926
    <xsl:text>            break;
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1927
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1928
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1929
  <xsl:template match="on-dispatch">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1930
    <xsl:text>            if(value ==  </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1931
    <xsl:value-of select="@value"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1932
    <xsl:text>) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1933
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1934
    <xsl:apply-templates mode="transition" select="jump"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1935
    <xsl:text>            }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1936
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1937
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1938
  <xsl:template mode="mouse_transition" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1939
    <xsl:param name="position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1940
    <xsl:text>        switch (this.state) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1941
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1942
    <xsl:apply-templates mode="mouse_transition" select="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1943
      <xsl:with-param name="position" select="$position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1944
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1945
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1946
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1947
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1948
  <xsl:template mode="mouse_transition" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1949
    <xsl:param name="position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1950
    <xsl:text>          case "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1951
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1952
    <xsl:text>":
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1953
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1954
    <xsl:apply-templates select="on-mouse[@position = $position]"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1955
    <xsl:text>            break;
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1956
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1957
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1958
  <xsl:template match="on-mouse">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1959
    <xsl:apply-templates mode="transition" select="jump"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1960
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1961
  <xsl:template mode="transition" match="jump">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1962
    <xsl:text>            this.state = "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1963
    <xsl:value-of select="@state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1964
    <xsl:text>";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1965
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1966
    <xsl:text>            this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1967
    <xsl:value-of select="@state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1968
    <xsl:text>_action();
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1969
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1970
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1971
  <xsl:template mode="actions" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1972
    <xsl:apply-templates mode="actions" select="state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1973
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1974
  <xsl:template mode="actions" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1975
    <xsl:text>    </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1976
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1977
    <xsl:text>_action(){
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1978
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1979
    <xsl:apply-templates mode="actions" select="*"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1980
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1981
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1982
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1983
  <xsl:template mode="actions" match="show">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1984
    <xsl:text>        this.display = "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1985
    <xsl:value-of select="@eltname"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1986
    <xsl:text>";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1987
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1988
    <xsl:text>        this.request_animate();
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1989
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1990
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1991
  <xsl:template mode="actions" match="hmi-value">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1992
    <xsl:text>        this.apply_hmi_value(0, </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1993
    <xsl:value-of select="@value"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1994
    <xsl:text>);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1995
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1996
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1997
  <xsl:template mode="widget_class" match="widget[@type='Button']">
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  1998
    <xsl:variable name="fsm" select="exsl:node-set($_button_fsm)"/>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1999
    <xsl:text>class ButtonWidget extends Widget{
Edouard Tisserant
parents: 3022 3021
diff changeset
  2000
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  2001
    <xsl:text>    frequency = 5;
Edouard Tisserant
parents: 3022 3021
diff changeset
  2002
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2003
    <xsl:text>    display = "inactive";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2004
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2005
    <xsl:text>    state = "init";
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2006
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  2007
    <xsl:text>    dispatch(value) {
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  2008
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2009
    <xsl:apply-templates mode="dispatch_transition" select="$fsm"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2010
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2011
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2012
    <xsl:text>    onmouseup(evt) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2013
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2014
    <xsl:text>        svg_root.removeEventListener("pointerup", this.bound_onmouseup, true);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2015
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2016
    <xsl:apply-templates mode="mouse_transition" select="$fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2017
      <xsl:with-param name="position" select="'up'"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2018
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2019
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2020
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2021
    <xsl:text>    onmousedown(evt) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2022
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2023
    <xsl:text>        svg_root.addEventListener("pointerup", this.bound_onmouseup, true);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2024
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2025
    <xsl:apply-templates mode="mouse_transition" select="$fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2026
      <xsl:with-param name="position" select="'down'"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2027
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2028
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2029
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2030
    <xsl:apply-templates mode="actions" select="$fsm"/>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2031
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2032
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2033
    <xsl:text>        if (this.active_elt &amp;&amp; this.inactive_elt) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2034
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2035
    <xsl:for-each select="str:split('active inactive')">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2036
      <xsl:text>            if(this.display == "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2037
      <xsl:value-of select="."/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2038
      <xsl:text>")
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2039
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2040
      <xsl:text>                this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2041
      <xsl:value-of select="."/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2042
      <xsl:text>_elt.style.display = "";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2043
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2044
      <xsl:text>            else
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2045
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2046
      <xsl:text>                this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2047
      <xsl:value-of select="."/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2048
      <xsl:text>_elt.style.display = "none";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2049
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2050
    </xsl:for-each>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2051
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2052
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2053
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2054
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2055
    <xsl:text>    init() {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2056
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2057
    <xsl:text>        this.bound_onmouseup = this.onmouseup.bind(this);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2058
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2059
    <xsl:text>        this.element.addEventListener("pointerdown", this.onmousedown.bind(this));
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2060
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2061
    <xsl:text>    }
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2062
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  2063
    <xsl:text>}
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2064
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2065
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  2066
  <xsl:template mode="widget_defs" match="widget[@type='Button']">
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2067
    <xsl:param name="hmi_element"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2068
    <xsl:call-template name="defs_by_labels">
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2069
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2070
      <xsl:with-param name="labels">
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2071
        <xsl:text>active inactive</xsl:text>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2072
      </xsl:with-param>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2073
      <xsl:with-param name="mandatory" select="'no'"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2074
    </xsl:call-template>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2075
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2076
  <xsl:template mode="widget_class" match="widget[@type='CircularBar']">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2077
    <xsl:text>class CircularBarWidget extends Widget{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2078
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2079
    <xsl:text>    frequency = 10;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2080
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2081
    <xsl:text>    range = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2082
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2083
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2084
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2085
    <xsl:text>    dispatch(value) {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2086
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2087
    <xsl:text>        this.display_val = value;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2088
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2089
    <xsl:text>        this.request_animate();
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2090
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2091
    <xsl:text>    }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2092
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2093
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2094
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2095
    <xsl:text>    animate(){
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2096
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2097
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2098
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2099
    <xsl:text>            this.value_elt.textContent = String(this.display_val);
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2100
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2101
    <xsl:text>        let [min,max,start,end] = this.range;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2102
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2103
    <xsl:text>        let [cx,cy] = this.center;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2104
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2105
    <xsl:text>        let [rx,ry] = this.proportions;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2106
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2107
    <xsl:text>        let tip = start + (end-start)*Number(this.display_val)/(max-min);
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2108
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2109
    <xsl:text>        let size = 0;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2110
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2111
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2112
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2113
    <xsl:text>        if (tip-start &gt; Math.PI)
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2114
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2115
    <xsl:text>            size = 1;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2116
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2117
    <xsl:text>        else
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2118
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2119
    <xsl:text>            size = 0;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2120
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2121
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2122
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2123
    <xsl:text>        this.path_elt.setAttribute('d', "M "+(cx+rx*Math.cos(start))+","+(cy+ry*Math.sin(start))+
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2124
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2125
    <xsl:text>                                        " A "+rx+","+ry+
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2126
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2127
    <xsl:text>                                        " 0 "+size+
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2128
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2129
    <xsl:text>                                        " 1 "+(cx+rx*Math.cos(tip))+","+(cy+ry*Math.sin(tip)));
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2130
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2131
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2132
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2133
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2134
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2135
    <xsl:text>    init() {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2136
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2137
    <xsl:text>        let [start, end, cx, cy, rx, ry] = ["start", "end", "cx", "cy", "rx", "ry"].
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2138
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2139
    <xsl:text>            map(tag=&gt;Number(this.path_elt.getAttribute('sodipodi:'+tag)))
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2140
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2141
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2142
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2143
    <xsl:text>        if (ry == 0) 
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2144
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2145
    <xsl:text>            ry = rx;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2146
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2147
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2148
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2149
    <xsl:text>        if (start &gt; end)
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2150
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2151
    <xsl:text>            end = end + 2*Math.PI;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2152
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2153
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2154
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2155
    <xsl:text>        let [min,max] = [[this.min_elt,0],[this.max_elt,100]].map(([elt,def],i)=&gt;elt?
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2156
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2157
    <xsl:text>            Number(elt.textContent) :
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2158
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2159
    <xsl:text>            this.args.length &gt;= i+1 ? this.args[i] : def);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2160
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  2161
    <xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2162
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2163
    <xsl:text>        this.range = [min, max, start, end];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2164
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2165
    <xsl:text>        this.center = [cx, cy];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2166
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2167
    <xsl:text>        this.proportions = [rx, ry];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2168
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2169
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2170
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2171
    <xsl:text>}
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2172
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2173
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  2174
  <xsl:template mode="widget_defs" match="widget[@type='CircularBar']">
2944
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2175
    <xsl:param name="hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2176
    <xsl:call-template name="defs_by_labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2177
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2178
      <xsl:with-param name="labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2179
        <xsl:text>path</xsl:text>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2180
      </xsl:with-param>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2181
    </xsl:call-template>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2182
    <xsl:call-template name="defs_by_labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2183
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2184
      <xsl:with-param name="labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2185
        <xsl:text>value min max</xsl:text>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2186
      </xsl:with-param>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2187
      <xsl:with-param name="mandatory" select="'no'"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2188
    </xsl:call-template>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2189
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  2190
  <xsl:template mode="widget_class" match="widget[@type='CircularSlider']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2191
    <xsl:text>class CircularSliderWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2192
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2193
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2194
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2195
    <xsl:text>    range = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2196
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2197
    <xsl:text>    circle = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2198
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2199
    <xsl:text>    handle_pos = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2200
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2201
    <xsl:text>    curr_value = 0;
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2202
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2203
    <xsl:text>    drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2204
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2205
    <xsl:text>    enTimer = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2206
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2207
    <xsl:text>    last_drag = false;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2208
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2209
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2210
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2211
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2212
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2213
    <xsl:text>        let [min,max,start,totallength] = this.range;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2214
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2215
    <xsl:text>        //save current value inside widget
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2216
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2217
    <xsl:text>        this.curr_value = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2218
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2219
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2220
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2221
    <xsl:text>        //check if in range
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2222
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2223
    <xsl:text>        if (this.curr_value &gt; max){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2224
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2225
    <xsl:text>            this.curr_value = max;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2226
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2227
    <xsl:text>            this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2228
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2229
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2230
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2231
    <xsl:text>        else if (this.curr_value &lt; min){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2232
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2233
    <xsl:text>            this.curr_value = min;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2234
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2235
    <xsl:text>            this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2236
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2237
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2238
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2239
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2240
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2241
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2242
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2243
    <xsl:text>            this.value_elt.textContent = String(value);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2244
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2245
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2246
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2247
    <xsl:text>        //don't update if draging and setpoint ghost doesn't exist
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2248
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2249
    <xsl:text>        if(!this.drag || (this.setpoint_elt != undefined)){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2250
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2251
    <xsl:text>            this.update_DOM(value, this.handle_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2252
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2253
    <xsl:text>        }
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2254
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2255
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2256
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2257
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2258
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2259
    <xsl:text>    update_DOM(value, elt){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2260
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2261
    <xsl:text>        let [min,max,totalDistance] = this.range;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2262
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2263
    <xsl:text>        let length = Math.max(0,Math.min((totalDistance),(Number(value)-min)/(max-min)*(totalDistance)));
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2264
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2265
    <xsl:text>        let tip = this.range_elt.getPointAtLength(length);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2266
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2267
    <xsl:text>        elt.setAttribute('transform',"translate("+(tip.x-this.handle_pos.x)+","+(tip.y-this.handle_pos.y)+")");
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2268
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2269
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2270
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2271
    <xsl:text>        // show or hide ghost if exists
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2272
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2273
    <xsl:text>        if(this.setpoint_elt != undefined){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2274
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2275
    <xsl:text>            if(this.last_drag!= this.drag){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2276
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2277
    <xsl:text>                if(this.drag){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2278
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2279
    <xsl:text>                    this.setpoint_elt.setAttribute("style", this.setpoint_style);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2280
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2281
    <xsl:text>                }else{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2282
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2283
    <xsl:text>                    this.setpoint_elt.setAttribute("style", "display:none");
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2284
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2285
    <xsl:text>                }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2286
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2287
    <xsl:text>                this.last_drag = this.drag;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2288
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2289
    <xsl:text>            }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2290
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2291
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2292
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2293
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2294
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2295
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2296
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2297
    <xsl:text>    on_release(evt) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2298
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2299
    <xsl:text>        //unbind events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2300
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2301
    <xsl:text>        window.removeEventListener("touchmove", this.on_bound_drag, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2302
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2303
    <xsl:text>        window.removeEventListener("mousemove", this.on_bound_drag, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2304
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2305
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2306
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2307
    <xsl:text>        window.removeEventListener("mouseup", this.bound_on_release, true)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2308
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2309
    <xsl:text>        window.removeEventListener("touchend", this.bound_on_release, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2310
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2311
    <xsl:text>        window.removeEventListener("touchcancel", this.bound_on_release, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2312
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2313
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2314
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2315
    <xsl:text>        //reset drag flag
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2316
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2317
    <xsl:text>        if(this.drag){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2318
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2319
    <xsl:text>            this.drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2320
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2321
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2322
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2323
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2324
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2325
    <xsl:text>        // get final position
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2326
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2327
    <xsl:text>        this.update_position(evt);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2328
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2329
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2330
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2331
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2332
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2333
    <xsl:text>    on_drag(evt){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2334
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2335
    <xsl:text>        //ignore drag event for X amount of time and if not selected
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2336
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2337
    <xsl:text>        if(this.enTimer &amp;&amp; this.drag){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2338
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2339
    <xsl:text>            this.update_position(evt);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2340
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2341
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2342
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2343
    <xsl:text>            //reset timer
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2344
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2345
    <xsl:text>            this.enTimer = false;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2346
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2347
    <xsl:text>            setTimeout("{hmi_widgets['"+this.element_id+"'].enTimer = true;}", 100);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2348
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2349
    <xsl:text>        }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2350
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2351
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2352
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2353
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2354
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2355
    <xsl:text>    update_position(evt){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2356
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2357
    <xsl:text>        if(this.drag &amp;&amp; this.enTimer){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2358
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2359
    <xsl:text>            var svg_dist = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2360
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2361
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2362
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2363
    <xsl:text>            //calculate center of widget in html
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2364
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2365
    <xsl:text>            // --TODO maybe it would be better to bind this part to window change size event ???
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2366
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2367
    <xsl:text>            let [xdest,ydest,svgWidth,svgHeight] = page_desc[current_visible_page].bbox;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2368
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2369
    <xsl:text>            let [cX, cY,fiStart,fiEnd,minMax,x1,y1,width,height] = this.circle;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2370
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2371
    <xsl:text>            let htmlCirc = this.range_elt.getBoundingClientRect();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2372
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2373
    <xsl:text>            let cxHtml = ((htmlCirc.right-htmlCirc.left)/(width)*(cX-x1))+htmlCirc.left;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2374
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2375
    <xsl:text>            let cyHtml = ((htmlCirc.bottom-htmlCirc.top)/(height)*(cY-y1))+htmlCirc.top;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2376
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2377
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2378
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2379
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2380
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2381
    <xsl:text>            //get mouse coordinates
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2382
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2383
    <xsl:text>            let mouseX = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2384
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2385
    <xsl:text>            let mouseY = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2386
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2387
    <xsl:text>            if (evt.type.startsWith("touch")){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2388
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2389
    <xsl:text>                mouseX = Math.ceil(evt.touches[0].clientX);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2390
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2391
    <xsl:text>                mouseY = Math.ceil(evt.touches[0].clientY);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2392
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2393
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2394
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2395
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2396
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2397
    <xsl:text>                mouseX = evt.pageX;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2398
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2399
    <xsl:text>                mouseY = evt.pageY;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2400
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2401
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2402
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2403
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2404
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2405
    <xsl:text>            //calculate angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2406
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2407
    <xsl:text>            let fi = Math.atan2(cyHtml-mouseY, mouseX-cxHtml);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2408
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2409
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2410
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2411
    <xsl:text>            // transform from 0 to 2PI
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2412
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2413
    <xsl:text>            if (fi &gt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2414
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2415
    <xsl:text>                fi = 2*Math.PI-fi;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2416
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2417
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2418
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2419
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2420
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2421
    <xsl:text>                fi = -fi;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2422
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2423
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2424
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2425
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2426
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2427
    <xsl:text>            //offset it to 0
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2428
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2429
    <xsl:text>            fi = fi - fiStart;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2430
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2431
    <xsl:text>            if (fi &lt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2432
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2433
    <xsl:text>                fi = fi + 2*Math.PI;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2434
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2435
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2436
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2437
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2438
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2439
    <xsl:text>            //get handle distance from mouse position
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2440
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2441
    <xsl:text>            if(fi&lt;fiEnd){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2442
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2443
    <xsl:text>               this.curr_value=(fi)/(fiEnd)*(this.range[1]-this.range[0]);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2444
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2445
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2446
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2447
    <xsl:text>            else if(fiEnd&lt;fi &amp;&amp; fi&lt;fiEnd+minMax){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2448
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2449
    <xsl:text>                this.curr_value = this.range[1];
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2450
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2451
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2452
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2453
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2454
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2455
    <xsl:text>                this.curr_value = this.range[0];
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2456
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2457
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2458
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2459
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2460
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2461
    <xsl:text>            //apply value to hmi
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2462
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2463
    <xsl:text>            this.apply_hmi_value(0, Math.ceil(this.curr_value));
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2464
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2465
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2466
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2467
    <xsl:text>            //redraw handle
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2468
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2469
    <xsl:text>            this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2470
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2471
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2472
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2473
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2474
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2475
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2476
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2477
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2478
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2479
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2480
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2481
    <xsl:text>    animate(){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2482
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2483
    <xsl:text>        // redraw handle on screen refresh
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2484
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2485
    <xsl:text>        // check if setpoint(ghost) handle exsist otherwise update main handle
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2486
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2487
    <xsl:text>        if(this.setpoint_elt != undefined){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2488
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2489
    <xsl:text>            this.update_DOM(this.curr_value, this.setpoint_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2490
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2491
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2492
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2493
    <xsl:text>        else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2494
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2495
    <xsl:text>            this.update_DOM(this.curr_value, this.handle_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2496
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2497
    <xsl:text>        }
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2498
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2499
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2500
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2501
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2502
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2503
    <xsl:text>    on_select(evt){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2504
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2505
    <xsl:text>        //enable drag flag and timer
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2506
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2507
    <xsl:text>        this.drag = true;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2508
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2509
    <xsl:text>        this.enTimer = true;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2510
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2511
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2512
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2513
    <xsl:text>        //bind events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2514
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2515
    <xsl:text>        window.addEventListener("touchmove", this.on_bound_drag, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2516
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2517
    <xsl:text>        window.addEventListener("mousemove", this.on_bound_drag, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2518
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2519
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2520
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2521
    <xsl:text>        window.addEventListener("mouseup", this.bound_on_release, true);
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2522
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2523
    <xsl:text>        window.addEventListener("touchend", this.bound_on_release, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2524
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2525
    <xsl:text>        window.addEventListener("touchcancel", this.bound_on_release, true);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2526
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2527
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2528
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2529
    <xsl:text>        //update postion on mouse press
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2530
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2531
    <xsl:text>        this.update_position(evt);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2532
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2533
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2534
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2535
    <xsl:text>        //prevent next events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2536
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2537
    <xsl:text>        evt.stopPropagation();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2538
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2539
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2540
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2541
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2542
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2543
    <xsl:text>    init() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2544
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2545
    <xsl:text>        //get min max
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2546
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2547
    <xsl:text>        let min = this.min_elt ?
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2548
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2549
    <xsl:text>                    Number(this.min_elt.textContent) :
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2550
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2551
    <xsl:text>                    this.args.length &gt;= 1 ? this.args[0] : 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2552
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2553
    <xsl:text>        let max = this.max_elt ?
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2554
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2555
    <xsl:text>                    Number(this.max_elt.textContent) :
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2556
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2557
    <xsl:text>                    this.args.length &gt;= 2 ? this.args[1] : 100;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2558
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2559
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2560
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2561
    <xsl:text>        //fiStart ==&gt; offset
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2562
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2563
    <xsl:text>        let fiStart = Number(this.range_elt.getAttribute('sodipodi:start'));
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2564
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2565
    <xsl:text>        let fiEnd = Number(this.range_elt.getAttribute('sodipodi:end'));
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2566
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2567
    <xsl:text>        fiEnd = fiEnd - fiStart;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2568
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2569
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2570
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2571
    <xsl:text>        //fiEnd ==&gt; size of angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2572
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2573
    <xsl:text>        if (fiEnd &lt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2574
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2575
    <xsl:text>            fiEnd = 2*Math.PI + fiEnd;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2576
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2577
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2578
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2579
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2580
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2581
    <xsl:text>        //min max barrier angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2582
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2583
    <xsl:text>        let minMax = (2*Math.PI - fiEnd)/2;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2584
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2585
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2586
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2587
    <xsl:text>        //get parameters from svg
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2588
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2589
    <xsl:text>        let cX = Number(this.range_elt.getAttribute('sodipodi:cx'));
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2590
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2591
    <xsl:text>        let cY = Number(this.range_elt.getAttribute('sodipodi:cy'));
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2592
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2593
    <xsl:text>        this.range_elt.style.strokeMiterlimit="0"; //eliminates some weird border around html object
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2594
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2595
    <xsl:text>        this.range = [min, max,this.range_elt.getTotalLength()];
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2596
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2597
    <xsl:text>        let cPos = this.range_elt.getBBox();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2598
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2599
    <xsl:text>        this.handle_pos = this.range_elt.getPointAtLength(0);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2600
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2601
    <xsl:text>        this.circle = [cX, cY,fiStart,fiEnd,minMax,cPos.x,cPos.y,cPos.width,cPos.height];
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2602
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2603
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2604
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2605
    <xsl:text>        //bind functions
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2606
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2607
    <xsl:text>        this.bound_on_select = this.on_select.bind(this);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2608
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2609
    <xsl:text>        this.bound_on_release = this.on_release.bind(this);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2610
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2611
    <xsl:text>        this.on_bound_drag = this.on_drag.bind(this);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2612
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2613
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2614
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2615
    <xsl:text>        this.handle_elt.addEventListener("mousedown", this.bound_on_select);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2616
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2617
    <xsl:text>        this.element.addEventListener("mousedown", this.bound_on_select);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2618
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2619
    <xsl:text>        this.element.addEventListener("touchstart", this.bound_on_select);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2620
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2621
    <xsl:text>        //touch recognised as page drag without next command
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2622
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2623
    <xsl:text>        document.body.addEventListener("touchstart", function(e){}, false);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2624
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2625
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2626
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2627
    <xsl:text>        //save ghost style
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2628
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2629
    <xsl:text>        //save ghost style
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2630
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2631
    <xsl:text>        if(this.setpoint_elt != undefined){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2632
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2633
    <xsl:text>            this.setpoint_style = this.setpoint_elt.getAttribute("style");
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2634
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2635
    <xsl:text>            this.setpoint_elt.setAttribute("style", "display:none");
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2636
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2637
    <xsl:text>        }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2638
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2639
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2640
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2641
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2642
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2643
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2644
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2645
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  2646
  <xsl:template mode="widget_defs" match="widget[@type='CircularSlider']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2647
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2648
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2649
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2650
      <xsl:with-param name="labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2651
        <xsl:text>handle range</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2652
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2653
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2654
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2655
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2656
      <xsl:with-param name="labels">
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2657
        <xsl:text>value min max setpoint</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2658
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2659
      <xsl:with-param name="mandatory" select="'no'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2660
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2661
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2662
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2663
  </xsl:template>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2664
  <xsl:template mode="widget_class" match="widget[@type='CustomHtml']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2665
    <xsl:text>class CustomHtmlWidget extends Widget{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2666
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2667
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2668
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2669
    <xsl:text>    widget_size = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2670
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2671
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2672
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2673
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2674
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2675
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2676
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2677
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2678
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2679
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2680
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2681
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2682
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2683
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2684
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2685
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2686
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2687
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2688
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2689
    <xsl:text>        this.widget_size = this.container_elt.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2690
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2691
    <xsl:text>        this.element.innerHTML ='&lt;foreignObject x="'+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2692
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2693
    <xsl:text>            this.widget_size.x+'" y="'+this.widget_size.y+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2694
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2695
    <xsl:text>            '" width="'+this.widget_size.width+'" height="'+this.widget_size.height+'"&gt; '+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2696
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2697
    <xsl:text>            this.code_elt.textContent+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2698
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2699
    <xsl:text>            ' &lt;/foreignObject&gt;';
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2700
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2701
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2702
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2703
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2704
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2705
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2706
  <xsl:template mode="widget_defs" match="widget[@type='CustomHtml']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2707
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2708
    <xsl:call-template name="defs_by_labels">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2709
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2710
      <xsl:with-param name="labels">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2711
        <xsl:text>container code</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2712
      </xsl:with-param>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2713
    </xsl:call-template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2714
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2715
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2716
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  2717
  <xsl:template mode="widget_class" match="widget[@type='Display']">
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2718
    <xsl:text>class DisplayWidget extends Widget{
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2719
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2720
    <xsl:text>    frequency = 5;
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2721
</xsl:text>
3008
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2722
    <xsl:text>    dispatch(value, oldval, index) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2723
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2724
    <xsl:text>        this.fields[index] = value;    
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2725
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2726
    <xsl:text>        this.element.textContent = this.args.length == 1 ? vsprintf(this.args[0],this.fields) : this.fields.join(' ');
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2727
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2728
    <xsl:text>    }
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2729
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2730
    <xsl:text>}
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2731
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2732
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  2733
  <xsl:template mode="widget_defs" match="widget[@type='Display']">
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
  2734
    <xsl:param name="hmi_element"/>
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2735
    <xsl:if test="$hmi_element[not(self::svg:text)]">
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2736
      <xsl:message terminate="yes">
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2737
        <xsl:text>Display Widget id="</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2738
        <xsl:value-of select="$hmi_element/@id"/>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2739
        <xsl:text>" is not a svg::text element</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2740
      </xsl:message>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2741
    </xsl:if>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2742
    <xsl:variable name="field_initializer">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2743
      <xsl:for-each select="path">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2744
        <xsl:choose>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2745
          <xsl:when test="@type='HMI_STRING'">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2746
            <xsl:text>""</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2747
          </xsl:when>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2748
          <xsl:otherwise>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2749
            <xsl:text>0</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2750
          </xsl:otherwise>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2751
        </xsl:choose>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2752
        <xsl:if test="position()!=last()">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2753
          <xsl:text>,</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2754
        </xsl:if>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2755
      </xsl:for-each>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2756
    </xsl:variable>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2757
    <xsl:text>    fields: [</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2758
    <xsl:value-of select="$field_initializer"/>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2759
    <xsl:text>],
3008
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2760
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2761
  </xsl:template>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2762
  <preamble:display/>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2763
  <xsl:template match="preamble:display">
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2764
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2765
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2766
    <xsl:text>/* </xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2767
    <xsl:value-of select="local-name()"/>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2768
    <xsl:text> */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2769
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2770
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2771
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2772
    <xsl:text>/* https://github.com/alexei/sprintf.js/blob/master/src/sprintf.js */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2773
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2774
    <xsl:text>/* global window, exports, define */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2775
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2776
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2777
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2778
    <xsl:text>!function() {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2779
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2780
    <xsl:text>    'use strict'
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2781
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2782
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2783
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2784
    <xsl:text>    var re = {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2785
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2786
    <xsl:text>        not_string: /[^s]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2787
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2788
    <xsl:text>        not_bool: /[^t]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2789
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2790
    <xsl:text>        not_type: /[^T]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2791
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2792
    <xsl:text>        not_primitive: /[^v]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2793
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2794
    <xsl:text>        number: /[diefg]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2795
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2796
    <xsl:text>        numeric_arg: /[bcdiefguxX]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2797
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2798
    <xsl:text>        json: /[j]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2799
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2800
    <xsl:text>        not_json: /[^j]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2801
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2802
    <xsl:text>        text: /^[^%]+/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2803
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2804
    <xsl:text>        modulo: /^%{2}/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2805
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2806
    <xsl:text>        placeholder: /^%(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2807
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2808
    <xsl:text>        key: /^([a-z_][a-z_\d]*)/i,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2809
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2810
    <xsl:text>        key_access: /^\.([a-z_][a-z_\d]*)/i,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2811
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2812
    <xsl:text>        index_access: /^\[(\d+)\]/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2813
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2814
    <xsl:text>        sign: /^[+-]/
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2815
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2816
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2817
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2818
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2819
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2820
    <xsl:text>    function sprintf(key) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2821
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2822
    <xsl:text>        // </xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2823
    <arguments/>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2824
    <xsl:text> is not an array, but should be fine for this call
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2825
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2826
    <xsl:text>        return sprintf_format(sprintf_parse(key), arguments)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2827
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2828
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2829
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2830
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2831
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2832
    <xsl:text>    function vsprintf(fmt, argv) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2833
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2834
    <xsl:text>        return sprintf.apply(null, [fmt].concat(argv || []))
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2835
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2836
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2837
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2838
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2839
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2840
    <xsl:text>    function sprintf_format(parse_tree, argv) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2841
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2842
    <xsl:text>        var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2843
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2844
    <xsl:text>        for (i = 0; i &lt; tree_length; i++) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2845
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2846
    <xsl:text>            if (typeof parse_tree[i] === 'string') {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2847
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2848
    <xsl:text>                output += parse_tree[i]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2849
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2850
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2851
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2852
    <xsl:text>            else if (typeof parse_tree[i] === 'object') {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2853
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2854
    <xsl:text>                ph = parse_tree[i] // convenience purposes only
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2855
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2856
    <xsl:text>                if (ph.keys) { // keyword argument
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2857
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2858
    <xsl:text>                    arg = argv[cursor]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2859
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2860
    <xsl:text>                    for (k = 0; k &lt; ph.keys.length; k++) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2861
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2862
    <xsl:text>                        if (arg == undefined) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2863
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2864
    <xsl:text>                            throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2865
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2866
    <xsl:text>                        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2867
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2868
    <xsl:text>                        arg = arg[ph.keys[k]]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2869
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2870
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2871
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2872
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2873
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2874
    <xsl:text>                else if (ph.param_no) { // positional argument (explicit)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2875
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2876
    <xsl:text>                    arg = argv[ph.param_no]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2877
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2878
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2879
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2880
    <xsl:text>                else { // positional argument (implicit)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2881
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2882
    <xsl:text>                    arg = argv[cursor++]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2883
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2884
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2885
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2886
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2887
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2888
    <xsl:text>                if (re.not_type.test(ph.type) &amp;&amp; re.not_primitive.test(ph.type) &amp;&amp; arg instanceof Function) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2889
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2890
    <xsl:text>                    arg = arg()
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2891
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2892
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2893
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2894
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2895
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2896
    <xsl:text>                if (re.numeric_arg.test(ph.type) &amp;&amp; (typeof arg !== 'number' &amp;&amp; isNaN(arg))) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2897
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2898
    <xsl:text>                    throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2899
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2900
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2901
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2902
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2903
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2904
    <xsl:text>                if (re.number.test(ph.type)) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2905
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2906
    <xsl:text>                    is_positive = arg &gt;= 0
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2907
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2908
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2909
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2910
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2911
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2912
    <xsl:text>                switch (ph.type) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2913
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2914
    <xsl:text>                    case 'b':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2915
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2916
    <xsl:text>                        arg = parseInt(arg, 10).toString(2)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2917
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2918
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2919
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2920
    <xsl:text>                    case 'c':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2921
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2922
    <xsl:text>                        arg = String.fromCharCode(parseInt(arg, 10))
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2923
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2924
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2925
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2926
    <xsl:text>                    case 'd':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2927
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2928
    <xsl:text>                    case 'i':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2929
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2930
    <xsl:text>                        arg = parseInt(arg, 10)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2931
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2932
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2933
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2934
    <xsl:text>                    case 'j':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2935
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2936
    <xsl:text>                        arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2937
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2938
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2939
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2940
    <xsl:text>                    case 'e':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2941
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2942
    <xsl:text>                        arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2943
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2944
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2945
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2946
    <xsl:text>                    case 'f':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2947
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2948
    <xsl:text>                        arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2949
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2950
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2951
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2952
    <xsl:text>                    case 'g':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2953
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2954
    <xsl:text>                        arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2955
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2956
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2957
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2958
    <xsl:text>                    case 'o':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2959
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2960
    <xsl:text>                        arg = (parseInt(arg, 10) &gt;&gt;&gt; 0).toString(8)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2961
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2962
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2963
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2964
    <xsl:text>                    case 's':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2965
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2966
    <xsl:text>                        arg = String(arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2967
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2968
    <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2969
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2970
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2971
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2972
    <xsl:text>                    case 't':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2973
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2974
    <xsl:text>                        arg = String(!!arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2975
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2976
    <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2977
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2978
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2979
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2980
    <xsl:text>                    case 'T':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2981
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2982
    <xsl:text>                        arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2983
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2984
    <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2985
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2986
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2987
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2988
    <xsl:text>                    case 'u':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2989
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2990
    <xsl:text>                        arg = parseInt(arg, 10) &gt;&gt;&gt; 0
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2991
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2992
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2993
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2994
    <xsl:text>                    case 'v':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2995
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2996
    <xsl:text>                        arg = arg.valueOf()
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2997
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2998
    <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2999
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3000
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3001
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3002
    <xsl:text>                    case 'x':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3003
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3004
    <xsl:text>                        arg = (parseInt(arg, 10) &gt;&gt;&gt; 0).toString(16)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3005
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3006
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3007
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3008
    <xsl:text>                    case 'X':
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3009
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3010
    <xsl:text>                        arg = (parseInt(arg, 10) &gt;&gt;&gt; 0).toString(16).toUpperCase()
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3011
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3012
    <xsl:text>                        break
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3013
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3014
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3015
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3016
    <xsl:text>                if (re.json.test(ph.type)) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3017
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3018
    <xsl:text>                    output += arg
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3019
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3020
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3021
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3022
    <xsl:text>                else {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3023
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3024
    <xsl:text>                    if (re.number.test(ph.type) &amp;&amp; (!is_positive || ph.sign)) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3025
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3026
    <xsl:text>                        sign = is_positive ? '+' : '-'
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3027
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3028
    <xsl:text>                        arg = arg.toString().replace(re.sign, '')
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3029
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3030
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3031
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3032
    <xsl:text>                    else {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3033
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3034
    <xsl:text>                        sign = ''
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3035
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3036
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3037
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3038
    <xsl:text>                    pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3039
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3040
    <xsl:text>                    pad_length = ph.width - (sign + arg).length
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3041
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3042
    <xsl:text>                    pad = ph.width ? (pad_length &gt; 0 ? pad_character.repeat(pad_length) : '') : ''
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3043
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3044
    <xsl:text>                    output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3045
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3046
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3047
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3048
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3049
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3050
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3051
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3052
    <xsl:text>        return output
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3053
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3054
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3055
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3056
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3057
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3058
    <xsl:text>    var sprintf_cache = Object.create(null)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3059
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3060
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3061
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3062
    <xsl:text>    function sprintf_parse(fmt) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3063
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3064
    <xsl:text>        if (sprintf_cache[fmt]) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3065
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3066
    <xsl:text>            return sprintf_cache[fmt]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3067
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3068
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3069
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3070
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3071
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3072
    <xsl:text>        var _fmt = fmt, match, parse_tree = [], arg_names = 0
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3073
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3074
    <xsl:text>        while (_fmt) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3075
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3076
    <xsl:text>            if ((match = re.text.exec(_fmt)) !== null) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3077
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3078
    <xsl:text>                parse_tree.push(match[0])
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3079
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3080
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3081
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3082
    <xsl:text>            else if ((match = re.modulo.exec(_fmt)) !== null) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3083
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3084
    <xsl:text>                parse_tree.push('%')
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3085
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3086
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3087
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3088
    <xsl:text>            else if ((match = re.placeholder.exec(_fmt)) !== null) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3089
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3090
    <xsl:text>                if (match[2]) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3091
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3092
    <xsl:text>                    arg_names |= 1
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3093
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3094
    <xsl:text>                    var field_list = [], replacement_field = match[2], field_match = []
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3095
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3096
    <xsl:text>                    if ((field_match = re.key.exec(replacement_field)) !== null) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3097
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3098
    <xsl:text>                        field_list.push(field_match[1])
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3099
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3100
    <xsl:text>                        while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3101
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3102
    <xsl:text>                            if ((field_match = re.key_access.exec(replacement_field)) !== null) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3103
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3104
    <xsl:text>                                field_list.push(field_match[1])
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3105
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3106
    <xsl:text>                            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3107
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3108
    <xsl:text>                            else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3109
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3110
    <xsl:text>                                field_list.push(field_match[1])
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3111
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3112
    <xsl:text>                            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3113
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3114
    <xsl:text>                            else {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3115
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3116
    <xsl:text>                                throw new SyntaxError('[sprintf] failed to parse named argument key')
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3117
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3118
    <xsl:text>                            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3119
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3120
    <xsl:text>                        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3121
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3122
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3123
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3124
    <xsl:text>                    else {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3125
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3126
    <xsl:text>                        throw new SyntaxError('[sprintf] failed to parse named argument key')
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3127
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3128
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3129
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3130
    <xsl:text>                    match[2] = field_list
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3131
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3132
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3133
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3134
    <xsl:text>                else {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3135
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3136
    <xsl:text>                    arg_names |= 2
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3137
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3138
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3139
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3140
    <xsl:text>                if (arg_names === 3) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3141
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3142
    <xsl:text>                    throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3143
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3144
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3145
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3146
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3147
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3148
    <xsl:text>                parse_tree.push(
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3149
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3150
    <xsl:text>                    {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3151
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3152
    <xsl:text>                        placeholder: match[0],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3153
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3154
    <xsl:text>                        param_no:    match[1],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3155
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3156
    <xsl:text>                        keys:        match[2],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3157
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3158
    <xsl:text>                        sign:        match[3],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3159
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3160
    <xsl:text>                        pad_char:    match[4],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3161
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3162
    <xsl:text>                        align:       match[5],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3163
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3164
    <xsl:text>                        width:       match[6],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3165
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3166
    <xsl:text>                        precision:   match[7],
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3167
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3168
    <xsl:text>                        type:        match[8]
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3169
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3170
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3171
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3172
    <xsl:text>                )
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3173
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3174
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3175
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3176
    <xsl:text>            else {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3177
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3178
    <xsl:text>                throw new SyntaxError('[sprintf] unexpected placeholder')
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3179
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3180
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3181
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3182
    <xsl:text>            _fmt = _fmt.substring(match[0].length)
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3183
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3184
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3185
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3186
    <xsl:text>        return sprintf_cache[fmt] = parse_tree
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3187
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3188
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3189
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3190
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3191
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3192
    <xsl:text>    /**
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3193
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3194
    <xsl:text>     * export to either browser or node.js
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3195
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3196
    <xsl:text>     */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3197
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3198
    <xsl:text>    /* eslint-disable quote-props */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3199
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3200
    <xsl:text>    if (typeof exports !== 'undefined') {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3201
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3202
    <xsl:text>        exports['sprintf'] = sprintf
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3203
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3204
    <xsl:text>        exports['vsprintf'] = vsprintf
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3205
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3206
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3207
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3208
    <xsl:text>    if (typeof window !== 'undefined') {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3209
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3210
    <xsl:text>        window['sprintf'] = sprintf
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3211
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3212
    <xsl:text>        window['vsprintf'] = vsprintf
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3213
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3214
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3215
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3216
    <xsl:text>        if (typeof define === 'function' &amp;&amp; define['amd']) {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3217
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3218
    <xsl:text>            define(function() {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3219
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3220
    <xsl:text>                return {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3221
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3222
    <xsl:text>                    'sprintf': sprintf,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3223
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3224
    <xsl:text>                    'vsprintf': vsprintf
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3225
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3226
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3227
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3228
    <xsl:text>            })
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3229
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3230
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3231
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3232
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3233
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3234
    <xsl:text>    /* eslint-enable quote-props */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3235
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3236
    <xsl:text>}(); // eslint-disable-line    
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3237
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3238
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3239
</xsl:text>
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
  3240
  </xsl:template>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3241
  <xsl:template mode="widget_class" match="widget[@type='DropDown']">
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3242
    <xsl:text>    function numb_event(e) {
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3243
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3244
    <xsl:text>        e.stopPropagation();
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3245
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3246
    <xsl:text>    }
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3247
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3248
    <xsl:text>    class DropDownWidget extends Widget{
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3249
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3250
    <xsl:text>        dispatch(value) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3251
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3252
    <xsl:text>            if(!this.opened) this.set_selection(value);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3253
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3254
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3255
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3256
    <xsl:text>        init() {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3257
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3258
    <xsl:text>            this.button_elt.onclick = this.on_button_click.bind(this);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3259
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3260
    <xsl:text>            // Save original size of rectangle
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3261
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3262
    <xsl:text>            this.box_bbox = this.box_elt.getBBox()
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3263
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3264
    <xsl:text>            this.highlight_bbox = this.highlight_elt.getBBox()
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3265
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3266
    <xsl:text>            this.highlight_elt.style.visibility = "hidden";
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3267
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3268
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3269
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3270
    <xsl:text>            // Compute margins
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3271
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3272
    <xsl:text>            this.text_bbox = this.text_elt.getBBox();
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3273
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3274
    <xsl:text>            let lmargin = this.text_bbox.x - this.box_bbox.x;
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3275
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3276
    <xsl:text>            let tmargin = this.text_bbox.y - this.box_bbox.y;
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3277
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3278
    <xsl:text>            this.margins = [lmargin, tmargin].map(x =&gt; Math.max(x,0));
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3279
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3280
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3281
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3282
    <xsl:text>            // Index of first visible element in the menu, when opened
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3283
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3284
    <xsl:text>            this.menu_offset = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3285
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3286
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3287
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3288
    <xsl:text>            // How mutch to lift the menu vertically so that it does not cross bottom border
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3289
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3290
    <xsl:text>            this.lift = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3291
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3292
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3293
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3294
    <xsl:text>            // Event handlers cannot be object method ('this' is unknown)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3295
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3296
    <xsl:text>            // as a workaround, handler given to addEventListener is bound in advance.
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3297
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3298
    <xsl:text>            this.bound_close_on_click_elsewhere = this.close_on_click_elsewhere.bind(this);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3299
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3300
    <xsl:text>            this.bound_on_selection_click = this.on_selection_click.bind(this);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3301
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3302
    <xsl:text>            this.bound_on_backward_click = this.on_backward_click.bind(this);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3303
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3304
    <xsl:text>            this.bound_on_forward_click = this.on_forward_click.bind(this);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3305
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3306
    <xsl:text>            this.opened = false;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3307
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3308
    <xsl:text>            this.clickables = [];
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3309
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3310
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3311
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3312
    <xsl:text>        on_button_click() {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3313
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3314
    <xsl:text>            this.open();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3315
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3316
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3317
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3318
    <xsl:text>        // Called when a menu entry is clicked
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3319
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3320
    <xsl:text>        on_selection_click(selection) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3321
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3322
    <xsl:text>            this.close();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3323
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3324
    <xsl:text>            this.apply_hmi_value(0, selection);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3325
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3326
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3327
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3328
    <xsl:text>        on_backward_click(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3329
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3330
    <xsl:text>            this.scroll(false);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3331
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3332
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3333
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3334
    <xsl:text>        on_forward_click(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3335
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3336
    <xsl:text>            this.scroll(true);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3337
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3338
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3339
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3340
    <xsl:text>        set_selection(value) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3341
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3342
    <xsl:text>            let display_str;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3343
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3344
    <xsl:text>            if(value &gt;= 0 &amp;&amp; value &lt; this.content.length){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3345
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3346
    <xsl:text>                // if valid selection resolve content
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3347
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3348
    <xsl:text>                display_str = this.content[value];
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3349
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3350
    <xsl:text>                this.last_selection = value;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3351
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3352
    <xsl:text>            } else {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3353
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3354
    <xsl:text>                // otherwise show problem
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3355
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3356
    <xsl:text>                display_str = "?"+String(value)+"?";
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3357
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3358
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3359
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3360
    <xsl:text>            // It is assumed that first span always stays,
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3361
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3362
    <xsl:text>            // and contains selection when menu is closed
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3363
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3364
    <xsl:text>            this.text_elt.firstElementChild.textContent = display_str;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3365
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3366
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3367
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3368
    <xsl:text>        grow_text(up_to) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3369
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3370
    <xsl:text>            let count = 1;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3371
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3372
    <xsl:text>            let txt = this.text_elt;
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3373
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3374
    <xsl:text>            let first = txt.firstElementChild;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3375
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3376
    <xsl:text>            // Real world (pixels) boundaries of current page
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3377
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3378
    <xsl:text>            let bounds = svg_root.getBoundingClientRect();
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3379
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3380
    <xsl:text>            this.lift = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3381
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3382
    <xsl:text>            while(count &lt; up_to) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3383
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3384
    <xsl:text>                let next = first.cloneNode();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3385
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3386
    <xsl:text>                // relative line by line text flow instead of absolute y coordinate
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3387
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3388
    <xsl:text>                next.removeAttribute("y");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3389
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3390
    <xsl:text>                next.setAttribute("dy", "1.1em");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3391
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3392
    <xsl:text>                // default content to allow computing text element bbox
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3393
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3394
    <xsl:text>                next.textContent = "...";
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3395
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3396
    <xsl:text>                // append new span to text element
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3397
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3398
    <xsl:text>                txt.appendChild(next);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3399
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3400
    <xsl:text>                // now check if text extended by one row fits to page
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3401
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3402
    <xsl:text>                // FIXME : exclude margins to be more accurate on box size
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3403
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3404
    <xsl:text>                let rect = txt.getBoundingClientRect();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3405
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3406
    <xsl:text>                if(rect.bottom &gt; bounds.bottom){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3407
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3408
    <xsl:text>                    // in case of overflow at the bottom, lift up one row
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3409
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3410
    <xsl:text>                    let backup = first.getAttribute("dy");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3411
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3412
    <xsl:text>                    // apply lift as a dy added too first span (y attrib stays)
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3413
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3414
    <xsl:text>                    first.setAttribute("dy", "-"+String((this.lift+1)*1.1)+"em");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3415
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3416
    <xsl:text>                    rect = txt.getBoundingClientRect();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3417
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3418
    <xsl:text>                    if(rect.top &gt; bounds.top){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3419
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3420
    <xsl:text>                        this.lift += 1;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3421
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3422
    <xsl:text>                    } else {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3423
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3424
    <xsl:text>                        // if it goes over the top, then backtrack
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3425
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3426
    <xsl:text>                        // restore dy attribute on first span
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3427
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3428
    <xsl:text>                        if(backup)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3429
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3430
    <xsl:text>                            first.setAttribute("dy", backup);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3431
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3432
    <xsl:text>                        else
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3433
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3434
    <xsl:text>                            first.removeAttribute("dy");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3435
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3436
    <xsl:text>                        // remove unwanted child
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3437
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3438
    <xsl:text>                        txt.removeChild(next);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3439
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3440
    <xsl:text>                        return count;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3441
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3442
    <xsl:text>                    }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3443
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3444
    <xsl:text>                }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3445
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3446
    <xsl:text>                count++;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3447
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3448
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3449
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3450
    <xsl:text>            return count;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3451
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3452
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3453
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3454
    <xsl:text>        close_on_click_elsewhere(e) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3455
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3456
    <xsl:text>            // inhibit events not targetting spans (menu items)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3457
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3458
    <xsl:text>            if([this.text_elt, this.element].indexOf(e.target.parentNode) == -1){
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3459
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3460
    <xsl:text>                e.stopPropagation();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3461
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3462
    <xsl:text>                // close menu in case click is outside box
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3463
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3464
    <xsl:text>                if(e.target !== this.box_elt)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3465
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3466
    <xsl:text>                    this.close();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3467
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3468
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3469
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3470
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3471
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3472
    <xsl:text>        close(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3473
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3474
    <xsl:text>            // Stop hogging all click events
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3475
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3476
    <xsl:text>            svg_root.removeEventListener("pointerdown", numb_event, true);
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3477
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3478
    <xsl:text>            svg_root.removeEventListener("pointerup", numb_event, true);
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3479
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3480
    <xsl:text>            svg_root.removeEventListener("click", this.bound_close_on_click_elsewhere, true);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3481
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3482
    <xsl:text>            // Restore position and sixe of widget elements
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3483
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3484
    <xsl:text>            this.reset_text();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3485
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3486
    <xsl:text>            this.reset_clickables();
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3487
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3488
    <xsl:text>            this.reset_box();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3489
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3490
    <xsl:text>            this.reset_highlight();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3491
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3492
    <xsl:text>            // Put the button back in place
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3493
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3494
    <xsl:text>            this.element.appendChild(this.button_elt);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3495
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3496
    <xsl:text>            // Mark as closed (to allow dispatch)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3497
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3498
    <xsl:text>            this.opened = false;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3499
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3500
    <xsl:text>            // Dispatch last cached value
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3501
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3502
    <xsl:text>            this.apply_cache();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3503
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3504
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3505
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3506
    <xsl:text>        // Make item (text span) clickable by overlaying a rectangle on top of it
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3507
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3508
    <xsl:text>        make_clickable(span, func) {
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3509
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3510
    <xsl:text>            let txt = this.text_elt;
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3511
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3512
    <xsl:text>            let original_text_y = this.text_bbox.y;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3513
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3514
    <xsl:text>            let highlight = this.highlight_elt;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3515
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3516
    <xsl:text>            let original_h_y = this.highlight_bbox.y;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3517
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3518
    <xsl:text>            let clickable = highlight.cloneNode();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3519
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3520
    <xsl:text>            let yoffset = span.getBBox().y - original_text_y;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3521
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3522
    <xsl:text>            clickable.y.baseVal.value = original_h_y + yoffset;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3523
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3524
    <xsl:text>            clickable.style.pointerEvents = "bounding-box";
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3525
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3526
    <xsl:text>            //clickable.style.visibility = "hidden";
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3527
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3528
    <xsl:text>            //clickable.onclick = () =&gt; alert("love JS");
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3529
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3530
    <xsl:text>            clickable.onclick = func;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3531
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3532
    <xsl:text>            this.element.appendChild(clickable);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3533
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3534
    <xsl:text>            this.clickables.push(clickable)
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3535
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3536
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3537
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3538
    <xsl:text>        reset_clickables() {
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3539
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3540
    <xsl:text>            while(this.clickables.length){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3541
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3542
    <xsl:text>                this.element.removeChild(this.clickables.pop());
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3543
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3544
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3545
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3546
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3547
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3548
    <xsl:text>        // Set text content when content is smaller than menu (no scrolling)
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3549
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3550
    <xsl:text>        set_complete_text(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3551
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3552
    <xsl:text>            let spans = this.text_elt.children;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3553
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3554
    <xsl:text>            let c = 0;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3555
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3556
    <xsl:text>            for(let item of this.content){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3557
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3558
    <xsl:text>                let span=spans[c];
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3559
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3560
    <xsl:text>                span.textContent = item;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3561
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3562
    <xsl:text>                let sel = c;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3563
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3564
    <xsl:text>                this.make_clickable(span, (evt) =&gt; this.bound_on_selection_click(sel));
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3565
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3566
    <xsl:text>                c++;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3567
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3568
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3569
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3570
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3571
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3572
    <xsl:text>        // Move partial view :
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3573
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3574
    <xsl:text>        // false : upward, lower value
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3575
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3576
    <xsl:text>        // true  : downward, higher value
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3577
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3578
    <xsl:text>        scroll(forward){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3579
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3580
    <xsl:text>            let contentlength = this.content.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3581
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3582
    <xsl:text>            let spans = this.text_elt.children;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3583
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3584
    <xsl:text>            let spanslength = spans.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3585
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3586
    <xsl:text>            // reduce accounted menu size according to prsence of scroll buttons
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3587
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3588
    <xsl:text>            // since we scroll there is necessarly one button
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3589
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3590
    <xsl:text>            spanslength--;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3591
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3592
    <xsl:text>            if(forward){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3593
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3594
    <xsl:text>                // reduce accounted menu size because of back button
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3595
</xsl:text>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3596
    <xsl:text>                // in current view
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3597
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3598
    <xsl:text>                if(this.menu_offset &gt; 0) spanslength--;
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3599
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3600
    <xsl:text>                this.menu_offset = Math.min(
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3601
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3602
    <xsl:text>                    contentlength - spans.length + 1,
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3603
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3604
    <xsl:text>                    this.menu_offset + spanslength);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3605
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3606
    <xsl:text>            }else{
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3607
</xsl:text>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3608
    <xsl:text>                // reduce accounted menu size because of back button
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3609
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3610
    <xsl:text>                // in view once scrolled
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  3611
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3612
    <xsl:text>                if(this.menu_offset - spanslength &gt; 0) spanslength--;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3613
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3614
    <xsl:text>                this.menu_offset = Math.max(
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3615
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3616
    <xsl:text>                    0,
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3617
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3618
    <xsl:text>                    this.menu_offset - spanslength);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3619
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3620
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3621
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3622
    <xsl:text>            if(this.menu_offset == 1)
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3623
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3624
    <xsl:text>                this.menu_offset = 0;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3625
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3626
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3627
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3628
    <xsl:text>            this.reset_highlight();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3629
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3630
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3631
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3632
    <xsl:text>            this.reset_clickables();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3633
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3634
    <xsl:text>            this.set_partial_text();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3635
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3636
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3637
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3638
    <xsl:text>            this.highlight_selection();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3639
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3640
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3641
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3642
    <xsl:text>        // Setup partial view text content
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3643
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3644
    <xsl:text>        // with jumps at first and last entry when appropriate
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3645
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3646
    <xsl:text>        set_partial_text(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3647
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3648
    <xsl:text>            let spans = this.text_elt.children;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3649
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3650
    <xsl:text>            let contentlength = this.content.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3651
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3652
    <xsl:text>            let spanslength = spans.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3653
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3654
    <xsl:text>            let i = this.menu_offset, c = 0;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3655
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3656
    <xsl:text>            let m = this.box_bbox;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3657
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3658
    <xsl:text>            while(c &lt; spanslength){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3659
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3660
    <xsl:text>                let span=spans[c];
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3661
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3662
    <xsl:text>                let onclickfunc;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3663
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3664
    <xsl:text>                // backward jump only present if not exactly at start
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3665
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3666
    <xsl:text>                if(c == 0 &amp;&amp; i != 0){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3667
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3668
    <xsl:text>                    span.textContent = "&#x25B2;";
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3669
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3670
    <xsl:text>                    onclickfunc = this.bound_on_backward_click;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3671
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3672
    <xsl:text>                    let o = span.getBBox();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3673
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3674
    <xsl:text>                    span.setAttribute("dx", (m.width - o.width)/2);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3675
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3676
    <xsl:text>                // presence of forward jump when not right at the end
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3677
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3678
    <xsl:text>                }else if(c == spanslength-1 &amp;&amp; i &lt; contentlength - 1){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3679
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3680
    <xsl:text>                    span.textContent = "&#x25BC;";
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3681
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3682
    <xsl:text>                    onclickfunc = this.bound_on_forward_click;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3683
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3684
    <xsl:text>                    let o = span.getBBox();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3685
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3686
    <xsl:text>                    span.setAttribute("dx", (m.width - o.width)/2);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3687
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3688
    <xsl:text>                // otherwise normal content
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3689
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3690
    <xsl:text>                }else{
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3691
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3692
    <xsl:text>                    span.textContent = this.content[i];
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3693
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3694
    <xsl:text>                    let sel = i;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3695
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3696
    <xsl:text>                    onclickfunc = (evt) =&gt; this.bound_on_selection_click(sel);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3697
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3698
    <xsl:text>                    span.removeAttribute("dx");
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3699
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3700
    <xsl:text>                    i++;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3701
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3702
    <xsl:text>                }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3703
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3704
    <xsl:text>                this.make_clickable(span, onclickfunc);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3705
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3706
    <xsl:text>                c++;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3707
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3708
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3709
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3710
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3711
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3712
    <xsl:text>        open(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3713
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3714
    <xsl:text>            let length = this.content.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3715
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3716
    <xsl:text>            // systematically reset text, to strip eventual whitespace spans
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3717
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3718
    <xsl:text>            this.reset_text();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3719
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3720
    <xsl:text>            // grow as much as needed or possible
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3721
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3722
    <xsl:text>            let slots = this.grow_text(length);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3723
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3724
    <xsl:text>            // Depending on final size
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3725
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3726
    <xsl:text>            if(slots == length) {
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3727
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3728
    <xsl:text>                // show all at once
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3729
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3730
    <xsl:text>                this.set_complete_text();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3731
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3732
    <xsl:text>            } else {
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3733
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3734
    <xsl:text>                // eventualy align menu to current selection, compensating for lift
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3735
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3736
    <xsl:text>                let offset = this.last_selection - this.lift;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3737
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3738
    <xsl:text>                if(offset &gt; 0)
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3739
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3740
    <xsl:text>                    this.menu_offset = Math.min(offset + 1, length - slots + 1);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3741
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3742
    <xsl:text>                else
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3743
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3744
    <xsl:text>                    this.menu_offset = 0;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3745
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3746
    <xsl:text>                // show surrounding values
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3747
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3748
    <xsl:text>                this.set_partial_text();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3749
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3750
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3751
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3752
    <xsl:text>            // Now that text size is known, we can set the box around it
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3753
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3754
    <xsl:text>            this.adjust_box_to_text();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3755
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3756
    <xsl:text>            // Take button out until menu closed
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3757
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3758
    <xsl:text>            this.element.removeChild(this.button_elt);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3759
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3760
    <xsl:text>            // Rise widget to top by moving it to last position among siblings
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3761
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3762
    <xsl:text>            this.element.parentNode.appendChild(this.element.parentNode.removeChild(this.element));
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3763
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3764
    <xsl:text>            // disable interaction with background
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3765
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3766
    <xsl:text>            svg_root.addEventListener("pointerdown", numb_event, true);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3767
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3768
    <xsl:text>            svg_root.addEventListener("pointerup", numb_event, true);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3769
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3770
    <xsl:text>            svg_root.addEventListener("click", this.bound_close_on_click_elsewhere, true);
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3771
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3772
    <xsl:text>            this.highlight_selection();
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3773
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3774
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3775
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3776
    <xsl:text>            // mark as open
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3777
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3778
    <xsl:text>            this.opened = true;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3779
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3780
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3781
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3782
    <xsl:text>        // Put text element in normalized state
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3783
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3784
    <xsl:text>        reset_text(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3785
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3786
    <xsl:text>            let txt = this.text_elt;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3787
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3788
    <xsl:text>            let first = txt.firstElementChild;
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3789
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3790
    <xsl:text>            // remove attribute eventually added to first text line while opening
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3791
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3792
    <xsl:text>            first.onclick = null;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3793
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3794
    <xsl:text>            first.removeAttribute("dy");
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3795
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3796
    <xsl:text>            first.removeAttribute("dx");
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3797
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3798
    <xsl:text>            // keep only the first line of text
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3799
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3800
    <xsl:text>            for(let span of Array.from(txt.children).slice(1)){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3801
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3802
    <xsl:text>                txt.removeChild(span)
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3803
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3804
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3805
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3806
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3807
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3808
    <xsl:text>        // Put rectangle element in saved original state
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3809
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3810
    <xsl:text>        reset_box(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3811
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3812
    <xsl:text>            let m = this.box_bbox;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3813
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3814
    <xsl:text>            let b = this.box_elt;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3815
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3816
    <xsl:text>            b.x.baseVal.value = m.x;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3817
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3818
    <xsl:text>            b.y.baseVal.value = m.y;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3819
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3820
    <xsl:text>            b.width.baseVal.value = m.width;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3821
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3822
    <xsl:text>            b.height.baseVal.value = m.height;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3823
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3824
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3825
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3826
    <xsl:text>        highlight_selection(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3827
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3828
    <xsl:text>            let highlighted_row = this.last_selection - this.menu_offset;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3829
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3830
    <xsl:text>            if(highlighted_row &lt; 0) return;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3831
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3832
    <xsl:text>            let spans = this.text_elt.children;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3833
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3834
    <xsl:text>            let spanslength = spans.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3835
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3836
    <xsl:text>            let contentlength = this.content.length;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3837
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3838
    <xsl:text>            if(this.menu_offset != 0) {
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3839
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3840
    <xsl:text>                spanslength--;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3841
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3842
    <xsl:text>                highlighted_row++;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3843
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3844
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3845
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3846
    <xsl:text>            if(this.menu_offset + spanslength &lt; contentlength - 1) spanslength--;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3847
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3848
    <xsl:text>            if(highlighted_row &gt; spanslength) return;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3849
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3850
    <xsl:text>            let original_text_y = this.text_bbox.y;
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3851
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3852
    <xsl:text>            let highlight = this.highlight_elt;
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3853
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3854
    <xsl:text>            let span = spans[highlighted_row];
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3855
</xsl:text>
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3856
    <xsl:text>            let yoffset = span.getBBox().y - original_text_y;
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3857
</xsl:text>
3092
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3858
    <xsl:text>            highlight.y.baseVal.value = this.highlight_bbox.y + yoffset;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3859
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3860
    <xsl:text>            highlight.style.visibility = "visible";
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3861
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3862
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3863
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3864
    <xsl:text>        reset_highlight(){
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3865
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3866
    <xsl:text>            let highlight = this.highlight_elt;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3867
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3868
    <xsl:text>            highlight.y.baseVal.value = this.highlight_bbox.y;
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3869
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  3870
    <xsl:text>            highlight.style.visibility = "hidden";
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3871
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3872
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3873
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3874
    <xsl:text>        // Use margin and text size to compute box size
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3875
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3876
    <xsl:text>        adjust_box_to_text(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3877
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3878
    <xsl:text>            let [lmargin, tmargin] = this.margins;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3879
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3880
    <xsl:text>            let m = this.text_elt.getBBox();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3881
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3882
    <xsl:text>            let b = this.box_elt;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3883
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3884
    <xsl:text>            // b.x.baseVal.value = m.x - lmargin;
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3885
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3886
    <xsl:text>            b.y.baseVal.value = m.y - tmargin;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3887
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3888
    <xsl:text>            // b.width.baseVal.value = 2 * lmargin + m.width;
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3889
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3890
    <xsl:text>            b.height.baseVal.value = 2 * tmargin + m.height;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3891
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3892
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3893
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3894
    <xsl:text>    }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3895
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3896
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  3897
  <xsl:template mode="widget_defs" match="widget[@type='DropDown']">
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3898
    <xsl:param name="hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3899
    <xsl:call-template name="defs_by_labels">
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3900
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3901
      <xsl:with-param name="labels">
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3902
        <xsl:text>text box button highlight</xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3903
      </xsl:with-param>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3904
    </xsl:call-template>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3905
    <xsl:text>    content: [
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
  3906
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  3907
    <xsl:text>    /* TODO : Support HMI:List */
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  3908
</xsl:text>
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
  3909
    <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
  3910
      <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
  3911
      <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
  3912
      <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
  3913
</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
  3914
    </xsl:for-each>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3915
    <xsl:text>    ],
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3916
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3917
    <xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3918
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  3919
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  3920
  <xsl:template mode="widget_defs" match="widget[@type='ForEach']">
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  3921
    <xsl:param name="hmi_element"/>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3922
    <xsl:if test="count(path) != 1">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3923
      <xsl:message terminate="yes">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3924
        <xsl:text>ForEach widget </xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3925
        <xsl:value-of select="$hmi_element/@id"/>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3926
        <xsl:text> must have one HMI path given.</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3927
      </xsl:message>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3928
    </xsl:if>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3929
    <xsl:if test="count(arg) != 1">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3930
      <xsl:message terminate="yes">
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3931
        <xsl:text>ForEach widget </xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3932
        <xsl:value-of select="$hmi_element/@id"/>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3933
        <xsl:text> must have one argument given : a class name.</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3934
      </xsl:message>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  3935
    </xsl:if>
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
  3936
    <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
  3937
    <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
  3938
    <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
  3939
    <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
  3940
    <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
  3941
    <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
  3942
    <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
  3943
    <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
  3944
</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
  3945
    <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
  3946
      <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
  3947
      <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
  3948
      <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
  3949
        <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
  3950
      </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
  3951
      <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
  3952
</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
  3953
    </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
  3954
    <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
  3955
</xsl:text>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  3956
    <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
  3957
</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
  3958
    <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
  3959
    <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
  3960
    <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
  3961
    <xsl:for-each select="$buttons">
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  3962
      <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
  3963
      <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
  3964
      <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
  3965
      <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
  3966
      <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
  3967
      <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
  3968
      <xsl:value-of select="$op"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  3969
      <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
  3970
</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
  3971
    </xsl:for-each>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  3972
    <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
  3973
</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
  3974
    <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
  3975
</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
  3976
    <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
  3977
    <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
  3978
    <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
  3979
      <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
  3980
      <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
  3981
      <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
  3982
      <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
  3983
      <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
  3984
      <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
  3985
      <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
  3986
      <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
  3987
      <xsl:text>" */
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  3988
</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
  3989
      <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
  3990
        <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
  3991
          <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
  3992
          <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
  3993
          <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
  3994
          <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
  3995
        </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
  3996
      </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
  3997
      <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
  3998
        <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
  3999
          <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
  4000
            <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
  4001
            <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
  4002
            <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
  4003
            <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
  4004
            <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
  4005
            <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
  4006
            <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
  4007
            <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
  4008
            <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
  4009
          </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
  4010
        </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
  4011
        <xsl:text>            hmi_widgets["</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4012
        <xsl:value-of select="@id"/>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4013
        <xsl:text>"]</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4014
        <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4015
          <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4016
        </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4017
        <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4018
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4019
      </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
  4020
      <xsl:text>          ]</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4021
      <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4022
        <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4023
      </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4024
      <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4025
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4026
    </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
  4027
    <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
  4028
</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
  4029
    <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
  4030
</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
  4031
    <xsl:text>    item_offset: 0,
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4032
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4033
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4034
  <xsl:template mode="widget_class" match="widget[@type='ForEach']">
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4035
    <xsl:text>class ForEachWidget extends Widget{
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4036
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4037
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4038
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4039
    <xsl:text>    unsub_items(){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4040
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4041
    <xsl:text>        for(let item of this.items){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4042
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4043
    <xsl:text>            for(let widget of item) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4044
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4045
    <xsl:text>                widget.unsub();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4046
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4047
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4048
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4049
    <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4050
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4051
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4052
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4053
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4054
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4055
    <xsl:text>    unsub(){
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4056
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4057
    <xsl:text>        this.unsub_items();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4058
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4059
    <xsl:text>        this.offset = 0;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4060
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4061
    <xsl:text>        this.relativeness = undefined;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4062
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4063
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4064
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4065
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4066
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4067
    <xsl:text>    sub_items(){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4068
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4069
    <xsl:text>        for(let i = 0; i &lt; this.items.length; i++) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4070
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4071
    <xsl:text>            let item = this.items[i];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4072
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4073
    <xsl:text>            let orig_item_index = this.index_pool[i];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4074
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4075
    <xsl:text>            let item_index = this.index_pool[i+this.item_offset];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4076
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4077
    <xsl:text>            let item_index_offset = item_index - orig_item_index;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4078
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4079
    <xsl:text>            if(this.relativeness[0])
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4080
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4081
    <xsl:text>                item_index_offset += this.offset;
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4082
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4083
    <xsl:text>            for(let widget of item) {
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4084
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4085
    <xsl:text>                /* all variables of all widgets in a ForEach are all relative. 
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4086
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4087
    <xsl:text>                   Really.
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4088
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4089
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4090
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4091
    <xsl:text>                   TODO: allow absolute variables in ForEach widgets
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4092
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4093
    <xsl:text>                */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4094
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4095
    <xsl:text>                widget.sub(item_index_offset, widget.indexes.map(_=&gt;true));
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4096
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4097
    <xsl:text>            }
2942
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4098
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4099
    <xsl:text>        }
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4100
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4101
    <xsl:text>    }
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4102
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4103
    <xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4104
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4105
    <xsl:text>    sub(new_offset=0, relativeness=[]){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4106
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4107
    <xsl:text>        this.offset = new_offset;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4108
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4109
    <xsl:text>        this.relativeness = relativeness;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4110
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4111
    <xsl:text>        this.sub_items();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4112
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4113
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4114
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4115
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4116
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4117
    <xsl:text>    apply_cache() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4118
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4119
    <xsl:text>        this.items.forEach(item=&gt;item.forEach(widget=&gt;widget.apply_cache()));
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4120
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4121
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4122
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4123
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4124
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4125
    <xsl:text>    on_click(opstr, evt) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4126
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4127
    <xsl:text>        let new_item_offset = eval(String(this.item_offset)+opstr);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4128
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4129
    <xsl:text>        if(new_item_offset + this.items.length &gt; this.index_pool.length) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4130
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4131
    <xsl:text>            if(this.item_offset + this.items.length == this.index_pool.length)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4132
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4133
    <xsl:text>                new_item_offset = 0;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4134
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4135
    <xsl:text>            else
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4136
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4137
    <xsl:text>                new_item_offset = this.index_pool.length - this.items.length;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4138
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4139
    <xsl:text>        } else if(new_item_offset &lt; 0) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4140
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4141
    <xsl:text>            if(this.item_offset == 0)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4142
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4143
    <xsl:text>                new_item_offset = this.index_pool.length - this.items.length;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4144
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4145
    <xsl:text>            else
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4146
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4147
    <xsl:text>                new_item_offset = 0;
3003
9771a724af09 SVGHMI: Better JS code semantic in ForEach widget class. Update lagging generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2998
diff changeset
  4148
</xsl:text>
9771a724af09 SVGHMI: Better JS code semantic in ForEach widget class. Update lagging generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2998
diff changeset
  4149
    <xsl:text>        }
9771a724af09 SVGHMI: Better JS code semantic in ForEach widget class. Update lagging generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2998
diff changeset
  4150
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4151
    <xsl:text>        this.item_offset = new_item_offset;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4152
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4153
    <xsl:text>        this.unsub_items();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4154
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4155
    <xsl:text>        this.sub_items();
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4156
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4157
    <xsl:text>        update_subscriptions();
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4158
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4159
    <xsl:text>        need_cache_apply.push(this);
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4160
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4161
    <xsl:text>        jumps_need_update = true;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4162
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4163
    <xsl:text>        requestHMIAnimation();
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4164
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4165
    <xsl:text>    }
2942
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4166
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4167
    <xsl:text>}
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4168
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4169
  </xsl:template>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4170
  <xsl:template mode="widget_class" match="widget[@type='Input']">
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4171
    <xsl:text>    class InputWidget extends Widget{
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4172
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4173
    <xsl:text>         on_op_click(opstr) {
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4174
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  4175
    <xsl:text>             this.change_hmi_value(0, opstr);
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4176
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4177
    <xsl:text>         }
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4178
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4179
    <xsl:text>         edit_callback(new_val) {
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4180
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4181
    <xsl:text>             this.apply_hmi_value(0, new_val);
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4182
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4183
    <xsl:text>         }
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4184
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4185
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4186
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4187
    <xsl:text>         overshot(new_val, max) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4188
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4189
    <xsl:text>             this.last_display = "max: "+max;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4190
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4191
    <xsl:text>             this.request_animate();
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4192
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4193
    <xsl:text>         }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4194
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4195
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4196
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4197
    <xsl:text>         undershot(new_val, min) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4198
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4199
    <xsl:text>             this.last_display = "min: "+min;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4200
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4201
    <xsl:text>             this.request_animate();
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4202
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4203
    <xsl:text>         }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4204
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4205
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4206
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4207
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4208
</xsl:text>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4209
    <xsl:text>    }
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4210
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4211
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4212
  <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
  4213
    <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
  4214
    <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
  4215
      <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
  4216
        <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
  4217
        <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
  4218
          <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
  4219
        </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
  4220
        <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
  4221
      </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
  4222
    </xsl:variable>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4223
    <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
  4224
    <xsl:value-of select="$value_elt"/>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4225
    <xsl:variable name="edit_elt">
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4226
      <xsl:call-template name="defs_by_labels">
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4227
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4228
        <xsl:with-param name="labels">
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4229
          <xsl:text>edit</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4230
        </xsl:with-param>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4231
        <xsl:with-param name="mandatory" select="'no'"/>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4232
      </xsl:call-template>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4233
    </xsl:variable>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4234
    <xsl:variable name="have_edit" select="string-length($edit_elt)&gt;0"/>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4235
    <xsl:value-of select="$edit_elt"/>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4236
    <xsl:if test="$have_value">
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4237
      <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
  4238
</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
  4239
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4240
    <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
  4241
</xsl:text>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4242
    <xsl:if test="$have_edit">
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4243
      <xsl:text>        this.last_val = value;
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4244
</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4245
    </xsl:if>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4246
    <xsl:if test="$have_value">
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4247
      <xsl:text>        this.last_display = value;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4248
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4249
      <xsl:text>        this.request_animate();
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
  4250
</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
  4251
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4252
    <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
  4253
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4254
    <xsl:if test="$have_value">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4255
      <xsl:text>    animate: function(){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4256
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4257
      <xsl:text>        this.value_elt.textContent = String(this.last_display);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4258
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4259
      <xsl:text>    },
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4260
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4261
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4262
    <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
  4263
</xsl:text>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4264
    <xsl:if test="$have_edit">
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  4265
      <xsl:text>        this.edit_elt.onclick = () =&gt; edit_value("</xsl:text>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4266
      <xsl:value-of select="path/@value"/>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4267
      <xsl:text>", "</xsl:text>
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4268
      <xsl:value-of select="path/@type"/>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  4269
      <xsl:text>", this, this.last_val);
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
  4270
</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
  4271
    </xsl:if>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  4272
    <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
  4273
      <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
  4274
      <xsl:value-of select="@id"/>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4275
      <xsl:text>").onclick = () =&gt; this.on_op_click("</xsl:text>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  4276
      <xsl:value-of select="func:escape_quotes(@inkscape:label)"/>
3094
3e184f1e1012 SVGHMI: almost rewrote Input widget to make it new class based style.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3092
diff changeset
  4277
      <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
  4278
</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
  4279
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4280
    <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
  4281
</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
  4282
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4283
  <xsl:template mode="widget_class" match="widget[@type='JsonTable']">
2994
b6a9ef7f7e43 SVGHMI: minimal JSON Table Widget communication infra + corresponding python code as py_ext code in svghmi test. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2980
diff changeset
  4284
    <xsl:text>class JsonTableWidget extends Widget{
b6a9ef7f7e43 SVGHMI: minimal JSON Table Widget communication infra + corresponding python code as py_ext code in svghmi test. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2980
diff changeset
  4285
</xsl:text>
3069
a9b03c2634c5 Arbitrary variables added to JsonTable subscription are now passed as 'extra' field in json query. As an example added JsonTable filtering in tests/svghmi
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3068
diff changeset
  4286
    <xsl:text>    // arbitrary defaults to avoid missing entries in query
a9b03c2634c5 Arbitrary variables added to JsonTable subscription are now passed as 'extra' field in json query. As an example added JsonTable filtering in tests/svghmi
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3068
diff changeset
  4287
</xsl:text>
a9b03c2634c5 Arbitrary variables added to JsonTable subscription are now passed as 'extra' field in json query. As an example added JsonTable filtering in tests/svghmi
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3068
diff changeset
  4288
    <xsl:text>    cache = [0,100,50];
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4289
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4290
    <xsl:text>    init() {
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4291
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4292
    <xsl:text>        this.spread_json_data_bound = this.spread_json_data.bind(this);
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4293
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4294
    <xsl:text>    }
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4295
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4296
    <xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4297
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4298
    <xsl:text>    handle_http_response(response) {
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4299
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4300
    <xsl:text>        if (!response.ok) {
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4301
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4302
    <xsl:text>          console.log("HTTP error, status = " + response.status);
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4303
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4304
    <xsl:text>        }
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4305
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4306
    <xsl:text>        return response.json();
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4307
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4308
    <xsl:text>    }
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4309
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4310
    <xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4311
</xsl:text>
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4312
    <xsl:text>    do_http_request(...opt) {
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4313
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4314
    <xsl:text>        const query = {
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4315
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4316
    <xsl:text>            args: this.args,
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4317
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4318
    <xsl:text>            range: this.cache[1],
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4319
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4320
    <xsl:text>            position: this.cache[2],
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4321
</xsl:text>
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4322
    <xsl:text>            visible: this.visible,
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4323
</xsl:text>
3069
a9b03c2634c5 Arbitrary variables added to JsonTable subscription are now passed as 'extra' field in json query. As an example added JsonTable filtering in tests/svghmi
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3068
diff changeset
  4324
    <xsl:text>            extra: this.cache.slice(4),
a9b03c2634c5 Arbitrary variables added to JsonTable subscription are now passed as 'extra' field in json query. As an example added JsonTable filtering in tests/svghmi
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3068
diff changeset
  4325
</xsl:text>
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4326
    <xsl:text>            options: opt
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4327
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4328
    <xsl:text>        };
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4329
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4330
    <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4331
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4332
    <xsl:text>        const options = {
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4333
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4334
    <xsl:text>             method: 'POST',
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4335
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4336
    <xsl:text>             body: JSON.stringify(query),
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4337
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4338
    <xsl:text>             headers: {'Content-Type': 'application/json'}
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4339
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4340
    <xsl:text>        };
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4341
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4342
    <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4343
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4344
    <xsl:text>        fetch(this.args[0], options)
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4345
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4346
    <xsl:text>            .then(this.handle_http_response)
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4347
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4348
    <xsl:text>            .then(this.spread_json_data_bound);
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4349
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4350
    <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4351
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4352
    <xsl:text>    }
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4353
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4354
    <xsl:text>    dispatch(value, oldval, index) {
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4355
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4356
    <xsl:text>        this.cache[index] = value;
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4357
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4358
    <xsl:text>        this.do_http_request();
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4359
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4360
    <xsl:text>    }
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4361
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4362
    <xsl:text>    make_on_click(...options){
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4363
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4364
    <xsl:text>        let that = this;
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4365
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4366
    <xsl:text>        return function(evt){
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4367
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4368
    <xsl:text>            that.do_http_request(...options);
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4369
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4370
    <xsl:text>        }
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4371
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4372
    <xsl:text>    }
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4373
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4374
    <xsl:text>    // on_click(evt, ...options) {
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4375
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4376
    <xsl:text>    //     this.do_http_request(...options);
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4377
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4378
    <xsl:text>    // }
2994
b6a9ef7f7e43 SVGHMI: minimal JSON Table Widget communication infra + corresponding python code as py_ext code in svghmi test. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2980
diff changeset
  4379
</xsl:text>
b6a9ef7f7e43 SVGHMI: minimal JSON Table Widget communication infra + corresponding python code as py_ext code in svghmi test. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2980
diff changeset
  4380
    <xsl:text>}
b6a9ef7f7e43 SVGHMI: minimal JSON Table Widget communication infra + corresponding python code as py_ext code in svghmi test. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2980
diff changeset
  4381
</xsl:text>
b6a9ef7f7e43 SVGHMI: minimal JSON Table Widget communication infra + corresponding python code as py_ext code in svghmi test. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2980
diff changeset
  4382
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4383
  <xsl:template mode="json_table_elt_render" match="svg:*">
2997
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  4384
    <xsl:message terminate="yes">
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4385
      <xsl:text>JsonTable Widget can't contain element of type </xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4386
      <xsl:value-of select="local-name()"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4387
      <xsl:text>.</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4388
    </xsl:message>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4389
  </xsl:template>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4390
  <xsl:variable name="hmi_textstylelists_descs" select="$parsed_widgets/widget[@type = 'TextStyleList']"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4391
  <xsl:variable name="hmi_textstylelists" select="$hmi_elements[@id = $hmi_textstylelists_descs/@id]"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4392
  <xsl:variable name="textstylelist_related">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4393
    <xsl:for-each select="$hmi_textstylelists">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4394
      <list>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4395
        <xsl:attribute name="listid">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4396
          <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4397
        </xsl:attribute>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4398
        <xsl:for-each select="func:refered_elements(.)">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4399
          <elt>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4400
            <xsl:attribute name="eltid">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4401
              <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4402
            </xsl:attribute>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4403
          </elt>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4404
        </xsl:for-each>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4405
      </list>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4406
    </xsl:for-each>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4407
  </xsl:variable>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4408
  <xsl:variable name="textstylelist_related_ns" select="exsl:node-set($textstylelist_related)"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4409
  <func:function name="func:json_expressions">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4410
    <xsl:param name="expressions"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4411
    <xsl:param name="label"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4412
    <xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4413
      <xsl:when test="$label">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4414
        <xsl:variable name="suffixes" select="str:split($label)"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4415
        <xsl:variable name="res">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4416
          <xsl:for-each select="$suffixes">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4417
            <expression>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4418
              <xsl:variable name="suffix" select="."/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4419
              <xsl:variable name="pos" select="position()"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4420
              <xsl:variable name="expr" select="$expressions[position() &lt;= $pos][last()]/expression"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4421
              <xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4422
                <xsl:when test="contains($suffix,'=')">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4423
                  <xsl:variable name="name" select="substring-before($suffix,'=')"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4424
                  <xsl:if test="$expr/@name[. != $name]">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4425
                    <xsl:message terminate="yes">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4426
                      <xsl:text>JsonTable : missplaced '=' or inconsistent names in Json data expressions.</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4427
                    </xsl:message>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4428
                  </xsl:if>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4429
                  <xsl:attribute name="name">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4430
                    <xsl:value-of select="$name"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4431
                  </xsl:attribute>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4432
                  <xsl:attribute name="content">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4433
                    <xsl:value-of select="$expr/@content"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4434
                    <xsl:value-of select="substring-after($suffix,'=')"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4435
                  </xsl:attribute>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4436
                </xsl:when>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4437
                <xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4438
                  <xsl:copy-of select="$expr/@name"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4439
                  <xsl:attribute name="content">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4440
                    <xsl:value-of select="$expr/@content"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4441
                    <xsl:value-of select="$suffix"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4442
                  </xsl:attribute>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4443
                </xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4444
              </xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4445
            </expression>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4446
          </xsl:for-each>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4447
        </xsl:variable>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4448
        <func:result select="exsl:node-set($res)"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4449
      </xsl:when>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4450
      <xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4451
        <func:result select="$expressions"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4452
      </xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4453
    </xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4454
  </func:function>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4455
  <xsl:variable name="initexpr">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4456
    <expression>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4457
      <xsl:attribute name="content">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4458
        <xsl:text>jdata</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4459
      </xsl:attribute>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4460
    </expression>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4461
  </xsl:variable>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4462
  <xsl:variable name="initexpr_ns" select="exsl:node-set($initexpr)"/>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4463
  <xsl:template mode="json_table_elt_render" match="svg:use">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4464
    <xsl:param name="expressions"/>
2997
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  4465
    <xsl:variable name="targetid" select="substring-after(@xlink:href,'#')"/>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  4466
    <xsl:variable name="from_list" select="$hmi_lists[(@id | */@id) = $targetid]"/>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4467
    <xsl:choose>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4468
      <xsl:when test="count($from_list) &gt; 0">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4469
        <xsl:text>        id("</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4470
        <xsl:value-of select="@id"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4471
        <xsl:text>").setAttribute("xlink:href",
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4472
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4473
        <xsl:text>            "#"+hmi_widgets["</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4474
        <xsl:value-of select="$from_list/@id"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4475
        <xsl:text>"].items[</xsl:text>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4476
        <xsl:value-of select="$expressions/expression[1]/@content"/>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4477
        <xsl:text>]);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4478
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4479
      </xsl:when>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4480
      <xsl:otherwise>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4481
        <xsl:message terminate="no">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4482
          <xsl:text>Clones (svg:use) in JsonTable Widget must point to a valid HMI:List widget or item. Reference "</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4483
          <xsl:value-of select="@xlink:href"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4484
          <xsl:text>" is not valid and will not be updated.</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4485
        </xsl:message>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4486
      </xsl:otherwise>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4487
    </xsl:choose>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4488
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4489
  <xsl:template mode="json_table_elt_render" match="svg:text">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4490
    <xsl:param name="expressions"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4491
    <xsl:variable name="value_expr" select="$expressions/expression[1]/@content"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4492
    <xsl:variable name="original" select="@original"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4493
    <xsl:variable name="from_textstylelist" select="$textstylelist_related_ns/list[elt/@eltid = $original]"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4494
    <xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4495
      <xsl:when test="count($from_textstylelist) &gt; 0">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4496
        <xsl:variable name="content_expr" select="$expressions/expression[2]/@content"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4497
        <xsl:if test="string-length($content_expr) = 0 or $expressions/expression[2]/@name != 'textContent'">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4498
          <xsl:message terminate="yes">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4499
            <xsl:text>Clones (svg:use) in JsonTable Widget pointing to a HMI:TextStyleList widget or item must have a "textContent=.someVal" assignement following value expression in label.</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4500
          </xsl:message>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4501
        </xsl:if>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4502
        <xsl:text>        {
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4503
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4504
        <xsl:text>          let elt = id("</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4505
        <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4506
        <xsl:text>");
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4507
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4508
        <xsl:text>          elt.textContent = String(</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4509
        <xsl:value-of select="$content_expr"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4510
        <xsl:text>);
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4511
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4512
        <xsl:text>          elt.style = hmi_widgets["</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4513
        <xsl:value-of select="$from_textstylelist/@listid"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4514
        <xsl:text>"].styles[</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4515
        <xsl:value-of select="$value_expr"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4516
        <xsl:text>];
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4517
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4518
        <xsl:text>        }
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4519
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4520
      </xsl:when>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4521
      <xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4522
        <xsl:text>        id("</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4523
        <xsl:value-of select="@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4524
        <xsl:text>").textContent = String(</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4525
        <xsl:value-of select="$value_expr"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4526
        <xsl:text>);
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4527
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4528
      </xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4529
    </xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4530
  </xsl:template>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4531
  <func:function name="func:filter_non_widget_label">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4532
    <xsl:param name="elt"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4533
    <xsl:param name="widget_elts"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4534
    <xsl:variable name="eltid">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4535
      <xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4536
        <xsl:when test="$elt/@original">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4537
          <xsl:value-of select="$elt/@original"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4538
        </xsl:when>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4539
        <xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4540
          <xsl:value-of select="$elt/@id"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4541
        </xsl:otherwise>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4542
      </xsl:choose>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4543
    </xsl:variable>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4544
    <func:result select="$widget_elts[@id=$eltid]/@inkscape:label"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4545
  </func:function>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4546
  <xsl:template mode="json_table_render_except_comments" match="svg:*">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4547
    <xsl:param name="expressions"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4548
    <xsl:param name="widget_elts"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4549
    <xsl:variable name="label" select="func:filter_non_widget_label(., $widget_elts)"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4550
    <xsl:if test="not(starts-with($label,'#'))">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4551
      <xsl:apply-templates mode="json_table_render" select=".">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4552
        <xsl:with-param name="expressions" select="$expressions"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4553
        <xsl:with-param name="widget_elts" select="$widget_elts"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4554
        <xsl:with-param name="label" select="$label"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4555
      </xsl:apply-templates>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4556
    </xsl:if>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4557
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4558
  <xsl:template mode="json_table_render" match="svg:*">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4559
    <xsl:param name="expressions"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4560
    <xsl:param name="widget_elts"/>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4561
    <xsl:param name="label"/>
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4562
    <xsl:variable name="new_expressions" select="func:json_expressions($expressions, $label)"/>
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4563
    <xsl:variable name="elt" select="."/>
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4564
    <xsl:for-each select="$new_expressions/expression[position() &gt; 1][starts-with(@name,'onClick')]">
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4565
      <xsl:text>        id("</xsl:text>
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4566
      <xsl:value-of select="$elt/@id"/>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4567
      <xsl:text>").onclick = this.make_on_click('</xsl:text>
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4568
      <xsl:value-of select="@name"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4569
      <xsl:text>', </xsl:text>
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4570
      <xsl:value-of select="@content"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4571
      <xsl:text>);
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4572
</xsl:text>
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4573
    </xsl:for-each>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4574
    <xsl:apply-templates mode="json_table_elt_render" select=".">
3048
d46d545ff7b7 SVGHMI: JsonTable can now have clickable elements, that trigger a request with extra argument whose content is taken from Json data.
Edouard Tisserant
parents: 3047
diff changeset
  4575
      <xsl:with-param name="expressions" select="$new_expressions"/>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4576
    </xsl:apply-templates>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4577
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4578
  <xsl:template mode="json_table_render" match="svg:g">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4579
    <xsl:param name="expressions"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4580
    <xsl:param name="widget_elts"/>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4581
    <xsl:param name="label"/>
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4582
    <xsl:variable name="gid" select="@id"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4583
    <xsl:variable name="varprefix">
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4584
      <xsl:text>obj_</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4585
      <xsl:value-of select="$gid"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4586
      <xsl:text>_</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4587
    </xsl:variable>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4588
    <xsl:text>        try {
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4589
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4590
    <xsl:for-each select="$expressions/expression">
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4591
      <xsl:text>         let </xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4592
      <xsl:value-of select="$varprefix"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4593
      <xsl:value-of select="position()"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4594
      <xsl:text> = </xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4595
      <xsl:value-of select="@content"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4596
      <xsl:text>;
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4597
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4598
      <xsl:text>         if(</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4599
      <xsl:value-of select="$varprefix"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4600
      <xsl:value-of select="position()"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4601
      <xsl:text> == undefined) {
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4602
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4603
      <xsl:text>              console.log("</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4604
      <xsl:value-of select="$varprefix"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4605
      <xsl:value-of select="position()"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4606
      <xsl:text> = </xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4607
      <xsl:value-of select="@content"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4608
      <xsl:text>");
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4609
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4610
      <xsl:text>              throw null;
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4611
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4612
      <xsl:text>         }
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4613
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4614
    </xsl:for-each>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4615
    <xsl:variable name="new_expressions">
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4616
      <xsl:for-each select="$expressions/expression">
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4617
        <xsl:copy>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4618
          <xsl:copy-of select="@name"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4619
          <xsl:attribute name="content">
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4620
            <xsl:value-of select="$varprefix"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4621
            <xsl:value-of select="position()"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4622
          </xsl:attribute>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4623
        </xsl:copy>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4624
      </xsl:for-each>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4625
    </xsl:variable>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4626
    <xsl:text>          id("</xsl:text>
2997
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  4627
    <xsl:value-of select="@id"/>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4628
    <xsl:text>").style = "</xsl:text>
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4629
    <xsl:value-of select="@style"/>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4630
    <xsl:text>";
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4631
</xsl:text>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4632
    <xsl:apply-templates mode="json_table_render_except_comments" select="*">
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4633
      <xsl:with-param name="expressions" select="func:json_expressions(exsl:node-set($new_expressions), $label)"/>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4634
      <xsl:with-param name="widget_elts" select="$widget_elts"/>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4635
    </xsl:apply-templates>
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4636
    <xsl:text>        } catch(err) {
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4637
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4638
    <xsl:text>          id("</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4639
    <xsl:value-of select="$gid"/>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  4640
    <xsl:text>").style = "display:none";
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4641
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4642
    <xsl:text>        }
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4643
</xsl:text>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4644
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4645
  <xsl:template mode="widget_defs" match="widget[@type='JsonTable']">
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4646
    <xsl:param name="hmi_element"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4647
    <xsl:call-template name="defs_by_labels">
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4648
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4649
      <xsl:with-param name="labels">
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4650
        <xsl:text>data</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4651
      </xsl:with-param>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4652
    </xsl:call-template>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4653
    <xsl:call-template name="defs_by_labels">
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4654
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4655
      <xsl:with-param name="labels">
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4656
        <xsl:text>forward backward cursor</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4657
      </xsl:with-param>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4658
      <xsl:with-param name="mandatory" select="'no'"/>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4659
    </xsl:call-template>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4660
    <xsl:variable name="data_elt" select="$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"/>
3038
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4661
    <xsl:text>    visible: </xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4662
    <xsl:value-of select="count($data_elt/*[@inkscape:label])"/>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4663
    <xsl:text>,
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4664
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4665
    <xsl:text>    spread_json_data: function(janswer) {
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4666
</xsl:text>
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4667
    <xsl:text>        let [range,position,jdata] = janswer;
92101729f7b7 SVGHMI: Alarm test not using Button widget anymore, too many problems. Use Input widget instead to increment value on each click and execute python code on change.
Edouard Tisserant
parents: 3034
diff changeset
  4668
</xsl:text>
3041
de4503de2f8c SVGHMI: JsonTable now updates range and position variables so that slider widget can update.
Edouard Tisserant
parents: 3038
diff changeset
  4669
    <xsl:text>        this.apply_hmi_value(1, range);
de4503de2f8c SVGHMI: JsonTable now updates range and position variables so that slider widget can update.
Edouard Tisserant
parents: 3038
diff changeset
  4670
</xsl:text>
de4503de2f8c SVGHMI: JsonTable now updates range and position variables so that slider widget can update.
Edouard Tisserant
parents: 3038
diff changeset
  4671
    <xsl:text>        this.apply_hmi_value(2, position);
de4503de2f8c SVGHMI: JsonTable now updates range and position variables so that slider widget can update.
Edouard Tisserant
parents: 3038
diff changeset
  4672
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4673
    <xsl:text>        this.apply_hmi_value(3, this.visible);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4674
</xsl:text>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4675
    <xsl:apply-templates mode="json_table_render_except_comments" select="$data_elt">
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4676
      <xsl:with-param name="expressions" select="$initexpr_ns"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  4677
      <xsl:with-param name="widget_elts" select="$hmi_element/*[@inkscape:label = 'data']/descendant::svg:*"/>
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4678
    </xsl:apply-templates>
2997
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  4679
    <xsl:text>    }
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4680
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4681
  </xsl:template>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4682
  <xsl:template mode="widget_class" match="widget[@type='Jump']">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4683
    <xsl:text>    class JumpWidget extends Widget{
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4684
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4685
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4686
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4687
    <xsl:text>        activable = false;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4688
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4689
    <xsl:text>        active = false;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4690
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4691
    <xsl:text>        disabled = false;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4692
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4693
    <xsl:text>        frequency = 2;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4694
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4695
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4696
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4697
    <xsl:text>        update_activity() {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4698
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4699
    <xsl:text>            if(this.active) {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4700
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4701
    <xsl:text>                 /* show active */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4702
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4703
    <xsl:text>                 this.active_elt.setAttribute("style", this.active_elt_style);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4704
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4705
    <xsl:text>                 /* hide inactive */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4706
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4707
    <xsl:text>                 this.inactive_elt.setAttribute("style", "display:none");
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4708
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4709
    <xsl:text>            } else {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4710
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4711
    <xsl:text>                 /* show inactive */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4712
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4713
    <xsl:text>                 this.inactive_elt.setAttribute("style", this.inactive_elt_style);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4714
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4715
    <xsl:text>                 /* hide active */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4716
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4717
    <xsl:text>                 this.active_elt.setAttribute("style", "display:none");
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4718
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4719
    <xsl:text>            }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4720
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4721
    <xsl:text>        }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4722
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4723
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4724
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4725
    <xsl:text>        make_on_click() {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4726
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4727
    <xsl:text>            let that = this;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4728
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4729
    <xsl:text>            const name = this.args[0];
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4730
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4731
    <xsl:text>            return function(evt){
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4732
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4733
    <xsl:text>                /* TODO: suport path pointing to local variable whom value 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4734
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4735
    <xsl:text>                   would be an HMI_TREE index to jump to a relative page */
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4736
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4737
    <xsl:text>                const index = that.indexes.length &gt; 0 ? that.indexes[0] + that.offset : undefined;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4738
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4739
    <xsl:text>                switch_page(name, index);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4740
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4741
    <xsl:text>            }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4742
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4743
    <xsl:text>        }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4744
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4745
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4746
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4747
    <xsl:text>        notify_page_change(page_name, index) {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4748
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4749
    <xsl:text>            if(this.activable) {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4750
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4751
    <xsl:text>                const ref_index = this.indexes.length &gt; 0 ? this.indexes[0] + this.offset : undefined;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4752
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4753
    <xsl:text>                const ref_name = this.args[0];
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4754
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4755
    <xsl:text>                this.active = ((ref_name == undefined || ref_name == page_name) &amp;&amp; index == ref_index);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4756
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4757
    <xsl:text>                this.update_activity();
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4758
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4759
    <xsl:text>            }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4760
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4761
    <xsl:text>        }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4762
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4763
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4764
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4765
    <xsl:text>        dispatch(value) {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4766
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4767
    <xsl:text>            this.disabled = !Number(value);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4768
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4769
    <xsl:text>            if(this.disabled) {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4770
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4771
    <xsl:text>              /* show disabled */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4772
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4773
    <xsl:text>              this.disabled_elt.setAttribute("style", this.disabled_elt_style);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4774
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4775
    <xsl:text>              /* hide inactive */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4776
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4777
    <xsl:text>              this.inactive_elt.setAttribute("style", "display:none");
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4778
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4779
    <xsl:text>              /* hide active */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4780
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4781
    <xsl:text>              this.active_elt.setAttribute("style", "display:none");
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4782
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4783
    <xsl:text>            } else {
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4784
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4785
    <xsl:text>              /* hide disabled */ 
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4786
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4787
    <xsl:text>              this.disabled_elt.setAttribute("style", "display:none");
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4788
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4789
    <xsl:text>              this.update_activity();
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4790
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4791
    <xsl:text>            }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4792
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4793
    <xsl:text>        }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4794
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4795
    <xsl:text>    }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4796
</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
  4797
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4798
  <xsl:template mode="widget_defs" match="widget[@type='Jump']">
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
  4799
    <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
  4800
    <xsl:variable name="activity">
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4801
      <xsl:call-template name="defs_by_labels">
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
  4802
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4803
        <xsl:with-param name="labels">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4804
          <xsl:text>active inactive</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4805
        </xsl:with-param>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4806
        <xsl:with-param name="mandatory" select="'no'"/>
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
  4807
      </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
  4808
    </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
  4809
    <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
  4810
    <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
  4811
    <xsl:variable name="disability">
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4812
      <xsl:call-template name="defs_by_labels">
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
  4813
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4814
        <xsl:with-param name="labels">
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4815
          <xsl:text>disabled</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4816
        </xsl:with-param>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4817
        <xsl:with-param name="mandatory" select="'no'"/>
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
  4818
      </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
  4819
    </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
  4820
    <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
  4821
    <xsl:value-of select="$disability"/>
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
  4822
    <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
  4823
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4824
    <xsl:text>        this.element.onclick = this.make_on_click();
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
  4825
</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
  4826
    <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
  4827
      <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
  4828
</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
  4829
      <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
  4830
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4831
      <xsl:text>        this.activable = true;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  4832
</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
  4833
    </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
  4834
    <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
  4835
      <xsl:when test="$have_disability">
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4836
        <xsl:text>        this.disabled_elt_style = this.disabled_elt.getAttribute("style");
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
  4837
</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
  4838
      </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
  4839
      <xsl:otherwise>
2980
2a21d6060d64 SVGHMI: add "unsubscribable" property to widgets in order to generalize what already happens for jump buttons.
Edouard Tisserant
parents: 2979
diff changeset
  4840
        <xsl:text>        this.unsubscribable = true;
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
  4841
</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
  4842
      </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
  4843
    </xsl:choose>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4844
    <xsl:text>    },
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4845
</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
  4846
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4847
  <xsl:template mode="per_page_widget_template" match="widget[@type='Jump']">
2901
3f5194bba67d SVGHMI: Jump widget now make errors if path given for relative jump doesn't match target page reference path class.
Edouard Tisserant
parents: 2899
diff changeset
  4848
    <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
  4849
    <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
  4850
      <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
  4851
        <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
  4852
          <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
  4853
            <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
  4854
          </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
  4855
          <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
  4856
            <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
  4857
          </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
  4858
        </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
  4859
      </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
  4860
      <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
  4861
        <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
  4862
          <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
  4863
            <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
  4864
          </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
  4865
          <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
  4866
            <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
  4867
          </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
  4868
        </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
  4869
      </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
  4870
      <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
  4871
        <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
  4872
          <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
  4873
          <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
  4874
          <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
  4875
          <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
  4876
          <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
  4877
          <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
  4878
          <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
  4879
          <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
  4880
          <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
  4881
        </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
  4882
      </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
  4883
    </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
  4884
  </xsl:template>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  4885
  <declarations:jump/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  4886
  <xsl:template match="declarations:jump">
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4887
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4888
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4889
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4890
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4891
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4892
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4893
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4894
</xsl:text>
2942
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4895
    <xsl:text>var jumps_need_update = false;
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4896
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4897
    <xsl:text>var jump_history = [[default_page, undefined]];
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4898
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4899
    <xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4900
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4901
    <xsl:text>function update_jumps() {
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4902
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4903
    <xsl:text>    page_desc[current_visible_page].jumps.map(w=&gt;w.notify_page_change(current_visible_page,current_page_index));
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4904
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4905
    <xsl:text>    jumps_need_update = false;
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4906
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4907
    <xsl:text>};
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4908
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4909
    <xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4910
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4911
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4912
</xsl:text>
2942
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  4913
  </xsl:template>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  4914
  <declarations:keypad/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  4915
  <xsl:template match="declarations:keypad">
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4916
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4917
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4918
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4919
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4920
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4921
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4922
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4923
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4924
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4925
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4926
    <xsl:text>var keypads = {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4927
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4928
    <xsl:for-each select="$keypads_descs">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4929
      <xsl:variable name="keypad_id" select="@id"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4930
      <xsl:for-each select="arg">
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4931
        <xsl:variable name="g" select="$geometry[@Id = $keypad_id]"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4932
        <xsl:text>    "</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4933
        <xsl:value-of select="@value"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4934
        <xsl:text>":["</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4935
        <xsl:value-of select="$keypad_id"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4936
        <xsl:text>", </xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4937
        <xsl:value-of select="$g/@x"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4938
        <xsl:text>, </xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4939
        <xsl:value-of select="$g/@y"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4940
        <xsl:text>],
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4941
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4942
      </xsl:for-each>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4943
    </xsl:for-each>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4944
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4945
</xsl:text>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4946
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  4947
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  4948
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  4949
  <xsl:template mode="widget_class" match="widget[@type='Keypad']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4950
    <xsl:text>class KeypadWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4951
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4952
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4953
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4954
    <xsl:text>     on_key_click(symbols) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4955
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4956
    <xsl:text>         var syms = symbols.split(" ");
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4957
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4958
    <xsl:text>         this.shift |= this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4959
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4960
    <xsl:text>         this.editstr += syms[this.shift?syms.length-1:0];
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4961
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4962
    <xsl:text>         this.shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4963
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4964
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4965
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4966
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4967
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4968
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4969
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4970
    <xsl:text>     on_Esc_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4971
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4972
    <xsl:text>         end_modal.call(this);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4973
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4974
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4975
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4976
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4977
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4978
    <xsl:text>     on_Enter_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4979
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4980
    <xsl:text>         let coercedval = (typeof this.initial) == "number" ? Number(this.editstr) : this.editstr;
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4981
</xsl:text>
3042
ed43facc7137 SVGHMI: Fix keypad : non-number input was always considered invalid because of missing type checking.
Edouard Tisserant
parents: 3041
diff changeset
  4982
    <xsl:text>         if(typeof coercedval == 'number' &amp;&amp; isNaN(coercedval)){
ed43facc7137 SVGHMI: Fix keypad : non-number input was always considered invalid because of missing type checking.
Edouard Tisserant
parents: 3041
diff changeset
  4983
</xsl:text>
ed43facc7137 SVGHMI: Fix keypad : non-number input was always considered invalid because of missing type checking.
Edouard Tisserant
parents: 3041
diff changeset
  4984
    <xsl:text>             // revert to initial so it explicitely shows input was ignored
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4985
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4986
    <xsl:text>             this.editstr = String(this.initial);
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4987
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4988
    <xsl:text>             this.update();
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4989
</xsl:text>
3042
ed43facc7137 SVGHMI: Fix keypad : non-number input was always considered invalid because of missing type checking.
Edouard Tisserant
parents: 3041
diff changeset
  4990
    <xsl:text>         } else { 
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4991
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4992
    <xsl:text>             let callback_obj = this.result_callback_obj;
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4993
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4994
    <xsl:text>             end_modal.call(this);
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4995
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4996
    <xsl:text>             callback_obj.edit_callback(coercedval);
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4997
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4998
    <xsl:text>         }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  4999
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5000
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5001
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5002
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5003
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5004
    <xsl:text>     on_BackSpace_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5005
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5006
    <xsl:text>         this.editstr = this.editstr.slice(0,this.editstr.length-1);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5007
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5008
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5009
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5010
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5011
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5012
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5013
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5014
    <xsl:text>     on_Sign_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5015
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5016
    <xsl:text>         if(this.editstr[0] == "-")
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5017
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5018
    <xsl:text>             this.editstr = this.editstr.slice(1,this.editstr.length);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5019
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5020
    <xsl:text>         else
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5021
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5022
    <xsl:text>             this.editstr = "-" + this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5023
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5024
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5025
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5026
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5027
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5028
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5029
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5030
    <xsl:text>     on_NumDot_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5031
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5032
    <xsl:text>         if(this.editstr.indexOf(".") == "-1"){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5033
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5034
    <xsl:text>             this.editstr += ".";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5035
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5036
    <xsl:text>             this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5037
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5038
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5039
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5040
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5041
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5042
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5043
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5044
    <xsl:text>     on_Space_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5045
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5046
    <xsl:text>         this.editstr += " ";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5047
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5048
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5049
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5050
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5051
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5052
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5053
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5054
    <xsl:text>     caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5055
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5056
    <xsl:text>     _caps = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5057
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5058
    <xsl:text>     on_CapsLock_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5059
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5060
    <xsl:text>         this.caps = !this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5061
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5062
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5063
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5064
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5065
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5066
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5067
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5068
    <xsl:text>     shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5069
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5070
    <xsl:text>     _shift = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5071
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5072
    <xsl:text>     on_Shift_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5073
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5074
    <xsl:text>         this.shift = !this.shift;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5075
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5076
    <xsl:text>         this.caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5077
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5078
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5079
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5080
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5081
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5082
    <xsl:text>     editstr = "";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5083
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5084
    <xsl:text>     _editstr = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5085
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5086
    <xsl:text>     result_callback_obj = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5087
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5088
    <xsl:text>     start_edit(info, valuetype, callback_obj, initial,size) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5089
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5090
    <xsl:text>         show_modal.call(this,size);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5091
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5092
    <xsl:text>         this.editstr = String(initial);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5093
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5094
    <xsl:text>         this.result_callback_obj = callback_obj;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5095
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5096
    <xsl:text>         this.Info_elt.textContent = info;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5097
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5098
    <xsl:text>         this.shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5099
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5100
    <xsl:text>         this.caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5101
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5102
    <xsl:text>         this.initial = initial;
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5103
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5104
    <xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5105
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5106
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5107
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5108
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5109
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5110
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5111
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5112
    <xsl:text>     update() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5113
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5114
    <xsl:text>         if(this.editstr != this._editstr){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5115
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5116
    <xsl:text>             this._editstr = this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5117
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5118
    <xsl:text>             this.Value_elt.textContent = this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5119
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5120
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5121
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  5122
    <xsl:text>         if(this.Shift_sub &amp;&amp; this.shift != this._shift){
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5123
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5124
    <xsl:text>             this._shift = this.shift;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5125
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5126
    <xsl:text>             (this.shift?widget_active_activable:widget_inactive_activable)(this.Shift_sub);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5127
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5128
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5129
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  5130
    <xsl:text>         if(this.CapsLock_sub &amp;&amp; this.caps != this._caps){
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5131
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5132
    <xsl:text>             this._caps = this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5133
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5134
    <xsl:text>             (this.caps?widget_active_activable:widget_inactive_activable)(this.CapsLock_sub);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5135
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5136
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5137
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5138
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5139
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5140
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5141
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5142
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5143
  <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
  5144
    <xsl:param name="hmi_element"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5145
    <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
  5146
      <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
  5147
      <xsl:with-param name="labels">
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5148
        <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
  5149
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5150
    </xsl:call-template>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5151
    <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
  5152
      <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
  5153
      <xsl:with-param name="labels">
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  5154
        <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
  5155
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5156
      <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
  5157
    </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
  5158
    <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
  5159
      <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
  5160
      <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
  5161
        <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
  5162
      </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
  5163
      <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
  5164
      <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
  5165
    </xsl:call-template>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  5166
    <xsl:text>    init: function() {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  5167
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5168
    <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
  5169
      <xsl:text>        id("</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5170
      <xsl:value-of select="@id"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5171
      <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
  5172
      <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
  5173
      <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
  5174
      <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
  5175
      <xsl:text>')");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5176
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5177
    </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
  5178
    <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
  5179
      <xsl:text>        if(this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5180
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5181
      <xsl:text>_elt)
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5182
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5183
      <xsl:text>            this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5184
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5185
      <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
  5186
      <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
  5187
      <xsl:text>'].on_</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5188
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5189
      <xsl:text>_click()");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5190
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5191
    </xsl:for-each>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5192
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5193
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5194
    <xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5195
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5196
    <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
  5197
    <xsl:text>    coordinates: [</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5198
    <xsl:value-of select="$g/@x"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5199
    <xsl:text>, </xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5200
    <xsl:value-of select="$g/@y"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5201
    <xsl:text>],
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5202
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5203
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5204
  <xsl:template mode="widget_defs" match="widget[@type='List']">
2997
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5205
    <xsl:param name="hmi_element"/>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5206
    <xsl:text>    items: {
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5207
</xsl:text>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5208
    <xsl:for-each select="$hmi_element/*[@inkscape:label]">
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5209
      <xsl:text>        </xsl:text>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5210
      <xsl:value-of select="@inkscape:label"/>
2997
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5211
      <xsl:text>: "</xsl:text>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5212
      <xsl:value-of select="@id"/>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5213
      <xsl:text>",
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5214
</xsl:text>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5215
    </xsl:for-each>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5216
    <xsl:text>    },
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5217
</xsl:text>
2f298089e32e SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2996
diff changeset
  5218
  </xsl:template>
3031
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5219
  <xsl:template mode="widget_defs" match="widget[@type='TextStyleList']">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5220
    <xsl:param name="hmi_element"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5221
    <xsl:text>    styles: {
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5222
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5223
    <xsl:for-each select="$hmi_element/*[@inkscape:label]">
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5224
      <xsl:variable name="style" select="func:refered_elements(.)[self::svg:text]/@style"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5225
      <xsl:text>        </xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5226
      <xsl:value-of select="@inkscape:label"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5227
      <xsl:text>: "</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5228
      <xsl:value-of select="$style"/>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5229
      <xsl:text>",
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5230
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5231
    </xsl:for-each>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5232
    <xsl:text>    },
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5233
</xsl:text>
440d74319a74 SVGHMI: Refactor the way JsonTable generate javascript code to access json data. Now support multiple assignments, used in the case of text to change both content and style on the same element.
Edouard Tisserant
parents: 3026
diff changeset
  5234
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5235
  <xsl:template mode="widget_class" match="widget[@type='Meter']">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5236
    <xsl:text>class MeterWidget extends Widget{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5237
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5238
    <xsl:text>    frequency = 10;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5239
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5240
    <xsl:text>    origin = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5241
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5242
    <xsl:text>    range = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5243
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5244
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5245
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5246
    <xsl:text>    dispatch(value) {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5247
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5248
    <xsl:text>        this.display_val = value;
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5249
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5250
    <xsl:text>        this.request_animate();
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5251
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5252
    <xsl:text>    }
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5253
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5254
    <xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5255
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5256
    <xsl:text>    animate(){
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5257
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5258
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5259
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5260
    <xsl:text>            this.value_elt.textContent = String(this.display_val);
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5261
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5262
    <xsl:text>        let [min,max,totallength] = this.range;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5263
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5264
    <xsl:text>        let length = Math.max(0,Math.min(totallength,(Number(this.display_val)-min)*totallength/(max-min)));
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5265
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5266
    <xsl:text>        let tip = this.range_elt.getPointAtLength(length);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5267
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5268
    <xsl:text>        this.needle_elt.setAttribute('d', "M "+this.origin.x+","+this.origin.y+" "+tip.x+","+tip.y);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5269
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5270
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5271
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5272
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5273
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5274
    <xsl:text>    init() {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5275
</xsl:text>
3112
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5276
    <xsl:text>        let [min,max] = [[this.min_elt,0],[this.max_elt,100]].map(([elt,def],i)=&gt;elt?
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5277
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5278
    <xsl:text>            Number(elt.textContent) :
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5279
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5280
    <xsl:text>            this.args.length &gt;= i+1 ? this.args[i] : def);
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5281
</xsl:text>
bd20f9112014 SVGHMI: still WIP, now POT file is properly generated with utf-8 encoding and POEdit is launched when pressing button.
Edouard Tisserant
parents: 3103
diff changeset
  5282
    <xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5283
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5284
    <xsl:text>        this.range = [min, max, this.range_elt.getTotalLength()]
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5285
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5286
    <xsl:text>        this.origin = this.needle_elt.getPointAtLength(0);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5287
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5288
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5289
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5290
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5291
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5292
    <xsl:text>}
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5293
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5294
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5295
  <xsl:template mode="widget_defs" match="widget[@type='Meter']">
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
  5296
    <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
  5297
    <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
  5298
      <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
  5299
      <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
  5300
        <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
  5301
      </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
  5302
    </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
  5303
    <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
  5304
      <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
  5305
      <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
  5306
        <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
  5307
      </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
  5308
      <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
  5309
    </xsl:call-template>
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
  5310
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5311
  <xsl:template mode="widget_class" match="widget[@type='MultiState']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5312
    <xsl:text>class MultiStateWidget extends Widget{
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5313
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5314
    <xsl:text>    frequency = 5;
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5315
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5316
    <xsl:text>    state = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5317
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5318
    <xsl:text>    dispatch(value) {
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5319
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5320
    <xsl:text>        this.state = value;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5321
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5322
    <xsl:text>        for(let choice of this.choices){
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5323
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5324
    <xsl:text>            if(this.state != choice.value){
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5325
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5326
    <xsl:text>                choice.elt.setAttribute("style", "display:none");
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5327
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5328
    <xsl:text>            } else {
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5329
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5330
    <xsl:text>                choice.elt.setAttribute("style", choice.style);
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5331
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5332
    <xsl:text>            }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5333
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5334
    <xsl:text>        }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5335
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5336
    <xsl:text>    }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5337
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5338
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5339
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5340
    <xsl:text>    on_click(evt) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5341
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5342
    <xsl:text>        //get current selected value
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5343
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5344
    <xsl:text>        let next_ind;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5345
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5346
    <xsl:text>        for(next_ind=0; next_ind&lt;this.choices.length; next_ind++){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5347
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5348
    <xsl:text>            if(this.state == this.choices[next_ind].value){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5349
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5350
    <xsl:text>               next_ind = next_ind + 1;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5351
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5352
    <xsl:text>               break;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5353
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5354
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5355
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5356
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5357
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5358
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5359
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5360
    <xsl:text>        //get next selected value
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5361
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5362
    <xsl:text>        if(this.choices.length &gt; next_ind){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5363
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5364
    <xsl:text>            this.state = this.choices[next_ind].value;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5365
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5366
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5367
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5368
    <xsl:text>        else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5369
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5370
    <xsl:text>            this.state = this.choices[0].value;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5371
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5372
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5373
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5374
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5375
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5376
    <xsl:text>        //post value to plc
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5377
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5378
    <xsl:text>        this.apply_hmi_value(0, this.state);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5379
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5380
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5381
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5382
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5383
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5384
    <xsl:text>    init() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5385
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5386
    <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)");
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5387
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5388
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5389
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5390
    <xsl:text>}
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5391
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5392
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5393
  <xsl:template mode="widget_defs" match="widget[@type='MultiState']">
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5394
    <xsl:param name="hmi_element"/>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5395
    <xsl:text>    choices: [
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5396
</xsl:text>
2907
1695122a5e16 SVGHMI: HMI:Switch now accepts boolean values 'true' and 'false'
Edouard Tisserant
parents: 2906
diff changeset
  5397
    <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
2969
88988edb2e93 SVGHMI: Switch widget was picking sub-elements from original SVG, not the result SVG ehwe clones are unlinked, thus making problems with svg:use based widgets.
Edouard Tisserant
parents: 2962
diff changeset
  5398
    <xsl:for-each select="$result_svg_ns//*[@id = $hmi_element/@id]//*[regexp:test(@inkscape:label,$regex)]">
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5399
      <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
  5400
      <xsl:text>        {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5401
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5402
      <xsl:text>            elt:id("</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5403
      <xsl:value-of select="@id"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5404
      <xsl:text>"),
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5405
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5406
      <xsl:text>            style:"</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5407
      <xsl:value-of select="@style"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5408
      <xsl:text>",
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5409
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5410
      <xsl:text>            value:</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5411
      <xsl:value-of select="$literal"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5412
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5413
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5414
      <xsl:text>        }</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5415
      <xsl:if test="position()!=last()">
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5416
        <xsl:text>,</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5417
      </xsl:if>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5418
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5419
</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5420
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5421
    <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
  5422
</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
  5423
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5424
  <xsl:template mode="widget_class" match="widget[@type='Slider']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5425
    <xsl:text>class SliderWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5426
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5427
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5428
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5429
    <xsl:text>    range = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5430
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5431
    <xsl:text>    handle_orig = undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5432
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5433
    <xsl:text>    scroll_size = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5434
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5435
    <xsl:text>    scroll_range = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5436
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5437
    <xsl:text>    scroll_visible = 7;
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5438
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5439
    <xsl:text>    min_size = 0.07;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5440
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5441
    <xsl:text>    fi = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5442
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5443
    <xsl:text>    curr_value = 0;
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5444
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5445
    <xsl:text>    drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5446
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5447
    <xsl:text>    enTimer = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5448
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5449
    <xsl:text>    handle_click = undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5450
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5451
    <xsl:text>    last_drag = false;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5452
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5453
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5454
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5455
    <xsl:text>    dispatch(value,oldval, index) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5456
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5457
    <xsl:text>        if (index == 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5458
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5459
    <xsl:text>            let [min,max,start,totallength] = this.range;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5460
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5461
    <xsl:text>            //save current value inside widget
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5462
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5463
    <xsl:text>            this.curr_value = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5464
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5465
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5466
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5467
    <xsl:text>            //check if in range
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5468
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5469
    <xsl:text>            if (this.curr_value &gt; max){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5470
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5471
    <xsl:text>                this.curr_value = max;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5472
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5473
    <xsl:text>                this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5474
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5475
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5476
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5477
    <xsl:text>            else if (this.curr_value &lt; min){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5478
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5479
    <xsl:text>                this.curr_value = min;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5480
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5481
    <xsl:text>                this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5482
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5483
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5484
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5485
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5486
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5487
    <xsl:text>            if(this.value_elt)
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5488
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5489
    <xsl:text>                this.value_elt.textContent = String(value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5490
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5491
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5492
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5493
    <xsl:text>        else if(index == 1){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5494
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5495
    <xsl:text>            this.scroll_range = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5496
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5497
    <xsl:text>            this.set_scroll();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5498
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5499
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5500
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5501
    <xsl:text>        else if(index == 2){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5502
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5503
    <xsl:text>            this.scroll_visible = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5504
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5505
    <xsl:text>            this.set_scroll();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5506
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5507
    <xsl:text>        }
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5508
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5509
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5510
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5511
    <xsl:text>        //don't update if draging and setpoint ghost doesn't exist
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5512
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5513
    <xsl:text>        if(!this.drag || (this.setpoint_elt != undefined)){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5514
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5515
    <xsl:text>            this.update_DOM(this.curr_value, this.handle_elt);
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5516
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5517
    <xsl:text>        }
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5518
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5519
    <xsl:text>    }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5520
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5521
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5522
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5523
    <xsl:text>    set_scroll(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5524
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5525
    <xsl:text>        //check if range is bigger than visible and set scroll size
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5526
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5527
    <xsl:text>        if(this.scroll_range &gt; this.scroll_visible){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5528
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5529
    <xsl:text>            this.scroll_size = this.scroll_range - this.scroll_visible;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5530
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5531
    <xsl:text>            this.range[0] = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5532
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5533
    <xsl:text>            this.range[1] = this.scroll_size;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5534
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5535
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5536
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5537
    <xsl:text>        else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5538
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5539
    <xsl:text>            this.scroll_size = 1;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5540
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5541
    <xsl:text>            this.range[0] = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5542
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5543
    <xsl:text>            this.range[1] = 1;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5544
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5545
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5546
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5547
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5548
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5549
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5550
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5551
    <xsl:text>    update_DOM(value, elt){
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5552
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5553
    <xsl:text>        let [min,max,start,totallength] = this.range;
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5554
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5555
    <xsl:text>        // check if handle is resizeable
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5556
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5557
    <xsl:text>        if (this.scroll_size != undefined){ //size changes
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5558
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5559
    <xsl:text>            //get parameters
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5560
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5561
    <xsl:text>            let length = Math.max(min,Math.min(max,(Number(value)-min)*max/(max-min)));
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5562
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5563
    <xsl:text>            let tip = this.range_elt.getPointAtLength(length);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5564
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5565
    <xsl:text>            let handle_min = totallength*this.min_size;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5566
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5567
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5568
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5569
    <xsl:text>            let step = 1;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5570
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5571
    <xsl:text>            //check if range is bigger than  max displayed and recalculate step
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5572
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5573
    <xsl:text>            if ((totallength/handle_min) &lt; (max-min+1)){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5574
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5575
    <xsl:text>                step = (max-min+1)/(totallength/handle_min-1);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5576
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5577
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5578
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5579
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5580
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5581
    <xsl:text>            let kx,ky,offseY,offseX = undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5582
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5583
    <xsl:text>            //scale on x or y axes
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5584
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5585
    <xsl:text>            if (this.fi &gt; 0.75){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5586
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5587
    <xsl:text>                //get scale factor
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5588
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5589
    <xsl:text>                if(step &gt; 1){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5590
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5591
    <xsl:text>                    ky = handle_min/this.handle_orig.height;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5592
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5593
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5594
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5595
    <xsl:text>                else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5596
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5597
    <xsl:text>                    ky = (totallength-handle_min*(max-min))/this.handle_orig.height;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5598
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5599
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5600
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5601
    <xsl:text>                kx = 1;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5602
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5603
    <xsl:text>                //get 0 offset to stay inside range
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5604
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5605
    <xsl:text>                offseY = start.y - (this.handle_orig.height + this.handle_orig.y) * ky;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5606
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5607
    <xsl:text>                offseX = 0;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5608
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5609
    <xsl:text>                //get distance from value
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5610
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5611
    <xsl:text>                tip.y =this.range_elt.getPointAtLength(0).y - length/step *handle_min;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5612
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5613
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5614
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5615
    <xsl:text>            else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5616
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5617
    <xsl:text>                //get scale factor
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5618
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5619
    <xsl:text>                if(step &gt; 1){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5620
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5621
    <xsl:text>                    kx = handle_min/this.handle_orig.width;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5622
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5623
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5624
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5625
    <xsl:text>                else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5626
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5627
    <xsl:text>                    kx = (totallength-handle_min*(max-min))/this.handle_orig.width;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5628
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5629
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5630
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5631
    <xsl:text>                ky = 1;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5632
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5633
    <xsl:text>                //get 0 offset to stay inside range
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5634
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5635
    <xsl:text>                offseX = start.x - (this.handle_orig.x * kx);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5636
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5637
    <xsl:text>                offseY = 0;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5638
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5639
    <xsl:text>                //get distance from value
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5640
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5641
    <xsl:text>                tip.x =this.range_elt.getPointAtLength(0).x + length/step *handle_min;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5642
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5643
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5644
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5645
    <xsl:text>            elt.setAttribute('transform',"matrix("+(kx)+" 0 0 "+(ky)+" "+(tip.x-start.x+offseX)+" "+(tip.y-start.y+offseY)+")");
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5646
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5647
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5648
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5649
    <xsl:text>        else{ //size stays the same
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5650
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5651
    <xsl:text>            let length = Math.max(0,Math.min(totallength,(Number(value)-min)*totallength/(max-min)));
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5652
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5653
    <xsl:text>            let tip = this.range_elt.getPointAtLength(length);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5654
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5655
    <xsl:text>            elt.setAttribute('transform',"translate("+(tip.x-start.x)+","+(tip.y-start.y)+")");
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5656
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5657
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5658
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5659
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5660
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5661
    <xsl:text>        // show or hide ghost if exists
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5662
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5663
    <xsl:text>        if(this.setpoint_elt != undefined){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5664
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5665
    <xsl:text>            if(this.last_drag!= this.drag){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5666
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5667
    <xsl:text>                if(this.drag){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5668
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5669
    <xsl:text>                    this.setpoint_elt.setAttribute("style", this.setpoint_style);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5670
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5671
    <xsl:text>                }else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5672
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5673
    <xsl:text>                    this.setpoint_elt.setAttribute("style", "display:none");
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5674
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5675
    <xsl:text>                }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5676
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5677
    <xsl:text>                this.last_drag = this.drag;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5678
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5679
    <xsl:text>            }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5680
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5681
    <xsl:text>        }
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5682
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5683
    <xsl:text>    }
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5684
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5685
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5686
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5687
    <xsl:text>    on_release(evt) {
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5688
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5689
    <xsl:text>        //unbind events
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5690
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5691
    <xsl:text>        window.removeEventListener("touchmove", this.on_bound_drag, true);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5692
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5693
    <xsl:text>        window.removeEventListener("mousemove", this.on_bound_drag, true);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5694
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5695
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5696
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5697
    <xsl:text>        window.removeEventListener("mouseup", this.bound_on_release, true);
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5698
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5699
    <xsl:text>        window.removeEventListener("touchend", this.bound_on_release, true);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5700
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5701
    <xsl:text>        window.removeEventListener("touchcancel", this.bound_on_release, true);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5702
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5703
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5704
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5705
    <xsl:text>        //reset drag flag
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5706
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5707
    <xsl:text>        if(this.drag){
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5708
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5709
    <xsl:text>            this.drag = false;
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5710
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5711
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5712
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5713
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5714
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5715
    <xsl:text>        // get final position
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5716
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5717
    <xsl:text>        this.update_position(evt);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5718
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5719
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5720
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5721
    <xsl:text>    }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5722
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5723
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5724
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5725
    <xsl:text>    on_drag(evt){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5726
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5727
    <xsl:text>        //ignore drag event for X amount of time and if not selected
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5728
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5729
    <xsl:text>        if(this.enTimer &amp;&amp; this.drag){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5730
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5731
    <xsl:text>            this.update_position(evt);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5732
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5733
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5734
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5735
    <xsl:text>            //reset timer
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5736
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5737
    <xsl:text>            this.enTimer = false;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5738
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5739
    <xsl:text>            setTimeout("{hmi_widgets['"+this.element_id+"'].enTimer = true;}", 100);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5740
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5741
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5742
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5743
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5744
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5745
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5746
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5747
    <xsl:text>    update_position(evt){
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5748
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5749
    <xsl:text>        var html_dist = 0;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5750
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5751
    <xsl:text>        let [min,max,start,totallength] = this.range;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5752
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5753
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5754
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5755
    <xsl:text>        //calculate size of widget in html
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5756
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5757
    <xsl:text>        var range_borders = this.range_elt.getBoundingClientRect();
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5758
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5759
    <xsl:text>        var [minX,minY,maxX,maxY] = [range_borders.left,range_borders.bottom,range_borders.right,range_borders.top];
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5760
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5761
    <xsl:text>        var range_length = Math.sqrt( range_borders.height*range_borders.height + range_borders.width*range_borders.width );
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5762
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5763
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5764
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5765
    <xsl:text>        //get range and mouse coordinates
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5766
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5767
    <xsl:text>        var mouseX = undefined;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5768
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5769
    <xsl:text>        var mouseY = undefined;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5770
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5771
    <xsl:text>        if (evt.type.startsWith("touch")){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5772
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5773
    <xsl:text>            mouseX = Math.ceil(evt.touches[0].clientX);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5774
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5775
    <xsl:text>            mouseY = Math.ceil(evt.touches[0].clientY);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5776
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5777
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5778
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5779
    <xsl:text>        else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5780
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5781
    <xsl:text>            mouseX = evt.pageX;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5782
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5783
    <xsl:text>            mouseY = evt.pageY;
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5784
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5785
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5786
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5787
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5788
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5789
    <xsl:text>        // calculate position
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5790
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5791
    <xsl:text>        if (this.handle_click){ //if clicked on handle
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5792
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5793
    <xsl:text>            let moveDist = 0, resizeAdd = 0;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5794
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5795
    <xsl:text>            let range_percent = 1;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5796
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5797
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5798
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5799
    <xsl:text>            //set paramters for resizeable handle
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5800
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5801
    <xsl:text>            if (this.scroll_size != undefined){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5802
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5803
    <xsl:text>                // add one more object to stay inside range
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5804
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5805
    <xsl:text>                resizeAdd = 1;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5806
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5807
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5808
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5809
    <xsl:text>                //chack if range is bigger than display option and
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5810
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5811
    <xsl:text>                // calculate percent of range with out handle
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5812
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5813
    <xsl:text>                if(((max/(max*this.min_size)) &lt; (max-min+1))){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5814
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5815
    <xsl:text>                    range_percent = 1-this.min_size;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5816
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5817
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5818
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5819
    <xsl:text>                else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5820
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5821
    <xsl:text>                    range_percent = 1-(max-max*this.min_size*(max-min))/max;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5822
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5823
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5824
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5825
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5826
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5827
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5828
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5829
    <xsl:text>            //calculate value difference on x or y axis
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5830
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5831
    <xsl:text>            if(this.fi &gt; 0.7){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5832
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5833
    <xsl:text>                moveDist = ((max-min+resizeAdd)/(range_length*range_percent))*((this.handle_click[1]-mouseY)/Math.sin(this.fi));
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5834
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5835
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5836
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5837
    <xsl:text>            else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5838
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5839
    <xsl:text>                moveDist = ((max-min+resizeAdd)/(range_length*range_percent))*((mouseX-this.handle_click[0])/Math.cos(this.fi));
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5840
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5841
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5842
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5843
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5844
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5845
    <xsl:text>            this.curr_value = Math.ceil(this.handle_click[2] + moveDist);
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5846
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5847
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5848
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5849
    <xsl:text>        else{ //if clicked on widget
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5850
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5851
    <xsl:text>            //get handle distance from mouse position
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5852
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5853
    <xsl:text>            if (minX &gt; mouseX &amp;&amp; minY &lt; mouseY){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5854
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5855
    <xsl:text>                html_dist = 0;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5856
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5857
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5858
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5859
    <xsl:text>            else if (maxX &lt; mouseX &amp;&amp; maxY &gt; mouseY){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5860
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5861
    <xsl:text>                html_dist = range_length;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5862
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5863
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5864
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5865
    <xsl:text>            else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5866
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5867
    <xsl:text>                if(this.fi &gt; 0.7){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5868
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5869
    <xsl:text>                    html_dist = (minY - mouseY)/Math.sin(this.fi);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5870
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5871
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5872
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5873
    <xsl:text>                else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5874
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5875
    <xsl:text>                    html_dist = (mouseX - minX)/Math.cos(this.fi);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5876
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5877
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5878
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5879
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5880
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5881
    <xsl:text>            //calculate distance
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5882
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5883
    <xsl:text>            this.curr_value=Math.ceil((html_dist/range_length)*(this.range[1]-this.range[0])+this.range[0]);
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5884
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5885
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5886
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5887
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5888
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5889
    <xsl:text>        //check if in range and apply
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5890
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5891
    <xsl:text>        if (this.curr_value &gt; max){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5892
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5893
    <xsl:text>            this.curr_value = max;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5894
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5895
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5896
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5897
    <xsl:text>        else if (this.curr_value &lt; min){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5898
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5899
    <xsl:text>            this.curr_value = min;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5900
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5901
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5902
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5903
    <xsl:text>        this.apply_hmi_value(0, this.curr_value);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5904
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5905
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5906
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5907
    <xsl:text>        //redraw handle
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5908
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5909
    <xsl:text>        this.request_animate();
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5910
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5911
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5912
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5913
    <xsl:text>    }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5914
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5915
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5916
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5917
    <xsl:text>    animate(){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5918
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5919
    <xsl:text>        // redraw handle on screen refresh
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5920
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5921
    <xsl:text>        // check if setpoint(ghost) handle exsist otherwise update main handle
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5922
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5923
    <xsl:text>        if(this.setpoint_elt != undefined){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5924
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5925
    <xsl:text>            this.update_DOM(this.curr_value, this.setpoint_elt);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5926
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5927
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5928
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5929
    <xsl:text>        else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5930
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5931
    <xsl:text>            this.update_DOM(this.curr_value, this.handle_elt);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5932
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5933
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5934
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5935
    <xsl:text>    }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5936
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5937
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5938
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5939
    <xsl:text>    on_select(evt){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5940
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5941
    <xsl:text>        //enable drag flag and timer
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5942
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5943
    <xsl:text>        this.drag = true;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5944
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5945
    <xsl:text>        this.enTimer = true;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5946
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5947
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5948
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5949
    <xsl:text>        //bind events
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5950
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5951
    <xsl:text>        window.addEventListener("touchmove", this.on_bound_drag, true);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5952
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5953
    <xsl:text>        window.addEventListener("mousemove", this.on_bound_drag, true);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5954
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5955
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5956
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5957
    <xsl:text>        window.addEventListener("mouseup", this.bound_on_release, true);
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5958
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5959
    <xsl:text>        window.addEventListener("touchend", this.bound_on_release, true);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5960
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5961
    <xsl:text>        window.addEventListener("touchcancel", this.bound_on_release, true);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5962
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5963
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5964
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5965
    <xsl:text>        // check if handle was pressed
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5966
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5967
    <xsl:text>        if (evt.currentTarget == this.handle_elt){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5968
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5969
    <xsl:text>            //get mouse position on the handle
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5970
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5971
    <xsl:text>            let mouseX = undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5972
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5973
    <xsl:text>            let mouseY = undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5974
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5975
    <xsl:text>            if (evt.type.startsWith("touch")){
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5976
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5977
    <xsl:text>                mouseX = Math.ceil(evt.touches[0].clientX);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5978
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5979
    <xsl:text>                mouseY = Math.ceil(evt.touches[0].clientY);
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5980
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5981
    <xsl:text>            }
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5982
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5983
    <xsl:text>            else{
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5984
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5985
    <xsl:text>                mouseX = evt.pageX;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5986
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5987
    <xsl:text>                mouseY = evt.pageY;
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5988
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5989
    <xsl:text>            }
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5990
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5991
    <xsl:text>            //save coordinates and orig value
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5992
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5993
    <xsl:text>            this.handle_click = [mouseX,mouseY,this.curr_value];
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5994
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  5995
    <xsl:text>        }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5996
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5997
    <xsl:text>        else{
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5998
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  5999
    <xsl:text>            // get new handle position and reset if handle was not pressed
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6000
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6001
    <xsl:text>            this.handle_click = undefined;
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6002
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6003
    <xsl:text>            this.update_position(evt);
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6004
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6005
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6006
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6007
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6008
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6009
    <xsl:text>        //prevent next events
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6010
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6011
    <xsl:text>        evt.stopPropagation();
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6012
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6013
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6014
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6015
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6016
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6017
    <xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6018
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6019
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6020
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6021
    <xsl:text>    init() {
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6022
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6023
    <xsl:text>        //set min max value if not defined
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6024
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6025
    <xsl:text>        let min = this.min_elt ?
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6026
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6027
    <xsl:text>                    Number(this.min_elt.textContent) :
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6028
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6029
    <xsl:text>                    this.args.length &gt;= 1 ? this.args[0] : 0;
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6030
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6031
    <xsl:text>        let max = this.max_elt ?
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6032
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6033
    <xsl:text>                    Number(this.max_elt.textContent) :
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6034
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6035
    <xsl:text>                    this.args.length &gt;= 2 ? this.args[1] : 100;
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6036
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6037
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6038
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6039
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6040
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6041
    <xsl:text>        // save initial parameters
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6042
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6043
    <xsl:text>        this.range_elt.style.strokeMiterlimit="0";
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6044
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6045
    <xsl:text>        this.range = [min, max, this.range_elt.getPointAtLength(0),this.range_elt.getTotalLength()];
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6046
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6047
    <xsl:text>        let start = this.range_elt.getPointAtLength(0);
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6048
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6049
    <xsl:text>        let end = this.range_elt.getPointAtLength(this.range_elt.getTotalLength());
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6050
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6051
    <xsl:text>        this.fi = Math.atan2(start.y-end.y, end.x-start.x);
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6052
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6053
    <xsl:text>        this.handle_orig = this.handle_elt.getBBox();
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6054
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6055
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6056
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6057
    <xsl:text>        //bind functions
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6058
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6059
    <xsl:text>        this.bound_on_select = this.on_select.bind(this);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6060
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6061
    <xsl:text>        this.bound_on_release = this.on_release.bind(this);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6062
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6063
    <xsl:text>        this.on_bound_drag = this.on_drag.bind(this);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6064
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6065
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6066
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6067
    <xsl:text>        this.handle_elt.addEventListener("mousedown", this.bound_on_select);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6068
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6069
    <xsl:text>        this.element.addEventListener("mousedown", this.bound_on_select);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6070
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6071
    <xsl:text>        this.element.addEventListener("touchstart", this.bound_on_select);
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6072
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6073
    <xsl:text>        //touch recognised as page drag without next command
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6074
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6075
    <xsl:text>        document.body.addEventListener("touchstart", function(e){}, false);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6076
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6077
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6078
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6079
    <xsl:text>        //save ghost style
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6080
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6081
    <xsl:text>        if(this.setpoint_elt != undefined){
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6082
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6083
    <xsl:text>            this.setpoint_style = this.setpoint_elt.getAttribute("style");
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6084
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6085
    <xsl:text>            this.setpoint_elt.setAttribute("style", "display:none");
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6086
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6087
    <xsl:text>        }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6088
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6089
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6090
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6091
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6092
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6093
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6094
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6095
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6096
  <xsl:template mode="widget_defs" match="widget[@type='Slider']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6097
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6098
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6099
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6100
      <xsl:with-param name="labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6101
        <xsl:text>handle range</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6102
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6103
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6104
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6105
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6106
      <xsl:with-param name="labels">
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6107
        <xsl:text>value min max setpoint</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6108
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6109
      <xsl:with-param name="mandatory" select="'no'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6110
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6111
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6112
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6113
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6114
  <xsl:template mode="widget_class" match="widget[@type='Switch']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6115
    <xsl:text>class SwitchWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6116
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6117
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6118
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6119
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6120
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6121
    <xsl:text>        for(let choice of this.choices){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6122
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6123
    <xsl:text>            if(value != choice.value){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6124
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6125
    <xsl:text>                choice.elt.setAttribute("style", "display:none");
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6126
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6127
    <xsl:text>            } else {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6128
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6129
    <xsl:text>                choice.elt.setAttribute("style", choice.style);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6130
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6131
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6132
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6133
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6134
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6135
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6136
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6137
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6138
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6139
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6140
  <xsl:template mode="widget_defs" match="widget[@type='Switch']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6141
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6142
    <xsl:text>    choices: [
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6143
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6144
    <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6145
    <xsl:for-each select="$result_svg_ns//*[@id = $hmi_element/@id]//*[regexp:test(@inkscape:label,$regex)]">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6146
      <xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6147
      <xsl:text>        {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6148
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6149
      <xsl:text>            elt:id("</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6150
      <xsl:value-of select="@id"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6151
      <xsl:text>"),
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6152
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6153
      <xsl:text>            style:"</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6154
      <xsl:value-of select="@style"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6155
      <xsl:text>",
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6156
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6157
      <xsl:text>            value:</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6158
      <xsl:value-of select="$literal"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6159
      <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6160
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6161
      <xsl:text>        }</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6162
      <xsl:if test="position()!=last()">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6163
        <xsl:text>,</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6164
      </xsl:if>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6165
      <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6166
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6167
    </xsl:for-each>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6168
    <xsl:text>    ],
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6169
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6170
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6171
  <xsl:template mode="widget_class" match="widget[@type='ToggleButton']">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6172
    <xsl:text>class ToggleButtonWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6173
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6174
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6175
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6176
    <xsl:text>    state = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6177
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6178
    <xsl:text>    active_style = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6179
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6180
    <xsl:text>    inactive_style = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6181
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6182
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6183
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6184
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6185
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6186
    <xsl:text>        this.state = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6187
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6188
    <xsl:text>        //redraw toggle button
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6189
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6190
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6191
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6192
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6193
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6194
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6195
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6196
    <xsl:text>    on_click(evt) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6197
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6198
    <xsl:text>        //toggle state and apply
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6199
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6200
    <xsl:text>        if (this.state) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6201
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6202
    <xsl:text>            this.state = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6203
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6204
    <xsl:text>        } else {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6205
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6206
    <xsl:text>            this.state = 1;
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6207
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6208
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6209
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6210
    <xsl:text>        this.apply_hmi_value(0, this.state);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6211
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6212
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6213
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6214
    <xsl:text>        //redraw toggle button
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6215
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6216
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6217
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6218
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6219
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6220
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6221
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6222
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6223
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6224
    <xsl:text>       // redraw toggle button on screen refresh
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6225
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6226
    <xsl:text>       if (this.state) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6227
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6228
    <xsl:text>           this.active_elt.setAttribute("style", this.active_style);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6229
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6230
    <xsl:text>           this.inactive_elt.setAttribute("style", "display:none");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6231
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6232
    <xsl:text>       } else {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6233
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6234
    <xsl:text>           this.inactive_elt.setAttribute("style", this.inactive_style);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6235
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6236
    <xsl:text>           this.active_elt.setAttribute("style", "display:none");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6237
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6238
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6239
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6240
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6241
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6242
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6243
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6244
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6245
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6246
    <xsl:text>        this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6247
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6248
    <xsl:text>        this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6249
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6250
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6251
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6252
    <xsl:text>        if (this.active_style &amp;&amp; this.inactive_style) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6253
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6254
    <xsl:text>            this.active_elt.setAttribute("style", "display:none");
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6255
</xsl:text>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6256
    <xsl:text>            this.inactive_elt.setAttribute("style", this.inactive_style);
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6257
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6258
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6259
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6260
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6261
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6262
    <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)");
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6263
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6264
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6265
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6266
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6267
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6268
  </xsl:template>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6269
  <xsl:template mode="widget_defs" match="widget[@type='ToggleButton']">
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6270
    <xsl:param name="hmi_element"/>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6271
    <xsl:call-template name="defs_by_labels">
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6272
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6273
      <xsl:with-param name="labels">
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6274
        <xsl:text>active inactive</xsl:text>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6275
      </xsl:with-param>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6276
      <xsl:with-param name="mandatory" select="'no'"/>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6277
    </xsl:call-template>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6278
    <xsl:text>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6279
</xsl:text>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6280
  </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
  6281
  <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
  6282
    <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
  6283
      <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
  6284
    </xsl:comment>
2949
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  6285
    <xsl:comment>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  6286
      <xsl:apply-templates select="document('')/*/debug:*"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  6287
    </xsl:comment>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  6288
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
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
  6289
      <head/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6290
      <body style="margin:0;overflow:hidden;user-select:none;touch-action:none;">
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
  6291
        <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
  6292
        <script>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6293
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6294
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6295
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6296
// Early independent declarations 
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6297
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6298
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6299
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6300
          <xsl:apply-templates select="document('')/*/preamble:*"/>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6301
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6302
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6303
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6304
// Declarations depending on preamble 
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6305
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6306
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6307
</xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6308
          <xsl:apply-templates select="document('')/*/declarations:*"/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6309
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6310
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6311
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6312
// Order independent declaration and code 
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6313
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6314
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6315
</xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6316
          <xsl:apply-templates select="document('')/*/definitions:*"/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6317
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6318
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6319
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6320
// Statements that needs to be at the end 
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6321
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6322
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6323
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6324
          <xsl:apply-templates select="document('')/*/epilogue:*"/>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6325
          <xsl:text>// svghmi.js
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6326
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6327
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6328
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6329
          <xsl:text>var updates = {};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6330
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  6331
          <xsl:text>var need_cache_apply = [];
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6332
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6333
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6334
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6335
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6336
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6337
          <xsl:text>function dispatch_value(index, value) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6338
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6339
          <xsl:text>    let widgets = subscribers(index);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6340
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6341
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6342
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6343
          <xsl:text>    let oldval = cache[index];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6344
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6345
          <xsl:text>    cache[index] = value;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6346
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6347
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6348
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6349
          <xsl:text>    if(widgets.size &gt; 0) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6350
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6351
          <xsl:text>        for(let widget of widgets){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6352
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6353
          <xsl:text>            widget.new_hmi_value(index, value, oldval);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6354
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6355
          <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6356
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6357
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6358
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6359
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6360
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6361
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6362
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6363
          <xsl:text>function init_widgets() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6364
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6365
          <xsl:text>    Object.keys(hmi_widgets).forEach(function(id) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6366
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6367
          <xsl:text>        let widget = hmi_widgets[id];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6368
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6369
          <xsl:text>        let init = widget.init;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6370
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6371
          <xsl:text>        if(typeof(init) == "function"){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6372
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6373
          <xsl:text>            try {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6374
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6375
          <xsl:text>                init.call(widget);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6376
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6377
          <xsl:text>            } catch(err) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6378
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6379
          <xsl:text>                console.log(err);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6380
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6381
          <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6382
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6383
          <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6384
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6385
          <xsl:text>    });
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6386
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6387
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6388
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6389
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6390
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6391
          <xsl:text>// Open WebSocket to relative "/ws" address
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6392
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6393
          <xsl:text>var ws = new WebSocket(window.location.href.replace(/^http(s?:\/\/[^\/]*)\/.*$/, 'ws$1/ws'));
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6394
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6395
          <xsl:text>ws.binaryType = 'arraybuffer';
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6396
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6397
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6398
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6399
          <xsl:text>const dvgetters = {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6400
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6401
          <xsl:text>    INT: (dv,offset) =&gt; [dv.getInt16(offset, true), 2],
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6402
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6403
          <xsl:text>    BOOL: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6404
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6405
          <xsl:text>    NODE: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6406
</xsl:text>
3068
81758c94f3df SVGHMI: Fix HMI_REAL support, and add a HMI_REAL use case in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3065
diff changeset
  6407
          <xsl:text>    REAL: (dv,offset) =&gt; [dv.getFloat32(offset, true), 4],
81758c94f3df SVGHMI: Fix HMI_REAL support, and add a HMI_REAL use case in tests/svghmi.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3065
diff changeset
  6408
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6409
          <xsl:text>    STRING: (dv, offset) =&gt; {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6410
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  6411
          <xsl:text>        const size = dv.getInt8(offset);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6412
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6413
          <xsl:text>        return [
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6414
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6415
          <xsl:text>            String.fromCharCode.apply(null, new Uint8Array(
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6416
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6417
          <xsl:text>                dv.buffer, /* original buffer */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6418
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6419
          <xsl:text>                offset + 1, /* string starts after size*/
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6420
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6421
          <xsl:text>                size /* size of string */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6422
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6423
          <xsl:text>            )), size + 1]; /* total increment */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6424
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6425
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6426
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6427
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6428
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6429
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6430
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6431
          <xsl:text>// Apply updates recieved through ws.onmessage to subscribed widgets
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6432
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6433
          <xsl:text>function apply_updates() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6434
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6435
          <xsl:text>    for(let index in updates){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6436
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6437
          <xsl:text>        // serving as a key, index becomes a string
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6438
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6439
          <xsl:text>        // -&gt; pass Number(index) instead
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6440
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6441
          <xsl:text>        dispatch_value(Number(index), updates[index]);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6442
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6443
          <xsl:text>        delete updates[index];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6444
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6445
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6446
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6447
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6448
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6449
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6450
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6451
          <xsl:text>// Called on requestAnimationFrame, modifies DOM
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6452
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6453
          <xsl:text>var requestAnimationFrameID = null;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6454
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6455
          <xsl:text>function animate() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6456
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6457
          <xsl:text>    // Do the page swith if any one pending
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6458
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6459
          <xsl:text>    if(current_subscribed_page != current_visible_page){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6460
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6461
          <xsl:text>        switch_visible_page(current_subscribed_page);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6462
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6463
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6464
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6465
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6466
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6467
          <xsl:text>    while(widget = need_cache_apply.pop()){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6468
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6469
          <xsl:text>        widget.apply_cache();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6470
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6471
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6472
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6473
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6474
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6475
          <xsl:text>    if(jumps_need_update) update_jumps();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6476
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6477
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6478
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6479
          <xsl:text>    apply_updates();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6480
</xsl:text>
3019
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6481
          <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6482
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6483
          <xsl:text>    pending_widget_animates.forEach(widget =&gt; widget._animate());
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6484
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6485
          <xsl:text>    pending_widget_animates = [];
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6486
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6487
          <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  6488
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6489
          <xsl:text>    requestAnimationFrameID = null;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6490
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6491
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6492
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6493
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6494
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6495
          <xsl:text>function requestHMIAnimation() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6496
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6497
          <xsl:text>    if(requestAnimationFrameID == null){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6498
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6499
          <xsl:text>        requestAnimationFrameID = window.requestAnimationFrame(animate);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6500
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6501
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6502
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6503
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6504
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6505
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6506
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6507
          <xsl:text>// Message reception handler
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6508
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6509
          <xsl:text>// Hash is verified and HMI values updates resulting from binary parsing
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6510
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6511
          <xsl:text>// are stored until browser can compute next frame, DOM is left untouched
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6512
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6513
          <xsl:text>ws.onmessage = function (evt) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6514
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6515
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6516
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6517
          <xsl:text>    let data = evt.data;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6518
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6519
          <xsl:text>    let dv = new DataView(data);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6520
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6521
          <xsl:text>    let i = 0;
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6522
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6523
          <xsl:text>    try {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6524
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6525
          <xsl:text>        for(let hash_int of hmi_hash) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6526
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6527
          <xsl:text>            if(hash_int != dv.getUint8(i)){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6528
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6529
          <xsl:text>                throw new Error("Hash doesn't match");
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6530
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6531
          <xsl:text>            };
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6532
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6533
          <xsl:text>            i++;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6534
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6535
          <xsl:text>        };
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6536
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6537
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6538
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6539
          <xsl:text>        while(i &lt; data.byteLength){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6540
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6541
          <xsl:text>            let index = dv.getUint32(i, true);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6542
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6543
          <xsl:text>            i += 4;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6544
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6545
          <xsl:text>            let iectype = hmitree_types[index];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6546
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6547
          <xsl:text>            if(iectype != undefined){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6548
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6549
          <xsl:text>                let dvgetter = dvgetters[iectype];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6550
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6551
          <xsl:text>                let [value, bytesize] = dvgetter(dv,i);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6552
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6553
          <xsl:text>                updates[index] = value;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6554
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6555
          <xsl:text>                i += bytesize;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6556
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6557
          <xsl:text>            } else {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6558
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6559
          <xsl:text>                throw new Error("Unknown index "+index);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6560
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6561
          <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6562
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6563
          <xsl:text>        };
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6564
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6565
          <xsl:text>        // register for rendering on next frame, since there are updates
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6566
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6567
          <xsl:text>        requestHMIAnimation();
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6568
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6569
          <xsl:text>    } catch(err) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6570
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6571
          <xsl:text>        // 1003 is for "Unsupported Data"
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6572
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6573
          <xsl:text>        // ws.close(1003, err.message);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6574
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6575
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6576
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6577
          <xsl:text>        // TODO : remove debug alert ?
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6578
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6579
          <xsl:text>        alert("Error : "+err.message+"\nHMI will be reloaded.");
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6580
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6581
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6582
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6583
          <xsl:text>        // force reload ignoring cache
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6584
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6585
          <xsl:text>        location.reload(true);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6586
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6587
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6588
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6589
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6590
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6591
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6592
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  6593
          <xsl:text>hmi_hash_u8 = new Uint8Array(hmi_hash);
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  6594
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6595
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6596
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6597
          <xsl:text>function send_blob(data) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6598
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6599
          <xsl:text>    if(data.length &gt; 0) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6600
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  6601
          <xsl:text>        ws.send(new Blob([hmi_hash_u8].concat(data)));
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6602
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6603
          <xsl:text>    };
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6604
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6605
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6606
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6607
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6608
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6609
          <xsl:text>const typedarray_types = {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6610
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6611
          <xsl:text>    INT: (number) =&gt; new Int16Array([number]),
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6612
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6613
          <xsl:text>    BOOL: (truth) =&gt; new Int16Array([truth]),
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6614
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6615
          <xsl:text>    NODE: (truth) =&gt; new Int16Array([truth]),
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6616
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6617
          <xsl:text>    STRING: (str) =&gt; {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6618
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6619
          <xsl:text>        // beremiz default string max size is 128
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6620
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6621
          <xsl:text>        str = str.slice(0,128);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6622
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6623
          <xsl:text>        binary = new Uint8Array(str.length + 1);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6624
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6625
          <xsl:text>        binary[0] = str.length;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6626
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  6627
          <xsl:text>        for(let i = 0; i &lt; str.length; i++){
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6628
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6629
          <xsl:text>            binary[i+1] = str.charCodeAt(i);
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6630
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6631
          <xsl:text>        }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6632
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6633
          <xsl:text>        return binary;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6634
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6635
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6636
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6637
          <xsl:text>    /* TODO */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6638
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6639
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6640
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6641
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6642
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6643
          <xsl:text>function send_reset() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6644
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6645
          <xsl:text>    send_blob(new Uint8Array([1])); /* reset = 1 */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6646
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6647
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6648
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6649
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6650
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6651
          <xsl:text>var subscriptions = [];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6652
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6653
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6654
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6655
          <xsl:text>function subscribers(index) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6656
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6657
          <xsl:text>    let entry = subscriptions[index];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6658
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6659
          <xsl:text>    let res;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6660
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6661
          <xsl:text>    if(entry == undefined){
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6662
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6663
          <xsl:text>        res = new Set();
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6664
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6665
          <xsl:text>        subscriptions[index] = [res,0];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6666
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6667
          <xsl:text>    }else{
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6668
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6669
          <xsl:text>        [res, _ign] = entry;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6670
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6671
          <xsl:text>    }
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6672
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6673
          <xsl:text>    return res
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6674
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6675
          <xsl:text>}
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6676
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6677
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6678
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6679
          <xsl:text>function get_subscription_period(index) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6680
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6681
          <xsl:text>    let entry = subscriptions[index];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6682
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6683
          <xsl:text>    if(entry == undefined)
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6684
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6685
          <xsl:text>        return 0;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6686
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6687
          <xsl:text>    let [_ign, period] = entry;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6688
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6689
          <xsl:text>    return period;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6690
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6691
          <xsl:text>}
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6692
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6693
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6694
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6695
          <xsl:text>function set_subscription_period(index, period) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6696
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6697
          <xsl:text>    let entry = subscriptions[index];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6698
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6699
          <xsl:text>    if(entry == undefined){
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6700
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6701
          <xsl:text>        subscriptions[index] = [new Set(), period];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6702
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6703
          <xsl:text>    } else {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6704
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6705
          <xsl:text>        entry[1] = period;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6706
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6707
          <xsl:text>    }
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6708
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6709
          <xsl:text>}
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6710
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6711
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6712
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6713
          <xsl:text>// artificially subscribe the watchdog widget to "/heartbeat" hmi variable
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6714
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6715
          <xsl:text>// Since dispatch directly calls change_hmi_value,
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6716
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6717
          <xsl:text>// PLC will periodically send variable at given frequency
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6718
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6719
          <xsl:text>subscribers(heartbeat_index).add({
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6720
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6721
          <xsl:text>    /* type: "Watchdog", */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6722
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6723
          <xsl:text>    frequency: 1,
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6724
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6725
          <xsl:text>    indexes: [heartbeat_index],
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6726
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6727
          <xsl:text>    new_hmi_value: function(index, value, oldval) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6728
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6729
          <xsl:text>        apply_hmi_value(heartbeat_index, value+1);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6730
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6731
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6732
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6733
          <xsl:text>});
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6734
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6735
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6736
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6737
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6738
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6739
          <xsl:text>function update_subscriptions() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6740
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6741
          <xsl:text>    let delta = [];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6742
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6743
          <xsl:text>    for(let index in subscriptions){
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6744
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6745
          <xsl:text>        let widgets = subscribers(index);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6746
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6747
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6748
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6749
          <xsl:text>        // periods are in ms
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6750
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6751
          <xsl:text>        let previous_period = get_subscription_period(index);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6752
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6753
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6754
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6755
          <xsl:text>        // subscribing with a zero period is unsubscribing
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6756
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6757
          <xsl:text>        let new_period = 0;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6758
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6759
          <xsl:text>        if(widgets.size &gt; 0) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6760
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6761
          <xsl:text>            let maxfreq = 0;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6762
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6763
          <xsl:text>            for(let widget of widgets){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6764
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6765
          <xsl:text>                let wf = widget.frequency;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6766
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6767
          <xsl:text>                if(wf != undefined &amp;&amp; maxfreq &lt; wf)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6768
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6769
          <xsl:text>                    maxfreq = wf;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6770
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6771
          <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6772
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6773
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6774
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6775
          <xsl:text>            if(maxfreq != 0)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6776
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6777
          <xsl:text>                new_period = 1000/maxfreq;
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6778
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6779
          <xsl:text>        }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6780
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6781
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6782
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6783
          <xsl:text>        if(previous_period != new_period) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6784
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6785
          <xsl:text>            set_subscription_period(index, new_period);
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6786
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6787
          <xsl:text>            if(index &lt;= last_remote_index){
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6788
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6789
          <xsl:text>                delta.push(
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6790
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6791
          <xsl:text>                    new Uint8Array([2]), /* subscribe = 2 */
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6792
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6793
          <xsl:text>                    new Uint32Array([index]),
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6794
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6795
          <xsl:text>                    new Uint16Array([new_period]));
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6796
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6797
          <xsl:text>            }
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6798
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6799
          <xsl:text>        }
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6800
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6801
          <xsl:text>    }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6802
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6803
          <xsl:text>    send_blob(delta);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6804
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6805
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6806
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6807
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6808
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6809
          <xsl:text>function send_hmi_value(index, value) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6810
</xsl:text>
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6811
          <xsl:text>    if(index &gt; last_remote_index){
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6812
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6813
          <xsl:text>        updates[index] = value;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6814
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6815
          <xsl:text>        requestHMIAnimation();
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6816
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6817
          <xsl:text>        return;
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6818
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6819
          <xsl:text>    }
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6820
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6821
          <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  6822
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6823
          <xsl:text>    let iectype = hmitree_types[index];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6824
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6825
          <xsl:text>    let tobinary = typedarray_types[iectype];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6826
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6827
          <xsl:text>    send_blob([
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6828
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6829
          <xsl:text>        new Uint8Array([0]),  /* setval = 0 */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6830
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6831
          <xsl:text>        new Uint32Array([index]),
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6832
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6833
          <xsl:text>        tobinary(value)]);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6834
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6835
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6836
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6837
          <xsl:text>    // DON'T DO THAT unless read_iterator in svghmi.c modifies wbuf as well, not only rbuf
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6838
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6839
          <xsl:text>    // cache[index] = value;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6840
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6841
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6842
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6843
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6844
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6845
          <xsl:text>function apply_hmi_value(index, new_val) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6846
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6847
          <xsl:text>    let old_val = cache[index]
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6848
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6849
          <xsl:text>    if(new_val != undefined &amp;&amp; old_val != new_val)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6850
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6851
          <xsl:text>        send_hmi_value(index, new_val);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6852
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6853
          <xsl:text>    return new_val;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6854
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6855
          <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6856
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6857
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6858
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  6859
          <xsl:text>const quotes = {"'":null, '"':null};
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6860
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6861
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6862
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6863
          <xsl:text>function eval_operation_string(old_val, opstr) {
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6864
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6865
          <xsl:text>    let op = opstr[0];
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6866
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6867
          <xsl:text>    let given_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6868
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6869
          <xsl:text>    if(opstr.length &lt; 2) 
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6870
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6871
          <xsl:text>        return undefined;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6872
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6873
          <xsl:text>    if(opstr[1] in quotes){
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6874
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6875
          <xsl:text>        if(opstr.length &lt; 3) 
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6876
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6877
          <xsl:text>            return undefined;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6878
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6879
          <xsl:text>        if(opstr[opstr.length-1] == opstr[1]){
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6880
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6881
          <xsl:text>            given_val = opstr.slice(2,opstr.length-1);
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6882
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6883
          <xsl:text>        }
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6884
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6885
          <xsl:text>    } else {
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6886
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6887
          <xsl:text>        given_val = Number(opstr.slice(1));
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6888
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6889
          <xsl:text>    }
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6890
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6891
          <xsl:text>    let new_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6892
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6893
          <xsl:text>    switch(op){
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6894
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6895
          <xsl:text>      case "=":
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6896
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6897
          <xsl:text>        new_val = given_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6898
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6899
          <xsl:text>        break;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6900
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6901
          <xsl:text>      case "+":
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6902
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6903
          <xsl:text>        new_val = old_val + given_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6904
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6905
          <xsl:text>        break;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6906
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6907
          <xsl:text>      case "-":
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6908
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6909
          <xsl:text>        new_val = old_val - given_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6910
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6911
          <xsl:text>        break;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6912
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6913
          <xsl:text>      case "*":
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6914
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6915
          <xsl:text>        new_val = old_val * given_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6916
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6917
          <xsl:text>        break;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6918
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6919
          <xsl:text>      case "/":
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6920
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6921
          <xsl:text>        new_val = old_val / given_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6922
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6923
          <xsl:text>        break;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6924
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6925
          <xsl:text>    }
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6926
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6927
          <xsl:text>    return new_val;
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6928
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6929
          <xsl:text>}
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6930
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6931
          <xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6932
</xsl:text>
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6933
          <xsl:text>/*
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6934
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6935
          <xsl:text>function change_hmi_value(index, opstr) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6936
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6937
          <xsl:text>    let old_val = cache[index];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6938
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6939
          <xsl:text>    let new_val = eval_operation_string(old_val, opstr);
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6940
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6941
          <xsl:text>    if(new_val != undefined &amp;&amp; old_val != new_val)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6942
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6943
          <xsl:text>        send_hmi_value(index, new_val);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6944
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6945
          <xsl:text>    // TODO else raise
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6946
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6947
          <xsl:text>    return new_val;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6948
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6949
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6950
</xsl:text>
3097
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6951
          <xsl:text>*/
a098b2dd9dff SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3094
diff changeset
  6952
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6953
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6954
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6955
          <xsl:text>var current_visible_page;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6956
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6957
          <xsl:text>var current_subscribed_page;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6958
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6959
          <xsl:text>var current_page_index;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6960
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6961
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6962
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6963
          <xsl:text>function prepare_svg() {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6964
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  6965
          <xsl:text>    // prevents context menu from appearing on right click and long touch
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  6966
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6967
          <xsl:text>    document.body.addEventListener('contextmenu', e =&gt; {
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6968
</xsl:text>
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6969
          <xsl:text>        e.preventDefault();
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6970
</xsl:text>
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6971
          <xsl:text>    });
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6972
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  6973
          <xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  6974
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6975
          <xsl:text>    for(let eltid in detachable_elements){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6976
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6977
          <xsl:text>        let [element,parent] = detachable_elements[eltid];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6978
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6979
          <xsl:text>        parent.removeChild(element);
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6980
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6981
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6982
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6983
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6984
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6985
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6986
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6987
          <xsl:text>function switch_page(page_name, page_index) {
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6988
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6989
          <xsl:text>    if(current_subscribed_page != current_visible_page){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6990
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6991
          <xsl:text>        /* page switch already going */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6992
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6993
          <xsl:text>        /* TODO LOG ERROR */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6994
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6995
          <xsl:text>        return false;
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6996
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6997
          <xsl:text>    }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  6998
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6999
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7000
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7001
          <xsl:text>    if(page_name == undefined)
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7002
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7003
          <xsl:text>        page_name = current_subscribed_page;
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7004
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7005
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7006
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7007
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7008
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7009
          <xsl:text>    let old_desc = page_desc[current_subscribed_page];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7010
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7011
          <xsl:text>    let new_desc = page_desc[page_name];
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7012
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7013
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7014
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7015
          <xsl:text>    if(new_desc == undefined){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7016
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7017
          <xsl:text>        /* TODO LOG ERROR */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7018
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7019
          <xsl:text>        return false;
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7020
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7021
          <xsl:text>    }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7022
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7023
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7024
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7025
          <xsl:text>    if(page_index == undefined){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7026
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7027
          <xsl:text>        page_index = new_desc.page_index;
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7028
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7029
          <xsl:text>    }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7030
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7031
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7032
</xsl:text>
3005
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7033
          <xsl:text>    if(old_desc){
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7034
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7035
          <xsl:text>        old_desc.widgets.map(([widget,relativeness])=&gt;widget.unsub());
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7036
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7037
          <xsl:text>    }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7038
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  7039
          <xsl:text>    const new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index;
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  7040
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  7041
          <xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  7042
</xsl:text>
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  7043
          <xsl:text>    const container_id = page_name + (page_index != undefined ? page_index : "");
3017
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  7044
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  7045
          <xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  7046
</xsl:text>
15e2df3e5610 SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3008
diff changeset
  7047
          <xsl:text>    new_desc.widgets.map(([widget,relativeness])=&gt;widget.sub(new_offset,relativeness,container_id));
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7048
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7049
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7050
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7051
          <xsl:text>    update_subscriptions();
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7052
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7053
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7054
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7055
          <xsl:text>    current_subscribed_page = page_name;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7056
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7057
          <xsl:text>    current_page_index = page_index;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7058
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7059
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7060
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7061
          <xsl:text>    jumps_need_update = true;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7062
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7063
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7064
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7065
          <xsl:text>    requestHMIAnimation();
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7066
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7067
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7068
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7069
          <xsl:text>    jump_history.push([page_name, page_index]);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7070
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7071
          <xsl:text>    if(jump_history.length &gt; 42)
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7072
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7073
          <xsl:text>        jump_history.shift();
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7074
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7075
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7076
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7077
          <xsl:text>    return true;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7078
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7079
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7080
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7081
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7082
</xsl:text>
2942
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7083
          <xsl:text>function switch_visible_page(page_name) {
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7084
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7085
          <xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7086
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7087
          <xsl:text>    let old_desc = page_desc[current_visible_page];
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7088
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7089
          <xsl:text>    let new_desc = page_desc[page_name];
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7090
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7091
          <xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7092
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7093
          <xsl:text>    if(old_desc){
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7094
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7095
          <xsl:text>        for(let eltid in old_desc.required_detachables){
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7096
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7097
          <xsl:text>            if(!(eltid in new_desc.required_detachables)){
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7098
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7099
          <xsl:text>                let [element, parent] = old_desc.required_detachables[eltid];
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7100
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7101
          <xsl:text>                parent.removeChild(element);
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7102
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7103
          <xsl:text>            }
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7104
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7105
          <xsl:text>        }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7106
</xsl:text>
2942
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7107
          <xsl:text>        for(let eltid in new_desc.required_detachables){
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7108
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7109
          <xsl:text>            if(!(eltid in old_desc.required_detachables)){
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7110
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7111
          <xsl:text>                let [element, parent] = new_desc.required_detachables[eltid];
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7112
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7113
          <xsl:text>                parent.appendChild(element);
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7114
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7115
          <xsl:text>            }
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7116
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7117
          <xsl:text>        }
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7118
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7119
          <xsl:text>    }else{
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7120
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7121
          <xsl:text>        for(let eltid in new_desc.required_detachables){
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7122
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7123
          <xsl:text>            let [element, parent] = new_desc.required_detachables[eltid];
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7124
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7125
          <xsl:text>            parent.appendChild(element);
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7126
</xsl:text>
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7127
          <xsl:text>        }
b07ad97e6019 SVGHMI: moved JS code of foreach and jump widget in corresponding widget_*.ysl2. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2941
diff changeset
  7128
</xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7129
          <xsl:text>    }
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7130
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7131
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7132
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7133
          <xsl:text>    svg_root.setAttribute('viewBox',new_desc.bbox.join(" "));
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7134
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7135
          <xsl:text>    current_visible_page = page_name;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7136
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7137
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7138
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7139
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7140
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7141
          <xsl:text>// Once connection established
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7142
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7143
          <xsl:text>ws.onopen = function (evt) {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7144
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7145
          <xsl:text>    init_widgets();
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7146
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7147
          <xsl:text>    send_reset();
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7148
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7149
          <xsl:text>    // show main page
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7150
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7151
          <xsl:text>    prepare_svg();
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7152
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7153
          <xsl:text>    switch_page(default_page);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7154
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7155
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7156
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7157
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7158
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7159
          <xsl:text>ws.onclose = function (evt) {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7160
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7161
          <xsl:text>    // TODO : add visible notification while waiting for reload
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7162
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7163
          <xsl:text>    console.log("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+" Reload in 10s.");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7164
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7165
          <xsl:text>    // TODO : re-enable auto reload when not in debug
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7166
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7167
          <xsl:text>    //window.setTimeout(() =&gt; location.reload(true), 10000);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7168
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7169
          <xsl:text>    alert("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+".");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7170
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7171
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7172
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7173
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7174
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7175
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7176
</xsl:text>
3080
e5fa1f49f0b9 SVGHMI: WIP trying to reduce memory usage : use .onclick onstead of SetAttribute, avoid useless closure and object creation when possible, etc.
Edouard Tisserant
parents: 3079
diff changeset
  7177
          <xsl:text>const xmlns = "http://www.w3.org/2000/svg";
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7178
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7179
          <xsl:text>var edit_callback;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7180
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7181
          <xsl:text>const localtypes = {"PAGE_LOCAL":null, "HMI_LOCAL":null}
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7182
</xsl:text>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  7183
          <xsl:text>function edit_value(path, valuetype, callback, initial) {
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7184
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7185
          <xsl:text>    if(valuetype in localtypes){
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7186
</xsl:text>
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7187
          <xsl:text>        valuetype = (typeof initial) == "number" ? "HMI_REAL" : "HMI_STRING";
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7188
</xsl:text>
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7189
          <xsl:text>    }
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7190
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7191
          <xsl:text>    let [keypadid, xcoord, ycoord] = keypads[valuetype];
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7192
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7193
          <xsl:text>    edit_callback = callback;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7194
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7195
          <xsl:text>    let widget = hmi_widgets[keypadid];
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7196
</xsl:text>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  7197
          <xsl:text>    widget.start_edit(path, valuetype, callback, initial);
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7198
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7199
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7200
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7201
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7202
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7203
          <xsl:text>var current_modal; /* TODO stack ?*/
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7204
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7205
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7206
</xsl:text>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  7207
          <xsl:text>function show_modal() {
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7208
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7209
          <xsl:text>    let [element, parent] = detachable_elements[this.element.id];
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7210
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7211
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7212
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7213
          <xsl:text>    tmpgrp = document.createElementNS(xmlns,"g");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7214
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7215
          <xsl:text>    tmpgrpattr = document.createAttribute("transform");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7216
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7217
          <xsl:text>    let [xcoord,ycoord] = this.coordinates;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7218
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7219
          <xsl:text>    let [xdest,ydest] = page_desc[current_visible_page].bbox;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7220
</xsl:text>
3118
e704b0487515 SVGHMI : removed support for changing keyboard position and showing at user defined location. Feature was problematic in many respect.
Edouard Tisserant
parents: 3116
diff changeset
  7221
          <xsl:text>    tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")";
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7222
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7223
          <xsl:text>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7224
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7225
          <xsl:text>    tmpgrp.setAttributeNode(tmpgrpattr);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7226
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7227
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7228
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7229
          <xsl:text>    tmpgrp.appendChild(element);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7230
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7231
          <xsl:text>    parent.appendChild(tmpgrp);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7232
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7233
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7234
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7235
          <xsl:text>    current_modal = [this.element.id, tmpgrp];
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7236
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7237
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7238
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7239
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7240
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7241
          <xsl:text>function end_modal() {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7242
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7243
          <xsl:text>    let [eltid, tmpgrp] = current_modal;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7244
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7245
          <xsl:text>    let [element, parent] = detachable_elements[this.element.id];
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7246
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7247
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7248
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7249
          <xsl:text>    parent.removeChild(tmpgrp);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7250
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7251
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7252
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7253
          <xsl:text>    current_modal = undefined;
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7254
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7255
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7256
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7257
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7258
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7259
          <xsl:text>function widget_active_activable(eltsub) {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7260
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7261
          <xsl:text>    if(eltsub.inactive_style === undefined)
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7262
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7263
          <xsl:text>        eltsub.inactive_style = eltsub.inactive.getAttribute("style");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7264
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7265
          <xsl:text>    eltsub.inactive.setAttribute("style", "display:none");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7266
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7267
          <xsl:text>    if(eltsub.active_style !== undefined)
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7268
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7269
          <xsl:text>            eltsub.active.setAttribute("style", eltsub.active_style);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7270
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7271
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7272
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7273
          <xsl:text>function widget_inactive_activable(eltsub) {
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7274
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7275
          <xsl:text>    if(eltsub.active_style === undefined)
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7276
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7277
          <xsl:text>        eltsub.active_style = eltsub.active.getAttribute("style");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7278
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7279
          <xsl:text>    eltsub.active.setAttribute("style", "display:none");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7280
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7281
          <xsl:text>    if(eltsub.inactive_style !== undefined)
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7282
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7283
          <xsl:text>            eltsub.inactive.setAttribute("style", eltsub.inactive_style);
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7284
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7285
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  7286
</xsl:text>
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
  7287
        </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
  7288
      </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
  7289
    </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
  7290
  </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
  7291
</xsl:stylesheet>