svghmi/gen_index_xhtml.xslt
author Edouard Tisserant <edouard.tisserant@gmail.com>
Thu, 18 Feb 2021 05:39:46 +0100
branchsvghmi
changeset 3149 d32e6246cd59
parent 3147 910290aec533
child 3150 5a1bb6ec48a0
permissions -rw-r--r--
SVGHMI: Optimization for JsonTable : reload JSON only when necessary, and avoid concurrent http requests.
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"?>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
     2
<xsl:stylesheet xmlns:ns="beremiz" xmlns:definitions="definitions" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:func="http://exslt.org/functions" xmlns:epilogue="epilogue" xmlns:preamble="preamble" 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:svg="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:str="http://exslt.org/strings" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:exsl="http://exslt.org/common" xmlns:declarations="declarations" xmlns:debug="debug" exclude-result-prefixes="ns func exsl regexp str dyn debug preamble epilogue declarations definitions" extension-element-prefixes="ns func exsl regexp str dyn" version="1.0">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
     3
  <xsl:output method="xml" cdata-section-elements="xhtml:script"/>
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>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
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>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   200
                <xsl:when test="regexp:test($path,'^[a-zA-Z0-9_]+$')">
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
   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">
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   236
    <widget type="VarInitPersistent">
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   237
      <arg value="0"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   238
      <path value="lang"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   239
    </widget>
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
   240
    <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
   241
  </xsl:variable>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   242
  <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
   243
  <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
   244
    <xsl:param name="id"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   245
    <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
   246
  </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
   247
  <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
   248
    <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
   249
    <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
   250
    <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
   251
  </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
   252
  <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
   253
    <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
   254
    <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
   255
    <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
   256
    <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
   257
    <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
   258
  </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
   259
  <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
   260
    <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
   261
    <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
   262
    <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
   263
    <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
   264
    <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
   265
    <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
   266
      <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
   267
      <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
   268
      <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
   269
      <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
   270
    </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
   271
    <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
   272
</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
   273
    <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
   274
      <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
   275
        <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
   276
      </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
   277
    </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
   278
  </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
   279
  <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
   280
  <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
   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>/* </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: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
   285
    <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
   286
</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
   287
    <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
   288
</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
   289
    <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
   290
</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
   291
    <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
   292
    <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
   293
</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
   294
    <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
   295
</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
   296
    <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
   297
    <xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   298
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   299
    <xsl:text>Parsed Widgets
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   300
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   301
    <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
   302
    <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
   303
    <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
   304
</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
   305
  </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
   306
  <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
   307
  <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
   308
  <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
   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>/* </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: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
   313
    <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
   314
</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
   315
    <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
   316
</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
   317
    <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
   318
</xsl:text>
2879
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
   319
    <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
   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="@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
   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="@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
   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="@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
   326
      <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
   327
      <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
   328
      <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
   329
      <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
   330
      <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   331
</xsl: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
   332
    </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
   333
    <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
   334
</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
   335
  </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
   336
  <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
   337
    <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
   338
    <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
   339
    <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
   340
    <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
   341
    <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
   342
    <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
   343
    <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
   344
      <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
   345
        <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
   346
      </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
   347
      <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
   348
        <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
   349
      </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
   350
      <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
   351
        <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
   352
      </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
   353
      <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
   354
        <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
   355
      </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
   356
      <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
   357
        <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
   358
      </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
   359
    </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
   360
  </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
   361
  <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
   362
    <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
   363
    <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
   364
    <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
   365
    <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
   366
      <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
   367
        <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
   368
        <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
   369
      </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
   370
      <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
   371
        <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
   372
      </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
   373
    </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
   374
  </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
   375
  <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
   376
    <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
   377
    <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
   378
    <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
   379
    <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
   380
    <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
   381
  </func:function>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   382
  <xsl:variable name="hmi_pages_descs" select="$parsed_widgets/widget[@type = 'Page']"/>
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   383
  <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
   384
  <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
   385
    <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
   386
      <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
   387
        <xsl:choose>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   388
          <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
   389
            <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
   390
          </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
   391
          <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
   392
            <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
   393
              <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
   394
            </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
   395
          </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
   396
        </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
   397
      </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
   398
      <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
   399
        <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
   400
          <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
   401
        </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
   402
      </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
   403
      <xsl:otherwise>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   404
        <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
   405
      </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
   406
    </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
   407
  </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
   408
  <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
   409
  <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
   410
    <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
   411
</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
   412
    <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
   413
    <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
   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>
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
   416
    <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
   417
</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
   418
    <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
   419
</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
   420
    <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
   421
    <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
   422
    <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
   423
</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
   424
    <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
   425
</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
   426
  </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
   427
  <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
   428
  <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
   429
  <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
   430
    <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
   431
    <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
   432
    <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
   433
    <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
   434
    <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
   435
      <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
   436
        <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
   437
      </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
   438
      <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
   439
        <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
   440
      </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
   441
    </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
   442
  </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
   443
  <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
   444
    <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
   445
    <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
   446
    <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
   447
    <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
   448
    <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
   449
  </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
   450
  <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
   451
    <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
   452
    <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
   453
      <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
   454
        <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
   455
      </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
   456
      <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
   457
        <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
   458
      </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
   459
    </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
   460
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   461
  <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
   462
  <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
   463
  <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
   464
    <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
   465
    <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
   466
    <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
   467
    <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
   468
    <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
   469
  </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
   470
  <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
   471
    <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
   472
    <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
   473
      <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
   474
        <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
   475
      </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
   476
      <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
   477
        <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
   478
      </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
   479
    </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
   480
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   481
  <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
   482
  <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
   483
  <declarations:detachable-elements/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
   484
  <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
   485
    <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
   486
</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
   487
    <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
   488
    <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
   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>
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
   491
    <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
   492
</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
   493
    <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
   494
</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
   495
    <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
   496
</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: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
   498
      <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
   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>":[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
   501
      <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
   502
      <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
   503
      <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
   504
      <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
   505
      <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
   506
        <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
   507
      </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
   508
      <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
   509
</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
   510
    </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
   511
    <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
   512
</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
   513
    <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
   514
</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
   515
  </xsl:template>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   516
  <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
   517
  <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
   518
  <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
   519
  <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
   520
    <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
   521
      <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
   522
        <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
   523
        <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
   524
        <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
   525
      </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
   526
    </xsl:if>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   527
    <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
   528
    <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
   529
    <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
   530
    <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
   531
    <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
   532
    <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
   533
    <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
   534
    <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
   535
    <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
   536
    <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
   537
    <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: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
   539
    <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
   540
    <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
   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/@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
   543
    <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
   544
    <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
   545
    <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
   546
    <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
   547
    <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
   548
</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: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
   550
      <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
   551
        <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
   552
          <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
   553
          <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
   554
          <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
   555
          <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
   556
          <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
   557
        </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
   558
      </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
   559
      <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
   560
      <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
   561
      <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
   562
</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
   563
    </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
   564
    <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
   565
</xsl:text>
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: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
   567
      <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
   568
        <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
   569
          <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
   570
          <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
   571
            <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
   572
          </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
   573
        </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
   574
      </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
   575
      <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
   576
      <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
   577
      <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
   578
      <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
   579
      <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
   580
      <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
   581
        <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
   582
      </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
   583
      <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
   584
</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
   585
    </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
   586
    <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
   587
</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
   588
    <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
   589
</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
   590
    <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
   591
      <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
   592
      <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
   593
      <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
   594
      <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
   595
        <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
   596
      </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
   597
      <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
   598
</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
   599
    </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
   600
    <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
   601
</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
   602
    <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
   603
</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: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
   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: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
   607
      <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
   608
      <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
   609
      <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
   610
      <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
   611
        <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
   612
      </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
   613
      <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
   614
</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
   615
    </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
   616
    <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
   617
</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
   618
    <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
   619
      <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
   620
    </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
   621
    <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
   622
    <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
   623
      <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
   624
    </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
   625
    <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
   626
</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
   627
  </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
   628
  <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
   629
  <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
   630
    <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
   631
</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
   632
    <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
   633
    <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
   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>
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
   636
    <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
   637
</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
   638
    <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
   639
</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
   640
    <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
   641
</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
   642
    <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
   643
    <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
   644
</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
   645
    <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
   646
</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
   647
  </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
   648
  <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
   649
  <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
   650
  <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
   651
    <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
   652
</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
   653
    <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
   654
    <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
   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>
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
   657
    <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
   658
</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
   659
    <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
   660
</xsl:text>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   661
    <xsl:text>DETACHABLES:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   662
</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
   663
    <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
   664
      <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
   665
      <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
   666
      <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
   667
</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
   668
    </xsl:for-each>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   669
    <xsl:text>In Foreach:
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: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
   672
      <xsl:text> </xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   673
      <xsl:value-of select="."/>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   674
      <xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   675
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   676
    </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
   677
    <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
   678
</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
   679
  </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
   680
  <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
   681
    <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
   682
  </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
   683
  <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
   684
    <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
   685
      <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
   686
        <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
   687
      </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
   688
    </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
   689
  </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
   690
  <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
   691
  <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
   692
  <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
   693
    <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
   694
      <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
   695
        <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
   696
      </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
   697
      <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
   698
        <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
   699
      </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
   700
      <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
   701
        <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
   702
      </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
   703
      <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
   704
    </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
   705
  </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
   706
  <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
   707
    <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
   708
      <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
   709
    </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
   710
  </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
   711
  <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
   712
    <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
   713
      <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
   714
    </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
   715
  </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
   716
  <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
   717
    <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
   718
      <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
   719
    </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
   720
  </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
   721
  <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
   722
  <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
   723
  <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
   724
  <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
   725
  <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
   726
    <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
   727
    <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
   728
    <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
   729
  </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
   730
  <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
   731
    <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
   732
    <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
   733
      <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
   734
        <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
   735
          <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
   736
        </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
   737
      </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
   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: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
   740
          <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
   741
        </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
   742
      </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
   743
    </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
   744
  </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
   745
  <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
   746
    <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
   747
      <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
   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
    <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
   750
      <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
   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
    <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
   753
      <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
   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
    <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
   756
      <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
   757
    </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
   758
    <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
   759
      <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
   760
    </name>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   761
    <name>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   762
      <xsl:text>id</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   763
    </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
   764
  </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
   765
  <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
   766
  <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
   767
    <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
   768
      <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
   769
    </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
   770
    <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
   771
      <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
   772
    </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
   773
  </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
   774
  <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
   775
  <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
   776
    <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
   777
    <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
   778
    <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
   779
    <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
   780
      <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
   781
        <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
   782
          <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
   783
          <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
   784
          <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
   785
        </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
   786
        <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
   787
          <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
   788
        </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
   789
      </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
   790
    </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
   791
    <g>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   792
      <xsl:attribute name="id">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   793
        <xsl:value-of select="$seeded_id"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   794
      </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
   795
      <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
   796
        <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
   797
      </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
   798
      <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
   799
        <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
   800
          <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
   801
            <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
   802
              <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
   803
            </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
   804
          </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
   805
          <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
   806
            <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
   807
              <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
   808
              <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
   809
                <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
   810
              </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
   811
              <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
   812
            </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
   813
          </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
   814
          <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
   815
            <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
   816
              <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
   817
              <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
   818
                <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
   819
              </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
   820
              <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
   821
            </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
   822
          </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
   823
          <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
   824
            <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
   825
          </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
   826
        </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
   827
        <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
   828
          <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
   829
            <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
   830
              <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
   831
            </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
   832
          </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
   833
          <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
   834
            <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
   835
          </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
   836
        </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
   837
      </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
   838
    </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
   839
  </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
   840
  <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
   841
    <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
   842
    <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
   843
      <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
   844
      <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
   845
      <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
   846
    </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
   847
    <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
   848
      <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
   849
    </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
   850
  </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
   851
  <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
   852
    <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
   853
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   854
  <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
   855
    <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
   856
    <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
   857
    <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
   858
      <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
   859
        <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
   860
          <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
   861
          <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
   862
        </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
   863
      </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
   864
      <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
   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: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
   867
            <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
   868
          </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
   869
        </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
   870
      </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
   871
    </xsl:choose>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   872
  </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
   873
  <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
   874
    <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
   875
    <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
   876
      <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
   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: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
   879
            <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
   880
          </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
   881
        </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
   882
      </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
   883
      <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
   884
        <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
   885
          <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
   886
            <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
   887
          </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
   888
        </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
   889
      </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
   890
    </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
   891
  </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
   892
  <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
   893
    <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
   894
  </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
   895
  <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
   896
  <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
   897
  <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
   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>/* </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: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
   902
    <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
   903
</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
   904
    <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
   905
</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
   906
    <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
   907
</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
   908
    <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
   909
    <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
   910
    <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
   911
</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
   912
    <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
   913
</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
   914
  </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
   915
  <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
   916
  <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
   917
    <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
   918
</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
   919
    <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
   920
    <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
   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>
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
   923
    <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
   924
</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
   925
    <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
   926
</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
   927
    <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
   928
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   929
    <xsl:for-each select="$to_unlink">
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   930
      <xsl:value-of select="@id"/>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   931
      <xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   932
</xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   933
    </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
   934
    <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
   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 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
   937
      <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
   938
      <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   939
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
   940
    </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
   941
    <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
   942
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
   943
  </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
   944
  <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
   945
    <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
   946
      <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
   947
        <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
   948
      </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
   949
    </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
   950
  </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
   951
  <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
   952
    <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
   953
      <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
   954
        <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
   955
      </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
   956
      <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
   957
        <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
   958
      </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
   959
      <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
   960
    </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
   961
  </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
   962
  <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
   963
  <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
   964
    <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
   965
  </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
   966
  <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
   967
  <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
   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>/* </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: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
   972
    <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
   973
</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
   974
    <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
   975
</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
   976
    <xsl:variable name="translations" select="ns:GetTranslations($translatable_strings)"/>
3134
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
   977
    <xsl:text>var langs = [ "default",</xsl:text>
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
   978
    <xsl:for-each select="$translations/langs/lang">
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   979
      <xsl:text>"</xsl:text>
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
   980
      <xsl:value-of select="."/>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   981
      <xsl:text>"</xsl:text>
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
   982
      <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
   983
        <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
   984
      </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
   985
    </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
   986
    <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: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
   988
    <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
   989
</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
   990
    <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
   991
      <xsl:variable name="n" select="position()"/>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   992
      <xsl:variable name="current_id" select="@id"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   993
      <xsl:variable name="text_unlinked_uses" select="$result_svg_ns//svg:text[@original = $current_id]/@id"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   994
      <xsl:text>  [[</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   995
      <xsl:for-each select="@id | $text_unlinked_uses">
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   996
        <xsl:text>id("</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   997
        <xsl:value-of select="."/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   998
        <xsl:text>")</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
   999
        <xsl:if test="position()!=last()">
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1000
          <xsl:text>,</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1001
        </xsl:if>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1002
      </xsl:for-each>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1003
      <xsl:text>],[</xsl:text>
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
  1004
      <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
  1005
        <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
  1006
        <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
  1007
          <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
  1008
          <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
  1009
            <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
  1010
          </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
  1011
        </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
  1012
        <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
  1013
        <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
  1014
          <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
  1015
        </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
  1016
      </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
  1017
      <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
  1018
      <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
  1019
        <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
  1020
      </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
  1021
      <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
  1022
</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
  1023
    </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
  1024
    <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
  1025
</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
  1026
    <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
  1027
</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
  1028
  </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
  1029
  <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
  1030
    <xsl:variable name="widget" select="func:widget(@id)"/>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1031
    <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
  1032
    <xsl:variable name="args">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1033
      <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
  1034
        <xsl:text>"</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1035
        <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
  1036
        <xsl:text>"</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1037
        <xsl:if test="position()!=last()">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1038
          <xsl:text>,</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1039
        </xsl:if>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1040
      </xsl:for-each>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1041
    </xsl:variable>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1042
    <xsl:variable name="indexes">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1043
      <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
  1044
        <xsl:choose>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1045
          <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
  1046
            <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
  1047
              <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
  1048
                <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
  1049
                  <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
  1050
                  <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
  1051
                  <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
  1052
                  <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
  1053
                  <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
  1054
                  <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
  1055
                  <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
  1056
                </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
  1057
                <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
  1058
              </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
  1059
              <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
  1060
                <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
  1061
                <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
  1062
                <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
  1063
              </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
  1064
              <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
  1065
                <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
  1066
                <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
  1067
                <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
  1068
              </xsl:when>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1069
              <xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1070
                <xsl:message terminate="yes">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1071
                  <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
  1072
                </xsl:message>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1073
              </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
  1074
            </xsl:choose>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1075
          </xsl:when>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1076
          <xsl:otherwise>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1077
            <xsl:value-of select="@index"/>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1078
          </xsl:otherwise>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1079
        </xsl:choose>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1080
        <xsl:if test="position()!=last()">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1081
          <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1082
        </xsl:if>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1083
      </xsl:for-each>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1084
    </xsl:variable>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1085
    <xsl:variable name="minmaxes">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1086
      <xsl:for-each select="$widget/path">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1087
        <xsl:choose>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1088
          <xsl:when test="@min and @max">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1089
            <xsl:text>[</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1090
            <xsl:value-of select="@min"/>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1091
            <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1092
            <xsl:value-of select="@max"/>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1093
            <xsl:text>]</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1094
          </xsl:when>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1095
          <xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1096
            <xsl:text>undefined</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1097
          </xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1098
        </xsl:choose>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1099
        <xsl:if test="position()!=last()">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1100
          <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1101
        </xsl:if>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1102
      </xsl:for-each>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1103
    </xsl:variable>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1104
    <xsl:text>  "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1105
    <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
  1106
    <xsl:text>": new </xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1107
    <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
  1108
    <xsl:text>Widget ("</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1109
    <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
  1110
    <xsl:text>",[</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1111
    <xsl:value-of select="$args"/>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1112
    <xsl:text>],[</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1113
    <xsl:value-of select="$indexes"/>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1114
    <xsl:text>],[</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1115
    <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
  1116
    <xsl:text>],{
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1117
</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
  1118
    <xsl:apply-templates mode="widget_defs" select="$widget">
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1119
      <xsl:with-param name="hmi_element" select="."/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1120
    </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
  1121
    <xsl:text>  })</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1122
    <xsl:if test="position()!=last()">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1123
      <xsl:text>,</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1124
    </xsl:if>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1125
    <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
  1126
</xsl:text>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
  1127
  </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
  1128
  <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
  1129
  <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
  1130
    <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
  1131
</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
  1132
    <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
  1133
    <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
  1134
    <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
  1135
</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
  1136
    <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
  1137
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1138
    <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1139
</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
  1140
    <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
  1141
</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
  1142
    <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
  1143
</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
  1144
    <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
  1145
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1146
    <xsl:text>let cookies = new Map(document.cookie.split("; ").map(s=&gt;s.split("=")));
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1147
</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
  1148
    <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
  1149
</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1150
    <xsl:text>const local_defaults = {
Edouard Tisserant
parents: 3022 3021
diff changeset
  1151
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1152
    <xsl:for-each select="$parsed_widgets/widget[starts-with(@type,'VarInit')]">
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1153
      <xsl:if test="count(path) != 1">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1154
        <xsl:message terminate="yes">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1155
          <xsl:text>VarInit </xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1156
          <xsl:value-of select="@id"/>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1157
          <xsl:text> must have only one variable given.</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1158
        </xsl:message>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1159
      </xsl:if>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1160
      <xsl:if test="path/@type != 'PAGE_LOCAL' and path/@type != 'HMI_LOCAL'">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1161
        <xsl:message terminate="yes">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1162
          <xsl:text>VarInit </xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1163
          <xsl:value-of select="@id"/>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1164
          <xsl:text> only applies to HMI variable.</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1165
        </xsl:message>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1166
      </xsl:if>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1167
      <xsl:text>    "</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1168
      <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
  1169
      <xsl:text>":</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1170
      <xsl:choose>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1171
        <xsl:when test="@type = 'VarInitPersistent'">
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1172
          <xsl:text>cookies.has("</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1173
          <xsl:value-of select="path/@value"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1174
          <xsl:text>")?cookies.get("</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1175
          <xsl:value-of select="path/@value"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1176
          <xsl:text>"):</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1177
          <xsl:value-of select="arg[1]/@value"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1178
        </xsl:when>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1179
        <xsl:otherwise>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1180
          <xsl:value-of select="arg[1]/@value"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1181
        </xsl:otherwise>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1182
      </xsl:choose>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1183
      <xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1184
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1185
      <xsl:if test="position()!=last()">
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1186
        <xsl:text>,</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1187
      </xsl:if>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1188
    </xsl:for-each>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1189
    <xsl:text>};
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1190
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1191
    <xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1192
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1193
    <xsl:text>const persistent_locals = new Set([
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1194
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1195
    <xsl:for-each select="$parsed_widgets/widget[@type='VarInitPersistent']">
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1196
      <xsl:text>   "</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1197
      <xsl:value-of select="path/@value"/>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1198
      <xsl:text>"</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1199
      <xsl:if test="position()!=last()">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1200
        <xsl:text>,</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1201
      </xsl:if>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1202
      <xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1203
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1204
    </xsl:for-each>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1205
    <xsl:text>]);
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1206
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1207
    <xsl:text>var persistent_indexes = new Map();
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1208
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1209
    <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
  1210
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1211
    <xsl:text>var updates = {};
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1212
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1213
    <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1214
</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
  1215
    <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
  1216
</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
  1217
    <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
  1218
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1219
    <xsl:text>    let new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1220
</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
  1221
    <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
  1222
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1223
    <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
  1224
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1225
    <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
  1226
</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
  1227
    <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
  1228
</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
  1229
    <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
  1230
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1231
    <xsl:text>        if(result != undefined) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1232
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1233
    <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
  1234
</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
  1235
    <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
  1236
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1237
    <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1238
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1239
    <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
  1240
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1241
    <xsl:text>        pagevars[varname] = new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1242
</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
  1243
    <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
  1244
</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
  1245
    <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
  1246
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1247
    <xsl:text>    if(defaultval != undefined) {
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
  1248
</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
  1249
    <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
  1250
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1251
    <xsl:text>        updates[new_index] = defaultval;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1252
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1253
    <xsl:text>        if(persistent_locals.has(varname))
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1254
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1255
    <xsl:text>            persistent_indexes.set(new_index, varname);
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1256
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1257
    <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1258
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1259
    <xsl:text>    return new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1260
</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
  1261
    <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
  1262
</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
  1263
    <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
  1264
</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
  1265
    <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
  1266
</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
  1267
    <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
  1268
</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
  1269
    <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
  1270
</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
  1271
    <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
  1272
</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
  1273
  </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
  1274
  <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
  1275
  <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
  1276
    <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
  1277
</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
  1278
    <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
  1279
    <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
  1280
    <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
  1281
</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
  1282
    <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
  1283
</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
  1284
    <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
  1285
</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
  1286
    <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
  1287
</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
  1288
    <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
  1289
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1290
    <xsl:text>    offset = 0;
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1291
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1292
    <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
  1293
</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
  1294
    <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
  1295
</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
  1296
    <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
  1297
</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
  1298
    <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
  1299
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1300
    <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
  1301
</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
  1302
    <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
  1303
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1304
    <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
  1305
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1306
    <xsl:text>        this.args = args;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1307
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1308
    <xsl:text>        this.indexes = indexes;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1309
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1310
    <xsl:text>        this.minmaxes = minmaxes;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1311
</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
  1312
    <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
  1313
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1314
    <xsl:text>        this.lastapply = indexes.map(() =&gt; undefined);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1315
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1316
    <xsl:text>        this.inhibit = indexes.map(() =&gt; undefined);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1317
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1318
    <xsl:text>        this.pending = indexes.map(() =&gt; undefined);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1319
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1320
    <xsl:text>        this.bound_unhinibit = this.unhinibit.bind(this);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1321
</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
  1322
    <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
  1323
</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
  1324
    <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
  1325
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1326
    <xsl:text>    unsub(){
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1327
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1328
    <xsl:text>        /* remove subsribers */
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1329
</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
  1330
    <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
  1331
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1332
    <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
  1333
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1334
    <xsl:text>                /* flush updates pending because of inhibition */
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1335
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1336
    <xsl:text>                let inhibition = this.inhibit[i];
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1337
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1338
    <xsl:text>                if(inhibition != undefined){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1339
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1340
    <xsl:text>                    clearTimeout(inhibition);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1341
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1342
    <xsl:text>                    this.lastapply[i] = undefined;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1343
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1344
    <xsl:text>                    this.unhinibit(i);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1345
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1346
    <xsl:text>                }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1347
</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
  1348
    <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
  1349
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1350
    <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
  1351
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1352
    <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
  1353
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1354
    <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
  1355
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1356
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1357
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1358
    <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
  1359
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1360
    <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
  1361
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1362
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1363
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1364
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1365
</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
  1366
    <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
  1367
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1368
    <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
  1369
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1370
    <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
  1371
</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
  1372
    <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
  1373
</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
  1374
    <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
  1375
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1376
    <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
  1377
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1378
    <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
  1379
</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
  1380
    <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
  1381
</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
  1382
    <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
  1383
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1384
    <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
  1385
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1386
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1387
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1388
    <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
  1389
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1390
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1391
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1392
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1393
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1394
    <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
  1395
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1396
    <xsl:text>        if(!this.unsubscribable) for(let index in this.indexes){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1397
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1398
    <xsl:text>            /* dispatch current cache in newly opened page widgets */
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1399
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1400
    <xsl:text>            let realindex = this.get_variable_index(index);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1401
</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
  1402
    <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
  1403
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1404
    <xsl:text>            let cached_val = cache[realindex];
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1405
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1406
    <xsl:text>            if(cached_val != undefined)
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1407
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1408
    <xsl:text>                this._dispatch(cached_val, cached_val, index);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1409
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1410
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1411
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1412
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1413
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1414
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1415
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1416
    <xsl:text>    get_variable_index(varnum) {
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>        let index = this.indexes[varnum];
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>        if(typeof(index) == "string"){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1421
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1422
    <xsl:text>            index = page_local_index(index, this.container_id);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1423
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1424
    <xsl:text>        } else {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1425
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1426
    <xsl:text>            if(this.relativeness[varnum]){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1427
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1428
    <xsl:text>                index += this.offset;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1429
</xsl:text>
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>        return index;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1435
</xsl:text>
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>
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
  1438
    <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
  1439
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1440
    <xsl:text>    overshot(new_val, max) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1441
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1442
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1443
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1444
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1445
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1446
    <xsl:text>    undershot(new_val, min) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1447
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1448
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1449
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1450
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1451
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1452
    <xsl:text>    clip_min_max(index, new_val) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1453
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1454
    <xsl:text>        let minmax = this.minmaxes[index];
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1455
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1456
    <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
  1457
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1458
    <xsl:text>            let [min,max] = minmax;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1459
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1460
    <xsl:text>            if(new_val &lt; min){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1461
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1462
    <xsl:text>                this.undershot(new_val, min);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1463
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1464
    <xsl:text>                return min;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1465
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1466
    <xsl:text>            }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1467
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1468
    <xsl:text>            if(new_val &gt; max){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1469
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1470
    <xsl:text>                this.overshot(new_val, max);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1471
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1472
    <xsl:text>                return max;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1473
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1474
    <xsl:text>            }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1475
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1476
    <xsl:text>        }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1477
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1478
    <xsl:text>        return new_val;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1479
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1480
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1481
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1482
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1483
</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
  1484
    <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
  1485
</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
  1486
    <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
  1487
</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
  1488
    <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
  1489
</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
  1490
    <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
  1491
</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
  1492
    <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
  1493
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1494
    <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
  1495
</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
  1496
    <xsl:text>        return apply_hmi_value(realindex, new_val);
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1497
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1498
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1499
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1500
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1501
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1502
    <xsl:text>    _apply_hmi_value(index, new_val) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1503
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1504
    <xsl:text>        let realindex = this.get_variable_index(index);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1505
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1506
    <xsl:text>        if(realindex == undefined) return undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1507
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1508
    <xsl:text>        new_val = this.clip_min_max(index, new_val);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1509
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1510
    <xsl:text>        return apply_hmi_value(realindex, new_val);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1511
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1512
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1513
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1514
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1515
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1516
    <xsl:text>    unhinibit(index){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1517
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1518
    <xsl:text>        this.inhibit[index] = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1519
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1520
    <xsl:text>        let new_val = this.pending[index];
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1521
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1522
    <xsl:text>        this.pending[index] = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1523
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1524
    <xsl:text>        return this.apply_hmi_value(index, new_val);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1525
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1526
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1527
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1528
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1529
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1530
    <xsl:text>    apply_hmi_value(index, new_val) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1531
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1532
    <xsl:text>        if(this.inhibit[index] == undefined){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1533
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1534
    <xsl:text>            let now = Date.now();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1535
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1536
    <xsl:text>            let min_interval = 1000/this.frequency;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1537
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1538
    <xsl:text>            let lastapply = this.lastapply[index];
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1539
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1540
    <xsl:text>            if(lastapply == undefined || now &gt; lastapply + min_interval){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1541
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1542
    <xsl:text>                this.lastapply[index] = now;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1543
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1544
    <xsl:text>                return this._apply_hmi_value(index, new_val);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1545
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1546
    <xsl:text>            }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1547
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1548
    <xsl:text>            else {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1549
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1550
    <xsl:text>                let elapsed = now - lastapply;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1551
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1552
    <xsl:text>                this.pending[index] = new_val;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1553
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1554
    <xsl:text>                this.inhibit[index] = setTimeout(this.bound_unhinibit, min_interval - elapsed, index);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1555
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1556
    <xsl:text>            }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1557
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1558
    <xsl:text>        }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1559
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1560
    <xsl:text>        else {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1561
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1562
    <xsl:text>            this.pending[index] = new_val;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1563
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1564
    <xsl:text>            return new_val;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1565
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1566
    <xsl:text>        }
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1567
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1568
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1569
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1570
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1571
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1572
    <xsl:text>    new_hmi_value(index, value, oldval) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1573
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1574
    <xsl:text>        // TODO avoid searching, store index at sub()
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1575
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1576
    <xsl:text>        for(let i = 0; i &lt; this.indexes.length; i++) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1577
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1578
    <xsl:text>            let refindex = this.get_variable_index(i);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1579
</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
  1580
    <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
  1581
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1582
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1583
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1584
    <xsl:text>            if(index == refindex) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1585
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1586
    <xsl:text>                this._dispatch(value, oldval, i);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1587
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1588
    <xsl:text>                break;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1589
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1590
    <xsl:text>            }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1591
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1592
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1593
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1594
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1595
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1596
    <xsl:text>    
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1597
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1598
    <xsl:text>    _dispatch(value, oldval, varnum) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1599
</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
  1600
    <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
  1601
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1602
    <xsl:text>        if(dispatch != undefined){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1603
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1604
    <xsl:text>            try {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1605
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1606
    <xsl:text>                dispatch.call(this, value, oldval, varnum);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1607
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1608
    <xsl:text>            } catch(err) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1609
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1610
    <xsl:text>                console.log(err);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1611
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1612
    <xsl:text>            }
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1613
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1614
    <xsl:text>        }
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1615
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1616
    <xsl:text>    }
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1617
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1618
    <xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1619
</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
  1620
    <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
  1621
</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
  1622
    <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
  1623
</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
  1624
    <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
  1625
</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
  1626
    <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
  1627
</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
  1628
    <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
  1629
</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
  1630
    <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
  1631
</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
  1632
    <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
  1633
</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
  1634
    <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
  1635
</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
  1636
    <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
  1637
</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
  1638
    <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
  1639
</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
  1640
    <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
  1641
</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
  1642
    <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
  1643
</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
  1644
    <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
  1645
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1646
    <xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1647
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1648
    <xsl:text>    activate_activable(eltsub) {
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1649
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1650
    <xsl:text>        eltsub.inactive.style.display = "none";
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1651
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1652
    <xsl:text>        eltsub.active.style.display = "";
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1653
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1654
    <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1655
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1656
    <xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1657
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1658
    <xsl:text>    inactivate_activable(eltsub) {
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1659
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1660
    <xsl:text>        eltsub.active.style.display = "none";
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1661
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1662
    <xsl:text>        eltsub.inactive.style.display = "";
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1663
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1664
    <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1665
</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
  1666
    <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
  1667
</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
  1668
    <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
  1669
</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
  1670
  </xsl:template>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  1671
  <xsl:variable name="excluded_types" select="str:split('Page VarInit VarInitPersistent')"/>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1672
  <xsl:key use="@type" name="TypesKey" match="widget"/>
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
  1673
  <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
  1674
  <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
  1675
    <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
  1676
</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
  1677
    <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
  1678
    <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
  1679
    <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
  1680
</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
  1681
    <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
  1682
</xsl:text>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1683
    <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
  1684
    <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
  1685
    <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
  1686
</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
  1687
  </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
  1688
  <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
  1689
    <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
  1690
    <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
  1691
    <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
  1692
</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
  1693
    <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
  1694
    <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
  1695
    <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
  1696
</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
  1697
    <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
  1698
</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
  1699
  </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
  1700
  <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
  1701
  <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
  1702
  <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
  1703
  <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
  1704
    <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
  1705
</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
  1706
    <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
  1707
    <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
  1708
    <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
  1709
</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
  1710
    <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
  1711
</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
  1712
    <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
  1713
</xsl:text>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  1714
    <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
  1715
    <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
  1716
</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
  1717
    <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
  1718
</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
  1719
  </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
  1720
  <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
  1721
    <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
  1722
    <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
  1723
    <xsl:param name="subelements" select="/.."/>
2800
68cee1366b9c SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents: 2799
diff changeset
  1724
    <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
  1725
    <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
  1726
    <xsl:for-each select="str:split($labels)">
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  1727
      <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
  1728
      <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
  1729
      <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
  1730
        <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
  1731
          <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
  1732
            <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
  1733
              <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
  1734
              <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
  1735
              <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
  1736
              <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
  1737
            </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
  1738
          </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
  1739
        </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
  1740
        <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
  1741
          <xsl:text>    </xsl:text>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  1742
          <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
  1743
          <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
  1744
          <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
  1745
          <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
  1746
</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
  1747
          <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
  1748
            <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
  1749
            <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
  1750
            <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
  1751
</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
  1752
            <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
  1753
              <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
  1754
              <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
  1755
              <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
  1756
                <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
  1757
                  <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
  1758
                    <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
  1759
                      <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
  1760
                      <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
  1761
                      <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
  1762
                      <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
  1763
                      <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
  1764
                      <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
  1765
                    </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
  1766
                  </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
  1767
                  <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
  1768
                  <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
  1769
                  <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
  1770
                  <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
  1771
                  <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
  1772
</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
  1773
                </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
  1774
                <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
  1775
                  <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
  1776
                  <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
  1777
                  <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
  1778
                  <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
  1779
                  <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
  1780
                  <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
  1781
                    <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
  1782
                  </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
  1783
                  <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
  1784
</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
  1785
                </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
  1786
              </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
  1787
            </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
  1788
            <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
  1789
</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
  1790
          </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
  1791
        </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
  1792
      </xsl:choose>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  1793
    </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
  1794
  </xsl:template>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1795
  <func:function name="func:escape_quotes">
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1796
    <xsl:param name="txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1797
    <xsl:choose>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1798
      <xsl:when test="contains($txt,'&quot;')">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1799
        <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
  1800
      </xsl:when>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1801
      <xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1802
        <func:result select="$txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1803
      </xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1804
    </xsl:choose>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  1805
  </func:function>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1806
  <xsl:template mode="widget_class" match="widget[@type='Animate']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1807
    <xsl:text>class AnimateWidget extends Widget{
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>    frequency = 5;
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>    speed = 0;
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>    start = false;
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>    widget_center = undefined;
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:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1818
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1819
    <xsl:text>    dispatch(value) {
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>        this.speed = value / 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1822
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1823
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1824
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1825
    <xsl:text>        //reconfigure animation
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1826
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1827
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1828
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1829
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1830
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1831
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1832
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1833
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1834
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1835
    <xsl:text>       // change animation properties
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1836
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1837
    <xsl:text>       for(let child of this.element.children){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1838
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1839
    <xsl:text>            if(child.nodeName.startsWith("animate")){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1840
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1841
    <xsl:text>                if(this.speed != 0 &amp;&amp; !this.start){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1842
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1843
    <xsl:text>                    this.start = true;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1844
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1845
    <xsl:text>                    this.element.beginElement();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1846
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1847
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1848
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1849
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1850
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1851
    <xsl:text>                if(this.speed &gt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1852
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1853
    <xsl:text>                    child.setAttribute("dur", this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1854
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1855
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1856
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1857
    <xsl:text>                else if(this.speed &lt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1858
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1859
    <xsl:text>                    child.setAttribute("dur", (-1)*this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1860
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1861
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1862
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1863
    <xsl:text>                else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1864
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1865
    <xsl:text>                    this.start = false;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1866
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1867
    <xsl:text>                    this.element.endElement();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1868
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1869
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1870
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1871
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1872
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1873
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1874
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1875
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1876
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1877
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1878
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1879
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1880
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1881
    <xsl:text>        let widget_pos = this.element.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1882
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1883
    <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
  1884
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1885
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1886
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1887
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1888
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1889
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1890
  <xsl:template mode="widget_defs" match="widget[@type='Animate']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1891
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1892
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1893
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1894
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1895
  <xsl:template mode="widget_class" match="widget[@type='AnimateRotation']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1896
    <xsl:text>class AnimateRotationWidget extends Widget{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1897
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1898
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1899
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1900
    <xsl:text>    speed = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1901
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1902
    <xsl:text>    widget_center = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1903
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1904
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1905
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1906
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1907
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1908
    <xsl:text>        this.speed = value / 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1909
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1910
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1911
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1912
    <xsl:text>        //reconfigure animation
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1913
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1914
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1915
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1916
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1917
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1918
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1919
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1920
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1921
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1922
    <xsl:text>       // change animation properties
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1923
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1924
    <xsl:text>       for(let child of this.element.children){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1925
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1926
    <xsl:text>            if(child.nodeName == "animateTransform"){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1927
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1928
    <xsl:text>                if(this.speed &gt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1929
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1930
    <xsl:text>                    child.setAttribute("dur", this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1931
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1932
    <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
  1933
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1934
    <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
  1935
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1936
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1937
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1938
    <xsl:text>                else if(this.speed &lt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1939
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1940
    <xsl:text>                    child.setAttribute("dur", (-1)*this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1941
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1942
    <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
  1943
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1944
    <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
  1945
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1946
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1947
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1948
    <xsl:text>                else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1949
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1950
    <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
  1951
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1952
    <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
  1953
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1954
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1955
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1956
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1957
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1958
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1959
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1960
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1961
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1962
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1963
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1964
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1965
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1966
    <xsl:text>        let widget_pos = this.element.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1967
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1968
    <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
  1969
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1970
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1971
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1972
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1973
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1974
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1975
  <xsl:template mode="widget_defs" match="widget[@type='AnimateRotation']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1976
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1977
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1978
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  1979
  </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
  1980
  <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
  1981
    <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
  1982
</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
  1983
    <xsl:text>    on_click(evt) {
2902
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1984
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1985
    <xsl:text>        if(jump_history.length &gt; 1){
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1986
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1987
    <xsl:text>           jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1988
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1989
    <xsl:text>           let [page_name, index] = jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1990
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1991
    <xsl:text>           switch_page(page_name, index);
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1992
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1993
    <xsl:text>        }
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  1994
</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
  1995
    <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
  1996
</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
  1997
    <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
  1998
</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
  1999
    <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
  2000
</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
  2001
    <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
  2002
</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
  2003
    <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
  2004
</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
  2005
  </xsl:template>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2006
  <xsl:variable name="_button_fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2007
    <fsm>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2008
      <state name="init">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2009
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2010
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2011
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2012
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2013
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2014
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2015
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2016
      <state name="pressing">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2017
        <hmi-value value="true"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2018
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2019
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2020
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2021
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2022
          <jump state="shortpress"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2023
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2024
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2025
      <state name="pressed">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2026
        <show eltname="active"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2027
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2028
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2029
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2030
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2031
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2032
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2033
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2034
      <state name="shortpress">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2035
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2036
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2037
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2038
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2039
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2040
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2041
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2042
      <state name="releasing">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2043
        <hmi-value value="false"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2044
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2045
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2046
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2047
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2048
          <jump state="shortrelease"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2049
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2050
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2051
      <state name="released">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2052
        <show eltname="inactive"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2053
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2054
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2055
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2056
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2057
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2058
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2059
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2060
      <state name="shortrelease">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2061
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2062
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2063
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2064
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2065
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2066
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2067
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2068
    </fsm>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2069
  </xsl:variable>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2070
  <xsl:template mode="dispatch_transition" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2071
    <xsl:text>        switch (this.state) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2072
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2073
    <xsl:apply-templates mode="dispatch_transition" select="state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2074
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2075
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2076
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2077
  <xsl:template mode="dispatch_transition" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2078
    <xsl:text>          case "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2079
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2080
    <xsl:text>":
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2081
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2082
    <xsl:apply-templates select="on-dispatch"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2083
    <xsl:text>            break;
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2084
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2085
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2086
  <xsl:template match="on-dispatch">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2087
    <xsl:text>            if(value ==  </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2088
    <xsl:value-of select="@value"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2089
    <xsl:text>) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2090
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2091
    <xsl:apply-templates mode="transition" select="jump"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2092
    <xsl:text>            }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2093
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2094
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2095
  <xsl:template mode="mouse_transition" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2096
    <xsl:param name="position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2097
    <xsl:text>        switch (this.state) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2098
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2099
    <xsl:apply-templates mode="mouse_transition" select="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2100
      <xsl:with-param name="position" select="$position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2101
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2102
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2103
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2104
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2105
  <xsl:template mode="mouse_transition" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2106
    <xsl:param name="position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2107
    <xsl:text>          case "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2108
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2109
    <xsl:text>":
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2110
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2111
    <xsl:apply-templates select="on-mouse[@position = $position]"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2112
    <xsl:text>            break;
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2113
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2114
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2115
  <xsl:template match="on-mouse">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2116
    <xsl:apply-templates mode="transition" select="jump"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2117
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2118
  <xsl:template mode="transition" match="jump">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2119
    <xsl:text>            this.state = "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2120
    <xsl:value-of select="@state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2121
    <xsl:text>";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2122
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2123
    <xsl:text>            this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2124
    <xsl:value-of select="@state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2125
    <xsl:text>_action();
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2126
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2127
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2128
  <xsl:template mode="actions" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2129
    <xsl:apply-templates mode="actions" select="state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2130
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2131
  <xsl:template mode="actions" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2132
    <xsl:text>    </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2133
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2134
    <xsl:text>_action(){
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2135
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2136
    <xsl:apply-templates mode="actions" select="*"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2137
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2138
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2139
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2140
  <xsl:template mode="actions" match="show">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2141
    <xsl:text>        this.display = "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2142
    <xsl:value-of select="@eltname"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2143
    <xsl:text>";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2144
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2145
    <xsl:text>        this.request_animate();
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2146
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2147
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2148
  <xsl:template mode="actions" match="hmi-value">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2149
    <xsl:text>        this.apply_hmi_value(0, </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2150
    <xsl:value-of select="@value"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2151
    <xsl:text>);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2152
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2153
  </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
  2154
  <xsl:template mode="widget_class" match="widget[@type='Button']">
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2155
    <xsl:variable name="fsm" select="exsl:node-set($_button_fsm)"/>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2156
    <xsl:text>class ButtonWidget extends Widget{
Edouard Tisserant
parents: 3022 3021
diff changeset
  2157
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  2158
    <xsl:text>    frequency = 5;
Edouard Tisserant
parents: 3022 3021
diff changeset
  2159
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2160
    <xsl:text>    display = "inactive";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2161
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2162
    <xsl:text>    state = "init";
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2163
</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
  2164
    <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
  2165
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2166
    <xsl:apply-templates mode="dispatch_transition" select="$fsm"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2167
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2168
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2169
    <xsl:text>    onmouseup(evt) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2170
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2171
    <xsl:text>        svg_root.removeEventListener("pointerup", this.bound_onmouseup, true);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2172
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2173
    <xsl:apply-templates mode="mouse_transition" select="$fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2174
      <xsl:with-param name="position" select="'up'"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2175
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2176
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2177
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2178
    <xsl:text>    onmousedown(evt) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2179
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2180
    <xsl:text>        svg_root.addEventListener("pointerup", this.bound_onmouseup, true);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2181
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2182
    <xsl:apply-templates mode="mouse_transition" select="$fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2183
      <xsl:with-param name="position" select="'down'"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2184
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2185
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2186
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2187
    <xsl:apply-templates mode="actions" select="$fsm"/>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2188
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2189
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2190
    <xsl:text>        if (this.active_elt &amp;&amp; this.inactive_elt) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2191
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2192
    <xsl:for-each select="str:split('active inactive')">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2193
      <xsl:text>            if(this.display == "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2194
      <xsl:value-of select="."/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2195
      <xsl:text>")
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2196
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2197
      <xsl:text>                this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2198
      <xsl:value-of select="."/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2199
      <xsl:text>_elt.style.display = "";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2200
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2201
      <xsl:text>            else
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2202
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2203
      <xsl:text>                this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2204
      <xsl:value-of select="."/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2205
      <xsl:text>_elt.style.display = "none";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2206
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2207
    </xsl:for-each>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2208
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2209
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2210
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2211
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2212
    <xsl:text>    init() {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2213
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2214
    <xsl:text>        this.bound_onmouseup = this.onmouseup.bind(this);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2215
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2216
    <xsl:text>        this.element.addEventListener("pointerdown", this.onmousedown.bind(this));
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2217
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2218
    <xsl:text>    }
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2219
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  2220
    <xsl:text>}
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2221
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2222
  </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
  2223
  <xsl:template mode="widget_defs" match="widget[@type='Button']">
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2224
    <xsl:param name="hmi_element"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2225
    <xsl:call-template name="defs_by_labels">
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2226
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2227
      <xsl:with-param name="labels">
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2228
        <xsl:text>active inactive</xsl:text>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2229
      </xsl:with-param>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2230
      <xsl:with-param name="mandatory" select="'no'"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2231
    </xsl:call-template>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2232
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2233
  <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
  2234
    <xsl:text>class CircularBarWidget extends Widget{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2235
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2236
    <xsl:text>    frequency = 10;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2237
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2238
    <xsl:text>    range = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2239
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2240
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2241
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2242
    <xsl:text>    dispatch(value) {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2243
</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
  2244
    <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
  2245
</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
  2246
    <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
  2247
</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
  2248
    <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
  2249
</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
  2250
    <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
  2251
</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
  2252
    <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
  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>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2255
</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
  2256
    <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
  2257
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2258
    <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
  2259
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2260
    <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
  2261
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2262
    <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
  2263
</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
  2264
    <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
  2265
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2266
    <xsl:text>        let size = 0;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2267
</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
  2268
    <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
  2269
</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
  2270
    <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
  2271
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2272
    <xsl:text>            size = 1;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2273
</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
  2274
    <xsl:text>        else
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2275
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2276
    <xsl:text>            size = 0;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2277
</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
  2278
    <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
  2279
</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
  2280
    <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
  2281
</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
  2282
    <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
  2283
</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
  2284
    <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
  2285
</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
  2286
    <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
  2287
</xsl:text>
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>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2290
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2291
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2292
    <xsl:text>    init() {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2293
</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
  2294
    <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
  2295
</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
  2296
    <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
  2297
</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
  2298
    <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
  2299
</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
  2300
    <xsl:text>        if (ry == 0) 
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2301
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2302
    <xsl:text>            ry = rx;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2303
</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
  2304
    <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
  2305
</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
  2306
    <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
  2307
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2308
    <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
  2309
</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
  2310
    <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
  2311
</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
  2312
    <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
  2313
</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
  2314
    <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
  2315
</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
  2316
    <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
  2317
</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
  2318
    <xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2319
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2320
    <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
  2321
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2322
    <xsl:text>        this.center = [cx, cy];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2323
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2324
    <xsl:text>        this.proportions = [rx, ry];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2325
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2326
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2327
</xsl:text>
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: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
  2331
  <xsl:template mode="widget_defs" match="widget[@type='CircularBar']">
2944
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2332
    <xsl:param name="hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2333
    <xsl:call-template name="defs_by_labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2334
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2335
      <xsl:with-param name="labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2336
        <xsl:text>path</xsl:text>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2337
      </xsl:with-param>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2338
    </xsl:call-template>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2339
    <xsl:call-template name="defs_by_labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2340
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2341
      <xsl:with-param name="labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2342
        <xsl:text>value min max</xsl:text>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2343
      </xsl:with-param>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2344
      <xsl:with-param name="mandatory" select="'no'"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2345
    </xsl:call-template>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2346
  </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
  2347
  <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
  2348
    <xsl:text>class CircularSliderWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2349
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2350
    <xsl:text>    frequency = 5;
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>    range = undefined;
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>    circle = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2355
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2356
    <xsl:text>    handle_pos = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2357
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2358
    <xsl:text>    curr_value = 0;
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2359
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2360
    <xsl:text>    drag = false;
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>    enTimer = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2363
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2364
    <xsl:text>    last_drag = false;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2365
</xsl:text>
3015
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2368
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2369
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2370
    <xsl:text>        let [min,max,start,totallength] = this.range;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2371
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2372
    <xsl:text>        //save current value inside widget
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2373
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2374
    <xsl:text>        this.curr_value = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2375
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2376
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2377
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2378
    <xsl:text>        //check if in range
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2379
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2380
    <xsl:text>        if (this.curr_value &gt; max){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2381
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2382
    <xsl:text>            this.curr_value = max;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2383
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2384
    <xsl:text>            this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2385
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2386
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2387
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2388
    <xsl:text>        else if (this.curr_value &lt; min){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2389
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2390
    <xsl:text>            this.curr_value = min;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2391
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2392
    <xsl:text>            this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2393
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2394
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2395
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2396
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2397
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2398
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2399
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2400
    <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
  2401
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2402
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2403
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2404
    <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
  2405
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2406
    <xsl:text>        if(!this.drag || (this.setpoint_elt != undefined)){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2407
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2408
    <xsl:text>            this.update_DOM(value, this.handle_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2409
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2410
    <xsl:text>        }
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2411
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2412
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2413
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2414
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2415
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2416
    <xsl:text>    update_DOM(value, elt){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2417
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2418
    <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
  2419
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2420
    <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
  2421
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2422
    <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
  2423
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2424
    <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
  2425
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2426
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2427
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2428
    <xsl:text>        // show or hide ghost if exists
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2429
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2430
    <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
  2431
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2432
    <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
  2433
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2434
    <xsl:text>                if(this.drag){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2435
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2436
    <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
  2437
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2438
    <xsl:text>                }else{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2439
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2440
    <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
  2441
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2442
    <xsl:text>                }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2443
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2444
    <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
  2445
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2446
    <xsl:text>            }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2447
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2448
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2449
</xsl:text>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2454
    <xsl:text>    on_release(evt) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2455
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2456
    <xsl:text>        //unbind events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2457
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2458
    <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
  2459
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2460
    <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
  2461
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2462
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2463
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2464
    <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
  2465
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2466
    <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
  2467
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2468
    <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
  2469
</xsl:text>
3065
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>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2472
    <xsl:text>        //reset drag flag
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2473
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2474
    <xsl:text>        if(this.drag){
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>            this.drag = false;
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>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2480
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2481
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2482
    <xsl:text>        // get final position
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2483
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2484
    <xsl:text>        this.update_position(evt);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2485
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2486
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2487
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2488
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2489
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2490
    <xsl:text>    on_drag(evt){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2491
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2492
    <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
  2493
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2494
    <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
  2495
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2496
    <xsl:text>            this.update_position(evt);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2497
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2498
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2499
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2500
    <xsl:text>            //reset timer
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>            this.enTimer = false;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2503
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2504
    <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
  2505
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2506
    <xsl:text>        }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2507
</xsl:text>
3015
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2510
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2511
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2512
    <xsl:text>    update_position(evt){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2513
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2514
    <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
  2515
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2516
    <xsl:text>            var svg_dist = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2517
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2518
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2519
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2520
    <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
  2521
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2522
    <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
  2523
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2524
    <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
  2525
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2526
    <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
  2527
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2528
    <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
  2529
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2530
    <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
  2531
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2532
    <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
  2533
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2534
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2535
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2536
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2537
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2538
    <xsl:text>            //get mouse coordinates
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>            let mouseX = undefined;
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>            let mouseY = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2543
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2544
    <xsl:text>            if (evt.type.startsWith("touch")){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2545
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2546
    <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
  2547
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2548
    <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
  2549
</xsl:text>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2552
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2553
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2554
    <xsl:text>                mouseX = evt.pageX;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2555
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2556
    <xsl:text>                mouseY = evt.pageY;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2557
</xsl:text>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2562
    <xsl:text>            //calculate angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2563
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2564
    <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
  2565
</xsl:text>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2568
    <xsl:text>            // transform from 0 to 2PI
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>            if (fi &gt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2571
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2572
    <xsl:text>                fi = 2*Math.PI-fi;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2573
</xsl:text>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2576
    <xsl:text>            else{
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>                fi = -fi;
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>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2584
    <xsl:text>            //offset it to 0
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>            fi = fi - fiStart;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2587
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2588
    <xsl:text>            if (fi &lt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2589
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2590
    <xsl:text>                fi = fi + 2*Math.PI;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2591
</xsl:text>
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>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2596
    <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
  2597
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2598
    <xsl:text>            if(fi&lt;fiEnd){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2599
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2600
    <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
  2601
</xsl:text>
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>            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
  2605
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2606
    <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
  2607
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2608
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2609
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2610
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2611
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2612
    <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
  2613
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2614
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2615
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2616
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2617
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2618
    <xsl:text>            //apply value to hmi
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2619
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2620
    <xsl:text>            this.apply_hmi_value(0, Math.ceil(this.curr_value));
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2621
</xsl:text>
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>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2624
    <xsl:text>            //redraw handle
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>            this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2627
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2628
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2629
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2630
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2631
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2632
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2633
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2634
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2635
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2636
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2637
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2638
    <xsl:text>    animate(){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2639
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2640
    <xsl:text>        // redraw handle on screen refresh
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2641
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2642
    <xsl:text>        // check if setpoint(ghost) handle exsist otherwise update main handle
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2643
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2644
    <xsl:text>        if(this.setpoint_elt != undefined){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2645
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2646
    <xsl:text>            this.update_DOM(this.curr_value, this.setpoint_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2647
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2648
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2649
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2650
    <xsl:text>        else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2651
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2652
    <xsl:text>            this.update_DOM(this.curr_value, this.handle_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2653
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2654
    <xsl:text>        }
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2655
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2656
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2657
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2658
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2659
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2660
    <xsl:text>    on_select(evt){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2661
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2662
    <xsl:text>        //enable drag flag and timer
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2663
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2664
    <xsl:text>        this.drag = true;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2665
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2666
    <xsl:text>        this.enTimer = true;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2667
</xsl:text>
3065
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>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2670
    <xsl:text>        //bind events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2671
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2672
    <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
  2673
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2674
    <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
  2675
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2676
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2677
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2678
    <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
  2679
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2680
    <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
  2681
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2682
    <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
  2683
</xsl:text>
3065
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>        //update postion on mouse press
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2687
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2688
    <xsl:text>        this.update_position(evt);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2689
</xsl:text>
3065
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>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2692
    <xsl:text>        //prevent next events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2693
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2694
    <xsl:text>        evt.stopPropagation();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2695
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2696
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2697
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2698
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2699
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2700
    <xsl:text>    init() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2701
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2702
    <xsl:text>        //get min max
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2703
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2704
    <xsl:text>        let min = this.min_elt ?
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2705
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2706
    <xsl:text>                    Number(this.min_elt.textContent) :
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2707
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2708
    <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
  2709
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2710
    <xsl:text>        let max = this.max_elt ?
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2711
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2712
    <xsl:text>                    Number(this.max_elt.textContent) :
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2713
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2714
    <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
  2715
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2716
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2717
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2718
    <xsl:text>        //fiStart ==&gt; offset
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2719
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2720
    <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
  2721
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2722
    <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
  2723
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2724
    <xsl:text>        fiEnd = fiEnd - fiStart;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2725
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2726
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2727
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2728
    <xsl:text>        //fiEnd ==&gt; size of angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2729
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2730
    <xsl:text>        if (fiEnd &lt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2731
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2732
    <xsl:text>            fiEnd = 2*Math.PI + fiEnd;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2733
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2734
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2735
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2736
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2737
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2738
    <xsl:text>        //min max barrier angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2739
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2740
    <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
  2741
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2742
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2743
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2744
    <xsl:text>        //get parameters from svg
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2745
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2746
    <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
  2747
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2748
    <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
  2749
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2750
    <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
  2751
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2752
    <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
  2753
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2754
    <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
  2755
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2756
    <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
  2757
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2758
    <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
  2759
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2760
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2761
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2762
    <xsl:text>        //bind functions
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2763
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2764
    <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
  2765
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2766
    <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
  2767
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2768
    <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
  2769
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2770
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2771
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2772
    <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
  2773
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2774
    <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
  2775
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2776
    <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
  2777
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2778
    <xsl:text>        //touch recognised as page drag without next command
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2779
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2780
    <xsl:text>        document.body.addEventListener("touchstart", function(e){}, false);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2781
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2782
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2783
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2784
    <xsl:text>        //save ghost style
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2785
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2786
    <xsl:text>        //save ghost style
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2787
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2788
    <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
  2789
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2790
    <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
  2791
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2792
    <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
  2793
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2794
    <xsl:text>        }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2795
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2796
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2797
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2798
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2799
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2800
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2801
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2802
  </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
  2803
  <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
  2804
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2805
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2806
      <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
  2807
      <xsl:with-param name="labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2808
        <xsl:text>handle range</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2809
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2810
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2811
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2812
      <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
  2813
      <xsl:with-param name="labels">
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2814
        <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
  2815
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2816
      <xsl:with-param name="mandatory" select="'no'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2817
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2818
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2819
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2820
  </xsl:template>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2821
  <xsl:template mode="widget_class" match="widget[@type='CustomHtml']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2822
    <xsl:text>class CustomHtmlWidget extends Widget{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2823
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2824
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2825
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2826
    <xsl:text>    widget_size = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2827
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2828
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2829
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2830
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2831
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2832
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2833
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2834
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2835
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2836
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2837
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2838
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2839
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2840
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2841
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2842
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2843
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2844
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2845
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2846
    <xsl:text>        this.widget_size = this.container_elt.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2847
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2848
    <xsl:text>        this.element.innerHTML ='&lt;foreignObject x="'+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2849
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2850
    <xsl:text>            this.widget_size.x+'" y="'+this.widget_size.y+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2851
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2852
    <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
  2853
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2854
    <xsl:text>            this.code_elt.textContent+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2855
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2856
    <xsl:text>            ' &lt;/foreignObject&gt;';
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2857
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2858
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2859
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2860
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2861
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2862
  </xsl:template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2863
  <xsl:template mode="widget_defs" match="widget[@type='CustomHtml']">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2864
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2865
    <xsl:call-template name="defs_by_labels">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2866
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2867
      <xsl:with-param name="labels">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2868
        <xsl:text>container code</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2869
      </xsl:with-param>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2870
    </xsl:call-template>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2871
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2872
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2873
  </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
  2874
  <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
  2875
    <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
  2876
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2877
    <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
  2878
</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
  2879
    <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
  2880
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>        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
  2882
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2883
    <xsl:text>        this.request_animate();
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2884
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2885
    <xsl:text>    }
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2886
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2887
    <xsl:text>}
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2888
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2889
  </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
  2890
  <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
  2891
    <xsl:param name="hmi_element"/>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2892
    <xsl:variable name="format">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2893
      <xsl:call-template name="defs_by_labels">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2894
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2895
        <xsl:with-param name="labels">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2896
          <xsl:text>format</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2897
        </xsl:with-param>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2898
        <xsl:with-param name="mandatory" select="'no'"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2899
      </xsl:call-template>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2900
    </xsl:variable>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2901
    <xsl:variable name="has_format" select="string-length($format)&gt;0"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2902
    <xsl:value-of select="$format"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2903
    <xsl:if test="$hmi_element[not(self::svg:text)] and not($has_format)">
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2904
      <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
  2905
        <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
  2906
        <xsl:value-of select="$hmi_element/@id"/>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2907
        <xsl:text>" must be a svg::text element itself or a group containing a svg:text element labelled "format"</xsl:text>
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2908
      </xsl:message>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  2909
    </xsl:if>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2910
    <xsl:variable name="field_initializer">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2911
      <xsl:for-each select="path">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2912
        <xsl:choose>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2913
          <xsl:when test="@type='HMI_STRING'">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2914
            <xsl:text>""</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2915
          </xsl:when>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2916
          <xsl:otherwise>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2917
            <xsl:text>0</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2918
          </xsl:otherwise>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2919
        </xsl:choose>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2920
        <xsl:if test="position()!=last()">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2921
          <xsl:text>,</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2922
        </xsl:if>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2923
      </xsl:for-each>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2924
    </xsl:variable>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2925
    <xsl:text>    fields: [</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2926
    <xsl:value-of select="$field_initializer"/>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  2927
    <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
  2928
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2929
    <xsl:text>    animate: function(){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2930
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2931
    <xsl:choose>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2932
      <xsl:when test="$has_format">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2933
        <xsl:text>      if(this.format_elt.getAttribute("lang")) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2934
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2935
        <xsl:text>          this.format = svg_text_to_multiline(this.format_elt);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2936
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2937
        <xsl:text>          this.format_elt.removeAttribute("lang");
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2938
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2939
        <xsl:text>      }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2940
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2941
        <xsl:text>      let str = vsprintf(this.format,this.fields);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2942
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2943
        <xsl:text>      multiline_to_svg_text(this.format_elt, str);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2944
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2945
      </xsl:when>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2946
      <xsl:otherwise>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2947
        <xsl:text>      let str = this.args.length == 1 ? vsprintf(this.args[0],this.fields) : this.fields.join(' ');
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2948
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2949
        <xsl:text>      multiline_to_svg_text(this.element, str);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2950
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2951
      </xsl:otherwise>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2952
    </xsl:choose>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2953
    <xsl:text>    },
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2954
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2955
    <xsl:text>    
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2956
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2957
    <xsl:if test="$has_format">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2958
      <xsl:text>    init: function() {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2959
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2960
      <xsl:text>      this.format = svg_text_to_multiline(this.format_elt);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2961
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2962
      <xsl:text>    },
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2963
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  2964
    </xsl:if>
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
  2965
  </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
  2966
  <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
  2967
  <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
  2968
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>/* </xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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: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
  2972
    <xsl:text> */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>/* 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
  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>/* 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
  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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>!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
  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>    '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
  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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>    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
  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>        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
  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>        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
  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>        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
  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>        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
  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>        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
  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>        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
  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>        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
  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>        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
  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>        text: /^[^%]+/,
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>        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
  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>        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
  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>        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
  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>        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
  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>        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
  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>        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
  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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>    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
  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>        // </xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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
    <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
  3028
    <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
  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>        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
  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>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>    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
  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>        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
  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>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>    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
  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>        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
  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>        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
  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>            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
  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>                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
  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>            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
  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>                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
  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>                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
  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>                    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
  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>                    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
  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>                        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
  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>                            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
  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>                        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
  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>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                    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
  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>                        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
  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>                        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
  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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                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
  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>                    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
  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>                        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
  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>                        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
  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>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and 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>                    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
  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>                        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
  3239
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3240
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3241
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3242
    <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
  3243
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3244
    <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
  3245
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3246
    <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
  3247
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3248
    <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
  3249
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3250
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3251
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3252
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3253
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3254
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3255
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3256
    <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
  3257
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3258
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3259
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3260
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3261
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3262
    <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
  3263
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3264
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3265
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3266
    <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
  3267
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3268
    <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
  3269
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3270
    <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
  3271
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3272
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3273
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3274
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3275
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3276
    <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
  3277
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3278
    <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
  3279
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3280
    <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
  3281
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3282
    <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
  3283
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3284
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3285
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3286
    <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
  3287
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3288
    <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
  3289
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3290
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3291
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3292
    <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
  3293
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3294
    <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
  3295
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3296
    <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
  3297
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3298
    <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
  3299
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3300
    <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
  3301
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3302
    <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
  3303
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3304
    <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
  3305
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3306
    <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
  3307
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3308
    <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
  3309
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3310
    <xsl:text>                            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3311
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3312
    <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
  3313
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3314
    <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
  3315
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3316
    <xsl:text>                            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3317
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3318
    <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
  3319
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3320
    <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
  3321
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3322
    <xsl:text>                            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3323
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3324
    <xsl:text>                        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3325
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3326
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3327
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3328
    <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
  3329
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3330
    <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
  3331
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3332
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3333
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3334
    <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
  3335
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3336
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3337
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3338
    <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
  3339
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3340
    <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
  3341
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3342
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3343
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3344
    <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
  3345
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3346
    <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
  3347
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3348
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3349
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3350
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3351
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3352
    <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
  3353
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3354
    <xsl:text>                    {
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3355
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3356
    <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
  3357
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3358
    <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
  3359
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3360
    <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
  3361
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3362
    <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
  3363
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3364
    <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
  3365
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3366
    <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
  3367
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3368
    <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
  3369
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3370
    <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
  3371
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3372
    <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
  3373
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3374
    <xsl:text>                    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3375
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3376
    <xsl:text>                )
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3377
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3378
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3379
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3380
    <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
  3381
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3382
    <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
  3383
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3384
    <xsl:text>            }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3385
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3386
    <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
  3387
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3388
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3389
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3390
    <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
  3391
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3392
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3393
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3394
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3395
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3396
    <xsl:text>    /**
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3397
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3398
    <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
  3399
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3400
    <xsl:text>     */
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3401
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3402
    <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
  3403
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3404
    <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
  3405
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3406
    <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
  3407
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3408
    <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
  3409
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3410
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3411
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3412
    <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
  3413
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3414
    <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
  3415
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3416
    <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
  3417
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3418
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3419
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3420
    <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
  3421
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3422
    <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
  3423
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3424
    <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
  3425
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3426
    <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
  3427
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3428
    <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
  3429
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3430
    <xsl:text>                }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3431
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3432
    <xsl:text>            })
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3433
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3434
    <xsl:text>        }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3435
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3436
    <xsl:text>    }
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3437
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3438
    <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
  3439
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3440
    <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
  3441
</xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3442
    <xsl:text>
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  3443
</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
  3444
  </xsl:template>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3445
  <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
  3446
    <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
  3447
</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
  3448
    <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
  3449
</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
  3450
    <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
  3451
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3452
    <xsl:text>    class DropDownWidget extends Widget{
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>        dispatch(value) {
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>            if(!this.opened) this.set_selection(value);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3457
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3458
    <xsl:text>        }
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>        init() {
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>            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
  3463
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3464
    <xsl:text>            // Save original size of rectangle
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.box_bbox = this.box_elt.getBBox()
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3467
</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
  3468
    <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
  3469
</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
  3470
    <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
  3471
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3472
    <xsl:text>
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>            // Compute margins
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>            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
  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>            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
  3479
</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
  3480
    <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
  3481
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3482
    <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
  3483
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3484
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3485
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3486
    <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
  3487
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3488
    <xsl:text>            this.menu_offset = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3489
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3490
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3491
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3492
    <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
  3493
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3494
    <xsl:text>            this.lift = 0;
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>
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>            // 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
  3499
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3500
    <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
  3501
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3502
    <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
  3503
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3504
    <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
  3505
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3506
    <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
  3507
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3508
    <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
  3509
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3510
    <xsl:text>            this.opened = false;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3511
</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
  3512
    <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
  3513
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3514
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3515
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3516
    <xsl:text>        on_button_click() {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3517
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3518
    <xsl:text>            this.open();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3519
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3520
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3521
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3522
    <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
  3523
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3524
    <xsl:text>        on_selection_click(selection) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3525
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3526
    <xsl:text>            this.close();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3527
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3528
    <xsl:text>            this.apply_hmi_value(0, selection);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3529
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3530
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3531
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3532
    <xsl:text>        on_backward_click(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3533
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3534
    <xsl:text>            this.scroll(false);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3535
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3536
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3537
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3538
    <xsl:text>        on_forward_click(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3539
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3540
    <xsl:text>            this.scroll(true);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3541
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3542
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3543
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3544
    <xsl:text>        set_selection(value) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3545
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3546
    <xsl:text>            let display_str;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3547
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3548
    <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
  3549
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3550
    <xsl:text>                // if valid selection resolve content
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3551
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3552
    <xsl:text>                display_str = this.content[value];
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3553
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3554
    <xsl:text>                this.last_selection = value;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3555
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3556
    <xsl:text>            } else {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3557
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3558
    <xsl:text>                // otherwise show problem
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3559
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3560
    <xsl:text>                display_str = "?"+String(value)+"?";
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3561
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3562
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3563
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3564
    <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
  3565
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3566
    <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
  3567
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3568
    <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
  3569
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3570
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3571
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3572
    <xsl:text>        grow_text(up_to) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3573
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3574
    <xsl:text>            let count = 1;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3575
</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
  3576
    <xsl:text>            let txt = this.text_elt;
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3577
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3578
    <xsl:text>            let first = txt.firstElementChild;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3579
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3580
    <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
  3581
</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
  3582
    <xsl:text>            let bounds = svg_root.getBoundingClientRect();
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3583
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3584
    <xsl:text>            this.lift = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3585
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3586
    <xsl:text>            while(count &lt; up_to) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3587
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3588
    <xsl:text>                let next = first.cloneNode();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3589
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3590
    <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
  3591
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3592
    <xsl:text>                next.removeAttribute("y");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3593
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3594
    <xsl:text>                next.setAttribute("dy", "1.1em");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3595
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3596
    <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
  3597
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3598
    <xsl:text>                next.textContent = "...";
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3599
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3600
    <xsl:text>                // append new span to text element
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3601
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3602
    <xsl:text>                txt.appendChild(next);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3603
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3604
    <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
  3605
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3606
    <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
  3607
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3608
    <xsl:text>                let rect = txt.getBoundingClientRect();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3609
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3610
    <xsl:text>                if(rect.bottom &gt; bounds.bottom){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3611
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3612
    <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
  3613
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3614
    <xsl:text>                    let backup = first.getAttribute("dy");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3615
</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
  3616
    <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
  3617
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3618
    <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
  3619
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3620
    <xsl:text>                    rect = txt.getBoundingClientRect();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3621
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3622
    <xsl:text>                    if(rect.top &gt; bounds.top){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3623
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3624
    <xsl:text>                        this.lift += 1;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3625
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3626
    <xsl:text>                    } else {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3627
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3628
    <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
  3629
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3630
    <xsl:text>                        // restore dy attribute on first span
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3631
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3632
    <xsl:text>                        if(backup)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3633
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3634
    <xsl:text>                            first.setAttribute("dy", backup);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3635
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3636
    <xsl:text>                        else
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3637
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3638
    <xsl:text>                            first.removeAttribute("dy");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3639
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3640
    <xsl:text>                        // remove unwanted child
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3641
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3642
    <xsl:text>                        txt.removeChild(next);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3643
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3644
    <xsl:text>                        return count;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3645
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3646
    <xsl:text>                    }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3647
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3648
    <xsl:text>                }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3649
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3650
    <xsl:text>                count++;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3651
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3652
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3653
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3654
    <xsl:text>            return count;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3655
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3656
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3657
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3658
    <xsl:text>        close_on_click_elsewhere(e) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3659
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3660
    <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
  3661
</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
  3662
    <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
  3663
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3664
    <xsl:text>                e.stopPropagation();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3665
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3666
    <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
  3667
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3668
    <xsl:text>                if(e.target !== this.box_elt)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3669
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3670
    <xsl:text>                    this.close();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3671
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3672
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3673
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3674
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3675
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3676
    <xsl:text>        close(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3677
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3678
    <xsl:text>            // Stop hogging all click events
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3679
</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
  3680
    <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
  3681
</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
  3682
    <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
  3683
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3684
    <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
  3685
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3686
    <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
  3687
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3688
    <xsl:text>            this.reset_text();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3689
</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
  3690
    <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
  3691
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3692
    <xsl:text>            this.reset_box();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3693
</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
  3694
    <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
  3695
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3696
    <xsl:text>            // Put the button back in place
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3697
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3698
    <xsl:text>            this.element.appendChild(this.button_elt);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3699
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3700
    <xsl:text>            // Mark as closed (to allow dispatch)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3701
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3702
    <xsl:text>            this.opened = false;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3703
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3704
    <xsl:text>            // Dispatch last cached value
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3705
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3706
    <xsl:text>            this.apply_cache();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3707
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3708
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3709
</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
  3710
    <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
  3711
</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
  3712
    <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
  3713
</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
  3714
    <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
  3715
</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
  3716
    <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
  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>            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
  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>            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
  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 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
  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>            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
  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>            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
  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>            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
  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>            //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
  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>            //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
  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>            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
  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>            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
  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>            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
  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>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>        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
  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>            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
  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>                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
  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>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>        // 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
  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>        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
  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>            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
  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>            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
  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>            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
  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>                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
  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>                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
  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>                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
  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>                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
  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>                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
  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>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>        // 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
  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>        // 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
  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>        // 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
  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>        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
  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>            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
  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 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
  3787
</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
  3788
    <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
  3789
</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
  3790
    <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
  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>            // 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
  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>            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
  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>            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
  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>                // 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
  3799
</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
  3800
    <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
  3801
</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
  3802
    <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
  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>                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
  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>                    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
  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>                    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
  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>            }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
  3811
</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
  3812
    <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
  3813
</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
  3814
    <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
  3815
</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
  3816
    <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
  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>                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
  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>                    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
  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>                    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
  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>            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
  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>                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
  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>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>            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
  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>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>            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
  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>            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
  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>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>            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
  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>        // 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
  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>        // 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
  3849
</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
  3850
    <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
  3851
</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
  3852
    <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
  3853
</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
  3854
    <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
  3855
</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
  3856
    <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
  3857
</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
  3858
    <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
  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>            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
  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>            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
  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>                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
  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 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
  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>                // 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
  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>                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
  3871
</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
  3872
    <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
  3873
</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
  3874
    <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
  3875
</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
  3876
    <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
  3877
</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
  3878
    <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
  3879
</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
  3880
    <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
  3881
</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
  3882
    <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
  3883
</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
  3884
    <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
  3885
</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
  3886
    <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
  3887
</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
  3888
    <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
  3889
</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
  3890
    <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
  3891
</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
  3892
    <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
  3893
</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
  3894
    <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
  3895
</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
  3896
    <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
  3897
</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
  3898
    <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
  3899
</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
  3900
    <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
  3901
</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
  3902
    <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
  3903
</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
  3904
    <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
  3905
</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
  3906
    <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
  3907
</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
  3908
    <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
  3909
</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
  3910
    <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
  3911
</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
  3912
    <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
  3913
</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
  3914
    <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
  3915
</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
  3916
    <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
  3917
</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
  3918
    <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
  3919
</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
  3920
    <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
  3921
</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
  3922
    <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
  3923
</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
  3924
    <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
  3925
</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
  3926
    <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
  3927
</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
  3928
    <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
  3929
</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
  3930
    <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
  3931
</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
  3932
    <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
  3933
</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
  3934
    <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
  3935
</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
  3936
    <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
  3937
</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
  3938
    <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
  3939
</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
  3940
    <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
  3941
</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
  3942
    <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
  3943
</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
  3944
    <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
  3945
</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
  3946
    <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
  3947
</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
  3948
    <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
  3949
</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
  3950
    <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
  3951
</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
  3952
    <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
  3953
</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
  3954
    <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
  3955
</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
  3956
    <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
  3957
</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
  3958
    <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
  3959
</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
  3960
    <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
  3961
</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
  3962
    <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
  3963
</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
  3964
    <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
  3965
</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
  3966
    <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
  3967
</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
  3968
    <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
  3969
</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
  3970
    <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
  3971
</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
  3972
    <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
  3973
</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
  3974
    <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
  3975
</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
  3976
    <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
  3977
</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
  3978
    <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
  3979
</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
  3980
    <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
  3981
</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
  3982
    <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
  3983
</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
  3984
    <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
  3985
</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
  3986
    <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
  3987
</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
  3988
    <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
  3989
</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
  3990
    <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
  3991
</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
  3992
    <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
  3993
</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
  3994
    <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
  3995
</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
  3996
    <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
  3997
</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
  3998
    <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
  3999
</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
  4000
    <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
  4001
</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
  4002
    <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
  4003
</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
  4004
    <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
  4005
</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
  4006
    <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
  4007
</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
  4008
    <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
  4009
</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
  4010
    <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
  4011
</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
  4012
    <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
  4013
</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
  4014
    <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
  4015
</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
  4016
    <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
  4017
</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
  4018
    <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
  4019
</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
  4020
    <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
  4021
</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
  4022
    <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
  4023
</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
  4024
    <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
  4025
</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
  4026
    <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
  4027
</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
  4028
    <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
  4029
</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
  4030
    <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
  4031
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  4032
    <xsl:text>            if(this.last_selection == undefined) return;
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  4033
</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
  4034
    <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
  4035
</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
  4036
    <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
  4037
</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
  4038
    <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
  4039
</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
  4040
    <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
  4041
</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
  4042
    <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
  4043
</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
  4044
    <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
  4045
</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
  4046
    <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
  4047
</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
  4048
    <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
  4049
</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
  4050
    <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
  4051
</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
  4052
    <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
  4053
</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
  4054
    <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
  4055
</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
  4056
    <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
  4057
</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
  4058
    <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
  4059
</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
  4060
    <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
  4061
</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
  4062
    <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
  4063
</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
  4064
    <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
  4065
</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
  4066
    <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
  4067
</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
  4068
    <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
  4069
</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
  4070
    <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
  4071
</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
  4072
    <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
  4073
</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
  4074
    <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
  4075
</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
  4076
    <xsl:text>            highlight.style.visibility = "hidden";
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4077
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4078
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4079
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4080
    <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
  4081
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4082
    <xsl:text>        adjust_box_to_text(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4083
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4084
    <xsl:text>            let [lmargin, tmargin] = this.margins;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4085
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4086
    <xsl:text>            let m = this.text_elt.getBBox();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4087
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4088
    <xsl:text>            let b = this.box_elt;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4089
</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
  4090
    <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
  4091
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4092
    <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
  4093
</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
  4094
    <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
  4095
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4096
    <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
  4097
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4098
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4099
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4100
    <xsl:text>    }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4101
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4102
  </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
  4103
  <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
  4104
    <xsl:param name="hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4105
    <xsl:call-template name="defs_by_labels">
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4106
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4107
      <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
  4108
        <xsl:text>text box button highlight</xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4109
      </xsl:with-param>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4110
    </xsl:call-template>
3134
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4111
    <xsl:text>  content:</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4112
    <xsl:choose>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4113
      <xsl:when test="count(arg) = 1 and arg[1]/@value = '#langs'">
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4114
        <xsl:text>langs</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4115
      </xsl:when>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4116
      <xsl:otherwise>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4117
        <xsl:text>[
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4118
</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4119
        <xsl:for-each select="arg">
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4120
          <xsl:text>"</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4121
          <xsl:value-of select="@value"/>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4122
          <xsl:text>",
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4123
</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4124
        </xsl:for-each>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4125
        <xsl:text>  ]</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4126
      </xsl:otherwise>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4127
    </xsl:choose>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4128
    <xsl:text>,
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4129
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4130
  </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
  4131
  <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
  4132
    <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
  4133
    <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
  4134
      <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
  4135
        <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
  4136
        <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
  4137
        <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
  4138
      </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
  4139
    </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
  4140
    <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
  4141
      <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
  4142
        <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
  4143
        <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
  4144
        <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
  4145
      </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
  4146
    </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
  4147
    <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
  4148
    <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
  4149
    <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
  4150
    <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
  4151
    <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
  4152
    <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
  4153
    <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
  4154
    <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
  4155
</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
  4156
    <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
  4157
      <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
  4158
      <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
  4159
      <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
  4160
        <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
  4161
      </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
  4162
      <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
  4163
</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
  4164
    </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
  4165
    <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
  4166
</xsl:text>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4167
    <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
  4168
</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
  4169
    <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
  4170
    <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
  4171
    <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
  4172
    <xsl:for-each select="$buttons">
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4173
      <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
  4174
      <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
  4175
      <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
  4176
      <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
  4177
      <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
  4178
      <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
  4179
      <xsl:value-of select="$op"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4180
      <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
  4181
</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
  4182
    </xsl:for-each>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4183
    <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
  4184
</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
  4185
    <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
  4186
</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
  4187
    <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
  4188
    <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
  4189
    <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
  4190
      <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
  4191
      <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
  4192
      <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
  4193
      <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
  4194
      <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
  4195
      <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
  4196
      <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
  4197
      <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
  4198
      <xsl:text>" */
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4199
</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
  4200
      <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
  4201
        <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
  4202
          <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
  4203
          <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
  4204
          <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
  4205
          <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
  4206
        </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
  4207
      </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
  4208
      <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
  4209
        <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
  4210
          <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
  4211
            <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
  4212
            <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
  4213
            <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
  4214
            <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
  4215
            <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
  4216
            <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
  4217
            <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
  4218
            <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
  4219
            <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
  4220
          </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
  4221
        </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
  4222
        <xsl:text>            hmi_widgets["</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4223
        <xsl:value-of select="@id"/>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4224
        <xsl:text>"]</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4225
        <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4226
          <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4227
        </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4228
        <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4229
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4230
      </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
  4231
      <xsl:text>          ]</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4232
      <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4233
        <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4234
      </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4235
      <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4236
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4237
    </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
  4238
    <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
  4239
</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
  4240
    <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
  4241
</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
  4242
    <xsl:text>    item_offset: 0,
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4243
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4244
  </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
  4245
  <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
  4246
    <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
  4247
</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
  4248
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4249
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4250
    <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
  4251
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4252
    <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
  4253
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4254
    <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
  4255
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4256
    <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
  4257
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4258
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4259
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4260
    <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4261
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4262
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4263
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4264
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4265
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4266
    <xsl:text>    unsub(){
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4267
</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
  4268
    <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
  4269
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4270
    <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
  4271
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4272
    <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
  4273
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4274
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4275
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4276
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4277
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4278
    <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
  4279
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4280
    <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
  4281
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4282
    <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
  4283
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4284
    <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
  4285
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4286
    <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
  4287
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4288
    <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
  4289
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4290
    <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
  4291
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4292
    <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
  4293
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4294
    <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
  4295
</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
  4296
    <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
  4297
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4298
    <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
  4299
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4300
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4301
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4302
    <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
  4303
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4304
    <xsl:text>                */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4305
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4306
    <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
  4307
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4308
    <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
  4309
</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
  4310
    <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
  4311
</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
  4312
    <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
  4313
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4314
    <xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4315
</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
  4316
    <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
  4317
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4318
    <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
  4319
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4320
    <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
  4321
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4322
    <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
  4323
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4324
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4325
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4326
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4327
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4328
    <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
  4329
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4330
    <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
  4331
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4332
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4333
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4334
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4335
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4336
    <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
  4337
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4338
    <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
  4339
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4340
    <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
  4341
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4342
    <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
  4343
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4344
    <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
  4345
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4346
    <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
  4347
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4348
    <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
  4349
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4350
    <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
  4351
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4352
    <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
  4353
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4354
    <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
  4355
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4356
    <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
  4357
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4358
    <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
  4359
</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
  4360
    <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
  4361
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4362
    <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
  4363
</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
  4364
    <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
  4365
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4366
    <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
  4367
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4368
    <xsl:text>        update_subscriptions();
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4369
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4370
    <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
  4371
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4372
    <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
  4373
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4374
    <xsl:text>        requestHMIAnimation();
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4375
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4376
    <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
  4377
</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
  4378
    <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
  4379
</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
  4380
  </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
  4381
  <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
  4382
    <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
  4383
</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
  4384
    <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
  4385
</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
  4386
    <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
  4387
</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
  4388
    <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
  4389
</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
  4390
    <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
  4391
</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
  4392
    <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
  4393
</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
  4394
    <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
  4395
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4396
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4397
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4398
    <xsl:text>         overshot(new_val, max) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4399
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4400
    <xsl:text>             this.last_display = "max: "+max;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4401
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4402
    <xsl:text>             this.request_animate();
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4403
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4404
    <xsl:text>         }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4405
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4406
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4407
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4408
    <xsl:text>         undershot(new_val, min) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4409
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4410
    <xsl:text>             this.last_display = "min: "+min;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4411
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4412
    <xsl:text>             this.request_animate();
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4413
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4414
    <xsl:text>         }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4415
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4416
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4417
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4418
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4419
</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
  4420
    <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
  4421
</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
  4422
  </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
  4423
  <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
  4424
    <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
  4425
    <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
  4426
      <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
  4427
        <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
  4428
        <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
  4429
          <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
  4430
        </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
  4431
        <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
  4432
      </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
  4433
    </xsl:variable>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4434
    <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
  4435
    <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
  4436
    <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
  4437
      <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
  4438
        <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
  4439
        <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
  4440
          <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
  4441
        </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
  4442
        <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
  4443
      </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
  4444
    </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
  4445
    <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
  4446
    <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
  4447
    <xsl:if test="$have_value">
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4448
      <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
  4449
</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
  4450
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4451
    <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
  4452
</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
  4453
    <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
  4454
      <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
  4455
</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
  4456
    </xsl:if>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4457
    <xsl:if test="$have_value">
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4458
      <xsl:text>        this.last_display = value;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4459
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4460
      <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
  4461
</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
  4462
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4463
    <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
  4464
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4465
    <xsl:if test="$have_value">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4466
      <xsl:text>    animate: function(){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4467
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4468
      <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
  4469
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4470
      <xsl:text>    },
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4471
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4472
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4473
    <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
  4474
</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
  4475
    <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
  4476
      <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
  4477
      <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
  4478
      <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
  4479
      <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
  4480
      <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
  4481
</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
  4482
    </xsl:if>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  4483
    <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
  4484
      <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
  4485
      <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
  4486
      <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
  4487
      <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
  4488
      <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
  4489
</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
  4490
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4491
    <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
  4492
</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
  4493
  </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
  4494
  <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
  4495
    <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
  4496
</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
  4497
    <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
  4498
</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
  4499
    <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
  4500
</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
  4501
    <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
  4502
</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
  4503
    <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
  4504
</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
  4505
    <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
  4506
</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
  4507
    <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
  4508
</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
  4509
    <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
  4510
</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
  4511
    <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
  4512
</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
  4513
    <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
  4514
</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
  4515
    <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
  4516
</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
  4517
    <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
  4518
</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
  4519
    <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
  4520
</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
  4521
    <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
  4522
</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
  4523
    <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
  4524
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4525
    <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
  4526
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4527
    <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
  4528
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4529
    <xsl:text>            range: this.cache[1],
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4530
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4531
    <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
  4532
</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
  4533
    <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
  4534
</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
  4535
    <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
  4536
</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
  4537
    <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
  4538
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4539
    <xsl:text>        };
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4540
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4541
    <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4542
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4543
    <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
  4544
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4545
    <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
  4546
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4547
    <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
  4548
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4549
    <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
  4550
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4551
    <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
  4552
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4553
    <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4554
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4555
    <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
  4556
</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
  4557
    <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
  4558
</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
  4559
    <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
  4560
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4561
    <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4562
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4563
    <xsl:text>    }
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4564
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4565
    <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
  4566
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  4567
    <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
  4568
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4569
    <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
  4570
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4571
    <xsl:text>    }
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4572
</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
  4573
    <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
  4574
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4575
    <xsl:text>        let that = this;
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4576
</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
  4577
    <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
  4578
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4579
    <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
  4580
</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
  4581
    <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
  4582
</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
  4583
    <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
  4584
</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
  4585
    <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
  4586
</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
  4587
    <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
  4588
</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
  4589
    <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
  4590
</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
  4591
    <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
  4592
</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
  4593
  </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
  4594
  <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
  4595
    <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
  4596
      <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
  4597
      <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
  4598
      <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
  4599
    </xsl:message>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4600
  </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
  4601
  <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
  4602
  <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
  4603
  <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
  4604
    <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
  4605
      <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
  4606
        <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
  4607
          <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
  4608
        </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
  4609
        <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
  4610
          <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
  4611
            <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
  4612
              <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
  4613
            </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
  4614
          </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
  4615
        </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
  4616
      </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
  4617
    </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
  4618
  </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
  4619
  <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
  4620
  <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
  4621
    <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
  4622
    <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
  4623
    <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
  4624
      <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
  4625
        <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
  4626
        <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
  4627
          <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
  4628
            <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
  4629
              <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
  4630
              <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
  4631
              <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
  4632
              <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
  4633
                <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
  4634
                  <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
  4635
                  <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
  4636
                    <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
  4637
                      <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
  4638
                    </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
  4639
                  </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
  4640
                  <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
  4641
                    <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
  4642
                  </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
  4643
                  <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
  4644
                    <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
  4645
                    <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
  4646
                  </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
  4647
                </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
  4648
                <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
  4649
                  <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
  4650
                  <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
  4651
                    <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
  4652
                    <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
  4653
                  </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
  4654
                </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
  4655
              </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
  4656
            </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
  4657
          </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
  4658
        </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
  4659
        <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
  4660
      </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
  4661
      <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
  4662
        <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
  4663
      </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
  4664
    </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
  4665
  </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
  4666
  <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
  4667
    <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
  4668
      <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
  4669
        <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
  4670
      </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
  4671
    </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
  4672
  </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
  4673
  <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
  4674
  <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
  4675
    <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
  4676
    <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
  4677
    <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
  4678
    <xsl:choose>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4679
      <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
  4680
        <xsl:text>        id("</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4681
        <xsl:value-of select="@id"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4682
        <xsl:text>").setAttribute("xlink:href",
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4683
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4684
        <xsl:text>            "#"+hmi_widgets["</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4685
        <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
  4686
        <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
  4687
        <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
  4688
        <xsl:text>]);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4689
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4690
      </xsl:when>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4691
      <xsl:otherwise>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4692
        <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
  4693
          <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
  4694
          <xsl:value-of select="@xlink:href"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4695
          <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
  4696
        </xsl:message>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4697
      </xsl:otherwise>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  4698
    </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
  4699
  </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
  4700
  <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
  4701
    <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
  4702
    <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
  4703
    <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
  4704
    <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
  4705
    <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
  4706
      <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
  4707
        <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
  4708
        <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
  4709
          <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
  4710
            <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
  4711
          </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
  4712
        </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
  4713
        <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
  4714
</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
  4715
        <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
  4716
        <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
  4717
        <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
  4718
</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
  4719
        <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
  4720
        <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
  4721
        <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
  4722
</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
  4723
        <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
  4724
        <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
  4725
        <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
  4726
        <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
  4727
        <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
  4728
</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
  4729
        <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
  4730
</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
  4731
      </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
  4732
      <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
  4733
        <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
  4734
        <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
  4735
        <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
  4736
        <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
  4737
        <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
  4738
</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
  4739
      </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
  4740
    </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
  4741
  </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
  4742
  <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
  4743
    <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
  4744
    <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
  4745
    <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
  4746
      <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
  4747
        <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
  4748
          <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
  4749
        </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
  4750
        <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
  4751
          <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
  4752
        </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
  4753
      </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
  4754
    </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
  4755
    <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
  4756
  </func:function>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4757
  <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
  4758
    <xsl:param name="expressions"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4759
    <xsl:param name="widget_elts"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4760
    <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
  4761
    <xsl:if test="not(starts-with($label,'#'))">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4762
      <xsl:apply-templates mode="json_table_render" select=".">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4763
        <xsl:with-param name="expressions" select="$expressions"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4764
        <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
  4765
        <xsl:with-param name="label" select="$label"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4766
      </xsl:apply-templates>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4767
    </xsl:if>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4768
  </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
  4769
  <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
  4770
    <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
  4771
    <xsl:param name="widget_elts"/>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4772
    <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
  4773
    <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
  4774
    <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
  4775
    <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
  4776
      <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
  4777
      <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
  4778
      <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
  4779
      <xsl:value-of select="@name"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4780
      <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
  4781
      <xsl:value-of select="@content"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  4782
      <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
  4783
</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
  4784
    </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
  4785
    <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
  4786
      <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
  4787
    </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
  4788
  </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
  4789
  <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
  4790
    <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
  4791
    <xsl:param name="widget_elts"/>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4792
    <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
  4793
    <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
  4794
    <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
  4795
      <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
  4796
      <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
  4797
      <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
  4798
    </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
  4799
    <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
  4800
</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
  4801
    <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
  4802
      <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
  4803
      <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
  4804
      <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
  4805
      <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
  4806
      <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
  4807
      <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
  4808
</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
  4809
      <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
  4810
      <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
  4811
      <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
  4812
      <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
  4813
</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
  4814
      <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
  4815
      <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
  4816
      <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
  4817
      <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
  4818
      <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
  4819
      <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
  4820
</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
  4821
      <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
  4822
</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
  4823
      <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
  4824
</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
  4825
    </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
  4826
    <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
  4827
      <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
  4828
        <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
  4829
          <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
  4830
          <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
  4831
            <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
  4832
            <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
  4833
          </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
  4834
        </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
  4835
      </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
  4836
    </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
  4837
    <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
  4838
    <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
  4839
    <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
  4840
    <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
  4841
    <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
  4842
</xsl:text>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4843
    <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
  4844
      <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
  4845
      <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
  4846
    </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
  4847
    <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
  4848
</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
  4849
    <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
  4850
    <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
  4851
    <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
  4852
</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
  4853
    <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
  4854
</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
  4855
  </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
  4856
  <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
  4857
    <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
  4858
    <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
  4859
      <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
  4860
      <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
  4861
        <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
  4862
      </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
  4863
    </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
  4864
    <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
  4865
      <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
  4866
      <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
  4867
        <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
  4868
      </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
  4869
      <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
  4870
    </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
  4871
    <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
  4872
    <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
  4873
    <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
  4874
    <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
  4875
</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
  4876
    <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
  4877
</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
  4878
    <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
  4879
</xsl:text>
3041
de4503de2f8c SVGHMI: JsonTable now updates range and position variables so that slider widget can update.
Edouard Tisserant
parents: 3038
diff changeset
  4880
    <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
  4881
</xsl:text>
de4503de2f8c SVGHMI: JsonTable now updates range and position variables so that slider widget can update.
Edouard Tisserant
parents: 3038
diff changeset
  4882
    <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
  4883
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4884
    <xsl:text>        this.apply_hmi_value(3, this.visible);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  4885
</xsl:text>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  4886
    <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
  4887
      <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
  4888
      <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
  4889
    </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
  4890
    <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
  4891
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  4892
  </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
  4893
  <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
  4894
    <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
  4895
</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
  4896
    <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
  4897
</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
  4898
    <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
  4899
</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
  4900
    <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
  4901
</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
  4902
    <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
  4903
</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
  4904
    <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
  4905
</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
  4906
    <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
  4907
</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
  4908
    <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
  4909
</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
  4910
    <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
  4911
</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
  4912
    <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
  4913
</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
  4914
    <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
  4915
</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
  4916
    <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
  4917
</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
  4918
    <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
  4919
</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
  4920
    <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
  4921
</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
  4922
    <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
  4923
</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
  4924
    <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
  4925
</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
  4926
    <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
  4927
</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
  4928
    <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
  4929
</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
  4930
    <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
  4931
</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
  4932
    <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
  4933
</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
  4934
    <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
  4935
</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
  4936
    <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
  4937
</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
  4938
    <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
  4939
</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
  4940
    <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
  4941
</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
  4942
    <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
  4943
</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
  4944
    <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
  4945
</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
  4946
    <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
  4947
</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
  4948
    <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
  4949
</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
  4950
    <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
  4951
</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
  4952
    <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
  4953
</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
  4954
    <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
  4955
</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
  4956
    <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
  4957
</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
  4958
    <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
  4959
</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
  4960
    <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
  4961
</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
  4962
    <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
  4963
</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
  4964
    <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
  4965
</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
  4966
    <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
  4967
</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
  4968
    <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
  4969
</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
  4970
    <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
  4971
</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
  4972
    <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
  4973
</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
  4974
    <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
  4975
</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
  4976
    <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
  4977
</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
  4978
    <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
  4979
</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
  4980
    <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
  4981
</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
  4982
    <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
  4983
</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
  4984
    <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
  4985
</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
  4986
    <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
  4987
</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
  4988
    <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
  4989
</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
  4990
    <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
  4991
</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
  4992
    <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
  4993
</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
  4994
    <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
  4995
</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
  4996
    <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
  4997
</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
  4998
    <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
  4999
</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
  5000
    <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
  5001
</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
  5002
    <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
  5003
</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
  5004
    <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
  5005
</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
  5006
    <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
  5007
</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
  5008
  </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
  5009
  <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
  5010
    <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
  5011
    <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
  5012
      <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
  5013
        <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
  5014
        <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
  5015
          <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
  5016
        </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
  5017
        <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
  5018
      </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
  5019
    </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
  5020
    <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
  5021
    <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
  5022
    <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
  5023
      <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
  5024
        <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
  5025
        <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
  5026
          <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
  5027
        </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
  5028
        <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
  5029
      </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
  5030
    </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
  5031
    <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
  5032
    <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
  5033
    <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
  5034
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5035
    <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
  5036
</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
  5037
    <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
  5038
      <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
  5039
</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
  5040
      <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
  5041
</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
  5042
      <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
  5043
</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
  5044
    </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
  5045
    <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
  5046
      <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
  5047
        <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
  5048
</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
  5049
      </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
  5050
      <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
  5051
        <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
  5052
</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
  5053
      </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
  5054
    </xsl:choose>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  5055
    <xsl:text>    },
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  5056
</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
  5057
  </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
  5058
  <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
  5059
    <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
  5060
    <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
  5061
      <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
  5062
        <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
  5063
          <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
  5064
            <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
  5065
          </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
  5066
          <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
  5067
            <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
  5068
          </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
  5069
        </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
  5070
      </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
  5071
      <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
  5072
        <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
  5073
          <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
  5074
            <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
  5075
          </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
  5076
          <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
  5077
            <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
  5078
          </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
  5079
        </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
  5080
      </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
  5081
      <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
  5082
        <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
  5083
          <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
  5084
          <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
  5085
          <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
  5086
          <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
  5087
          <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
  5088
          <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
  5089
          <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
  5090
          <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
  5091
          <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
  5092
        </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
  5093
      </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
  5094
    </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
  5095
  </xsl:template>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5096
  <declarations:jump/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5097
  <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
  5098
    <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
  5099
</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
  5100
    <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
  5101
    <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
  5102
    <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
  5103
</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
  5104
    <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
  5105
</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
  5106
    <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
  5107
</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
  5108
    <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
  5109
</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
  5110
    <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
  5111
</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
  5112
    <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
  5113
</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
  5114
    <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
  5115
</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
  5116
    <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
  5117
</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
  5118
    <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
  5119
</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
  5120
    <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
  5121
</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
  5122
    <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
  5123
</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
  5124
  </xsl:template>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5125
  <declarations:keypad/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5126
  <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
  5127
    <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
  5128
</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
  5129
    <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
  5130
    <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
  5131
    <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
  5132
</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
  5133
    <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
  5134
</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
  5135
    <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
  5136
</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
  5137
    <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
  5138
</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
  5139
    <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
  5140
      <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
  5141
      <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
  5142
        <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
  5143
        <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
  5144
        <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
  5145
        <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
  5146
        <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
  5147
        <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
  5148
        <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
  5149
        <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
  5150
        <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
  5151
        <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
  5152
</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
  5153
      </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
  5154
    </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
  5155
    <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
  5156
</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
  5157
    <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
  5158
</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
  5159
  </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
  5160
  <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
  5161
    <xsl:text>class KeypadWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5162
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5163
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5164
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5165
    <xsl:text>     on_key_click(symbols) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5166
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5167
    <xsl:text>         var syms = symbols.split(" ");
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5168
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5169
    <xsl:text>         this.shift |= this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5170
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5171
    <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
  5172
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5173
    <xsl:text>         this.shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5174
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5175
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5176
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5177
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5178
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5179
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5180
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5181
    <xsl:text>     on_Esc_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5182
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5183
    <xsl:text>         end_modal.call(this);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5184
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5185
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5186
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5187
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5188
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5189
    <xsl:text>     on_Enter_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5190
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5191
    <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
  5192
</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
  5193
    <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
  5194
</xsl:text>
ed43facc7137 SVGHMI: Fix keypad : non-number input was always considered invalid because of missing type checking.
Edouard Tisserant
parents: 3041
diff changeset
  5195
    <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
  5196
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5197
    <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
  5198
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5199
    <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
  5200
</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
  5201
    <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
  5202
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5203
    <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
  5204
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5205
    <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
  5206
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5207
    <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
  5208
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5209
    <xsl:text>         }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5210
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5211
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5212
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5213
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5214
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5215
    <xsl:text>     on_BackSpace_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5216
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5217
    <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
  5218
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5219
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5220
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5221
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5222
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5223
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5224
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5225
    <xsl:text>     on_Sign_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5226
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5227
    <xsl:text>         if(this.editstr[0] == "-")
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5228
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5229
    <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
  5230
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5231
    <xsl:text>         else
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5232
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5233
    <xsl:text>             this.editstr = "-" + this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5234
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5235
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5236
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5237
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5238
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5239
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5240
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5241
    <xsl:text>     on_NumDot_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5242
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5243
    <xsl:text>         if(this.editstr.indexOf(".") == "-1"){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5244
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5245
    <xsl:text>             this.editstr += ".";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5246
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5247
    <xsl:text>             this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5248
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5249
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5250
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5251
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5252
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5253
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5254
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5255
    <xsl:text>     on_Space_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5256
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5257
    <xsl:text>         this.editstr += " ";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5258
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5259
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5260
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5261
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5262
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5263
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5264
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5265
    <xsl:text>     caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5266
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5267
    <xsl:text>     _caps = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5268
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5269
    <xsl:text>     on_CapsLock_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5270
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5271
    <xsl:text>         this.caps = !this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5272
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5273
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5274
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5275
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5276
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5277
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5278
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5279
    <xsl:text>     shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5280
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5281
    <xsl:text>     _shift = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5282
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5283
    <xsl:text>     on_Shift_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5284
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5285
    <xsl:text>         this.shift = !this.shift;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5286
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5287
    <xsl:text>         this.caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5288
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5289
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5290
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5291
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5292
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5293
    <xsl:text>     editstr = "";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5294
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5295
    <xsl:text>     _editstr = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5296
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5297
    <xsl:text>     result_callback_obj = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5298
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5299
    <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
  5300
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5301
    <xsl:text>         show_modal.call(this,size);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5302
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5303
    <xsl:text>         this.editstr = String(initial);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5304
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5305
    <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
  5306
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5307
    <xsl:text>         this.Info_elt.textContent = info;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5308
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5309
    <xsl:text>         this.shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5310
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5311
    <xsl:text>         this.caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5312
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5313
    <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
  5314
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5315
    <xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5316
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5317
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5318
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5319
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5320
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5321
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5322
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5323
    <xsl:text>     update() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5324
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5325
    <xsl:text>         if(this.editstr != this._editstr){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5326
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5327
    <xsl:text>             this._editstr = this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5328
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5329
    <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
  5330
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5331
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5332
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  5333
    <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
  5334
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5335
    <xsl:text>             this._shift = this.shift;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5336
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  5337
    <xsl:text>             (this.shift?this.activate_activable:this.inactivate_activable)(this.Shift_sub);
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>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  5341
    <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
  5342
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5343
    <xsl:text>             this._caps = this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5344
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  5345
    <xsl:text>             (this.caps?this.activate_activable:this.inactivate_activable)(this.CapsLock_sub);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5346
</xsl:text>
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>
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>
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>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5353
  </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
  5354
  <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
  5355
    <xsl:param name="hmi_element"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5356
    <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
  5357
      <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
  5358
      <xsl:with-param name="labels">
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5359
        <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
  5360
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5361
    </xsl:call-template>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5362
    <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
  5363
      <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
  5364
      <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
  5365
        <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
  5366
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5367
      <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
  5368
    </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
  5369
    <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
  5370
      <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
  5371
      <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
  5372
        <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
  5373
      </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
  5374
      <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
  5375
      <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
  5376
    </xsl:call-template>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  5377
    <xsl:text>    init: function() {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  5378
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5379
    <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
  5380
      <xsl:text>        id("</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5381
      <xsl:value-of select="@id"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5382
      <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
  5383
      <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
  5384
      <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
  5385
      <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
  5386
      <xsl:text>')");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5387
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5388
    </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
  5389
    <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
  5390
      <xsl:text>        if(this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5391
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5392
      <xsl:text>_elt)
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5393
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5394
      <xsl:text>            this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5395
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5396
      <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
  5397
      <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
  5398
      <xsl:text>'].on_</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5399
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5400
      <xsl:text>_click()");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5401
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5402
    </xsl:for-each>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5403
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5404
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5405
    <xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5406
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5407
    <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
  5408
    <xsl:text>    coordinates: [</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5409
    <xsl:value-of select="$g/@x"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5410
    <xsl:text>, </xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5411
    <xsl:value-of select="$g/@y"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5412
    <xsl:text>],
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  5413
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5414
  </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
  5415
  <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
  5416
    <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
  5417
    <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
  5418
</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
  5419
    <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
  5420
      <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
  5421
      <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
  5422
      <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
  5423
      <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
  5424
      <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
  5425
</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
  5426
    </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
  5427
    <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
  5428
</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
  5429
  </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
  5430
  <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
  5431
    <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
  5432
    <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
  5433
</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
  5434
    <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
  5435
      <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
  5436
      <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
  5437
      <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
  5438
      <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
  5439
      <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
  5440
      <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
  5441
</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
  5442
    </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
  5443
    <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
  5444
</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
  5445
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5446
  <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
  5447
    <xsl:text>class MeterWidget extends Widget{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5448
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5449
    <xsl:text>    frequency = 10;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5450
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5451
    <xsl:text>    origin = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5452
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5453
    <xsl:text>    range = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5454
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5455
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5456
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5457
    <xsl:text>    dispatch(value) {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5458
</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
  5459
    <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
  5460
</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
  5461
    <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
  5462
</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
  5463
    <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
  5464
</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
  5465
    <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
  5466
</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
  5467
    <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
  5468
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5469
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5470
</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
  5471
    <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
  5472
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5473
    <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
  5474
</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
  5475
    <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
  5476
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5477
    <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
  5478
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5479
    <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
  5480
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5481
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5482
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5483
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5484
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5485
    <xsl:text>    init() {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5486
</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
  5487
    <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
  5488
</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
  5489
    <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
  5490
</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
  5491
    <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
  5492
</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
  5493
    <xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5494
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5495
    <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
  5496
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5497
    <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
  5498
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5499
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5500
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5501
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5502
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5503
    <xsl:text>}
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5504
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5505
  </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
  5506
  <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
  5507
    <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
  5508
    <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
  5509
      <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
  5510
      <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
  5511
        <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
  5512
      </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
  5513
    </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
  5514
    <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
  5515
      <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
  5516
      <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
  5517
        <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
  5518
      </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
  5519
      <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
  5520
    </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
  5521
  </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
  5522
  <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
  5523
    <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
  5524
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5525
    <xsl:text>    frequency = 5;
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5526
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5527
    <xsl:text>    state = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5528
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5529
    <xsl:text>    dispatch(value) {
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5530
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5531
    <xsl:text>        this.state = value;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5532
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5533
    <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
  5534
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5535
    <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
  5536
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5537
    <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
  5538
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5539
    <xsl:text>            } else {
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5540
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5541
    <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
  5542
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5543
    <xsl:text>            }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5544
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5545
    <xsl:text>        }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5546
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5547
    <xsl:text>    }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5548
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5549
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5550
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5551
    <xsl:text>    on_click(evt) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5552
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5553
    <xsl:text>        //get current selected value
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5554
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5555
    <xsl:text>        let next_ind;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5556
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5557
    <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
  5558
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5559
    <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
  5560
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5561
    <xsl:text>               next_ind = next_ind + 1;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5562
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5563
    <xsl:text>               break;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5564
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5565
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5566
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5567
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5568
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5569
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5570
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5571
    <xsl:text>        //get next selected value
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5572
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5573
    <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
  5574
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5575
    <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
  5576
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5577
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5578
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5579
    <xsl:text>        else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5580
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5581
    <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
  5582
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5583
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5584
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5585
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5586
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5587
    <xsl:text>        //post value to plc
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5588
</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
  5589
    <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
  5590
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5591
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5592
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5593
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5594
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5595
    <xsl:text>    init() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5596
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5597
    <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
  5598
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5599
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5600
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5601
    <xsl:text>}
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5602
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  5603
  </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
  5604
  <xsl:template mode="widget_defs" match="widget[@type='MultiState']">
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5605
    <xsl:param name="hmi_element"/>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5606
    <xsl:text>    choices: [
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5607
</xsl:text>
2907
1695122a5e16 SVGHMI: HMI:Switch now accepts boolean values 'true' and 'false'
Edouard Tisserant
parents: 2906
diff changeset
  5608
    <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
  5609
    <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
  5610
      <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
  5611
      <xsl:text>        {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5612
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5613
      <xsl:text>            elt:id("</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5614
      <xsl:value-of select="@id"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5615
      <xsl:text>"),
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5616
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5617
      <xsl:text>            style:"</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5618
      <xsl:value-of select="@style"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5619
      <xsl:text>",
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5620
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5621
      <xsl:text>            value:</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5622
      <xsl:value-of select="$literal"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5623
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5624
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5625
      <xsl:text>        }</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5626
      <xsl:if test="position()!=last()">
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5627
        <xsl:text>,</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5628
      </xsl:if>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5629
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5630
</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  5631
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5632
    <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
  5633
</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
  5634
  </xsl:template>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5635
  <xsl:template mode="widget_class" match="widget[@type='ScrollBar']">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5636
    <xsl:text>class ScrollBarWidget extends Widget{
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5637
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5638
    <xsl:text>    frequency = 10;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5639
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5640
    <xsl:text>    position = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5641
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5642
    <xsl:text>    range = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5643
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5644
    <xsl:text>    size = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5645
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5646
    <xsl:text>    mincursize = 0.1;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5647
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5648
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5649
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5650
    <xsl:text>    dispatch(value,oldval, index) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5651
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5652
    <xsl:text>        switch(index) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5653
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5654
    <xsl:text>            case 0:
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5655
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5656
    <xsl:text>                this.position = value;
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5657
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5658
    <xsl:text>                break;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5659
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5660
    <xsl:text>            case 1:
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5661
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5662
    <xsl:text>                this.range = Math.max(1,value);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5663
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5664
    <xsl:text>                break;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5665
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5666
    <xsl:text>            case 2:
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5667
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5668
    <xsl:text>                this.size = value;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5669
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5670
    <xsl:text>                break;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5671
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5672
    <xsl:text>        }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5673
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5674
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5675
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5676
    <xsl:text>        this.request_animate();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5677
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5678
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5679
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5680
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5681
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5682
    <xsl:text>    get_ratios() {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5683
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5684
    <xsl:text>        let range = this.range;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5685
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5686
    <xsl:text>        let size = Math.max(this.range * this.mincursize, Math.min(this.size, range));
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5687
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5688
    <xsl:text>        let maxh = this.range_elt.height.baseVal.value;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5689
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5690
    <xsl:text>        let pixels = (range - size) * maxh;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5691
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5692
    <xsl:text>        let units = range*range;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5693
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5694
    <xsl:text>        return [size, maxh, range, pixels, units];
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5695
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5696
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5697
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5698
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5699
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5700
    <xsl:text>    animate(){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5701
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5702
    <xsl:text>        if(this.position == undefined || this.range == undefined || this.size == undefined)
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5703
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5704
    <xsl:text>            return;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5705
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5706
    <xsl:text>        let [size, maxh, range, pixels, units] = this.get_ratios();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5707
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5708
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5709
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5710
    <xsl:text>        let new_y = this.range_elt.y.baseVal.value + Math.round(Math.min(this.position,range) * pixels / units);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5711
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5712
    <xsl:text>        let new_height = Math.round(maxh * size/range);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5713
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5714
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5715
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5716
    <xsl:text>        this.cursor_elt.y.baseVal.value = new_y;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5717
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5718
    <xsl:text>        this.cursor_elt.height.baseVal.value = new_height;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5719
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5720
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5721
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5722
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5723
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5724
    <xsl:text>    init_mandatory() {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5725
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5726
    <xsl:text>        this.cursor_elt.onpointerdown = () =&gt; this.on_cursor_down();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5727
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5728
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5729
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5730
    <xsl:text>        this.bound_drag = this.drag.bind(this);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5731
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5732
    <xsl:text>        this.bound_drop = this.drop.bind(this);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5733
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5734
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5735
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5736
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5737
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5738
    <xsl:text>    apply_position(position){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5739
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5740
    <xsl:text>        this.position = Math.round(Math.max(Math.min(position, this.range), 0));
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5741
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5742
    <xsl:text>        this.apply_hmi_value(0, this.position);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5743
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5744
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5745
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5746
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5747
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5748
    <xsl:text>    on_page_click(is_up){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5749
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5750
    <xsl:text>        this.apply_position(is_up ? this.position-this.size
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5751
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5752
    <xsl:text>                                  : this.position+this.size);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5753
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5754
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5755
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5756
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5757
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5758
    <xsl:text>    on_cursor_down(e){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5759
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5760
    <xsl:text>        // get scrollbar -&gt; root transform
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5761
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5762
    <xsl:text>        let ctm = this.range_elt.getCTM();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5763
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5764
    <xsl:text>        // relative motion -&gt; discard translation
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5765
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5766
    <xsl:text>        ctm.e = 0;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5767
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5768
    <xsl:text>        ctm.f = 0;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5769
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5770
    <xsl:text>        // root -&gt; scrollbar transform
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5771
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5772
    <xsl:text>        this.invctm = ctm.inverse();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5773
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5774
    <xsl:text>        svg_root.addEventListener("pointerup", this.bound_drop, true);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5775
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5776
    <xsl:text>        svg_root.addEventListener("pointermove", this.bound_drag, true);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5777
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5778
    <xsl:text>        this.dragpos = this.position;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5779
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5780
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5781
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5782
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5783
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5784
    <xsl:text>    drop(e) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5785
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5786
    <xsl:text>        svg_root.removeEventListener("pointerup", this.bound_drop, true);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5787
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5788
    <xsl:text>        svg_root.removeEventListener("pointermove", this.bound_drag, true);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5789
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5790
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5791
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5792
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5793
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5794
    <xsl:text>    drag(e) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5795
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5796
    <xsl:text>        let [size, maxh, range, pixels, units] = this.get_ratios();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5797
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5798
    <xsl:text>        if(pixels == 0) return;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5799
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5800
    <xsl:text>        let point = new DOMPoint(e.movementX, e.movementY);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5801
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5802
    <xsl:text>        let movement = point.matrixTransform(this.invctm).y;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5803
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5804
    <xsl:text>        this.dragpos += movement * units / pixels;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5805
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  5806
    <xsl:text>        this.apply_position(this.dragpos);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5807
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5808
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5809
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5810
    <xsl:text>}
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5811
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5812
  </xsl:template>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5813
  <xsl:template mode="widget_defs" match="widget[@type='ScrollBar']">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5814
    <xsl:param name="hmi_element"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5815
    <xsl:call-template name="defs_by_labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5816
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5817
      <xsl:with-param name="labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5818
        <xsl:text>cursor range</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5819
      </xsl:with-param>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5820
    </xsl:call-template>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5821
    <xsl:variable name="pagebuttons">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5822
      <xsl:call-template name="defs_by_labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5823
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5824
        <xsl:with-param name="labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5825
          <xsl:text>pageup pagedown</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5826
        </xsl:with-param>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5827
        <xsl:with-param name="mandatory" select="'no'"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5828
      </xsl:call-template>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5829
    </xsl:variable>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5830
    <xsl:variable name="have_pagebuttons" select="string-length($pagebuttons)&gt;0"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5831
    <xsl:value-of select="$pagebuttons"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5832
    <xsl:text>    init: function() {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5833
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5834
    <xsl:text>        this.init_mandatory();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5835
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5836
    <xsl:if test="$have_pagebuttons">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5837
      <xsl:text>        this.pageup_elt.onclick = () =&gt; this.on_page_click(true);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5838
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5839
      <xsl:text>        this.pagedown_elt.onclick = () =&gt; this.on_page_click(false);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5840
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5841
    </xsl:if>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5842
    <xsl:text>    },
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5843
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  5844
  </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
  5845
  <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
  5846
    <xsl:text>class SliderWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5847
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5848
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5849
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5850
    <xsl:text>    range = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5851
</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
  5852
    <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
  5853
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5854
    <xsl:text>    scroll_size = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5855
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5856
    <xsl:text>    scroll_range = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5857
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5858
    <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
  5859
</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
  5860
    <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
  5861
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5862
    <xsl:text>    fi = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5863
</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
  5864
    <xsl:text>    curr_value = 0;
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5865
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5866
    <xsl:text>    drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5867
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5868
    <xsl:text>    enTimer = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5869
</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
  5870
    <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
  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>    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
  5873
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5874
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5875
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5876
    <xsl:text>    dispatch(value,oldval, index) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5877
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5878
    <xsl:text>        if (index == 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5879
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5880
    <xsl:text>            let [min,max,start,totallength] = this.range;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5881
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5882
    <xsl:text>            //save current value inside widget
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5883
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5884
    <xsl:text>            this.curr_value = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5885
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5886
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5887
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5888
    <xsl:text>            //check if in range
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5889
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5890
    <xsl:text>            if (this.curr_value &gt; max){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5891
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5892
    <xsl:text>                this.curr_value = max;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5893
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5894
    <xsl:text>                this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5895
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5896
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5897
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5898
    <xsl:text>            else if (this.curr_value &lt; min){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5899
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5900
    <xsl:text>                this.curr_value = min;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5901
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5902
    <xsl:text>                this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5903
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5904
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5905
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5906
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5907
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5908
    <xsl:text>            if(this.value_elt)
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5909
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5910
    <xsl:text>                this.value_elt.textContent = String(value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5911
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5912
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5913
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5914
    <xsl:text>        else if(index == 1){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5915
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5916
    <xsl:text>            this.scroll_range = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5917
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5918
    <xsl:text>            this.set_scroll();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5919
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5920
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5921
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5922
    <xsl:text>        else if(index == 2){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5923
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5924
    <xsl:text>            this.scroll_visible = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5925
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5926
    <xsl:text>            this.set_scroll();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5927
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5928
    <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
  5929
</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
  5930
    <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
  5931
</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
  5932
    <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
  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>        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
  5935
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5936
    <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
  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>        }
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5939
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5940
    <xsl:text>    }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5941
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5942
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5943
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5944
    <xsl:text>    set_scroll(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5945
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5946
    <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
  5947
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5948
    <xsl:text>        if(this.scroll_range &gt; this.scroll_visible){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5949
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5950
    <xsl:text>            this.scroll_size = this.scroll_range - this.scroll_visible;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5951
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5952
    <xsl:text>            this.range[0] = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5953
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5954
    <xsl:text>            this.range[1] = this.scroll_size;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5955
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5956
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5957
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5958
    <xsl:text>        else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5959
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5960
    <xsl:text>            this.scroll_size = 1;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5961
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5962
    <xsl:text>            this.range[0] = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5963
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5964
    <xsl:text>            this.range[1] = 1;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5965
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5966
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5967
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5968
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5969
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5970
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5971
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  5972
    <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
  5973
</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
  5974
    <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
  5975
</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
  5976
    <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
  5977
</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
  5978
    <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
  5979
</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
  5980
    <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
  5981
</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
  5982
    <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
  5983
</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
  5984
    <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
  5985
</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
  5986
    <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
  5987
</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
  5988
    <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
  5989
</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
  5990
    <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
  5991
</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
  5992
    <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
  5993
</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
  5994
    <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
  5995
</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
  5996
    <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
  5997
</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
  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>
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>
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>            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
  6003
</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
  6004
    <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
  6005
</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
  6006
    <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
  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>                //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
  6009
</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
  6010
    <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
  6011
</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
  6012
    <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
  6013
</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
  6014
    <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
  6015
</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
  6016
    <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
  6017
</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
  6018
    <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
  6019
</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
  6020
    <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
  6021
</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
  6022
    <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
  6023
</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
  6024
    <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
  6025
</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
  6026
    <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
  6027
</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
  6028
    <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
  6029
</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
  6030
    <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
  6031
</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
  6032
    <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
  6033
</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
  6034
    <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
  6035
</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
  6036
    <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
  6037
</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
  6038
    <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
  6039
</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
  6040
    <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
  6041
</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
  6042
    <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
  6043
</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
  6044
    <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
  6045
</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
  6046
    <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
  6047
</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
  6048
    <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
  6049
</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
  6050
    <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
  6051
</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
  6052
    <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
  6053
</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
  6054
    <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
  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>                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
  6057
</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
  6058
    <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
  6059
</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
  6060
    <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
  6061
</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
  6062
    <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
  6063
</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
  6064
    <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
  6065
</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
  6066
    <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
  6067
</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
  6068
    <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
  6069
</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
  6070
    <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
  6071
</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
  6072
    <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
  6073
</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
  6074
    <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
  6075
</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
  6076
    <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
  6077
</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
  6078
    <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
  6079
</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
  6080
    <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
  6081
</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
  6082
    <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
  6083
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6084
    <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
  6085
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6086
    <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
  6087
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6088
    <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
  6089
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6090
    <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
  6091
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6092
    <xsl:text>                }else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6093
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6094
    <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
  6095
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6096
    <xsl:text>                }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6097
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6098
    <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
  6099
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6100
    <xsl:text>            }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6101
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6102
    <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
  6103
</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
  6104
    <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
  6105
</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
  6106
    <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
  6107
</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
  6108
    <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
  6109
</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
  6110
    <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
  6111
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6112
    <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
  6113
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6114
    <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
  6115
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6116
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6117
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6118
    <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
  6119
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6120
    <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
  6121
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6122
    <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
  6123
</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
  6124
    <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
  6125
</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
  6126
    <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
  6127
</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
  6128
    <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
  6129
</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
  6130
    <xsl:text>            this.drag = false;
3015
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>
3058
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  6134
    <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
  6135
</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
  6136
    <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
  6137
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6138
    <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
  6139
</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
  6140
    <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
  6141
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6142
    <xsl:text>    }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6143
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6144
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6145
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6146
    <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
  6147
</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
  6148
    <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
  6149
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6150
    <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
  6151
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6152
    <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
  6153
</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
  6154
    <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
  6155
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6156
    <xsl:text>            //reset timer
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6157
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6158
    <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
  6159
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6160
    <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
  6161
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6162
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6163
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6164
    <xsl:text>    }
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: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
  6168
    <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
  6169
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6170
    <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
  6171
</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
  6172
    <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
  6173
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6174
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6175
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6176
    <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
  6177
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6178
    <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
  6179
</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
  6180
    <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
  6181
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6182
    <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
  6183
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6184
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6185
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6186
    <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
  6187
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6188
    <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
  6189
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6190
    <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
  6191
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6192
    <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
  6193
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6194
    <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
  6195
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6196
    <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
  6197
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6198
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6199
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6200
    <xsl:text>        else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6201
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6202
    <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
  6203
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6204
    <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
  6205
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6206
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6207
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6208
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6209
</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
  6210
    <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
  6211
</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
  6212
    <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
  6213
</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
  6214
    <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
  6215
</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
  6216
    <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
  6217
</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
  6218
    <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
  6219
</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
  6220
    <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
  6221
</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
  6222
    <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
  6223
</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
  6224
    <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
  6225
</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
  6226
    <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
  6227
</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
  6228
    <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
  6229
</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
  6230
    <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
  6231
</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
  6232
    <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
  6233
</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
  6234
    <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
  6235
</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
  6236
    <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
  6237
</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
  6238
    <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
  6239
</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
  6240
    <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
  6241
</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
  6242
    <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
  6243
</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
  6244
    <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
  6245
</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
  6246
    <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
  6247
</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
  6248
    <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
  6249
</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
  6250
    <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
  6251
</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
  6252
    <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
  6253
</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
  6254
    <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
  6255
</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
  6256
    <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
  6257
</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
  6258
    <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
  6259
</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
  6260
    <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
  6261
</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
  6262
    <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
  6263
</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
  6264
    <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
  6265
</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
  6266
    <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
  6267
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6268
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6269
</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
  6270
    <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
  6271
</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
  6272
    <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
  6273
</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
  6274
    <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
  6275
</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
  6276
    <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
  6277
</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
  6278
    <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
  6279
</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
  6280
    <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
  6281
</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
  6282
    <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
  6283
</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
  6284
    <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
  6285
</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
  6286
    <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
  6287
</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
  6288
    <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
  6289
</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
  6290
    <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
  6291
</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
  6292
    <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
  6293
</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
  6294
    <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
  6295
</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
  6296
    <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
  6297
</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
  6298
    <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
  6299
</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
  6300
    <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
  6301
</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
  6302
    <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
  6303
</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
  6304
    <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
  6305
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6306
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6307
</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
  6308
    <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
  6309
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6310
    <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
  6311
</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
  6312
    <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
  6313
</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
  6314
    <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
  6315
</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
  6316
    <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
  6317
</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
  6318
    <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
  6319
</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
  6320
    <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
  6321
</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
  6322
    <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
  6323
</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
  6324
    <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
  6325
</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
  6326
    <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
  6327
</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
  6328
    <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
  6329
</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
  6330
    <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
  6331
</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
  6332
    <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
  6333
</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
  6334
    <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
  6335
</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
  6336
    <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
  6337
</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
  6338
    <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
  6339
</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
  6340
    <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
  6341
</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
  6342
    <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
  6343
</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
  6344
    <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
  6345
</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
  6346
    <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
  6347
</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
  6348
    <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
  6349
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6350
    <xsl:text>        else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6351
</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
  6352
    <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
  6353
</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
  6354
    <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
  6355
</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
  6356
    <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
  6357
</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
  6358
    <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
  6359
</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
  6360
    <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
  6361
</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
  6362
    <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
  6363
</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
  6364
    <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
  6365
</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
  6366
    <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
  6367
</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
  6368
    <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
  6369
</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
  6370
    <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
  6371
</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
  6372
    <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
  6373
</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
  6374
    <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
  6375
</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
  6376
    <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
  6377
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6378
    <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
  6379
</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
  6380
    <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
  6381
</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
  6382
    <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
  6383
</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
  6384
    <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
  6385
</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
  6386
    <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
  6387
</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
  6388
    <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
  6389
</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
  6390
    <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
  6391
</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
  6392
    <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
  6393
</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
  6394
    <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
  6395
</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
  6396
    <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
  6397
</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
  6398
    <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
  6399
</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
  6400
    <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
  6401
</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
  6402
    <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
  6403
</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
  6404
    <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
  6405
</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
  6406
    <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
  6407
</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
  6408
    <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
  6409
</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
  6410
    <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
  6411
</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
  6412
    <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
  6413
</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
  6414
    <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
  6415
</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
  6416
    <xsl:text>        }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6417
</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
  6418
    <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
  6419
</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
  6420
    <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
  6421
</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
  6422
    <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
  6423
</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
  6424
    <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
  6425
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6426
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6427
</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
  6428
    <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
  6429
</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
  6430
    <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
  6431
</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
  6432
    <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
  6433
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6434
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6435
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6436
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6437
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6438
    <xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6439
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6440
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6441
</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
  6442
    <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
  6443
</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
  6444
    <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
  6445
</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
  6446
    <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
  6447
</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
  6448
    <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
  6449
</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
  6450
    <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
  6451
</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
  6452
    <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
  6453
</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
  6454
    <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
  6455
</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
  6456
    <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
  6457
</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
  6458
    <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
  6459
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6460
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6461
</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
  6462
    <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
  6463
</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
  6464
    <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
  6465
</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
  6466
    <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
  6467
</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
  6468
    <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
  6469
</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
  6470
    <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
  6471
</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
  6472
    <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
  6473
</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
  6474
    <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
  6475
</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
  6476
    <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
  6477
</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
  6478
    <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
  6479
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6480
    <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
  6481
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6482
    <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
  6483
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6484
    <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
  6485
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6486
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6487
</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
  6488
    <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
  6489
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6490
    <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
  6491
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6492
    <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
  6493
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6494
    <xsl:text>        //touch recognised as page drag without next command
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6495
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6496
    <xsl:text>        document.body.addEventListener("touchstart", function(e){}, false);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6497
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6498
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6499
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6500
    <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
  6501
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6502
    <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
  6503
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6504
    <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
  6505
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6506
    <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
  6507
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  6508
    <xsl:text>        }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6509
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6510
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6511
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6512
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6513
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6514
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6515
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6516
  </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
  6517
  <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
  6518
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6519
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6520
      <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
  6521
      <xsl:with-param name="labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6522
        <xsl:text>handle range</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6523
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6524
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6525
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6526
      <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
  6527
      <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
  6528
        <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
  6529
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6530
      <xsl:with-param name="mandatory" select="'no'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6531
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6532
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6533
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6534
  </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
  6535
  <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
  6536
    <xsl:text>class SwitchWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6537
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6538
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6539
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6540
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6541
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6542
    <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
  6543
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6544
    <xsl:text>            if(value != choice.value){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6545
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6546
    <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
  6547
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6548
    <xsl:text>            } else {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6549
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6550
    <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
  6551
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6552
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6553
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6554
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6555
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6556
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6557
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6558
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6559
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6560
  </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
  6561
  <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
  6562
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6563
    <xsl:text>    choices: [
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6564
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6565
    <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
  6566
    <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
  6567
      <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
  6568
      <xsl:text>        {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6569
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6570
      <xsl:text>            elt:id("</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6571
      <xsl:value-of select="@id"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6572
      <xsl:text>"),
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6573
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6574
      <xsl:text>            style:"</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6575
      <xsl:value-of select="@style"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6576
      <xsl:text>",
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6577
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6578
      <xsl:text>            value:</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6579
      <xsl:value-of select="$literal"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6580
      <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6581
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6582
      <xsl:text>        }</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6583
      <xsl:if test="position()!=last()">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6584
        <xsl:text>,</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6585
      </xsl:if>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6586
      <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6587
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6588
    </xsl:for-each>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6589
    <xsl:text>    ],
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6590
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6591
  </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
  6592
  <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
  6593
    <xsl:text>class ToggleButtonWidget extends Widget{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6594
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6595
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6596
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6597
    <xsl:text>    state = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6598
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6599
    <xsl:text>    active_style = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6600
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6601
    <xsl:text>    inactive_style = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6602
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6603
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6604
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6605
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6606
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6607
    <xsl:text>        this.state = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6608
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6609
    <xsl:text>        //redraw toggle button
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6610
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6611
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6612
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6613
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6614
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6615
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6616
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6617
    <xsl:text>    on_click(evt) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6618
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6619
    <xsl:text>        //toggle state and apply
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6620
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6621
    <xsl:text>        if (this.state) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6622
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6623
    <xsl:text>            this.state = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6624
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6625
    <xsl:text>        } else {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6626
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6627
    <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
  6628
</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
  6629
    <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
  6630
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6631
    <xsl:text>        this.apply_hmi_value(0, this.state);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6632
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6633
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6634
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6635
    <xsl:text>        //redraw toggle button
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6636
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6637
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6638
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6639
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6640
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6641
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6642
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6643
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6644
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6645
    <xsl:text>       // redraw toggle button on screen refresh
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6646
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6647
    <xsl:text>       if (this.state) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6648
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6649
    <xsl:text>           this.active_elt.setAttribute("style", this.active_style);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6650
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6651
    <xsl:text>           this.inactive_elt.setAttribute("style", "display:none");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6652
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6653
    <xsl:text>       } else {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6654
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6655
    <xsl:text>           this.inactive_elt.setAttribute("style", this.inactive_style);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6656
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6657
    <xsl:text>           this.active_elt.setAttribute("style", "display:none");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6658
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6659
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6660
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6661
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6662
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6663
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6664
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6665
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6666
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6667
    <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
  6668
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6669
    <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
  6670
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6671
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6672
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6673
    <xsl:text>        if (this.active_style &amp;&amp; this.inactive_style) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6674
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6675
    <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
  6676
</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
  6677
    <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
  6678
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6679
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6680
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6681
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6682
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6683
    <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
  6684
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6685
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6686
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6687
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6688
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6689
  </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
  6690
  <xsl:template mode="widget_defs" match="widget[@type='ToggleButton']">
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6691
    <xsl:param name="hmi_element"/>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6692
    <xsl:call-template name="defs_by_labels">
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6693
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6694
      <xsl:with-param name="labels">
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6695
        <xsl:text>active inactive</xsl:text>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6696
      </xsl:with-param>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  6697
      <xsl:with-param name="mandatory" select="'no'"/>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6698
    </xsl:call-template>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6699
    <xsl:text>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6700
</xsl:text>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  6701
  </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
  6702
  <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
  6703
    <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
  6704
      <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
  6705
    </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
  6706
    <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
  6707
      <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
  6708
    </xsl:comment>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  6709
    <html xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml">
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
  6710
      <head/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  6711
      <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
  6712
        <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
  6713
        <script>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6714
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6715
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6716
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6717
// Early independent declarations 
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6718
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6719
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6720
</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
  6721
          <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
  6722
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6723
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6724
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6725
// 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
  6726
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6727
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6728
</xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6729
          <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
  6730
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6731
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6732
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6733
// 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
  6734
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6735
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6736
</xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6737
          <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
  6738
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6739
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6740
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6741
// 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
  6742
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6743
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  6744
</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
  6745
          <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
  6746
          <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
  6747
</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
  6748
          <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
  6749
</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
  6750
          <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
  6751
</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
  6752
          <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
  6753
</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
  6754
          <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
  6755
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  6756
          <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
  6757
</xsl:text>
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>
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>    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
  6761
</xsl:text>
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>    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
  6763
</xsl:text>
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>
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>    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
  6767
</xsl:text>
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>        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
  6769
</xsl:text>
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>            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
  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>
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>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6778
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6779
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6780
          <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
  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>    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
  6783
</xsl:text>
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>        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
  6785
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6786
          <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
  6787
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6788
          <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
  6789
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6790
          <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
  6791
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6792
          <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
  6793
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6794
          <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
  6795
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6796
          <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
  6797
</xsl:text>
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>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6800
          <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6801
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6802
          <xsl:text>    });
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>
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>// 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
  6809
</xsl:text>
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>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
  6811
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6812
          <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
  6813
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6814
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6815
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6816
          <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
  6817
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6818
          <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
  6819
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6820
          <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
  6821
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6822
          <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
  6823
</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
  6824
          <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
  6825
</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
  6826
          <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
  6827
</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
  6828
          <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
  6829
</xsl:text>
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>        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
  6831
</xsl:text>
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>            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
  6833
</xsl:text>
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>                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
  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>                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
  6837
</xsl:text>
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>                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
  6839
</xsl:text>
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>            )), 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
  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>
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>
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>// 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
  6849
</xsl:text>
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>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
  6851
</xsl:text>
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>    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
  6853
</xsl:text>
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>        // 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
  6855
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6856
          <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
  6857
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6858
          <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
  6859
</xsl:text>
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>        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
  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>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6863
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6864
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6865
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6866
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6867
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6868
          <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
  6869
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6870
          <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
  6871
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6872
          <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
  6873
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6874
          <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
  6875
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6876
          <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
  6877
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6878
          <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
  6879
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6880
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6881
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6882
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6883
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6884
          <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
  6885
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6886
          <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
  6887
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6888
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6889
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6890
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6891
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6892
          <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
  6893
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6894
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6895
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6896
          <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
  6897
</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
  6898
          <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
  6899
</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
  6900
          <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
  6901
</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
  6902
          <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
  6903
</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
  6904
          <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
  6905
</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
  6906
          <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
  6907
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6908
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6909
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6910
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6911
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6912
          <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
  6913
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6914
          <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
  6915
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6916
          <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
  6917
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6918
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6919
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6920
          <xsl:text>}
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6921
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6922
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6923
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6924
          <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
  6925
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6926
          <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
  6927
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6928
          <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
  6929
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6930
          <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
  6931
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6932
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6933
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6934
          <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
  6935
</xsl:text>
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>    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
  6937
</xsl:text>
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>    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
  6939
</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
  6940
          <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
  6941
</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
  6942
          <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
  6943
</xsl:text>
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>            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
  6945
</xsl:text>
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>                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
  6947
</xsl:text>
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>            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
  6951
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6952
          <xsl:text>        };
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>
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>        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
  6957
</xsl:text>
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>            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
  6959
</xsl:text>
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>            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
  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>            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
  6963
</xsl:text>
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>            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
  6965
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6966
          <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
  6967
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6968
          <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
  6969
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6970
          <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
  6971
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6972
          <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
  6973
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6974
          <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
  6975
</xsl:text>
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>                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
  6977
</xsl:text>
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>
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>        // 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
  6983
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6984
          <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
  6985
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6986
          <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
  6987
</xsl:text>
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>        // 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
  6989
</xsl:text>
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>        // 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
  6991
</xsl:text>
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>
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>        // 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
  6995
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6996
          <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
  6997
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  6998
          <xsl:text>
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>        // 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
  7001
</xsl:text>
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>        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
  7003
</xsl:text>
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>
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
  7010
          <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
  7011
</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
  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>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
  7015
</xsl:text>
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>    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
  7017
</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
  7018
          <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
  7019
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7020
          <xsl:text>    };
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7021
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7022
          <xsl:text>};
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>
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>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
  7027
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7028
          <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
  7029
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7030
          <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
  7031
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7032
          <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
  7033
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7034
          <xsl:text>    REAL: (number) =&gt; new Float32Array([number]),
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7035
</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
  7036
          <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
  7037
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7038
          <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
  7039
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7040
          <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
  7041
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7042
          <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
  7043
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7044
          <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
  7045
</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
  7046
          <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
  7047
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7048
          <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
  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>
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
  7052
          <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
  7053
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7054
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7055
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7056
          <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
  7057
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7058
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7059
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7060
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7061
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7062
          <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
  7063
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7064
          <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
  7065
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7066
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7067
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7068
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7069
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7070
          <xsl:text>var subscriptions = [];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7071
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7072
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7073
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7074
          <xsl:text>function subscribers(index) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7075
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7076
          <xsl:text>    let entry = subscriptions[index];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7077
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7078
          <xsl:text>    let res;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7079
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7080
          <xsl:text>    if(entry == undefined){
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7081
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7082
          <xsl:text>        res = new Set();
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7083
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7084
          <xsl:text>        subscriptions[index] = [res,0];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7085
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7086
          <xsl:text>    }else{
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7087
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7088
          <xsl:text>        [res, _ign] = entry;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7089
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7090
          <xsl:text>    }
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7091
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7092
          <xsl:text>    return res
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7093
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7094
          <xsl:text>}
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7095
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7096
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7097
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7098
          <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
  7099
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7100
          <xsl:text>    let entry = subscriptions[index];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7101
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7102
          <xsl:text>    if(entry == undefined)
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7103
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7104
          <xsl:text>        return 0;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7105
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7106
          <xsl:text>    let [_ign, period] = entry;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7107
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7108
          <xsl:text>    return period;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7109
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7110
          <xsl:text>}
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7111
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7112
          <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7113
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7114
          <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
  7115
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7116
          <xsl:text>    let entry = subscriptions[index];
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7117
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7118
          <xsl:text>    if(entry == undefined){
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7119
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7120
          <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
  7121
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7122
          <xsl:text>    } else {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7123
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7124
          <xsl:text>        entry[1] = period;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7125
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7126
          <xsl:text>    }
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7127
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7128
          <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
  7129
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7130
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7131
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7132
          <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
  7133
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7134
          <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
  7135
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7136
          <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
  7137
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  7138
          <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
  7139
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7140
          <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
  7141
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7142
          <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
  7143
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7144
          <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
  7145
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7146
          <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
  7147
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7148
          <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
  7149
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7150
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7151
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7152
          <xsl:text>});
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7153
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7154
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7155
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7156
          <xsl:text>function svg_text_to_multiline(elt) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7157
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7158
          <xsl:text>    return(Array.prototype.map.call(elt.children, x=&gt;x.textContent).join("\n")); 
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7159
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7160
          <xsl:text>}
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7161
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7162
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7163
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7164
          <xsl:text>function multiline_to_svg_text(elt, str) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7165
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7166
          <xsl:text>    str.split('\n').map((line,i) =&gt; {elt.children[i].textContent = line;});
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7167
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7168
          <xsl:text>}
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7169
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7170
          <xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7171
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7172
          <xsl:text>function switch_langnum(langnum) {
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7173
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7174
          <xsl:text>    if(langnum == current_lang) {
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7175
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7176
          <xsl:text>        return;
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7177
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7178
          <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7179
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7180
          <xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7181
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7182
          <xsl:text>    for (let translation of translations) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7183
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7184
          <xsl:text>        let [objs, msgs, orig] = translation;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7185
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7186
          <xsl:text>        let msg = langnum == 0 ? orig : msgs[langnum - 1];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7187
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7188
          <xsl:text>        for (let obj of objs) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7189
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7190
          <xsl:text>            multiline_to_svg_text(obj, msg);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7191
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7192
          <xsl:text>            obj.setAttribute("lang",langnum);
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7193
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7194
          <xsl:text>        }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7195
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7196
          <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7197
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7198
          <xsl:text>    current_lang = langnum;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7199
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7200
          <xsl:text>}
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7201
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7202
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7203
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7204
          <xsl:text>// backup original texts
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7205
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7206
          <xsl:text>for (let translation of translations) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7207
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7208
          <xsl:text>    let [objs] = translation;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7209
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7210
          <xsl:text>    translation.push(svg_text_to_multiline(objs[0])); 
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7211
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7212
          <xsl:text>}
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7213
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7214
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7215
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7216
          <xsl:text>var lang_local_index = hmi_local_index("lang");
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7217
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7218
          <xsl:text>subscribers(lang_local_index).add({
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7219
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7220
          <xsl:text>    indexes: [lang_local_index],
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7221
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7222
          <xsl:text>    new_hmi_value: function(index, value, oldval) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7223
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7224
          <xsl:text>        switch_langnum(value);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7225
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7226
          <xsl:text>        switch_page();
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7227
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7228
          <xsl:text>    }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7229
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7230
          <xsl:text>});
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7231
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7232
          <xsl:text>var current_lang = 0;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7233
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7234
          <xsl:text>switch_langnum(cache[lang_local_index]);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7235
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7236
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7237
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7238
          <xsl:text>function update_subscriptions() {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7239
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7240
          <xsl:text>    let delta = [];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7241
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7242
          <xsl:text>    for(let index in subscriptions){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7243
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7244
          <xsl:text>        let widgets = subscribers(index);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7245
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7246
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7247
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7248
          <xsl:text>        // periods are in ms
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7249
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7250
          <xsl:text>        let previous_period = get_subscription_period(index);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7251
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7252
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7253
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7254
          <xsl:text>        // subscribing with a zero period is unsubscribing
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7255
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7256
          <xsl:text>        let new_period = 0;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7257
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7258
          <xsl:text>        if(widgets.size &gt; 0) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7259
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7260
          <xsl:text>            let maxfreq = 0;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7261
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7262
          <xsl:text>            for(let widget of widgets){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7263
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7264
          <xsl:text>                let wf = widget.frequency;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7265
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7266
          <xsl:text>                if(wf != undefined &amp;&amp; maxfreq &lt; wf)
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7267
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7268
          <xsl:text>                    maxfreq = wf;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7269
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7270
          <xsl:text>            }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7271
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7272
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7273
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7274
          <xsl:text>            if(maxfreq != 0)
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7275
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7276
          <xsl:text>                new_period = 1000/maxfreq;
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7277
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7278
          <xsl:text>        }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7279
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7280
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7281
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7282
          <xsl:text>        if(previous_period != new_period) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7283
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7284
          <xsl:text>            set_subscription_period(index, new_period);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7285
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7286
          <xsl:text>            if(index &lt;= last_remote_index){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7287
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7288
          <xsl:text>                delta.push(
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7289
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7290
          <xsl:text>                    new Uint8Array([2]), /* subscribe = 2 */
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7291
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7292
          <xsl:text>                    new Uint32Array([index]),
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7293
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7294
          <xsl:text>                    new Uint16Array([new_period]));
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7295
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7296
          <xsl:text>            }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7297
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7298
          <xsl:text>        }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7299
</xsl:text>
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7300
          <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7301
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7302
          <xsl:text>    send_blob(delta);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7303
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7304
          <xsl:text>};
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7305
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7306
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7307
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7308
          <xsl:text>function send_hmi_value(index, value) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7309
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7310
          <xsl:text>    if(index &gt; last_remote_index){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7311
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7312
          <xsl:text>        updates[index] = value;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7313
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7314
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7315
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7316
          <xsl:text>        if(persistent_indexes.has(index)){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7317
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7318
          <xsl:text>            let varname = persistent_indexes.get(index);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7319
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7320
          <xsl:text>            document.cookie = varname+"="+value+"; max-age=3153600000";
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7321
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7322
          <xsl:text>        }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7323
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7324
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7325
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7326
          <xsl:text>        requestHMIAnimation();
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7327
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7328
          <xsl:text>        return;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7329
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7330
          <xsl:text>    }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7331
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7332
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7333
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7334
          <xsl:text>    let iectype = hmitree_types[index];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7335
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7336
          <xsl:text>    let tobinary = typedarray_types[iectype];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7337
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7338
          <xsl:text>    send_blob([
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7339
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7340
          <xsl:text>        new Uint8Array([0]),  /* setval = 0 */
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7341
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7342
          <xsl:text>        new Uint32Array([index]),
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7343
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7344
          <xsl:text>        tobinary(value)]);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7345
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7346
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7347
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7348
          <xsl:text>    // DON'T DO THAT unless read_iterator in svghmi.c modifies wbuf as well, not only rbuf
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7349
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7350
          <xsl:text>    // cache[index] = value;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7351
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7352
          <xsl:text>};
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7353
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7354
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7355
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7356
          <xsl:text>function apply_hmi_value(index, new_val) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7357
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7358
          <xsl:text>    let old_val = cache[index]
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7359
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7360
          <xsl:text>    if(new_val != undefined &amp;&amp; old_val != new_val)
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7361
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7362
          <xsl:text>        send_hmi_value(index, new_val);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7363
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7364
          <xsl:text>    return new_val;
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7365
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7366
          <xsl:text>}
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7367
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7368
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7369
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7370
          <xsl:text>const quotes = {"'":null, '"':null};
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7371
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7372
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7373
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7374
          <xsl:text>function eval_operation_string(old_val, opstr) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7375
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7376
          <xsl:text>    let op = opstr[0];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7377
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7378
          <xsl:text>    let given_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7379
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7380
          <xsl:text>    if(opstr.length &lt; 2) 
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7381
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7382
          <xsl:text>        return undefined;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7383
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7384
          <xsl:text>    if(opstr[1] in quotes){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7385
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7386
          <xsl:text>        if(opstr.length &lt; 3) 
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7387
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7388
          <xsl:text>            return undefined;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7389
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7390
          <xsl:text>        if(opstr[opstr.length-1] == opstr[1]){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7391
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7392
          <xsl:text>            given_val = opstr.slice(2,opstr.length-1);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7393
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7394
          <xsl:text>        }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7395
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7396
          <xsl:text>    } else {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7397
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7398
          <xsl:text>        given_val = Number(opstr.slice(1));
3128
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7399
</xsl:text>
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7400
          <xsl:text>    }
32a4675af377 SVGHMI: Added HMI:VarInitPersistent to initialize persistent HMI_LOCAL and PAGE_LOCAL variables, stored as cookies in browser.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3124
diff changeset
  7401
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7402
          <xsl:text>    let new_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7403
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7404
          <xsl:text>    switch(op){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7405
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7406
          <xsl:text>      case "=":
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7407
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7408
          <xsl:text>        new_val = given_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7409
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7410
          <xsl:text>        break;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7411
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7412
          <xsl:text>      case "+":
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7413
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7414
          <xsl:text>        new_val = old_val + given_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7415
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7416
          <xsl:text>        break;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7417
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7418
          <xsl:text>      case "-":
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7419
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7420
          <xsl:text>        new_val = old_val - given_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7421
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7422
          <xsl:text>        break;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7423
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7424
          <xsl:text>      case "*":
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7425
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7426
          <xsl:text>        new_val = old_val * given_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7427
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7428
          <xsl:text>        break;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7429
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7430
          <xsl:text>      case "/":
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7431
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7432
          <xsl:text>        new_val = old_val / given_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7433
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7434
          <xsl:text>        break;
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
  7435
</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
  7436
          <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
  7437
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7438
          <xsl:text>    return new_val;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7439
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7440
          <xsl:text>}
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7441
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7442
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7443
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7444
          <xsl:text>var current_visible_page;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7445
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7446
          <xsl:text>var current_subscribed_page;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7447
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7448
          <xsl:text>var current_page_index;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7449
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7450
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7451
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7452
          <xsl:text>function prepare_svg() {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7453
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7454
          <xsl:text>    // prevents context menu from appearing on right click and long touch
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7455
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7456
          <xsl:text>    document.body.addEventListener('contextmenu', e =&gt; {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7457
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7458
          <xsl:text>        e.preventDefault();
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7459
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7460
          <xsl:text>    });
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7461
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7462
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7463
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7464
          <xsl:text>    for(let eltid in detachable_elements){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7465
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7466
          <xsl:text>        let [element,parent] = detachable_elements[eltid];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7467
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7468
          <xsl:text>        parent.removeChild(element);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7469
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7470
          <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
  7471
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7472
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7473
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7474
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7475
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7476
          <xsl:text>function switch_page(page_name, page_index) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7477
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7478
          <xsl:text>    if(current_subscribed_page != current_visible_page){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7479
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7480
          <xsl:text>        /* page switch already going */
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7481
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7482
          <xsl:text>        /* TODO LOG ERROR */
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7483
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7484
          <xsl:text>        return false;
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
  7485
</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
  7486
          <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
  7487
</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
  7488
          <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
  7489
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7490
          <xsl:text>    if(page_name == undefined)
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7491
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7492
          <xsl:text>        page_name = current_subscribed_page;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7493
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7494
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7495
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7496
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7497
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7498
          <xsl:text>    let old_desc = page_desc[current_subscribed_page];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7499
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7500
          <xsl:text>    let new_desc = page_desc[page_name];
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7501
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7502
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7503
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7504
          <xsl:text>    if(new_desc == undefined){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7505
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7506
          <xsl:text>        /* TODO LOG ERROR */
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7507
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7508
          <xsl:text>        return false;
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
  7509
</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
  7510
          <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
  7511
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7512
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7513
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7514
          <xsl:text>    if(page_index == undefined){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7515
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7516
          <xsl:text>        page_index = new_desc.page_index;
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
  7517
</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
  7518
          <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
  7519
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7520
          <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7521
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7522
          <xsl:text>    if(old_desc){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7523
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7524
          <xsl:text>        old_desc.widgets.map(([widget,relativeness])=&gt;widget.unsub());
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
  7525
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7526
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  7527
</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
  7528
          <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
  7529
</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
  7530
          <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
  7531
</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
  7532
          <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
  7533
</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
  7534
          <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
  7535
</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
  7536
          <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
  7537
</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
  7538
          <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
  7539
</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
  7540
          <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
  7541
</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
  7542
          <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
  7543
</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
  7544
          <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
  7545
</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
  7546
          <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
  7547
</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
  7548
          <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
  7549
</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
  7550
          <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
  7551
</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
  7552
          <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
  7553
</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
  7554
          <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
  7555
</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
  7556
          <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
  7557
</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
  7558
          <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
  7559
</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
  7560
          <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
  7561
</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
  7562
          <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
  7563
</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
  7564
          <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
  7565
</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
  7566
          <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
  7567
</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
  7568
          <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
  7569
</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
  7570
          <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
  7571
</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
  7572
          <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
  7573
</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
  7574
          <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
  7575
</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
  7576
          <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
  7577
</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
  7578
          <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
  7579
</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
  7580
          <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
  7581
</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
  7582
          <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
  7583
</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
  7584
          <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
  7585
</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
  7586
          <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
  7587
</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
  7588
          <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
  7589
</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
  7590
          <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
  7591
</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
  7592
          <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
  7593
</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
  7594
          <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
  7595
</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
  7596
          <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
  7597
</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
  7598
          <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
  7599
</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
  7600
          <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
  7601
</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
  7602
          <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
  7603
</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
  7604
          <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
  7605
</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
  7606
          <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
  7607
</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
  7608
          <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
  7609
</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
  7610
          <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
  7611
</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
  7612
          <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
  7613
</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
  7614
          <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
  7615
</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
  7616
          <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
  7617
</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
  7618
          <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
  7619
</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
  7620
          <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
  7621
</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
  7622
          <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
  7623
</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
  7624
          <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
  7625
</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
  7626
          <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
  7627
</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
  7628
          <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
  7629
</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
  7630
          <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
  7631
</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
  7632
          <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
  7633
</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
  7634
          <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
  7635
</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
  7636
          <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
  7637
</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
  7638
          <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
  7639
</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
  7640
          <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
  7641
</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
  7642
          <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
  7643
</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
  7644
          <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
  7645
</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
  7646
          <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
  7647
</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
  7648
          <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
  7649
</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
  7650
          <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
  7651
</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
  7652
          <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
  7653
</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
  7654
          <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
  7655
</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
  7656
          <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
  7657
</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
  7658
          <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
  7659
</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
  7660
          <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
  7661
</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
  7662
          <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
  7663
</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
  7664
          <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
  7665
</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
  7666
          <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
  7667
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7668
          <xsl:text>const localtypes = {"PAGE_LOCAL":null, "HMI_LOCAL":null}
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7669
</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
  7670
          <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
  7671
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7672
          <xsl:text>    if(valuetype in localtypes){
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7673
</xsl:text>
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7674
          <xsl:text>        valuetype = (typeof initial) == "number" ? "HMI_REAL" : "HMI_STRING";
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7675
</xsl:text>
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
  7676
          <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
  7677
</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
  7678
          <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
  7679
</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
  7680
          <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
  7681
</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
  7682
          <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
  7683
</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
  7684
          <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
  7685
</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
  7686
          <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
  7687
</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
  7688
          <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
  7689
</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
  7690
          <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
  7691
</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
  7692
          <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
  7693
</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
  7694
          <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
  7695
</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
  7696
          <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
  7697
</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
  7698
          <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
  7699
</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
  7700
          <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
  7701
</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
  7702
          <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
  7703
</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
  7704
          <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
  7705
</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
  7706
          <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
  7707
</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
  7708
          <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
  7709
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7710
          <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
  7711
</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
  7712
          <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
  7713
</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
  7714
          <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
  7715
</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
  7716
          <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
  7717
</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
  7718
          <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
  7719
</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
  7720
          <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
  7721
</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
  7722
          <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
  7723
</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
  7724
          <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
  7725
</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
  7726
          <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
  7727
</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
  7728
          <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
  7729
</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
  7730
          <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
  7731
</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
  7732
          <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
  7733
</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
  7734
          <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
  7735
</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
  7736
          <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
  7737
</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
  7738
          <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
  7739
</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
  7740
          <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
  7741
</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
  7742
          <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
  7743
</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
  7744
          <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
  7745
</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
  7746
        </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
  7747
      </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
  7748
    </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
  7749
  </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
  7750
</xsl:stylesheet>