svghmi/gen_index_xhtml.xslt
author Edouard Tisserant <edouard.tisserant@gmail.com>
Tue, 13 Sep 2022 16:53:15 +0200
branchwxPython4
changeset 3609 51a3d6f39944
parent 3582 7dcd0de97e6f
child 3615 5c983ead9db0
permissions -rw-r--r--
Merge changes from default branch
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"?>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
     2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:str="http://exslt.org/strings" xmlns:func="http://exslt.org/functions" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:debug="debug" xmlns:preamble="preamble" xmlns:declarations="declarations" xmlns:definitions="definitions" xmlns:epilogue="epilogue" xmlns:cssdefs="cssdefs" xmlns:ns="beremiz" version="1.0" extension-element-prefixes="ns func exsl regexp str dyn" exclude-result-prefixes="ns func exsl regexp str dyn debug preamble epilogue declarations definitions">
3264
51645afeded9 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3242
diff changeset
     3
  <xsl:output cdata-section-elements="xhtml:script" method="xml"/>
2941
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
     4
  <xsl:variable name="svg" select="/svg:svg"/>
2879
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
     5
  <xsl:variable name="hmi_elements" select="//svg:*[starts-with(@inkscape:label, 'HMI:')]"/>
3383
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
     6
  <xsl:param name="instance_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
     7
  <xsl:variable name="hmitree" select="ns:GetHMITree()"/>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
     8
  <xsl:variable name="_categories">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
     9
    <noindex>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    10
      <xsl:text>HMI_PLC_STATUS</xsl:text>
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
    <noindex>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    13
      <xsl:text>HMI_CURRENT_PAGE</xsl:text>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    14
    </noindex>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    15
  </xsl:variable>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
    16
  <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
    17
  <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
    18
    <xsl:apply-templates mode="index" select="$hmitree"/>
2867
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    19
  </xsl:variable>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
    20
  <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
    21
  <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
    22
  <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
    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>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. 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: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
    26
    <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
    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>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
    30
</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
    31
    <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
    32
    <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
    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>
ef13a4007538 SVGHMI: spread JS code 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: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
    38
    <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
    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>
3383
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    43
    <xsl:text>var current_page_var_index = </xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    44
    <xsl:value-of select="$indexed_hmitree/*[@hmipath = concat('/CURRENT_PAGE_', $instance_name)]/@index"/>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    45
    <xsl:text>;
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    46
</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    47
    <xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    48
</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
    49
    <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
    50
</xsl:text>
ef13a4007538 SVGHMI: spread JS code 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:for-each select="$indexed_hmitree/*">
3383
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    52
      <xsl:text>    "</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
    53
      <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
    54
      <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
    55
      <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
    56
        <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
    57
      </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
    58
      <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    59
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
    60
    </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
    61
    <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
    62
</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
    63
    <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
    64
</xsl:text>
3206
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    65
    <xsl:text>var hmitree_paths = [
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    66
</xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    67
    <xsl:for-each select="$indexed_hmitree/*">
3383
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    68
      <xsl:text>    "</xsl:text>
3206
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    69
      <xsl:value-of select="@hmipath"/>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    70
      <xsl:text>"</xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    71
      <xsl:if test="position()!=last()">
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    72
        <xsl:text>,</xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    73
      </xsl:if>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    74
      <xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    75
</xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    76
    </xsl:for-each>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    77
    <xsl:text>];
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    78
</xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    79
    <xsl:text>
4fd7bd10e606 SVGHMI: added "page_node" variable that reflects the HMI tree path of current relative page
Edouard Tisserant
parents: 3199
diff changeset
    80
</xsl:text>
3383
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    81
    <xsl:text>var hmitree_nodes = {
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    82
</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    83
    <xsl:for-each select="$indexed_hmitree/*[local-name() = 'HMI_NODE']">
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    84
      <xsl:text>    "</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    85
      <xsl:value-of select="@hmipath"/>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    86
      <xsl:text>" : [</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    87
      <xsl:value-of select="@index"/>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    88
      <xsl:text>, "</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    89
      <xsl:value-of select="@class"/>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    90
      <xsl:text>"]</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    91
      <xsl:if test="position()!=last()">
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    92
        <xsl:text>,</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    93
      </xsl:if>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    94
      <xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    95
</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    96
    </xsl:for-each>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    97
    <xsl:text>};
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    98
</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
    99
    <xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
   100
</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
   101
    <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
   102
</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
   103
  </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
   104
  <xsl:template mode="index" match="*">
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   105
    <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
   106
    <xsl:param name="parentpath" select="''"/>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   107
    <xsl:variable name="content">
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   108
      <xsl:variable name="path">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   109
        <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
   110
          <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
   111
            <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
   112
          </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
   113
          <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
   114
            <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
   115
            <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
   116
          </xsl:when>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   117
          <xsl:otherwise>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   118
            <xsl:value-of select="$parentpath"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   119
            <xsl:text>/</xsl:text>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   120
            <xsl:value-of select="@name"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   121
          </xsl:otherwise>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   122
        </xsl:choose>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   123
      </xsl:variable>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   124
      <xsl:choose>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   125
        <xsl:when test="not(local-name() = $categories/noindex)">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   126
          <xsl:copy>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   127
            <xsl:attribute name="index">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   128
              <xsl:value-of select="$index"/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   129
            </xsl:attribute>
2791
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   130
            <xsl:attribute name="hmipath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   131
              <xsl:value-of select="$path"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   132
            </xsl:attribute>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   133
            <xsl:for-each select="@*">
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   134
              <xsl:copy/>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   135
            </xsl:for-each>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   136
          </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
   137
          <xsl:apply-templates mode="index" select="*[1]">
2867
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   138
            <xsl:with-param name="index" select="$index + 1"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   139
            <xsl:with-param name="parentpath">
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   140
              <xsl:value-of select="$path"/>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   141
            </xsl:with-param>
901c89c0cc08 SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant
parents: 2865
diff changeset
   142
          </xsl:apply-templates>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   143
        </xsl:when>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   144
        <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
   145
          <xsl:apply-templates mode="index" select="*[1]">
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   146
            <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
   147
            <xsl:with-param name="parentpath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   148
              <xsl:value-of select="$path"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   149
            </xsl:with-param>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   150
          </xsl:apply-templates>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   151
        </xsl:otherwise>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   152
      </xsl:choose>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   153
    </xsl:variable>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   154
    <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
   155
    <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
   156
      <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
   157
      <xsl:with-param name="parentpath">
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   158
        <xsl:value-of select="$parentpath"/>
d022523cb621 SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant
parents: 2790
diff changeset
   159
      </xsl:with-param>
2790
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   160
    </xsl:apply-templates>
8fab1886ebec SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents: 2789
diff changeset
   161
  </xsl:template>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
   162
  <xsl:variable name="pathregex" select="'^([^\[,]+)(\[[^\]]+\])?([-.\d,]*)$'"/>
3582
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   163
  <xsl:variable name="newline">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   164
    <xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   165
</xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   166
  </xsl:variable>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   167
  <xsl:variable name="twonewlines" select="concat($newline,$newline)"/>
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
   168
  <xsl:template mode="parselabel" match="*">
3582
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   169
    <xsl:variable name="part" select="@inkscape:label"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   170
    <xsl:variable name="desc" select="svg:desc"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   171
    <xsl:variable name="len" select="string-length($part)"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   172
    <xsl:variable name="has_continuation" select="substring($part,$len,1)='\'"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   173
    <xsl:variable name="label">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   174
      <xsl:choose>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   175
        <xsl:when test="$has_continuation">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   176
          <xsl:variable name="_continuation" select="substring-before($desc, $twonewlines)"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   177
          <xsl:variable name="continuation">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   178
            <xsl:choose>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   179
              <xsl:when test="$_continuation">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   180
                <xsl:value-of select="$_continuation"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   181
              </xsl:when>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   182
              <xsl:otherwise>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   183
                <xsl:value-of select="$desc"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   184
              </xsl:otherwise>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   185
            </xsl:choose>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   186
          </xsl:variable>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   187
          <xsl:value-of select="concat(substring($part,1,$len - 1),translate($continuation,$newline,''))"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   188
        </xsl:when>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   189
        <xsl:otherwise>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   190
          <xsl:value-of select="$part"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   191
        </xsl:otherwise>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   192
      </xsl:choose>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   193
    </xsl:variable>
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
   194
    <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
   195
    <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
   196
    <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
   197
    <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
   198
      <xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   199
        <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
   200
          <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
   201
        </xsl:when>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   202
        <xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   203
          <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
   204
        </xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   205
      </xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   206
    </xsl:variable>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   207
    <xsl:variable name="_typefreq" select="substring-before($args,':')"/>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   208
    <xsl:variable name="typefreq">
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   209
      <xsl:choose>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   210
        <xsl:when test="$_typefreq">
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   211
          <xsl:value-of select="$_typefreq"/>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   212
        </xsl:when>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   213
        <xsl:otherwise>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   214
          <xsl:value-of select="$args"/>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   215
        </xsl:otherwise>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   216
      </xsl:choose>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   217
    </xsl:variable>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
   218
    <xsl:variable name="freq" select="substring-after($typefreq,'|')"/>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   219
    <xsl:variable name="_type" select="substring-before($typefreq,'|')"/>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   220
    <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
   221
      <xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   222
        <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
   223
          <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
   224
        </xsl:when>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   225
        <xsl:otherwise>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   226
          <xsl:value-of select="$typefreq"/>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   227
        </xsl:otherwise>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   228
      </xsl:choose>
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
   229
    </xsl:variable>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   230
    <xsl:if test="$type">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   231
      <widget>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   232
        <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
   233
          <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
   234
        </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   235
        <xsl:attribute name="type">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   236
          <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
   237
        </xsl:attribute>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
   238
        <xsl:if test="$freq">
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   239
          <xsl:if test="not(regexp:test($freq,'^[0-9]*(\.[0-9]+)?[smh]?'))">
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   240
            <xsl:message terminate="yes">
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   241
              <xsl:text>Widget id:</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   242
              <xsl:value-of select="$id"/>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   243
              <xsl:text> label:</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   244
              <xsl:value-of select="$label"/>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   245
              <xsl:text> has wrong syntax of frequency forcing </xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   246
              <xsl:value-of select="$freq"/>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   247
            </xsl:message>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
   248
          </xsl:if>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
   249
          <xsl:attribute name="freq">
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   250
            <xsl:value-of select="$freq"/>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   251
          </xsl:attribute>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
   252
        </xsl:if>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   253
        <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
   254
          <arg>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   255
            <xsl:attribute name="value">
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   256
              <xsl:value-of select="."/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   257
            </xsl:attribute>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   258
          </arg>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   259
        </xsl:for-each>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   260
        <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
   261
        <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
   262
          <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
   263
            <path>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   264
              <xsl:variable name="path_match" select="regexp:match(.,$pathregex)"/>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   265
              <xsl:variable name="pathminmax" select="str:split($path_match[4],',')"/>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   266
              <xsl:variable name="path" select="$path_match[2]"/>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   267
              <xsl:variable name="path_accepts" select="$path_match[3]"/>
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
   268
              <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
   269
              <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
   270
                <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
   271
              </xsl:attribute>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   272
              <xsl:if test="string-length($path_accepts)">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   273
                <xsl:attribute name="accepts">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   274
                  <xsl:value-of select="$path_accepts"/>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   275
                </xsl:attribute>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   276
              </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
   277
              <xsl:choose>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   278
                <xsl:when test="$pathminmaxcount = 2">
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
   279
                  <xsl:attribute name="min">
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   280
                    <xsl:value-of select="$pathminmax[1]"/>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   281
                  </xsl:attribute>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   282
                  <xsl:attribute name="max">
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
   283
                    <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
   284
                  </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
   285
                </xsl:when>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   286
                <xsl:when test="$pathminmaxcount = 1 or $pathminmaxcount &gt; 2">
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
   287
                  <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
   288
                    <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
   289
                    <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
   290
                    <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
   291
                    <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
   292
                    <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
   293
                    <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
   294
                  </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
   295
                </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
   296
              </xsl:choose>
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   297
              <xsl:if test="$indexed_hmitree">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   298
                <xsl:choose>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   299
                  <xsl:when test="regexp:test($path,'^\.[a-zA-Z0-9_]+$')">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   300
                    <xsl:attribute name="type">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   301
                      <xsl:text>PAGE_LOCAL</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
   302
                    </xsl:attribute>
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   303
                  </xsl:when>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   304
                  <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
   305
                    <xsl:attribute name="type">
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   306
                      <xsl:text>HMI_LOCAL</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
   307
                    </xsl:attribute>
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   308
                  </xsl:when>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   309
                  <xsl:otherwise>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   310
                    <xsl:variable name="item" select="$indexed_hmitree/*[@hmipath = $path]"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   311
                    <xsl:variable name="pathtype" select="local-name($item)"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   312
                    <xsl:if test="$pathminmaxcount = 3 and not($pathtype = 'HMI_INT' or $pathtype = 'HMI_REAL')">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   313
                      <xsl:message terminate="yes">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   314
                        <xsl:text>Widget id:</xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   315
                        <xsl:value-of select="$id"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   316
                        <xsl:text> label:</xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   317
                        <xsl:value-of select="$label"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   318
                        <xsl:text> path section </xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   319
                        <xsl:value-of select="$pathminmax"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   320
                        <xsl:text> use min and max on non mumeric value</xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   321
                      </xsl:message>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   322
                    </xsl:if>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   323
                    <xsl:if test="count($item) = 1">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   324
                      <xsl:attribute name="index">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   325
                        <xsl:value-of select="$item/@index"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   326
                      </xsl:attribute>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   327
                      <xsl:attribute name="type">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   328
                        <xsl:value-of select="$pathtype"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   329
                      </xsl:attribute>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   330
                    </xsl:if>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   331
                  </xsl:otherwise>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   332
                </xsl:choose>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   333
              </xsl:if>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   334
            </path>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   335
          </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   336
        </xsl:for-each>
3582
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   337
        <xsl:choose>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   338
          <xsl:when test="$has_continuation">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   339
            <xsl:variable name="_continuation" select="substring-after($desc, $twonewlines)"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   340
            <xsl:if test="$_continuation">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   341
              <desc>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   342
                <xsl:value-of select="$_continuation"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   343
              </desc>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   344
            </xsl:if>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   345
          </xsl:when>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   346
          <xsl:otherwise>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   347
            <xsl:if test="$desc">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   348
              <desc>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   349
                <xsl:value-of select="$desc/text()"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   350
              </desc>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   351
            </xsl:if>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   352
          </xsl:otherwise>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   353
        </xsl:choose>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   354
      </widget>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   355
    </xsl:if>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   356
  </xsl:template>
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   357
  <xsl:template mode="genlabel" match="arg">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   358
    <xsl:text>:</xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   359
    <xsl:value-of select="@value"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   360
  </xsl:template>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   361
  <xsl:template mode="genlabel" match="path">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   362
    <xsl:text>@</xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   363
    <xsl:value-of select="@value"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   364
    <xsl:if test="string-length(@min)&gt;0 or string-length(@max)&gt;0">
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
   365
      <xsl:text>,</xsl:text>
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   366
      <xsl:value-of select="@min"/>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
   367
      <xsl:text>,</xsl:text>
3229
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   368
      <xsl:value-of select="@max"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   369
    </xsl:if>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   370
  </xsl:template>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   371
  <xsl:template mode="genlabel" match="widget">
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   372
    <xsl:text>HMI:</xsl:text>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   373
    <xsl:value-of select="@type"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   374
    <xsl:apply-templates mode="genlabel" select="arg"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   375
    <xsl:apply-templates mode="genlabel" select="path"/>
c5be4fd425e7 SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3222
diff changeset
   376
  </xsl:template>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   377
  <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
   378
    <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
   379
      <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
   380
      <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
   381
    </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
   382
    <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
   383
  </xsl:variable>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   384
  <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
   385
  <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
   386
    <xsl:param name="id"/>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   387
    <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
   388
  </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
   389
  <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
   390
    <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
   391
    <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
   392
    <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
   393
  </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
   394
  <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
   395
    <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
   396
    <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
   397
    <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
   398
    <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
   399
    <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
   400
  </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
   401
  <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
   402
    <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
   403
    <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
   404
    <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
   405
    <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
   406
    <xsl:text> </xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   407
    <xsl: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
   408
      <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
   409
      <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
   410
      <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
   411
      <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
   412
    </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
   413
    <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
   414
</xsl:text>
3582
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   415
    <xsl:if test="text()">
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   416
      <xsl:value-of select="text()"/>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   417
      <xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   418
</xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
   419
    </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
   420
    <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
   421
      <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
   422
        <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
   423
      </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
   424
    </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
   425
  </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
   426
  <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
   427
  <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
   428
    <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
   429
</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
   430
    <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
   431
    <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
   432
    <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
   433
</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
   434
    <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
   435
</xsl:text>
2877
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   436
    <xsl:text>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
   437
</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
   438
    <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
   439
    <xsl:text>
682bce953795 SVGHMI: 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:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   441
    <xsl:text>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
   442
</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
   443
    <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
   444
    <xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   445
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   446
    <xsl:text>Parsed Widgets
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   447
</xsl:text>
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   448
    <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
   449
    <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
   450
    <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
   451
</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
   452
  </xsl:template>
3199
1582753e409b SVGHMI: Filter unseen geometry from inkscape CSV output.
Edouard Tisserant
parents: 3195
diff changeset
   453
  <xsl:variable name="all_geometry" select="ns:GetSVGGeometry()"/>
1582753e409b SVGHMI: Filter unseen geometry from inkscape CSV output.
Edouard Tisserant
parents: 3195
diff changeset
   454
  <xsl:variable name="defs" select="//svg:defs/descendant-or-self::svg:*"/>
1582753e409b SVGHMI: Filter unseen geometry from inkscape CSV output.
Edouard Tisserant
parents: 3195
diff changeset
   455
  <xsl:variable name="geometry" select="$all_geometry[not(@Id = $defs/@id)]"/>
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
   456
  <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
   457
  <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
   458
    <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
   459
</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
   460
    <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
   461
    <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
   462
    <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
   463
</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
   464
    <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
   465
</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
   466
    <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
   467
</xsl:text>
2879
58e6a91dc37f SVGHMI: Cosmetic changes
Edouard Tisserant
parents: 2878
diff changeset
   468
    <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
   469
      <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
   470
      <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
   471
      <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
   472
      <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
   473
      <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
   474
      <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
   475
      <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
   476
      <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
   477
      <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
   478
      <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
   479
      <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   480
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   481
    </xsl: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
   482
    <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
   483
</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
   484
  </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
   485
  <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
   486
    <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
   487
    <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
   488
    <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
   489
    <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
   490
    <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
   491
    <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
   492
    <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
   493
      <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
   494
        <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
   495
      </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
   496
      <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
   497
        <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
   498
      </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
   499
      <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
   500
        <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
   501
      </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
   502
      <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
   503
        <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
   504
      </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
   505
      <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
   506
        <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
   507
      </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
   508
    </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
   509
  </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
   510
  <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
   511
    <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
   512
    <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
   513
    <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
   514
    <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
   515
      <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
   516
        <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
   517
        <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
   518
      </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
   519
      <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
   520
        <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
   521
      </xsl:otherwise>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   522
    </xsl: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
   523
  </func:function>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   524
  <xsl:variable name="groups" select="/svg:svg | //svg:g"/>
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
   525
  <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
   526
    <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
   527
    <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
   528
    <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
   529
    <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
   530
  </func:function>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   531
  <xsl:variable name="hmi_lists_descs" select="$parsed_widgets/widget[@type = 'List']"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   532
  <xsl:variable name="hmi_lists" select="$hmi_elements[@id = $hmi_lists_descs/@id]"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   533
  <xsl:variable name="hmi_textlists_descs" select="$parsed_widgets/widget[@type = 'TextList']"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   534
  <xsl:variable name="hmi_textlists" select="$hmi_elements[@id = $hmi_textlists_descs/@id]"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   535
  <xsl:variable name="hmi_textstylelists_descs" select="$parsed_widgets/widget[@type = 'TextStyleList']"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   536
  <xsl:variable name="hmi_textstylelists" select="$hmi_elements[@id = $hmi_textstylelists_descs/@id]"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   537
  <xsl:variable name="textstylelist_related">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   538
    <xsl:for-each select="$hmi_textstylelists">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   539
      <list>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   540
        <xsl:attribute name="listid">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   541
          <xsl:value-of select="@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   542
        </xsl:attribute>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   543
        <xsl:for-each select="func:refered_elements(.)">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   544
          <elt>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   545
            <xsl:attribute name="eltid">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   546
              <xsl:value-of select="@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   547
            </xsl:attribute>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   548
          </elt>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   549
        </xsl:for-each>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   550
      </list>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   551
    </xsl:for-each>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   552
  </xsl:variable>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
   553
  <xsl:variable name="textstylelist_related_ns" select="exsl:node-set($textstylelist_related)"/>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   554
  <xsl:variable name="hmi_pages_descs" select="$parsed_widgets/widget[@type = 'Page']"/>
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   555
  <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
   556
  <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
   557
    <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
   558
      <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
   559
        <xsl:choose>
2887
30cea13267b4 SVGHMI: cosmetic changes
Edouard Tisserant
parents: 2886
diff changeset
   560
          <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
   561
            <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
   562
          </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
   563
          <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
   564
            <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
   565
              <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
   566
            </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
   567
          </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
   568
        </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
   569
      </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
   570
      <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
   571
        <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
   572
          <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
   573
        </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
   574
      </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
   575
      <xsl:otherwise>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   576
        <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
   577
      </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
   578
    </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
   579
  </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
   580
  <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
   581
  <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
   582
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   583
</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
   584
    <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
   585
    <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
   586
    <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
   587
</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
   588
    <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
   589
</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
   590
    <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
   591
</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
   592
    <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
   593
    <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
   594
    <xsl:text>";
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   595
</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
   596
    <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
   597
</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
   598
  </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
   599
  <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
   600
  <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
   601
  <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
   602
    <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
   603
    <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
   604
    <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
   605
    <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
   606
    <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
   607
      <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
   608
        <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
   609
      </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
   610
      <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
   611
        <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
   612
      </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
   613
    </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
   614
  </func:function>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   615
  <xsl:variable name="_overlapping_geometry">
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   616
    <xsl:for-each select="$hmi_pages | $keypads">
3170
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   617
      <xsl:variable name="k" select="concat('overlapping:', @id)"/>
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   618
      <xsl:value-of select="ns:ProgressStart($k, concat('collecting membership of ', @inkscape:label))"/>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   619
      <elt>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   620
        <xsl:attribute name="id">
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   621
          <xsl:value-of select="@id"/>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   622
        </xsl:attribute>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   623
        <xsl:copy-of select="func:overlapping_geometry(.)"/>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   624
      </elt>
3170
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   625
      <xsl:value-of select="ns:ProgressEnd($k)"/>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   626
    </xsl:for-each>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   627
  </xsl:variable>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   628
  <xsl:variable name="overlapping_geometry" select="exsl:node-set($_overlapping_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
   629
  <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
   630
    <xsl:param name="page"/>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   631
    <xsl:variable name="page_overlapping_geometry" select="$overlapping_geometry/elt[@id = $page/@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
   632
    <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
   633
    <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
   634
    <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
   635
  </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
   636
  <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
   637
    <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
   638
    <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
   639
      <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
   640
        <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
   641
      </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
   642
      <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
   643
        <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
   644
      </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
   645
    </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
   646
  </func:function>
3186
1e9b9d7451cd SVGHMI: Ensure that when a HMI:List is refered, none of its refered elements are discarded.
Edouard Tisserant
parents: 3181
diff changeset
   647
  <xsl:variable name="required_page_elements" select="func:required_elements($hmi_pages | $keypads)/ancestor-or-self::svg:*"/>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
   648
  <xsl:variable name="required_list_elements" select="func:refered_elements(($hmi_lists | $hmi_textlists)[@id = $required_page_elements/@id])/ancestor-or-self::svg:*"/>
3199
1582753e409b SVGHMI: Filter unseen geometry from inkscape CSV output.
Edouard Tisserant
parents: 3195
diff changeset
   649
  <xsl:variable name="required_elements" select="$defs | $required_list_elements | $required_page_elements"/>
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
   650
  <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
   651
  <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
   652
    <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
   653
    <xsl:variable name="short_list" select="$elements[not(ancestor::*/@id = $elements/@id)]"/>
3161
edd558965f58 SVGHMI: Optimize sumarized_elements xslt function, taking most of SVGHMI build time.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3156
diff changeset
   654
    <xsl:variable name="filled_groups" select="$short_list/parent::*[&#10;        not(child::*[&#10;            not(@id = $discardable_elements/@id) and&#10;            not(@id = $short_list/@id)&#10;        ])]"/>
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
   655
    <xsl:variable name="groups_to_add" select="$filled_groups[not(ancestor::*/@id = $filled_groups/@id)]"/>
3161
edd558965f58 SVGHMI: Optimize sumarized_elements xslt function, taking most of SVGHMI build time.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3156
diff changeset
   656
    <func:result select="$groups_to_add | $short_list[not(ancestor::*/@id = $filled_groups/@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
   657
  </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
   658
  <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
   659
    <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
   660
    <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
   661
      <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
   662
        <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
   663
      </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
   664
      <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
   665
        <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
   666
      </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
   667
    </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
   668
  </func:function>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
   669
  <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
   670
  <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
   671
  <declarations:detachable-elements/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
   672
  <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
   673
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   674
</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
   675
    <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
   676
    <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
   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>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
   679
    <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
   680
</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
   681
    <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
   682
</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
   683
    <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
   684
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   685
    <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
   686
      <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
   687
      <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
   688
      <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
   689
      <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
   690
      <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
   691
      <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
   692
      <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
   693
      <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
   694
        <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
   695
      </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
   696
      <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   697
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   698
    </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
   699
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   700
</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
   701
    <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
   702
</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
   703
  </xsl:template>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   704
  <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
   705
  <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
   706
  <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
   707
  <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
   708
    <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
   709
      <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
   710
        <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
   711
        <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
   712
        <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
   713
      </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
   714
    </xsl:if>
2886
6c82fad8be65 SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2885
diff changeset
   715
    <xsl:variable name="desc" select="func:widget(@id)"/>
3170
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   716
    <xsl:variable name="pagename" select="$desc/arg[1]/@value"/>
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   717
    <xsl:variable name="msg" select="concat('generating page description ', $pagename)"/>
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   718
    <xsl:value-of select="ns:ProgressStart($pagename, $msg)"/>
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
   719
    <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
   720
    <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
   721
    <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
   722
    <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
   723
    <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
   724
    <xsl:variable name="page_relative_widgets" select="$page_managed_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]"/>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   725
    <xsl:variable name="sumarized_page" select="func:sumarized_elements($page_all_elements)"/>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   726
    <xsl:variable name="required_detachables" select="$sumarized_page/&#10;           ancestor-or-self::*[@id = $detachable_elements/@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
   727
    <xsl:text>  "</xsl:text>
3170
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   728
    <xsl:value-of select="$pagename"/>
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
   729
    <xsl:text>": {
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   730
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   731
    <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
   732
    <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
   733
    <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
   734
    <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
   735
    <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
   736
    <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
   737
    <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
   738
    <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
   739
    <xsl:text>],
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   740
</xsl:text>
682bce953795 SVGHMI: 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: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
   742
      <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
   743
        <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
   744
          <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
   745
          <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
   746
          <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
   747
          <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
   748
          <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
   749
        </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
   750
      </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
   751
      <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
   752
      <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
   753
      <xsl:text>,
682bce953795 SVGHMI: 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
</xsl:text>
3383
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
   755
      <xsl:text>    page_class: "</xsl:text>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
   756
      <xsl:value-of select="$indexed_hmitree/*[@hmipath = $desc/path/@value]/@class"/>
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
   757
      <xsl:text>",
a3b8cfd89648 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3331
diff changeset
   758
</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
   759
    </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
   760
    <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
   761
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
   762
    <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
   763
      <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
   764
        <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
   765
          <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
   766
          <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
   767
            <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
   768
          </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
   769
        </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
   770
      </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
   771
      <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
   772
      <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
   773
      <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
   774
      <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
   775
      <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
   776
      <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
   777
        <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
   778
      </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
   779
      <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   780
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   781
    </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
   782
    <xsl:text>    ],
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   783
</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
   784
    <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
   785
</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
   786
    <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
   787
      <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
   788
      <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
   789
      <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
   790
      <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
   791
        <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
   792
      </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
   793
      <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
   794
</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
   795
    </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
   796
    <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
   797
</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
   798
    <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
   799
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   800
    <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
   801
      <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
   802
      <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
   803
      <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
   804
      <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
   805
      <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
   806
      <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
   807
        <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
   808
      </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
   809
      <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   810
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   811
    </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
   812
    <xsl:text>    }
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   813
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   814
    <xsl:apply-templates mode="widget_page" 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
   815
      <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
   816
    </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
   817
    <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
   818
    <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
   819
      <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
   820
    </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
   821
    <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   822
</xsl:text>
3170
aaa203270ab0 SVGHMI: Make build log less redundant, and refactor progress information code a bit, to make it also a bit less redundant.
Edouard Tisserant
parents: 3165
diff changeset
   823
    <xsl:value-of select="ns:ProgressEnd($pagename)"/>
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
   824
  </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
   825
  <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
   826
  <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
   827
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   828
</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
   829
    <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
   830
    <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
   831
    <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
   832
</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
   833
    <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
   834
</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
   835
    <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
   836
</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
   837
    <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
   838
</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
   839
    <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
   840
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   841
</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
   842
    <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
   843
</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
   844
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
   845
  <xsl:template mode="widget_page" 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
   846
  <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
   847
  <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
   848
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
   849
</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
   850
    <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
   851
    <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
   852
    <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
   853
</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
   854
    <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
   855
</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
   856
    <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
   857
</xsl:text>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   858
    <xsl:text>DETACHABLES:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   859
</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
   860
    <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
   861
      <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
   862
      <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
   863
      <xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   864
</xsl:text>
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
   865
    </xsl:for-each>
2888
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   866
    <xsl:text>In Foreach:
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   867
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   868
    <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
   869
      <xsl:text> </xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   870
      <xsl:value-of select="."/>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   871
      <xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   872
</xsl:text>
7beddc62a388 SVGHMI: Exclude (again) sub-widgets of forEach widget from page-switch managed widget.
Edouard Tisserant
parents: 2887
diff changeset
   873
    </xsl:for-each>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   874
    <xsl:text>Overlapping 
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   875
</xsl:text>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   876
    <xsl:apply-templates mode="testtree" select="$overlapping_geometry"/>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   877
    <xsl:text>
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
   878
</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
   879
  </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
   880
  <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
   881
    <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
   882
  </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
   883
  <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
   884
    <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
   885
      <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
   886
        <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
   887
      </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
   888
    </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
   889
  </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
   890
  <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
   891
  <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
   892
  <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
   893
    <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
   894
      <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
   895
        <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
   896
      </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
   897
      <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
   898
        <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
   899
      </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
   900
      <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
   901
        <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
   902
      </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
   903
      <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
   904
    </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
   905
  </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
   906
  <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
   907
    <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
   908
      <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
   909
    </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
   910
  </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
   911
  <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
   912
    <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
   913
      <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
   914
    </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
   915
  </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
   916
  <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
   917
    <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
   918
      <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
   919
    </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
   920
  </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
   921
  <xsl:variable name="targets_not_to_unlink" select="$hmi_lists/descendant-or-self::svg:*"/>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
   922
  <xsl:variable name="to_unlink" select="$hmi_widgets/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
   923
  <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
   924
    <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
   925
    <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
   926
    <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
   927
  </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
   928
  <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
   929
    <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
   930
    <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
   931
      <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
   932
        <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
   933
          <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
   934
        </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
   935
      </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
   936
      <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
   937
        <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
   938
          <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
   939
        </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
   940
      </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
   941
    </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
   942
  </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
   943
  <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
   944
    <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
   945
      <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
   946
    </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
   947
    <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
   948
      <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
   949
    </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
   950
    <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
   951
      <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
   952
    </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
   953
    <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
   954
      <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
   955
    </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
   956
    <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
   957
      <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
   958
    </name>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   959
    <name>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   960
      <xsl:text>id</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   961
    </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
   962
  </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
   963
  <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
   964
  <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
   965
    <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
   966
      <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
   967
    </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
   968
    <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
   969
      <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
   970
    </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
   971
  </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
   972
  <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
   973
  <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
   974
    <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
   975
    <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
   976
    <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
   977
    <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
   978
      <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
   979
        <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
   980
          <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
   981
          <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
   982
          <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
   983
        </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
   984
        <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
   985
          <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
   986
        </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
   987
      </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
   988
    </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
   989
    <g>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   990
      <xsl:attribute name="id">
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   991
        <xsl:value-of select="$seeded_id"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
   992
      </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
   993
      <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
   994
        <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
   995
      </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
   996
      <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
   997
        <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
   998
          <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
   999
            <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
  1000
              <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
  1001
            </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
  1002
          </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
  1003
          <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
  1004
            <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
  1005
              <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
  1006
              <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
  1007
                <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
  1008
              </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
  1009
              <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
  1010
            </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
  1011
          </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
  1012
          <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
  1013
            <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
  1014
              <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
  1015
              <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
  1016
                <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
  1017
              </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
  1018
              <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
  1019
            </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
  1020
          </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
  1021
          <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
  1022
            <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
  1023
          </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
  1024
        </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
  1025
        <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
  1026
          <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
  1027
            <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
  1028
              <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
  1029
            </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
  1030
          </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
  1031
          <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
  1032
            <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
  1033
          </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
  1034
        </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
  1035
      </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
  1036
    </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
  1037
  </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
  1038
  <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
  1039
    <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
  1040
    <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
  1041
      <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
  1042
      <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
  1043
      <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
  1044
    </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
  1045
    <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
  1046
      <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
  1047
    </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
  1048
  </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
  1049
  <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
  1050
    <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
  1051
  </xsl:template>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  1052
  <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
  1053
    <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
  1054
    <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
  1055
    <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
  1056
      <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
  1057
        <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
  1058
          <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
  1059
          <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
  1060
        </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
  1061
      </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
  1062
      <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
  1063
        <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
  1064
          <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
  1065
            <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
  1066
          </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
  1067
        </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
  1068
      </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
  1069
    </xsl:choose>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  1070
  </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
  1071
  <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
  1072
    <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
  1073
    <xsl:choose>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1074
      <xsl:when test="@id = $hmi_widgets/@id">
2877
682bce953795 SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents: 2876
diff changeset
  1075
        <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
  1076
          <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
  1077
            <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
  1078
          </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
  1079
        </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
  1080
      </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
  1081
      <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
  1082
        <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
  1083
          <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
  1084
            <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
  1085
          </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
  1086
        </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
  1087
      </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
  1088
    </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
  1089
  </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
  1090
  <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
  1091
    <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
  1092
  </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
  1093
  <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
  1094
  <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
  1095
  <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
  1096
    <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
  1097
</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
  1098
    <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
  1099
    <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
  1100
    <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
  1101
</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
  1102
    <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
  1103
</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
  1104
    <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
  1105
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1106
    <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
  1107
    <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
  1108
    <xsl:text>");
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1109
</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
  1110
    <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
  1111
</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
  1112
  </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
  1113
  <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
  1114
  <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
  1115
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  1116
</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
  1117
    <xsl:text>/* </xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1118
    <xsl:value-of select="local-name()"/>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1119
    <xsl:text> */
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1120
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1121
    <xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1122
</xsl:text>
e50908ddec60 SVGHMI: One class per widget type, widget objects are instances of these classes, and members are passed through constructor. This allows to keep compatible with previous widget_defs template used in most widgets.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2944
diff changeset
  1123
    <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
  1124
</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
  1125
    <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
  1126
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
  1127
    <xsl:for-each select="$to_unlink">
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
  1128
      <xsl:value-of select="@id"/>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
  1129
      <xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
  1130
</xsl:text>
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
  1131
    </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
  1132
    <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
  1133
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  1134
    <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
  1135
      <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
  1136
      <xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  1137
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  1138
    </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
  1139
    <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
  1140
</xsl:text>
2878
bec552270ad1 SVGHMI: added inline_svg.ysl2
Edouard Tisserant
parents: 2877
diff changeset
  1141
  </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
  1142
  <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
  1143
    <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
  1144
      <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
  1145
        <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
  1146
      </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
  1147
    </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
  1148
  </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
  1149
  <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
  1150
    <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
  1151
      <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
  1152
        <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
  1153
      </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
  1154
      <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
  1155
        <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
  1156
      </xsl:attribute>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1157
      <xsl:if test="string-length(text()) &gt; 0">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1158
        <line>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1159
          <xsl:value-of select="text()"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1160
        </line>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1161
      </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
  1162
      <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
  1163
    </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
  1164
  </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
  1165
  <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
  1166
  <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
  1167
    <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
  1168
  </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
  1169
  <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
  1170
  <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
  1171
    <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
  1172
</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
  1173
    <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
  1174
    <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
  1175
    <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
  1176
</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
  1177
    <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
  1178
</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
  1179
    <xsl:variable name="translations" select="ns:GetTranslations($translatable_strings)"/>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  1180
    <xsl:text>var langs = [ ["Default", "C"],</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
  1181
    <xsl:for-each select="$translations/langs/lang">
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  1182
      <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
  1183
      <xsl:value-of select="."/>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  1184
      <xsl:text>","</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  1185
      <xsl:value-of select="@code"/>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  1186
      <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
  1187
      <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
  1188
        <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
  1189
      </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
  1190
    </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
  1191
    <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
  1192
</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
  1193
    <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
  1194
</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
  1195
    <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
  1196
      <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
  1197
      <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
  1198
      <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
  1199
      <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
  1200
      <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
  1201
        <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
  1202
        <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
  1203
        <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
  1204
        <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
  1205
          <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
  1206
        </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
  1207
      </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
  1208
      <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
  1209
      <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
  1210
        <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
  1211
        <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
  1212
          <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
  1213
          <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
  1214
            <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
  1215
          </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
  1216
        </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
  1217
        <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
  1218
        <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
  1219
          <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
  1220
        </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
  1221
      </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
  1222
      <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
  1223
      <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
  1224
        <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
  1225
      </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
  1226
      <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
  1227
</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
  1228
    </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
  1229
    <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
  1230
</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
  1231
    <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
  1232
</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
  1233
  </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
  1234
  <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
  1235
    <xsl:variable name="widget" select="func:widget(@id)"/>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1236
    <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
  1237
    <xsl:variable name="args">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1238
      <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
  1239
        <xsl:text>"</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1240
        <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
  1241
        <xsl:text>"</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1242
        <xsl:if test="position()!=last()">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1243
          <xsl:text>,</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1244
        </xsl:if>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1245
      </xsl:for-each>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1246
    </xsl:variable>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1247
    <xsl:variable name="indexes">
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1248
      <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
  1249
        <xsl:choose>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1250
          <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
  1251
            <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
  1252
              <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
  1253
                <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
  1254
                  <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
  1255
                  <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
  1256
                  <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
  1257
                  <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
  1258
                  <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
  1259
                  <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
  1260
                  <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
  1261
                </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
  1262
                <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
  1263
              </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
  1264
              <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
  1265
                <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
  1266
                <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
  1267
                <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
  1268
              </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
  1269
              <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
  1270
                <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
  1271
                <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
  1272
                <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
  1273
              </xsl:when>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1274
              <xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1275
                <xsl:message terminate="yes">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1276
                  <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
  1277
                </xsl:message>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1278
              </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
  1279
            </xsl:choose>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1280
          </xsl:when>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1281
          <xsl:otherwise>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1282
            <xsl:value-of select="@index"/>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1283
          </xsl:otherwise>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1284
        </xsl:choose>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1285
        <xsl:if test="position()!=last()">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1286
          <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1287
        </xsl:if>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1288
      </xsl:for-each>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1289
    </xsl:variable>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1290
    <xsl:variable name="minmaxes">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1291
      <xsl:for-each select="$widget/path">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1292
        <xsl:choose>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1293
          <xsl:when test="@min and @max">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1294
            <xsl:text>[</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1295
            <xsl:value-of select="@min"/>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1296
            <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1297
            <xsl:value-of select="@max"/>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1298
            <xsl:text>]</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1299
          </xsl:when>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1300
          <xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1301
            <xsl:text>undefined</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1302
          </xsl:otherwise>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1303
        </xsl:choose>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1304
        <xsl:if test="position()!=last()">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1305
          <xsl:text>,</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1306
        </xsl:if>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1307
      </xsl:for-each>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1308
    </xsl:variable>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1309
    <xsl:variable name="freq">
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1310
      <xsl:choose>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  1311
        <xsl:when test="$widget/@freq">
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1312
          <xsl:text>"</xsl:text>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  1313
          <xsl:value-of select="$widget/@freq"/>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1314
          <xsl:text>"</xsl:text>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1315
        </xsl:when>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1316
        <xsl:otherwise>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1317
          <xsl:text>undefined</xsl:text>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1318
        </xsl:otherwise>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1319
      </xsl:choose>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1320
    </xsl:variable>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1321
    <xsl:text>  "</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1322
    <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
  1323
    <xsl:text>": new </xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1324
    <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
  1325
    <xsl:text>Widget ("</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1326
    <xsl:value-of select="@id"/>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1327
    <xsl:text>",</xsl:text>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1328
    <xsl:value-of select="$freq"/>
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1329
    <xsl:text>,[</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1330
    <xsl:value-of select="$args"/>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1331
    <xsl:text>],[</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1332
    <xsl:value-of select="$indexes"/>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1333
    <xsl:text>],[</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1334
    <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
  1335
    <xsl:text>],{
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1336
</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
  1337
    <xsl:apply-templates mode="widget_defs" select="$widget">
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1338
      <xsl:with-param name="hmi_element" select="."/>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1339
    </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
  1340
    <xsl:text>  })</xsl:text>
2881
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1341
    <xsl:if test="position()!=last()">
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1342
      <xsl:text>,</xsl:text>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1343
    </xsl:if>
3bb49f93d48c SVGHMI: added widget_common.ysl2
Edouard Tisserant
parents: 2879
diff changeset
  1344
    <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
  1345
</xsl:text>
2792
0c0d3895b036 SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant
parents: 2791
diff changeset
  1346
  </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
  1347
  <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
  1348
  <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
  1349
    <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
  1350
</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
  1351
    <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
  1352
    <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
  1353
    <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
  1354
</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
  1355
    <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
  1356
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1357
    <xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1358
</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
  1359
    <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
  1360
</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
  1361
    <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
  1362
</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
  1363
    <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
  1364
</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
  1365
    <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
  1366
</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
  1367
    <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
  1368
</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1369
    <xsl:text>const local_defaults = {
Edouard Tisserant
parents: 3022 3021
diff changeset
  1370
</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
  1371
    <xsl:for-each select="$parsed_widgets/widget[starts-with(@type,'VarInit')]">
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1372
      <xsl:if test="count(path) != 1">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1373
        <xsl:message terminate="yes">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1374
          <xsl:text>VarInit </xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1375
          <xsl:value-of select="@id"/>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1376
          <xsl:text> must have only one variable given.</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1377
        </xsl:message>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1378
      </xsl:if>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1379
      <xsl:if test="path/@type != 'PAGE_LOCAL' and path/@type != 'HMI_LOCAL'">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1380
        <xsl:message terminate="yes">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1381
          <xsl:text>VarInit </xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1382
          <xsl:value-of select="@id"/>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1383
          <xsl:text> only applies to HMI variable.</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1384
        </xsl:message>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1385
      </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
  1386
      <xsl:text>    "</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1387
      <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
  1388
      <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
  1389
      <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
  1390
        <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
  1391
          <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
  1392
          <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
  1393
          <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
  1394
          <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
  1395
          <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
  1396
          <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
  1397
        </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
  1398
        <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
  1399
          <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
  1400
        </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
  1401
      </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
  1402
      <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
  1403
</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
  1404
      <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
  1405
        <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
  1406
      </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
  1407
    </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
  1408
    <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
  1409
</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
  1410
    <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
  1411
</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
  1412
    <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
  1413
</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
  1414
    <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
  1415
      <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
  1416
      <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
  1417
      <xsl:text>"</xsl:text>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1418
      <xsl:if test="position()!=last()">
Edouard Tisserant
parents: 3022 3021
diff changeset
  1419
        <xsl:text>,</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1420
      </xsl:if>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1421
      <xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1422
</xsl:text>
Edouard Tisserant
parents: 3022 3021
diff changeset
  1423
    </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
  1424
    <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
  1425
</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
  1426
    <xsl:text>var persistent_indexes = new Map();
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  1427
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1428
    <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
  1429
</xsl:text>
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  1430
    <xsl:text>var updates = new Map();
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1431
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1432
    <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1433
</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
  1434
    <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
  1435
</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
  1436
    <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
  1437
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1438
    <xsl:text>    let new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1439
</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
  1440
    <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
  1441
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1442
    <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
  1443
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1444
    <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
  1445
</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
  1446
    <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
  1447
</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
  1448
    <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
  1449
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1450
    <xsl:text>        if(result != undefined) {
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1451
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1452
    <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
  1453
</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
  1454
    <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
  1455
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1456
    <xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1457
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1458
    <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
  1459
</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1460
    <xsl:text>        pagevars[varname] = new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1461
</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
  1462
    <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
  1463
</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
  1464
    <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
  1465
</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
  1466
    <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
  1467
</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
  1468
    <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
  1469
</xsl:text>
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  1470
    <xsl:text>        updates.set(new_index, defaultval);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1471
</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
  1472
    <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
  1473
</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
  1474
    <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
  1475
</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
  1476
    <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
  1477
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1478
    <xsl:text>    return new_index;
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1479
</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
  1480
    <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
  1481
</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
  1482
    <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
  1483
</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
  1484
    <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
  1485
</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
  1486
    <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
  1487
</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
  1488
    <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
  1489
</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
  1490
    <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
  1491
</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
  1492
  </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
  1493
  <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
  1494
  <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
  1495
    <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
  1496
</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
  1497
    <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
  1498
    <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
  1499
    <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
  1500
</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
  1501
    <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
  1502
</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
  1503
    <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
  1504
</xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1505
    <xsl:text>
497aac6522a3 SVGHMI: provide request_animate() to Widget authors so that they can register redraw code when events lead to redraw. Widget member animate() is called when it is time to update DOM.
Edouard Tisserant
parents: 3018
diff changeset
  1506
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1507
    <xsl:text>function _hide(elt, placeholder){
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1508
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1509
    <xsl:text>    if(elt.parentNode != null)
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1510
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1511
    <xsl:text>        placeholder.parentNode.removeChild(elt);
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1512
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1513
    <xsl:text>}
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1514
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1515
    <xsl:text>function _show(elt, placeholder){
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1516
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1517
    <xsl:text>    placeholder.parentNode.insertBefore(elt, placeholder);
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1518
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1519
    <xsl:text>}
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1520
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1521
    <xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1522
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1523
    <xsl:text>function set_activation_state(eltsub, state){
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1524
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1525
    <xsl:text>    if(eltsub.active_elt != undefined){
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1526
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1527
    <xsl:text>        if(eltsub.active_elt_placeholder == undefined){
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1528
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1529
    <xsl:text>            eltsub.active_elt_placeholder = document.createComment("");
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1530
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1531
    <xsl:text>            eltsub.active_elt.parentNode.insertBefore(eltsub.active_elt_placeholder, eltsub.active_elt);
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1532
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1533
    <xsl:text>        }
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1534
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1535
    <xsl:text>        (state?_show:_hide)(eltsub.active_elt, eltsub.active_elt_placeholder);
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1536
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1537
    <xsl:text>    }
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1538
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1539
    <xsl:text>    if(eltsub.inactive_elt != undefined){
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1540
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1541
    <xsl:text>        if(eltsub.inactive_elt_placeholder == undefined){
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1542
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1543
    <xsl:text>            eltsub.inactive_elt_placeholder = document.createComment("");
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1544
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1545
    <xsl:text>            eltsub.inactive_elt.parentNode.insertBefore(eltsub.inactive_elt_placeholder, eltsub.inactive_elt);
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1546
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1547
    <xsl:text>        }
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1548
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1549
    <xsl:text>        ((state || state==undefined)?_hide:_show)(eltsub.inactive_elt, eltsub.inactive_elt_placeholder);
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1550
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  1551
    <xsl:text>    }
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1552
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1553
    <xsl:text>}
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1554
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1555
    <xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1556
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1557
    <xsl:text>function activate_activable(eltsub) {
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1558
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1559
    <xsl:text>    set_activation_state(eltsub, true);
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1560
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1561
    <xsl:text>}
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1562
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1563
    <xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1564
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1565
    <xsl:text>function inactivate_activable(eltsub) {
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1566
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1567
    <xsl:text>    set_activation_state(eltsub, false);
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1568
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1569
    <xsl:text>}
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1570
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1571
    <xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  1572
</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
  1573
    <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
  1574
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1575
    <xsl:text>    offset = 0;
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1576
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  1577
    <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
  1578
</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
  1579
    <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
  1580
</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
  1581
    <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
  1582
</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
  1583
    <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
  1584
</xsl:text>
3410
eac5832a1489 SVGHMI: update generated xslt
Edouard Tisserant
parents: 3387
diff changeset
  1585
    <xsl:text>    constructor(elt_id, freq, args, indexes, minmaxes, members){
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1586
</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
  1587
    <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
  1588
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1589
    <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
  1590
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1591
    <xsl:text>        this.args = args;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1592
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1593
    <xsl:text>        this.indexes = indexes;
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1594
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1595
    <xsl:text>        this.minmaxes = minmaxes;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1596
</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
  1597
    <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
  1598
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1599
    <xsl:text>        this.lastapply = indexes.map(() =&gt; undefined);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1600
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1601
    <xsl:text>        this.inhibit = indexes.map(() =&gt; undefined);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1602
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1603
    <xsl:text>        this.pending = indexes.map(() =&gt; undefined);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1604
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1605
    <xsl:text>        this.bound_uninhibit = this.uninhibit.bind(this);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1606
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1607
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1608
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1609
    <xsl:text>        this.lastdispatch = indexes.map(() =&gt; undefined);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1610
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1611
    <xsl:text>        this.deafen = indexes.map(() =&gt; undefined);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1612
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1613
    <xsl:text>        this.incoming = indexes.map(() =&gt; undefined);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1614
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1615
    <xsl:text>        this.bound_undeafen = this.undeafen.bind(this);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1616
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1617
    <xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1618
</xsl:text>
3418
a1d9a0353053 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3414
diff changeset
  1619
    <xsl:text>        this.forced_frequency = freq;
a1d9a0353053 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3414
diff changeset
  1620
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1621
    <xsl:text>        this.clip = true;
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1622
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1623
    <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1624
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1625
    <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1626
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1627
    <xsl:text>    do_init(){
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1628
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1629
    <xsl:text>        let forced = this.forced_frequency;
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1630
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1631
    <xsl:text>        if(forced !== undefined){
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1632
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1633
    <xsl:text>            /*
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1634
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1635
    <xsl:text>            once every 10 seconds : 10s
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1636
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1637
    <xsl:text>            once per minute : 1m
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1638
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1639
    <xsl:text>            once per hour : 1h
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1640
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1641
    <xsl:text>            once per day : 1d
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1642
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1643
    <xsl:text>            */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1644
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1645
    <xsl:text>            let unit = forced.slice(-1);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1646
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1647
    <xsl:text>            let factor = {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1648
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1649
    <xsl:text>                "s":1,
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1650
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1651
    <xsl:text>                "m":60,
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1652
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1653
    <xsl:text>                "h":3600,
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1654
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1655
    <xsl:text>                "d":86400}[unit];
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1656
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1657
    <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1658
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1659
    <xsl:text>            this.frequency = factor ? 1/(factor * Number(forced.slice(0,-1)))
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1660
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1661
    <xsl:text>                                      : Number(forced);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1662
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1663
    <xsl:text>        }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1664
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1665
    <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1666
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1667
    <xsl:text>        let init = this.init;
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1668
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1669
    <xsl:text>        if(typeof(init) == "function"){
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1670
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1671
    <xsl:text>            try {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1672
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1673
    <xsl:text>                init.call(this);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1674
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1675
    <xsl:text>            } catch(err) {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1676
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1677
    <xsl:text>                console.log(err);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1678
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1679
    <xsl:text>            }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1680
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1681
    <xsl:text>        }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1682
</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
  1683
    <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
  1684
</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
  1685
    <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
  1686
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1687
    <xsl:text>    unsub(){
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1688
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1689
    <xsl:text>        /* remove subsribers */
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  1690
</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
  1691
    <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
  1692
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1693
    <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
  1694
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1695
    <xsl:text>                /* flush updates pending because of inhibition */
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1696
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1697
    <xsl:text>                let inhibition = this.inhibit[i];
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1698
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1699
    <xsl:text>                if(inhibition != undefined){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1700
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1701
    <xsl:text>                    clearTimeout(inhibition);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1702
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1703
    <xsl:text>                    this.lastapply[i] = undefined;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  1704
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1705
    <xsl:text>                    this.uninhibit(i);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1706
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1707
    <xsl:text>                }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1708
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1709
    <xsl:text>                let deafened = this.deafen[i];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1710
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1711
    <xsl:text>                if(deafened != undefined){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1712
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1713
    <xsl:text>                    clearTimeout(deafened);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1714
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1715
    <xsl:text>                    this.lastdispatch[i] = undefined;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1716
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1717
    <xsl:text>                    this.undeafen(i);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1718
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1719
    <xsl:text>                }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1720
</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
  1721
    <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
  1722
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1723
    <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
  1724
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1725
    <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
  1726
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1727
    <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
  1728
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1729
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1730
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1731
    <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
  1732
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1733
    <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
  1734
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1735
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1736
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1737
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1738
</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
  1739
    <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
  1740
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1741
    <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
  1742
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1743
    <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
  1744
</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
  1745
    <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
  1746
</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
  1747
    <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
  1748
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1749
    <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
  1750
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1751
    <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
  1752
</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
  1753
    <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
  1754
</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
  1755
    <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
  1756
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  1757
    <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
  1758
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1759
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1760
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1761
    <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
  1762
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1763
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1764
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1765
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1766
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  1767
    <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
  1768
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1769
    <xsl:text>        if(!this.unsubscribable) for(let index in this.indexes){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1770
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1771
    <xsl:text>            /* dispatch current cache in newly opened page widgets */
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1772
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1773
    <xsl:text>            let realindex = this.get_variable_index(index);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1774
</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
  1775
    <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
  1776
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1777
    <xsl:text>            let cached_val = cache[realindex];
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1778
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1779
    <xsl:text>            if(cached_val != undefined)
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1780
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1781
    <xsl:text>                this._dispatch(cached_val, cached_val, index);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1782
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1783
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1784
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1785
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1786
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1787
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1788
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1789
    <xsl:text>    get_variable_index(varnum) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1790
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1791
    <xsl:text>        let index = this.indexes[varnum];
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1792
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1793
    <xsl:text>        if(typeof(index) == "string"){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1794
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1795
    <xsl:text>            index = page_local_index(index, this.container_id);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1796
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1797
    <xsl:text>        } else {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1798
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1799
    <xsl:text>            if(this.relativeness[varnum]){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1800
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1801
    <xsl:text>                index += this.offset;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1802
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1803
    <xsl:text>            }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1804
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1805
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1806
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1807
    <xsl:text>        return index;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1808
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1809
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1810
</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
  1811
    <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
  1812
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1813
    <xsl:text>    overshot(new_val, max) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1814
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1815
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1816
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1817
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1818
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1819
    <xsl:text>    undershot(new_val, min) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1820
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1821
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1822
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1823
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1824
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1825
    <xsl:text>    clip_min_max(index, new_val) {
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1826
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1827
    <xsl:text>        let minmax = this.minmaxes[index];
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1828
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1829
    <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
  1830
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1831
    <xsl:text>            let [min,max] = minmax;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1832
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1833
    <xsl:text>            if(new_val &lt; min){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1834
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1835
    <xsl:text>                this.undershot(new_val, min);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1836
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1837
    <xsl:text>                return min;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1838
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1839
    <xsl:text>            }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1840
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1841
    <xsl:text>            if(new_val &gt; max){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1842
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1843
    <xsl:text>                this.overshot(new_val, max);
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1844
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1845
    <xsl:text>                return max;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1846
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1847
    <xsl:text>            }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1848
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1849
    <xsl:text>        }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1850
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1851
    <xsl:text>        return new_val;
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1852
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1853
    <xsl:text>    }
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1854
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1855
    <xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1856
</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
  1857
    <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
  1858
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1859
    <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
  1860
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  1861
    <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
  1862
</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
  1863
    <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
  1864
</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
  1865
    <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
  1866
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1867
    <xsl:text>        if(this.clip)
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1868
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1869
    <xsl:text>            new_val = this.clip_min_max(index, new_val);
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  1870
</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
  1871
    <xsl:text>        return apply_hmi_value(realindex, new_val);
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1872
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1873
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1874
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1875
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1876
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1877
    <xsl:text>    _apply_hmi_value(index, new_val) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1878
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1879
    <xsl:text>        let realindex = this.get_variable_index(index);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1880
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1881
    <xsl:text>        if(realindex == undefined) return undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1882
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1883
    <xsl:text>        if(this.clip)
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1884
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  1885
    <xsl:text>            new_val = this.clip_min_max(index, new_val);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1886
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1887
    <xsl:text>        return apply_hmi_value(realindex, new_val);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1888
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1889
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1890
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1891
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1892
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1893
    <xsl:text>    uninhibit(index){
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1894
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1895
    <xsl:text>        this.inhibit[index] = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1896
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1897
    <xsl:text>        let new_val = this.pending[index];
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1898
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1899
    <xsl:text>        this.pending[index] = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1900
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1901
    <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
  1902
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1903
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1904
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1905
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1906
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1907
    <xsl:text>    apply_hmi_value(index, new_val) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1908
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1909
    <xsl:text>        if(this.inhibit[index] == undefined){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1910
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1911
    <xsl:text>            let now = Date.now();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1912
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1913
    <xsl:text>            let min_interval = 1000/this.frequency;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1914
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1915
    <xsl:text>            let lastapply = this.lastapply[index];
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1916
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1917
    <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
  1918
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1919
    <xsl:text>                this.lastapply[index] = now;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1920
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1921
    <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
  1922
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1923
    <xsl:text>            }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1924
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1925
    <xsl:text>            else {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1926
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1927
    <xsl:text>                let elapsed = now - lastapply;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1928
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1929
    <xsl:text>                this.pending[index] = new_val;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1930
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1931
    <xsl:text>                this.inhibit[index] = setTimeout(this.bound_uninhibit, min_interval - elapsed, index);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1932
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1933
    <xsl:text>            }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1934
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1935
    <xsl:text>        }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1936
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1937
    <xsl:text>        else {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1938
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1939
    <xsl:text>            this.pending[index] = new_val;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1940
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1941
    <xsl:text>            return new_val;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1942
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  1943
    <xsl:text>        }
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1944
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1945
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1946
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1947
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1948
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1949
    <xsl:text>    new_hmi_value(index, value, oldval) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1950
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1951
    <xsl:text>        // TODO avoid searching, store index at sub()
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1952
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1953
    <xsl:text>        for(let i = 0; i &lt; this.indexes.length; i++) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1954
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1955
    <xsl:text>            let refindex = this.get_variable_index(i);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1956
</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
  1957
    <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
  1958
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1959
    <xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1960
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1961
    <xsl:text>            if(index == refindex) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1962
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1963
    <xsl:text>                this._dispatch(value, oldval, i);
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1964
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1965
    <xsl:text>                break;
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1966
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1967
    <xsl:text>            }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1968
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1969
    <xsl:text>        }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1970
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1971
    <xsl:text>    }
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1972
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1973
    <xsl:text>    
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1974
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1975
    <xsl:text>    undeafen(index){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1976
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1977
    <xsl:text>        this.deafen[index] = undefined;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1978
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1979
    <xsl:text>        let [new_val, old_val] = this.incoming[index];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1980
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1981
    <xsl:text>        this.incoming[index] = undefined;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1982
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1983
    <xsl:text>        this.dispatch(new_val, old_val, index);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1984
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1985
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1986
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1987
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1988
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1989
    <xsl:text>    _dispatch(value, oldval, varnum) {
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1990
</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
  1991
    <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
  1992
</xsl:text>
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1993
    <xsl:text>        if(dispatch != undefined){
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  1994
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1995
    <xsl:text>            if(this.deafen[varnum] == undefined){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1996
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1997
    <xsl:text>                let now = Date.now();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1998
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  1999
    <xsl:text>                let min_interval = 1000/this.frequency;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2000
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2001
    <xsl:text>                let lastdispatch = this.lastdispatch[varnum];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2002
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2003
    <xsl:text>                if(lastdispatch == undefined || now &gt; lastdispatch + min_interval){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2004
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2005
    <xsl:text>                    this.lastdispatch[varnum] = now;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2006
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2007
    <xsl:text>                    try {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2008
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2009
    <xsl:text>                        dispatch.call(this, value, oldval, varnum);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2010
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2011
    <xsl:text>                    } catch(err) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2012
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2013
    <xsl:text>                        console.log(err);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2014
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2015
    <xsl:text>                    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2016
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2017
    <xsl:text>                }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2018
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2019
    <xsl:text>                else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2020
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2021
    <xsl:text>                    let elapsed = now - lastdispatch;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2022
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2023
    <xsl:text>                    this.incoming[varnum] = [value, oldval];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2024
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2025
    <xsl:text>                    this.deafen[varnum] = setTimeout(this.bound_undeafen, min_interval - elapsed, varnum);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2026
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2027
    <xsl:text>                }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2028
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2029
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2030
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2031
    <xsl:text>            else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2032
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  2033
    <xsl:text>                this.incoming[varnum] = [value, oldval];
3026
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  2034
</xsl:text>
d454ed480c0f SVGHMI: factorize dispatch calling logic.
Edouard Tisserant
parents: 3025
diff changeset
  2035
    <xsl:text>            }
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2036
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2037
    <xsl:text>        }
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2038
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2039
    <xsl:text>    }
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2040
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2041
    <xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  2042
</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
  2043
    <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
  2044
</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
  2045
    <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
  2046
</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
  2047
    <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
  2048
</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
  2049
    <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
  2050
</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
  2051
    <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
  2052
</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
  2053
    <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
  2054
</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
  2055
    <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
  2056
</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
  2057
    <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
  2058
</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
  2059
    <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
  2060
</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
  2061
    <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
  2062
</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
  2063
    <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
  2064
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2065
    <xsl:text>    }
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2066
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2067
    <xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2068
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2069
    <xsl:text>    set_activation_state(state){
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2070
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2071
    <xsl:text>        set_activation_state(this.activable_sub, state);
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
  2072
</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
  2073
    <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
  2074
</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
  2075
    <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
  2076
</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
  2077
    <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
  2078
</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
  2079
  </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
  2080
  <xsl:variable name="excluded_types" select="str:split('Page VarInit VarInitPersistent')"/>
3264
51645afeded9 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3242
diff changeset
  2081
  <xsl:key name="TypesKey" match="widget" use="@type"/>
3008
dabad70db1bf SVGHMI: allow multiple variables and formatting in Display widget. Formatting is printf style and given as first argument. If no formating is given as widget argument, space separated.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3005
diff changeset
  2082
  <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
  2083
  <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
  2084
    <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
  2085
</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
  2086
    <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
  2087
    <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
  2088
    <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
  2089
</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
  2090
    <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
  2091
</xsl:text>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  2092
    <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
  2093
    <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
  2094
    <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
  2095
</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
  2096
  </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
  2097
  <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
  2098
    <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
  2099
    <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
  2100
    <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
  2101
</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
  2102
    <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
  2103
    <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
  2104
    <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
  2105
</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
  2106
    <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
  2107
</xsl:text>
3557
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  2108
    <xsl:message terminate="no">
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  2109
      <xsl:value-of select="@type"/>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  2110
      <xsl:text> widget is used in SVG but widget type is not declared</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  2111
    </xsl:message>
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
  2112
  </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
  2113
  <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
  2114
  <xsl:variable name="hmi_widgets" select="$hmi_elements[@id = $included_ids]"/>
3165
2db69e2c5673 SVGHMI: Optimized overlapping geometry (widget ot page belonging) computation. Added human readable messages for progress. Includes updated XSLT.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3161
diff changeset
  2115
  <xsl:variable name="result_widgets" select="$result_svg_ns//*[@id = $hmi_widgets/@id]"/>
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
  2116
  <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
  2117
  <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
  2118
    <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
  2119
</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
  2120
    <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
  2121
    <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
  2122
    <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
  2123
</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
  2124
    <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
  2125
</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
  2126
    <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
  2127
</xsl:text>
3124
f263359d8108 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3118
diff changeset
  2128
    <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
  2129
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  2130
</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
  2131
    <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
  2132
</xsl:text>
3557
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  2133
    <xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  2134
</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
  2135
  </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
  2136
  <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
  2137
    <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
  2138
    <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
  2139
    <xsl:param name="subelements" select="/.."/>
2800
68cee1366b9c SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant
parents: 2799
diff changeset
  2140
    <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
  2141
    <xsl:variable name="widget_type" select="@type"/>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2142
    <xsl:variable name="widget_id" select="@id"/>
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
  2143
    <xsl:for-each select="str:split($labels)">
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2144
      <xsl:variable name="absolute" select="starts-with(., '/')"/>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2145
      <xsl:variable name="name" select="substring(.,number($absolute)+1)"/>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2146
      <xsl:variable name="widget" select="$result_widgets[@id = $hmi_element/@id]"/>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2147
      <xsl:variable name="elt" select="($widget//*[not($absolute) and @inkscape:label=$name] | $widget/*[$absolute and @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
  2148
      <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
  2149
        <xsl:when test="not($elt/@id)">
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2150
          <xsl:if test="$mandatory!='no'">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2151
            <xsl:variable name="errmsg">
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
  2152
              <xsl:value-of select="$widget_type"/>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2153
              <xsl:text> widget (id=</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2154
              <xsl:value-of select="$widget_id"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2155
              <xsl:text>) must have a </xsl:text>
2836
ce6cecdb7320 SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents: 2834
diff changeset
  2156
              <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
  2157
              <xsl:text> element</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2158
            </xsl:variable>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2159
            <xsl:choose>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2160
              <xsl:when test="$mandatory='yes'">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2161
                <xsl:message terminate="yes">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2162
                  <xsl:value-of select="$errmsg"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2163
                </xsl:message>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2164
              </xsl:when>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2165
              <xsl:otherwise>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2166
                <xsl:message terminate="no">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2167
                  <xsl:value-of select="$errmsg"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2168
                </xsl:message>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2169
              </xsl:otherwise>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2170
            </xsl:choose>
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
  2171
          </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
  2172
        </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
  2173
        <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
  2174
          <xsl:text>    </xsl:text>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  2175
          <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
  2176
          <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
  2177
          <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
  2178
          <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
  2179
</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
  2180
          <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
  2181
            <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
  2182
            <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
  2183
            <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
  2184
</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
  2185
            <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
  2186
              <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
  2187
              <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
  2188
              <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
  2189
                <xsl:when test="not($subelt/@id)">
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2190
                  <xsl:if test="$mandatory!='no'">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2191
                    <xsl:variable name="errmsg">
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
  2192
                      <xsl:value-of select="$widget_type"/>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2193
                      <xsl:text> widget (id=</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2194
                      <xsl:value-of select="$widget_id"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2195
                      <xsl:text>) must have a </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
  2196
                      <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
  2197
                      <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
  2198
                      <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
  2199
                      <xsl:text> element</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2200
                    </xsl:variable>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2201
                    <xsl:choose>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2202
                      <xsl:when test="$mandatory='yes'">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2203
                        <xsl:message terminate="yes">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2204
                          <xsl:value-of select="$errmsg"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2205
                        </xsl:message>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2206
                      </xsl:when>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2207
                      <xsl:otherwise>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2208
                        <xsl:message terminate="no">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2209
                          <xsl:value-of select="$errmsg"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2210
                        </xsl:message>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2211
                      </xsl:otherwise>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2212
                    </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
  2213
                  </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
  2214
                  <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
  2215
                  <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
  2216
                  <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
  2217
                  <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
  2218
                  <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
  2219
</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
  2220
                </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
  2221
                <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
  2222
                  <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
  2223
                  <xsl:value-of select="$subname"/>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2224
                  <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
  2225
                  <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
  2226
                  <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
  2227
                  <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
  2228
                    <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
  2229
                  </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
  2230
                  <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
  2231
</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
  2232
                </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
  2233
              </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
  2234
            </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
  2235
            <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
  2236
</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
  2237
          </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
  2238
        </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
  2239
      </xsl:choose>
2807
7fa21b3b5f9f SVGHMI - added simple Meter widget.
Edouard Tisserant
parents: 2806
diff changeset
  2240
    </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
  2241
  </xsl:template>
2829
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2242
  <func:function name="func:escape_quotes">
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2243
    <xsl:param name="txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2244
    <xsl:choose>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2245
      <xsl:when test="contains($txt,'&quot;')">
Edouard Tisserant
parents: 3022 3021
diff changeset
  2246
        <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
  2247
      </xsl:when>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2248
      <xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2249
        <func:result select="$txt"/>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2250
      </xsl:otherwise>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2251
    </xsl:choose>
4c2c50f60730 SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant
parents: 2828
diff changeset
  2252
  </func:function>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2253
  <xsl:template match="widget[@type='Animate']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2254
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2255
    <xsl:text>AnimateWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2256
    <xsl:text> extends Widget{
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2257
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2258
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2259
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2260
    <xsl:text>    speed = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2261
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2262
    <xsl:text>    start = false;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2263
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2264
    <xsl:text>    widget_center = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2265
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2266
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2267
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2268
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2269
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2270
    <xsl:text>        this.speed = value / 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2271
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2272
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2273
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2274
    <xsl:text>        //reconfigure animation
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2275
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2276
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2277
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2278
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2279
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2280
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2281
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2282
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2283
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2284
    <xsl:text>       // change animation properties
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2285
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2286
    <xsl:text>       for(let child of this.element.children){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2287
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2288
    <xsl:text>            if(child.nodeName.startsWith("animate")){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2289
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2290
    <xsl:text>                if(this.speed != 0 &amp;&amp; !this.start){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2291
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2292
    <xsl:text>                    this.start = true;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2293
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2294
    <xsl:text>                    this.element.beginElement();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2295
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2296
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2297
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2298
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2299
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2300
    <xsl:text>                if(this.speed &gt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2301
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2302
    <xsl:text>                    child.setAttribute("dur", this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2303
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2304
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2305
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2306
    <xsl:text>                else if(this.speed &lt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2307
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2308
    <xsl:text>                    child.setAttribute("dur", (-1)*this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2309
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2310
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2311
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2312
    <xsl:text>                else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2313
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2314
    <xsl:text>                    this.start = false;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2315
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2316
    <xsl:text>                    this.element.endElement();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2317
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2318
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2319
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2320
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2321
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2322
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2323
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2324
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2325
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2326
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2327
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2328
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2329
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2330
    <xsl:text>        let widget_pos = this.element.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2331
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2332
    <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
  2333
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2334
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2335
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2336
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2337
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2338
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2339
  <xsl:template match="widget[@type='AnimateRotation']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2340
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2341
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2342
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2343
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2344
      <xsl:text>AnimateRotation - DEPRECATED, do not use.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2345
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2346
      <xsl:text>Doesn't follow WYSIWYG principle, and forces user to add animateTransform tag in SVG (using inkscape XML editor for exemple)
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2347
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2348
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2349
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2350
      <xsl:text>AnimateRotation - DEPRECATED</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2351
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2352
    <path name="speed" accepts="HMI_INT,HMI_REAL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2353
      <xsl:text>speed</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2354
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2355
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2356
  <xsl:template match="widget[@type='AnimateRotation']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2357
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2358
    <xsl:text>AnimateRotationWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2359
    <xsl:text> extends Widget{
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2360
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2361
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2362
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2363
    <xsl:text>    speed = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2364
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2365
    <xsl:text>    widget_center = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2366
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2367
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2368
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2369
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2370
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2371
    <xsl:text>        this.speed = value / 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2372
</xsl:text>
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>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2375
    <xsl:text>        //reconfigure animation
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>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2378
</xsl:text>
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>
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>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2383
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2384
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2385
    <xsl:text>       // change animation properties
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2386
</xsl:text>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2387
    <xsl:text>       // TODO : rewrite with proper es6
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2388
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2389
    <xsl:text>       for(let child of this.element.children){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2390
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2391
    <xsl:text>            if(child.nodeName == "animateTransform"){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2392
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2393
    <xsl:text>                if(this.speed &gt; 0){
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>                    child.setAttribute("dur", this.speed+"s");
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>                    child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2398
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2399
    <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
  2400
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2401
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2402
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2403
    <xsl:text>                else if(this.speed &lt; 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2404
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2405
    <xsl:text>                    child.setAttribute("dur", (-1)*this.speed+"s");
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2406
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2407
    <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
  2408
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2409
    <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
  2410
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2411
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2412
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2413
    <xsl:text>                else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2414
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2415
    <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
  2416
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2417
    <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
  2418
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2419
    <xsl:text>                }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2420
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2421
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2422
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2423
    <xsl:text>       }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2424
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2425
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2426
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2427
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2428
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2429
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2430
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2431
    <xsl:text>        let widget_pos = this.element.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2432
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2433
    <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
  2434
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2435
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2436
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2437
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2438
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2439
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2440
  <xsl:template match="widget[@type='Back']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2441
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2442
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2443
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2444
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2445
      <xsl:text>Back widget brings focus back to previous page in history when clicked.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2446
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2447
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2448
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2449
      <xsl:text>Jump to previous page</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2450
    </shortdesc>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  2451
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2452
  <xsl:template match="widget[@type='Back']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2453
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2454
    <xsl:text>BackWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2455
    <xsl:text> extends Widget{
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
  2456
</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
  2457
    <xsl:text>    on_click(evt) {
2902
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2458
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2459
    <xsl:text>        if(jump_history.length &gt; 1){
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2460
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2461
    <xsl:text>           jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2462
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2463
    <xsl:text>           let [page_name, index] = jump_history.pop();
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2464
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2465
    <xsl:text>           switch_page(page_name, index);
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2466
</xsl:text>
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2467
    <xsl:text>        }
1fcb50af0335 SVGHMI: added Back widget.
Edouard Tisserant
parents: 2901
diff changeset
  2468
</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
  2469
    <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
  2470
</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
  2471
    <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
  2472
</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
  2473
    <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
  2474
</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
  2475
    <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
  2476
</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
  2477
    <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
  2478
</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
  2479
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2480
  <xsl:template match="widget[@type='Button']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2481
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2482
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2483
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2484
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2485
      <xsl:text>Button widget takes one boolean variable path, and reflect current true
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2486
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2487
      <xsl:text>or false value by showing "active" or "inactive" labeled element
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2488
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2489
      <xsl:text>respectively. Pressing and releasing button changes variable to true and
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2490
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2491
      <xsl:text>false respectively. Potential inconsistency caused by quick consecutive
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2492
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2493
      <xsl:text>presses on the button is mitigated by using a state machine that wait for
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2494
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2495
      <xsl:text>previous state change to be reflected on variable before applying next one.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2496
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2497
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2498
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2499
      <xsl:text>Push button reflecting consistently given boolean variable</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2500
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2501
    <path name="value" accepts="HMI_BOOL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2502
      <xsl:text>Boolean variable</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2503
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2504
  </xsl:template>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2505
  <xsl:variable name="_push_button_fsm">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2506
    <fsm>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2507
      <state name="init">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2508
        <on-dispatch value="false">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2509
          <jump state="reflect_off"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2510
        </on-dispatch>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2511
        <on-dispatch value="true">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2512
          <jump state="reflect_on"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2513
        </on-dispatch>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2514
      </state>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2515
      <state name="reflect_on">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2516
        <show eltname="active"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2517
        <on-mouse position="down">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2518
          <jump state="on"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2519
        </on-mouse>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2520
        <on-mouse position="up">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2521
          <jump state="off"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2522
        </on-mouse>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2523
        <on-dispatch value="false">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2524
          <jump state="reflect_off"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2525
        </on-dispatch>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2526
      </state>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2527
      <state name="on">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2528
        <hmi-value value="true"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2529
        <show eltname="active"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2530
        <on-mouse position="up">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2531
          <jump state="off"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2532
        </on-mouse>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2533
        <on-dispatch value="false">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2534
          <jump state="reflect_off"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2535
        </on-dispatch>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2536
      </state>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2537
      <state name="reflect_off">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2538
        <show eltname="inactive"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2539
        <on-mouse position="down">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2540
          <jump state="on"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2541
        </on-mouse>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2542
        <on-mouse position="up">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2543
          <jump state="off"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2544
        </on-mouse>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2545
        <on-dispatch value="true">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2546
          <jump state="reflect_on"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2547
        </on-dispatch>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2548
      </state>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2549
      <state name="off">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2550
        <hmi-value value="false"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2551
        <show eltname="inactive"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2552
        <on-mouse position="down">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2553
          <jump state="on"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2554
        </on-mouse>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2555
        <on-dispatch value="true">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2556
          <jump state="reflect_on"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2557
        </on-dispatch>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2558
      </state>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2559
    </fsm>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2560
  </xsl:variable>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2561
  <xsl:variable name="_button_fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2562
    <fsm>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2563
      <state name="init">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2564
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2565
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2566
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2567
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2568
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2569
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2570
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2571
      <state name="pressing">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2572
        <hmi-value value="true"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2573
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2574
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2575
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2576
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2577
          <jump state="shortpress"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2578
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2579
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2580
      <state name="pressed">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2581
        <show eltname="active"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2582
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2583
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2584
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2585
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2586
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2587
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2588
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2589
      <state name="shortpress">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2590
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2591
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2592
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2593
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2594
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2595
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2596
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2597
      <state name="releasing">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2598
        <hmi-value value="false"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2599
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2600
          <jump state="released"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2601
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2602
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2603
          <jump state="shortrelease"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2604
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2605
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2606
      <state name="released">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2607
        <show eltname="inactive"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2608
        <on-mouse position="down">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2609
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2610
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2611
        <on-dispatch value="true">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2612
          <jump state="pressed"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2613
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2614
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2615
      <state name="shortrelease">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2616
        <on-dispatch value="false">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2617
          <jump state="pressing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2618
        </on-dispatch>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2619
        <on-mouse position="up">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2620
          <jump state="releasing"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2621
        </on-mouse>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2622
      </state>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2623
    </fsm>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2624
  </xsl:variable>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2625
  <xsl:template mode="dispatch_transition" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2626
    <xsl:text>        switch (this.state) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2627
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2628
    <xsl:apply-templates mode="dispatch_transition" select="state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2629
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2630
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2631
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2632
  <xsl:template mode="dispatch_transition" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2633
    <xsl:text>          case "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2634
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2635
    <xsl:text>":
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2636
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2637
    <xsl:apply-templates select="on-dispatch"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2638
    <xsl:text>            break;
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2639
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2640
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2641
  <xsl:template match="on-dispatch">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2642
    <xsl:text>            if(value ==  </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2643
    <xsl:value-of select="@value"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2644
    <xsl:text>) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2645
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2646
    <xsl:apply-templates mode="transition" select="jump"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2647
    <xsl:text>            }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2648
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2649
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2650
  <xsl:template mode="mouse_transition" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2651
    <xsl:param name="position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2652
    <xsl:text>        switch (this.state) {
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2653
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2654
    <xsl:apply-templates mode="mouse_transition" select="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2655
      <xsl:with-param name="position" select="$position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2656
    </xsl:apply-templates>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2657
    <xsl:text>        }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2658
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2659
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2660
  <xsl:template mode="mouse_transition" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2661
    <xsl:param name="position"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2662
    <xsl:text>          case "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2663
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2664
    <xsl:text>":
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2665
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2666
    <xsl:apply-templates select="on-mouse[@position = $position]"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2667
    <xsl:text>            break;
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2668
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2669
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2670
  <xsl:template match="on-mouse">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2671
    <xsl:apply-templates mode="transition" select="jump"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2672
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2673
  <xsl:template mode="transition" match="jump">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2674
    <xsl:text>            this.state = "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2675
    <xsl:value-of select="@state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2676
    <xsl:text>";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2677
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2678
    <xsl:text>            this.</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2679
    <xsl:value-of select="@state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2680
    <xsl:text>_action();
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2681
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2682
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2683
  <xsl:template mode="actions" match="fsm">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2684
    <xsl:apply-templates mode="actions" select="state"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2685
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2686
  <xsl:template mode="actions" match="state">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2687
    <xsl:text>    </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2688
    <xsl:value-of select="@name"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2689
    <xsl:text>_action(){
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2690
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2691
    <xsl:apply-templates mode="actions" select="*"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2692
    <xsl:text>    }
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2693
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2694
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2695
  <xsl:template mode="actions" match="show">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2696
    <xsl:text>        this.display = "</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2697
    <xsl:value-of select="@eltname"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2698
    <xsl:text>";
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2699
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2700
    <xsl:text>        this.request_animate();
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2701
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2702
  </xsl:template>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2703
  <xsl:template mode="actions" match="hmi-value">
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2704
    <xsl:text>        this.apply_hmi_value(0, </xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2705
    <xsl:value-of select="@value"/>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2706
    <xsl:text>);
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2707
</xsl:text>
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2708
  </xsl:template>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2709
  <xsl:template name="generated_button_class">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2710
    <xsl:param name="fsm"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2711
    <xsl:text>    display = "inactive";
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2712
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2713
    <xsl:text>    state = "init";
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2714
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2715
    <xsl:text>    dispatch(value) {
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2716
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2717
    <xsl:apply-templates mode="dispatch_transition" select="$fsm"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2718
    <xsl:text>    }
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2719
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2720
    <xsl:text>    onmouseup(evt) {
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2721
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2722
    <xsl:text>        svg_root.removeEventListener("pointerup", this.bound_onmouseup, true);
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2723
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2724
    <xsl:apply-templates mode="mouse_transition" select="$fsm">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2725
      <xsl:with-param name="position" select="'up'"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2726
    </xsl:apply-templates>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2727
    <xsl:text>    }
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2728
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2729
    <xsl:text>    onmousedown(evt) {
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2730
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2731
    <xsl:text>        svg_root.addEventListener("pointerup", this.bound_onmouseup, true);
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2732
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2733
    <xsl:apply-templates mode="mouse_transition" select="$fsm">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2734
      <xsl:with-param name="position" select="'down'"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2735
    </xsl:apply-templates>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2736
    <xsl:text>    }
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2737
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2738
    <xsl:apply-templates mode="actions" select="$fsm"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2739
    <xsl:text>    animate(){
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2740
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2741
    <xsl:text>        this.set_activation_state(this.display == "active");
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2742
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2743
    <xsl:text>    }
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2744
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2745
    <xsl:text>    init() {
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2746
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2747
    <xsl:text>        this.bound_onmouseup = this.onmouseup.bind(this);
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2748
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2749
    <xsl:text>        this.element.addEventListener("pointerdown", this.onmousedown.bind(this));
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2750
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2751
    <xsl:text>        this.set_activation_state(undefined);
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2752
</xsl:text>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2753
    <xsl:text>    }
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2754
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2755
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2756
  <xsl:template match="widget[@type='Button']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2757
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2758
    <xsl:text>ButtonWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2759
    <xsl:text> extends Widget{
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2760
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2761
    <xsl:text>    frequency = 5;
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2762
</xsl:text>
3085
6b1b23971960 SVGHMI: Rewrote button widget.
Edouard Tisserant
parents: 3084
diff changeset
  2763
    <xsl:variable name="fsm" select="exsl:node-set($_button_fsm)"/>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2764
    <xsl:call-template name="generated_button_class">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2765
      <xsl:with-param name="fsm" select="$fsm"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2766
    </xsl:call-template>
3024
Edouard Tisserant
parents: 3022 3021
diff changeset
  2767
    <xsl:text>}
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2768
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2769
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2770
  <xsl:template match="widget[@type='Button']" mode="widget_defs">
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2771
    <xsl:param name="hmi_element"/>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2772
    <xsl:text>    activable_sub:{
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2773
</xsl:text>
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2774
    <xsl:call-template name="defs_by_labels">
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2775
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2776
      <xsl:with-param name="labels">
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2777
        <xsl:text>/active /inactive</xsl:text>
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2778
      </xsl:with-param>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2779
      <xsl:with-param name="mandatory" select="'warn'"/>
2976
99c4521bb844 SVGHMI: Changed widget button handler to element attribute.
dgaberscek
parents: 2970
diff changeset
  2780
    </xsl:call-template>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2781
    <xsl:text>    }
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2782
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  2783
  </xsl:template>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2784
  <xsl:template match="widget[@type='PushButton']" mode="widget_class">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2785
    <xsl:text>class </xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2786
    <xsl:text>PushButtonWidget</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2787
    <xsl:text> extends Widget{
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2788
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2789
    <xsl:text>    frequency = 20;
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  2790
</xsl:text>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2791
    <xsl:variable name="fsm" select="exsl:node-set($_push_button_fsm)"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2792
    <xsl:call-template name="generated_button_class">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2793
      <xsl:with-param name="fsm" select="$fsm"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2794
    </xsl:call-template>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2795
    <xsl:text>}
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2796
</xsl:text>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2797
  </xsl:template>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2798
  <xsl:template match="widget[@type='PushButton']" mode="widget_defs">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2799
    <xsl:param name="hmi_element"/>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2800
    <xsl:text>    activable_sub:{
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2801
</xsl:text>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2802
    <xsl:call-template name="defs_by_labels">
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2803
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2804
      <xsl:with-param name="labels">
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2805
        <xsl:text>/active /inactive</xsl:text>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2806
      </xsl:with-param>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  2807
      <xsl:with-param name="mandatory" select="'warn'"/>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2808
    </xsl:call-template>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2809
    <xsl:text>    }
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  2810
</xsl:text>
3414
0ff608310312 SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3410
diff changeset
  2811
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2812
  <xsl:template match="widget[@type='CircularBar']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2813
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2814
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2815
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2816
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2817
      <xsl:text>CircularBar widget changes the end angle of a "path" labeled arc according
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2818
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2819
      <xsl:text>to value of the single accepted variable.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2820
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2821
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2822
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2823
      <xsl:text>If "min" a "max" labeled texts are provided, then they are used as
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2824
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2825
      <xsl:text>respective minimum and maximum value. Otherwise, value is expected to be
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2826
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2827
      <xsl:text>in between 0 and 100.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2828
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2829
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2830
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2831
      <xsl:text>Change end angle of Inkscape's arc</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2832
    </shortdesc>
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2833
    <arg name="min" count="optional" accepts="int,real">
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2834
      <xsl:text>minimum value</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2835
    </arg>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2836
    <arg name="max" count="optional" accepts="int,real">
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2837
      <xsl:text>maximum value</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2838
    </arg>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2839
    <path name="value" accepts="HMI_INT,HMI_REAL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2840
      <xsl:text>Value to display</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2841
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2842
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2843
  <xsl:template match="widget[@type='CircularBar']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2844
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2845
    <xsl:text>CircularBarWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2846
    <xsl:text> extends Widget{
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2847
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2848
    <xsl:text>    frequency = 10;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2849
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2850
    <xsl:text>    range = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2851
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2852
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2853
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2854
    <xsl:text>    dispatch(value) {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2855
</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
  2856
    <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
  2857
</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
  2858
    <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
  2859
</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
  2860
    <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
  2861
</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
  2862
    <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
  2863
</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
  2864
    <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
  2865
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2866
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2867
</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
  2868
    <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
  2869
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2870
    <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
  2871
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2872
    <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
  2873
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2874
    <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
  2875
</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
  2876
    <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
  2877
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2878
    <xsl:text>        let size = 0;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2879
</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
  2880
    <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
  2881
</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
  2882
    <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
  2883
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2884
    <xsl:text>            size = 1;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2885
</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
  2886
    <xsl:text>        else
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2887
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2888
    <xsl:text>            size = 0;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2889
</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
  2890
    <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
  2891
</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
  2892
    <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
  2893
</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
  2894
    <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
  2895
</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
  2896
    <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
  2897
</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
  2898
    <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
  2899
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2900
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2901
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2902
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2903
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2904
    <xsl:text>    init() {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2905
</xsl:text>
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2906
    <xsl:text>        if(this.args.length &gt;= 2)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2907
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2908
    <xsl:text>            [this.min, this.max]=this.args;
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2909
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2910
    <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2911
</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
  2912
    <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
  2913
</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
  2914
    <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
  2915
</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
  2916
    <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
  2917
</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
  2918
    <xsl:text>        if (ry == 0) 
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2919
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2920
    <xsl:text>            ry = rx;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2921
</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
  2922
    <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
  2923
</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
  2924
    <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
  2925
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2926
    <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
  2927
</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
  2928
    <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
  2929
</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
  2930
    <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
  2931
</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
  2932
    <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
  2933
</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
  2934
    <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
  2935
</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
  2936
    <xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2937
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2938
    <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
  2939
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2940
    <xsl:text>        this.center = [cx, cy];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2941
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2942
    <xsl:text>        this.proportions = [rx, ry];
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2943
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2944
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2945
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2946
    <xsl:text>}
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2947
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  2948
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  2949
  <xsl:template match="widget[@type='CircularBar']" mode="widget_defs">
2944
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2950
    <xsl:param name="hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2951
    <xsl:call-template name="defs_by_labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2952
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2953
      <xsl:with-param name="labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2954
        <xsl:text>path</xsl:text>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2955
      </xsl:with-param>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2956
    </xsl:call-template>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2957
    <xsl:call-template name="defs_by_labels">
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2958
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2959
      <xsl:with-param name="labels">
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  2960
        <xsl:text>min max</xsl:text>
2944
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2961
      </xsl:with-param>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2962
      <xsl:with-param name="mandatory" select="'no'"/>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2963
    </xsl:call-template>
2a20038fbea9 Added button and circular bar widgets.
dgaberscek
parents: 2943
diff changeset
  2964
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2965
  <xsl:template match="widget[@type='CircularSlider']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2966
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2967
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2968
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2969
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2970
      <xsl:text>CircularSlider - DEPRECATED, to be replaced by PathSlider
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2971
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2972
      <xsl:text>This widget moves "handle" labeled group along "range" labeled
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2973
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2974
      <xsl:text>arc, according to value of the single accepted variable.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2975
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2976
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2977
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2978
      <xsl:text>If "min" a "max" labeled texts are provided, or if first and second
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2979
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2980
      <xsl:text>argument are given, then they are used as respective minimum and maximum
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2981
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2982
      <xsl:text>value. Otherwise, value is expected to be in between 0 and 100.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2983
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2984
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2985
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2986
      <xsl:text>If "value" labeled text is found, then its content is replaced by value.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2987
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2988
      <xsl:text>During drag, "setpoint" labeled group is moved to position defined by user
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2989
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2990
      <xsl:text>while "handle" reflects current value from variable.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2991
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2992
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2993
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2994
      <xsl:text>CircularSlider - DEPRECATED</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2995
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2996
    <arg name="min" count="optional" accepts="int,real">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2997
      <xsl:text>minimum value</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2998
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  2999
    <arg name="min" count="optional" accepts="int,real">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3000
      <xsl:text>maximum value</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3001
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3002
    <path name="value" accepts="HMI_INT,HMI_REAL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3003
      <xsl:text>Value to display</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3004
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3005
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3006
  <xsl:template match="widget[@type='CircularSlider']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3007
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3008
    <xsl:text>CircularSliderWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3009
    <xsl:text> extends Widget{
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3010
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3011
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3012
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3013
    <xsl:text>    range = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3014
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3015
    <xsl:text>    circle = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3016
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3017
    <xsl:text>    handle_pos = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3018
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3019
    <xsl:text>    curr_value = 0;
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3020
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3021
    <xsl:text>    drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3022
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3023
    <xsl:text>    enTimer = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3024
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3025
    <xsl:text>    last_drag = false;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3026
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3027
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3028
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3029
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3030
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3031
    <xsl:text>        let [min,max,start,totallength] = this.range;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3032
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3033
    <xsl:text>        //save current value inside widget
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3034
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3035
    <xsl:text>        this.curr_value = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3036
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3037
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3038
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3039
    <xsl:text>        //check if in range
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3040
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3041
    <xsl:text>        if (this.curr_value &gt; max){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3042
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3043
    <xsl:text>            this.curr_value = max;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3044
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3045
    <xsl:text>            this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3046
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3047
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3048
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3049
    <xsl:text>        else if (this.curr_value &lt; min){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3050
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3051
    <xsl:text>            this.curr_value = min;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3052
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3053
    <xsl:text>            this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3054
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3055
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3056
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3057
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3058
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3059
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3060
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3061
    <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
  3062
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3063
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3064
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3065
    <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
  3066
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3067
    <xsl:text>        if(!this.drag || (this.setpoint_elt != undefined)){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3068
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3069
    <xsl:text>            this.update_DOM(value, this.handle_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3070
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3071
    <xsl:text>        }
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3072
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3073
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3074
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3075
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3076
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3077
    <xsl:text>    update_DOM(value, elt){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3078
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3079
    <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
  3080
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3081
    <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
  3082
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3083
    <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
  3084
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3085
    <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
  3086
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3087
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3088
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3089
    <xsl:text>        // show or hide ghost if exists
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3090
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3091
    <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
  3092
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3093
    <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
  3094
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3095
    <xsl:text>                if(this.drag){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3096
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3097
    <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
  3098
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3099
    <xsl:text>                }else{
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3100
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3101
    <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
  3102
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3103
    <xsl:text>                }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3104
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3105
    <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
  3106
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3107
    <xsl:text>            }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3108
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3109
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3110
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3111
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3112
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3113
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3114
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3115
    <xsl:text>    on_release(evt) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3116
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3117
    <xsl:text>        //unbind events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3118
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3119
    <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
  3120
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3121
    <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
  3122
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3123
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3124
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3125
    <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
  3126
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3127
    <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
  3128
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3129
    <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
  3130
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3131
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3132
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3133
    <xsl:text>        //reset drag flag
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3134
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3135
    <xsl:text>        if(this.drag){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3136
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3137
    <xsl:text>            this.drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3138
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3139
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3140
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3141
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3142
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3143
    <xsl:text>        // get final position
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3144
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3145
    <xsl:text>        this.update_position(evt);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3146
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3147
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3148
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3149
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3150
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3151
    <xsl:text>    on_drag(evt){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3152
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3153
    <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
  3154
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3155
    <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
  3156
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3157
    <xsl:text>            this.update_position(evt);
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3158
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3159
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3160
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3161
    <xsl:text>            //reset timer
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3162
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3163
    <xsl:text>            this.enTimer = false;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3164
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3165
    <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
  3166
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3167
    <xsl:text>        }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3168
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3169
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3170
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3171
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3172
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3173
    <xsl:text>    update_position(evt){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3174
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3175
    <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
  3176
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3177
    <xsl:text>            var svg_dist = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3178
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3179
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3180
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3181
    <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
  3182
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3183
    <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
  3184
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3185
    <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
  3186
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3187
    <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
  3188
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3189
    <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
  3190
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3191
    <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
  3192
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3193
    <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
  3194
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3195
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3196
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3197
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3198
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3199
    <xsl:text>            //get mouse coordinates
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3200
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3201
    <xsl:text>            let mouseX = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3202
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3203
    <xsl:text>            let mouseY = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3204
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3205
    <xsl:text>            if (evt.type.startsWith("touch")){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3206
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3207
    <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
  3208
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3209
    <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
  3210
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3211
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3212
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3213
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3214
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3215
    <xsl:text>                mouseX = evt.pageX;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3216
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3217
    <xsl:text>                mouseY = evt.pageY;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3218
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3219
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3220
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3221
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3222
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3223
    <xsl:text>            //calculate angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3224
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3225
    <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
  3226
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3227
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3228
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3229
    <xsl:text>            // transform from 0 to 2PI
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3230
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3231
    <xsl:text>            if (fi &gt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3232
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3233
    <xsl:text>                fi = 2*Math.PI-fi;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3234
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3235
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3236
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3237
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3238
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3239
    <xsl:text>                fi = -fi;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3240
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3241
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3242
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3243
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3244
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3245
    <xsl:text>            //offset it to 0
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3246
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3247
    <xsl:text>            fi = fi - fiStart;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3248
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3249
    <xsl:text>            if (fi &lt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3250
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3251
    <xsl:text>                fi = fi + 2*Math.PI;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3252
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3253
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3254
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3255
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3256
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3257
    <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
  3258
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3259
    <xsl:text>            if(fi&lt;fiEnd){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3260
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3261
    <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
  3262
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3263
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3264
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3265
    <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
  3266
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3267
    <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
  3268
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3269
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3270
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3271
    <xsl:text>            else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3272
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3273
    <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
  3274
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3275
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3276
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3277
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3278
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3279
    <xsl:text>            //apply value to hmi
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3280
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3281
    <xsl:text>            this.apply_hmi_value(0, Math.ceil(this.curr_value));
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3282
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3283
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3284
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3285
    <xsl:text>            //redraw handle
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3286
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3287
    <xsl:text>            this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3288
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3289
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3290
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3291
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3292
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3293
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3294
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3295
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3296
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3297
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3298
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3299
    <xsl:text>    animate(){
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3300
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3301
    <xsl:text>        // redraw handle on screen refresh
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3302
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3303
    <xsl:text>        // check if setpoint(ghost) handle exsist otherwise update main handle
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3304
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3305
    <xsl:text>        if(this.setpoint_elt != undefined){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3306
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3307
    <xsl:text>            this.update_DOM(this.curr_value, this.setpoint_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3308
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3309
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3310
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3311
    <xsl:text>        else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3312
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3313
    <xsl:text>            this.update_DOM(this.curr_value, this.handle_elt);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3314
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3315
    <xsl:text>        }
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3316
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3317
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3318
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3319
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3320
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3321
    <xsl:text>    on_select(evt){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3322
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3323
    <xsl:text>        //enable drag flag and timer
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3324
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3325
    <xsl:text>        this.drag = true;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3326
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3327
    <xsl:text>        this.enTimer = true;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3328
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3329
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3330
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3331
    <xsl:text>        //bind events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3332
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3333
    <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
  3334
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3335
    <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
  3336
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3337
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3338
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3339
    <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
  3340
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3341
    <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
  3342
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3343
    <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
  3344
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3345
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3346
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3347
    <xsl:text>        //update postion on mouse press
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3348
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3349
    <xsl:text>        this.update_position(evt);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3350
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3351
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3352
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3353
    <xsl:text>        //prevent next events
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3354
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3355
    <xsl:text>        evt.stopPropagation();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3356
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3357
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3358
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3359
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3360
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3361
    <xsl:text>    init() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3362
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3363
    <xsl:text>        //get min max
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3364
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3365
    <xsl:text>        let min = this.min_elt ?
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3366
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3367
    <xsl:text>                    Number(this.min_elt.textContent) :
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3368
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3369
    <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
  3370
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3371
    <xsl:text>        let max = this.max_elt ?
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3372
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3373
    <xsl:text>                    Number(this.max_elt.textContent) :
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3374
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3375
    <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
  3376
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3377
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3378
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3379
    <xsl:text>        //fiStart ==&gt; offset
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3380
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3381
    <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
  3382
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3383
    <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
  3384
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3385
    <xsl:text>        fiEnd = fiEnd - fiStart;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3386
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3387
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3388
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3389
    <xsl:text>        //fiEnd ==&gt; size of angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3390
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3391
    <xsl:text>        if (fiEnd &lt; 0){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3392
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3393
    <xsl:text>            fiEnd = 2*Math.PI + fiEnd;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3394
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3395
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3396
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3397
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3398
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3399
    <xsl:text>        //min max barrier angle
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3400
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3401
    <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
  3402
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3403
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3404
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3405
    <xsl:text>        //get parameters from svg
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3406
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3407
    <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
  3408
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3409
    <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
  3410
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3411
    <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
  3412
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3413
    <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
  3414
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3415
    <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
  3416
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3417
    <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
  3418
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3419
    <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
  3420
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3421
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3422
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3423
    <xsl:text>        //bind functions
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3424
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3425
    <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
  3426
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3427
    <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
  3428
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3429
    <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
  3430
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3431
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3432
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3433
    <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
  3434
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3435
    <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
  3436
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3437
    <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
  3438
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3439
    <xsl:text>        //touch recognised as page drag without next command
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3440
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3441
    <xsl:text>        document.body.addEventListener("touchstart", function(e){}, false);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3442
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3443
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3444
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3445
    <xsl:text>        //save ghost style
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3446
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3447
    <xsl:text>        //save ghost style
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3448
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3449
    <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
  3450
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3451
    <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
  3452
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3453
    <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
  3454
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3455
    <xsl:text>        }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3456
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  3457
    <xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3458
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3459
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3460
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3461
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3462
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3463
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3464
  <xsl:template match="widget[@type='CircularSlider']" mode="widget_defs">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3465
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3466
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3467
      <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
  3468
      <xsl:with-param name="labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3469
        <xsl:text>handle range</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3470
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3471
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3472
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3473
      <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
  3474
      <xsl:with-param name="labels">
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3475
        <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
  3476
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3477
      <xsl:with-param name="mandatory" select="'no'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3478
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3479
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3480
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  3481
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3482
  <xsl:template match="widget[@type='CustomHtml']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3483
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3484
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3485
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3486
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3487
      <xsl:text>CustomHtml widget allows insertion of HTML code in a svg:foreignObject.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3488
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3489
      <xsl:text>Widget content is replaced by foreignObject. HTML code is obtained from
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3490
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3491
      <xsl:text>"code" labeled text content. HTML insert position and size is given with
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3492
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3493
      <xsl:text>"container" labeled element.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3494
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3495
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3496
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3497
      <xsl:text>Custom HTML insert</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3498
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3499
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3500
  <xsl:template match="widget[@type='CustomHtml']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3501
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3502
    <xsl:text>CustomHtmlWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3503
    <xsl:text> extends Widget{
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3504
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3505
    <xsl:text>    frequency = 5;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3506
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3507
    <xsl:text>    widget_size = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3508
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3509
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3510
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3511
    <xsl:text>    dispatch(value) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3512
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3513
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3514
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3515
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3516
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3517
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3518
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3519
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3520
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3521
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3522
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3523
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3524
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3525
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3526
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3527
    <xsl:text>        this.widget_size = this.container_elt.getBBox();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3528
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3529
    <xsl:text>        this.element.innerHTML ='&lt;foreignObject x="'+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3530
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3531
    <xsl:text>            this.widget_size.x+'" y="'+this.widget_size.y+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3532
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3533
    <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
  3534
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3535
    <xsl:text>            this.code_elt.textContent+
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3536
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3537
    <xsl:text>            ' &lt;/foreignObject&gt;';
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3538
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3539
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3540
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3541
    <xsl:text>}
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3542
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3543
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3544
  <xsl:template match="widget[@type='CustomHtml']" mode="widget_defs">
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3545
    <xsl:param name="hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3546
    <xsl:call-template name="defs_by_labels">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3547
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3548
      <xsl:with-param name="labels">
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3549
        <xsl:text>container code</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3550
      </xsl:with-param>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3551
    </xsl:call-template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3552
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3553
  <xsl:template match="widget[@type='Display']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3554
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3555
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3556
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3557
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3558
      <xsl:text>If Display widget is a svg:text element, then text content is replaced by
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3559
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3560
      <xsl:text>value of given variables, space separated.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3561
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3562
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3563
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3564
      <xsl:text>Otherwise, if Display widget is a group containing a svg:text element
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3565
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3566
      <xsl:text>labelled "format", then text content is replaced by printf-like formated
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3567
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3568
      <xsl:text>string. In other words, if "format" labeled text is "%d %s %f", then 3
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3569
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3570
      <xsl:text>variables paths are expected : HMI_IN, HMI_STRING and HMI_REAL.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3571
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3572
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3573
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3574
      <xsl:text>In case Display widget is a svg::text element, it is also possible to give
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3575
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3576
      <xsl:text>format string as first argument.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3577
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3578
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3579
    <shortdesc>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3580
      <xsl:text>Printf-like formated text display</xsl:text>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3581
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3582
    <arg name="format" count="optional" accepts="string">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3583
      <xsl:text>printf-like format string when not given as svg:text</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3584
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3585
    <path name="fields" count="many" accepts="HMI_INT,HMI_REAL,HMI_STRING,HMI_BOOL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3586
      <xsl:text>variables to be displayed</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3587
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3588
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3589
  <xsl:template match="widget[@type='Display']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3590
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3591
    <xsl:text>DisplayWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3592
    <xsl:text> extends Widget{
2998
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3593
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3594
    <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
  3595
</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
  3596
    <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
  3597
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3598
    <xsl:text>        this.fields[index] = value;
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3599
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3600
    <xsl:text>        if(!this.ready){
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3601
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3602
    <xsl:text>            this.readyfields[index] = true;
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3603
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3604
    <xsl:text>            this.ready = this.readyfields.every(x=&gt;x);
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3605
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3606
    <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
  3607
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3608
    <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
  3609
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3610
    <xsl:text>    }
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3611
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3612
    <xsl:text>}
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3613
</xsl:text>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3614
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3615
  <xsl:template match="widget[@type='Display']" mode="widget_defs">
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
  3616
    <xsl:param name="hmi_element"/>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3617
    <xsl:variable name="format">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3618
      <xsl:call-template name="defs_by_labels">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3619
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3620
        <xsl:with-param name="labels">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3621
          <xsl:text>format</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3622
        </xsl:with-param>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3623
        <xsl:with-param name="mandatory" select="'no'"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3624
      </xsl:call-template>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3625
    </xsl:variable>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3626
    <xsl:variable name="has_format" select="string-length($format)&gt;0"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3627
    <xsl:value-of select="$format"/>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3628
    <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
  3629
      <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
  3630
        <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
  3631
        <xsl:value-of select="$hmi_element/@id"/>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3632
        <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
  3633
      </xsl:message>
e8f707d99dc3 SVGHMI: Update Widget Display templates to generate Class based declaration.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2997
diff changeset
  3634
    </xsl:if>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3635
    <xsl:variable name="field_initializer">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3636
      <xsl:for-each select="path">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3637
        <xsl:choose>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3638
          <xsl:when test="@type='HMI_STRING'">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3639
            <xsl:text>""</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3640
          </xsl:when>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3641
          <xsl:otherwise>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3642
            <xsl:text>0</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  3643
          </xsl:otherwise>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3644
        </xsl:choose>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3645
        <xsl:if test="position()!=last()">
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3646
          <xsl:text>,</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3647
        </xsl:if>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3648
      </xsl:for-each>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3649
    </xsl:variable>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3650
    <xsl:text>    fields: [</xsl:text>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3651
    <xsl:value-of select="$field_initializer"/>
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
  3652
    <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
  3653
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3654
    <xsl:variable name="readyfield_initializer">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3655
      <xsl:for-each select="path">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3656
        <xsl:text>false</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3657
        <xsl:if test="position()!=last()">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3658
          <xsl:text>,</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3659
        </xsl:if>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3660
      </xsl:for-each>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3661
    </xsl:variable>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3662
    <xsl:text>    readyfields: [</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3663
    <xsl:value-of select="$readyfield_initializer"/>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3664
    <xsl:text>],
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3665
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3666
    <xsl:text>    ready: false,
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3667
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3668
    <xsl:text>    animate: function(){
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3669
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3670
    <xsl:choose>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3671
      <xsl:when test="$has_format">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3672
        <xsl:text>      if(this.format_elt.getAttribute("lang")) {
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3673
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3674
        <xsl:text>          this.format = svg_text_to_multiline(this.format_elt);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3675
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3676
        <xsl:text>          this.format_elt.removeAttribute("lang");
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3677
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3678
        <xsl:text>      }
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3679
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3680
        <xsl:text>      let str = vsprintf(this.format,this.fields);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3681
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3682
        <xsl:text>      multiline_to_svg_text(this.format_elt, str, !this.ready);
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3683
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3684
      </xsl:when>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3685
      <xsl:otherwise>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3686
        <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
  3687
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3688
        <xsl:text>      multiline_to_svg_text(this.element, str, !this.ready);
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3689
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3690
      </xsl:otherwise>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3691
    </xsl:choose>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3692
    <xsl:text>    },
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3693
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3694
    <xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3695
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3696
    <xsl:text>    init: function() {
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3697
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3698
    <xsl:if test="$has_format">
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3699
      <xsl:text>      this.format = svg_text_to_multiline(this.format_elt);
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3700
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  3701
    </xsl:if>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3702
    <xsl:text>      this.animate();
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3703
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3704
    <xsl:text>    },
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  3705
</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
  3706
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3707
  <xsl:template match="widget[@type='DropDown']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3708
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3709
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3710
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3711
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3712
      <xsl:text>DropDown widget let user select an entry in a list of texts, given as
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3713
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3714
      <xsl:text>arguments. Single variable path is index of selection.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3715
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3716
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3717
</xsl:text>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3718
      <xsl:text>It needs "text" (svg:text or svg:use referring to svg:text),
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3719
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3720
      <xsl:text>"box" (svg:rect), "button" (svg:*), and "highlight" (svg:rect)
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3721
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3722
      <xsl:text>labeled elements.
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3723
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3724
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3725
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3726
      <xsl:text>When user clicks on "button", "text" is duplicated to display enties in the
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3727
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3728
      <xsl:text>limit of available space in page, and "box" is extended to contain all
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3729
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3730
      <xsl:text>texts. "highlight" is moved over pre-selected entry.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3731
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3732
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3733
</xsl:text>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3734
      <xsl:text>When only one argument is given and argment contains "#langs" then list of
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3735
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3736
      <xsl:text>texts is automatically set to the human-readable list of supported
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3737
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3738
      <xsl:text>languages by this HMI. 
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3739
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3740
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3741
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3742
      <xsl:text>If "text" labeled element is of type svg:use and refers to a svg:text 
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3743
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3744
      <xsl:text>element part of a TextList widget, no argument is expected. In that case
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3745
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3746
      <xsl:text>list of texts is set to TextList content.
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3747
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3748
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3749
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3750
      <xsl:text>Let user select text entry in a drop-down menu</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3751
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3752
    <arg name="entries" count="many" accepts="string">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3753
      <xsl:text>drop-down menu entries</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3754
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3755
    <path name="selection" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3756
      <xsl:text>selection index</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3757
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  3758
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3759
  <xsl:template match="widget[@type='DropDown']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3760
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3761
    <xsl:text>DropDownWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3762
    <xsl:text> extends Widget{
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3763
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3764
    <xsl:text>        dispatch(value) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3765
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3766
    <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
  3767
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3768
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3769
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3770
    <xsl:text>        init() {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3771
</xsl:text>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3772
    <xsl:text>            this.init_specific();
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3773
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3774
    <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
  3775
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3776
    <xsl:text>            // Save original size of rectangle
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3777
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3778
    <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
  3779
</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
  3780
    <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
  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>            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
  3783
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3784
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3785
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3786
    <xsl:text>            // Compute margins
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3787
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3788
    <xsl:text>            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
  3789
</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
  3790
    <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
  3791
</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
  3792
    <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
  3793
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3794
    <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
  3795
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3796
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3797
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3798
    <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
  3799
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3800
    <xsl:text>            this.menu_offset = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3801
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3802
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3803
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3804
    <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
  3805
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3806
    <xsl:text>            this.lift = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3807
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3808
    <xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3809
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3810
    <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
  3811
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3812
    <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
  3813
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3814
    <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
  3815
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3816
    <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
  3817
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3818
    <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
  3819
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3820
    <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
  3821
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3822
    <xsl:text>            this.opened = false;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3823
</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
  3824
    <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
  3825
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3826
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3827
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3828
    <xsl:text>        on_button_click() {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3829
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3830
    <xsl:text>            this.open();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3831
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3832
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3833
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3834
    <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
  3835
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3836
    <xsl:text>        on_selection_click(selection) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3837
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3838
    <xsl:text>            this.close();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3839
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3840
    <xsl:text>            this.apply_hmi_value(0, selection);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3841
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3842
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3843
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3844
    <xsl:text>        on_backward_click(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3845
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3846
    <xsl:text>            this.scroll(false);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3847
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3848
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3849
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3850
    <xsl:text>        on_forward_click(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3851
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3852
    <xsl:text>            this.scroll(true);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3853
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3854
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3855
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3856
    <xsl:text>        set_selection(value) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3857
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3858
    <xsl:text>            let display_str;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3859
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3860
    <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
  3861
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3862
    <xsl:text>                // if valid selection resolve content
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3863
</xsl:text>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  3864
    <xsl:text>                display_str = gettext(this.content[value]);
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3865
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3866
    <xsl:text>                this.last_selection = value;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3867
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3868
    <xsl:text>            } else {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3869
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3870
    <xsl:text>                // otherwise show problem
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3871
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3872
    <xsl:text>                display_str = "?"+String(value)+"?";
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3873
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3874
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3875
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3876
    <xsl:text>            // It is assumed that first span always stays,
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3877
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3878
    <xsl:text>            // and contains selection when menu is closed
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3879
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3880
    <xsl:text>            this.text_elt.firstElementChild.textContent = display_str;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3881
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3882
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3883
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3884
    <xsl:text>        grow_text(up_to) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3885
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3886
    <xsl:text>            let count = 1;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3887
</xsl:text>
3091
f475f39713aa SVGHMI: change scroll buttons into single unicode triangle and center them. Use highlight rectangle duplicated and hidden to catch selection clicks so that the whole row is clickable.
Edouard Tisserant
parents: 3090
diff changeset
  3888
    <xsl:text>            let txt = this.text_elt;
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3889
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3890
    <xsl:text>            let first = txt.firstElementChild;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3891
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3892
    <xsl:text>            // Real world (pixels) boundaries of current page
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3893
</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
  3894
    <xsl:text>            let bounds = svg_root.getBoundingClientRect();
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3895
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3896
    <xsl:text>            this.lift = 0;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3897
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3898
    <xsl:text>            while(count &lt; up_to) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3899
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3900
    <xsl:text>                let next = first.cloneNode();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3901
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3902
    <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
  3903
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3904
    <xsl:text>                next.removeAttribute("y");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3905
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3906
    <xsl:text>                next.setAttribute("dy", "1.1em");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3907
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3908
    <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
  3909
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3910
    <xsl:text>                next.textContent = "...";
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3911
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3912
    <xsl:text>                // append new span to text element
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3913
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3914
    <xsl:text>                txt.appendChild(next);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3915
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3916
    <xsl:text>                // 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
  3917
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3918
    <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
  3919
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3920
    <xsl:text>                let rect = txt.getBoundingClientRect();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3921
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3922
    <xsl:text>                if(rect.bottom &gt; bounds.bottom){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3923
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3924
    <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
  3925
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3926
    <xsl:text>                    let backup = first.getAttribute("dy");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3927
</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
  3928
    <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
  3929
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3930
    <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
  3931
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3932
    <xsl:text>                    rect = txt.getBoundingClientRect();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3933
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3934
    <xsl:text>                    if(rect.top &gt; bounds.top){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3935
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3936
    <xsl:text>                        this.lift += 1;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3937
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3938
    <xsl:text>                    } else {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3939
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3940
    <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
  3941
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3942
    <xsl:text>                        // restore dy attribute on first span
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3943
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3944
    <xsl:text>                        if(backup)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3945
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3946
    <xsl:text>                            first.setAttribute("dy", backup);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3947
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3948
    <xsl:text>                        else
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3949
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3950
    <xsl:text>                            first.removeAttribute("dy");
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3951
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3952
    <xsl:text>                        // remove unwanted child
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3953
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3954
    <xsl:text>                        txt.removeChild(next);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3955
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3956
    <xsl:text>                        return count;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3957
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3958
    <xsl:text>                    }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3959
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3960
    <xsl:text>                }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3961
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3962
    <xsl:text>                count++;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3963
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3964
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3965
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3966
    <xsl:text>            return count;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3967
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3968
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3969
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3970
    <xsl:text>        close_on_click_elsewhere(e) {
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3971
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3972
    <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
  3973
</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
  3974
    <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
  3975
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3976
    <xsl:text>                e.stopPropagation();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3977
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3978
    <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
  3979
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3980
    <xsl:text>                if(e.target !== this.box_elt)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3981
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3982
    <xsl:text>                    this.close();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3983
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3984
    <xsl:text>            }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3985
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3986
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3987
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3988
    <xsl:text>        close(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3989
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3990
    <xsl:text>            // Stop hogging all click events
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3991
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3992
    <xsl:text>            svg_root.removeEventListener("pointerdown", this.numb_event, true);
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3993
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  3994
    <xsl:text>            svg_root.removeEventListener("pointerup", this.numb_event, true);
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
  3995
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3996
    <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
  3997
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  3998
    <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
  3999
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4000
    <xsl:text>            this.reset_text();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4001
</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
  4002
    <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
  4003
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4004
    <xsl:text>            this.reset_box();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4005
</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
  4006
    <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
  4007
</xsl:text>
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4008
    <xsl:text>            // Put the button back in place
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4009
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4010
    <xsl:text>            this.element.appendChild(this.button_elt);
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4011
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4012
    <xsl:text>            // Mark as closed (to allow dispatch)
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4013
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4014
    <xsl:text>            this.opened = false;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4015
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4016
    <xsl:text>            // Dispatch last cached value
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4017
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4018
    <xsl:text>            this.apply_cache();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4019
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4020
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4021
</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
  4022
    <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
  4023
</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
  4024
    <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
  4025
</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
  4026
    <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
  4027
</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
  4028
    <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
  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>            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
  4031
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4032
    <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
  4033
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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 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
  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>            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
  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>            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
  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>            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
  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>            //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
  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>            //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
  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>            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
  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>            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
  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>            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
  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>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>        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
  4055
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4056
    <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
  4057
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4058
    <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
  4059
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4061
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4062
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4063
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and 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>        // 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
  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>        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
  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>            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
  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>            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
  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>            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
  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>                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
  4075
</xsl:text>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4076
    <xsl:text>                span.textContent = gettext(item);
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
  4077
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4078
    <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
  4079
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4080
    <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
  4081
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4082
    <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
  4083
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4084
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4085
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4086
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4087
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4088
    <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
  4089
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4090
    <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
  4091
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4092
    <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
  4093
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4094
    <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
  4095
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4096
    <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
  4097
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4098
    <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
  4099
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4100
    <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
  4101
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4102
    <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
  4103
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4104
    <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
  4105
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4106
    <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
  4107
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4108
    <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
  4109
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4110
    <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
  4111
</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
  4112
    <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
  4113
</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
  4114
    <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
  4115
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4116
    <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
  4117
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4118
    <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
  4119
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4120
    <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
  4121
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4122
    <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
  4123
</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
  4124
    <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
  4125
</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
  4126
    <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
  4127
</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
  4128
    <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
  4129
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4130
    <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
  4131
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4132
    <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
  4133
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4134
    <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
  4135
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4136
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4137
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4138
    <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
  4139
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4140
    <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
  4141
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4142
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4143
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4144
    <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
  4145
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4146
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4147
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4148
    <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
  4149
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4150
    <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
  4151
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4152
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4153
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4154
    <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
  4155
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4156
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4157
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4158
    <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
  4159
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4160
    <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
  4161
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4162
    <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
  4163
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4164
    <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
  4165
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4166
    <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
  4167
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4168
    <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
  4169
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4170
    <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
  4171
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4172
    <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
  4173
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4174
    <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
  4175
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4176
    <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
  4177
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4178
    <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
  4179
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4180
    <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
  4181
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4182
    <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
  4183
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4184
    <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
  4185
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4186
    <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
  4187
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4188
    <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
  4189
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4190
    <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
  4191
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4192
    <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
  4193
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4194
    <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
  4195
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4196
    <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
  4197
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4198
    <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
  4199
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4200
    <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
  4201
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4202
    <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
  4203
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4204
    <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
  4205
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4206
    <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
  4207
</xsl:text>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4208
    <xsl:text>                    span.textContent = gettext(this.content[i]);
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
  4209
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4210
    <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
  4211
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4212
    <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
  4213
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4214
    <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
  4215
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4216
    <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
  4217
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4218
    <xsl:text>                }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4219
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4220
    <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
  4221
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4222
    <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
  4223
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4224
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4225
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4226
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4227
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4228
    <xsl:text>        numb_event(e) {
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4229
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4230
    <xsl:text>             e.stopPropagation();
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4231
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4232
    <xsl:text>        }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4233
</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
  4234
    <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
  4235
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4236
    <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
  4237
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4238
    <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
  4239
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4240
    <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
  4241
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4242
    <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
  4243
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4244
    <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
  4245
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4246
    <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
  4247
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4248
    <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
  4249
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4250
    <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
  4251
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4252
    <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
  4253
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4254
    <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
  4255
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4256
    <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
  4257
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4258
    <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
  4259
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4260
    <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
  4261
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4262
    <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
  4263
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4264
    <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
  4265
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4266
    <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
  4267
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4268
    <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
  4269
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4270
    <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
  4271
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4272
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4273
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4274
    <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
  4275
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4276
    <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
  4277
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4278
    <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
  4279
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4280
    <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
  4281
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4282
    <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
  4283
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4284
    <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
  4285
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4286
    <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
  4287
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4288
    <xsl:text>            svg_root.addEventListener("pointerdown", this.numb_event, true);
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4289
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4290
    <xsl:text>            svg_root.addEventListener("pointerup", this.numb_event, true);
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
  4291
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4292
    <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
  4293
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4294
    <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
  4295
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4296
    <xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4297
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4298
    <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
  4299
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4300
    <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
  4301
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4302
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4303
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4304
    <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
  4305
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4306
    <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
  4307
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4308
    <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
  4309
</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
  4310
    <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
  4311
</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
  4312
    <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
  4313
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4314
    <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
  4315
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4316
    <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
  4317
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4318
    <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
  4319
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4320
    <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
  4321
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4322
    <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
  4323
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4324
    <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
  4325
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4326
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4327
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4328
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4329
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4330
    <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
  4331
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4332
    <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
  4333
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4334
    <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
  4335
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4336
    <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
  4337
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4338
    <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
  4339
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4340
    <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
  4341
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4342
    <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
  4343
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4344
    <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
  4345
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4346
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4347
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4348
    <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
  4349
</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
  4350
    <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
  4351
</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
  4352
    <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
  4353
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4354
    <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
  4355
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4356
    <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
  4357
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4358
    <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
  4359
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4360
    <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
  4361
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4362
    <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
  4363
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4364
    <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
  4365
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4366
    <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
  4367
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4368
    <xsl:text>            }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4369
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4370
    <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
  4371
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4372
    <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
  4373
</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
  4374
    <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
  4375
</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
  4376
    <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
  4377
</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
  4378
    <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
  4379
</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
  4380
    <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
  4381
</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
  4382
    <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
  4383
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4384
    <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
  4385
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4386
    <xsl:text>        }
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4387
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4388
    <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
  4389
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4390
    <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
  4391
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4392
    <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
  4393
</xsl:text>
96ffd8b1b016 SVGHMI: added dropdown selection highlighting and fixed scrolling so that it doesn't miss any entry while jumping from one page to the other.
Edouard Tisserant
parents: 3091
diff changeset
  4394
    <xsl:text>            highlight.style.visibility = "hidden";
3090
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4395
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4396
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4397
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4398
    <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
  4399
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4400
    <xsl:text>        adjust_box_to_text(){
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4401
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4402
    <xsl:text>            let [lmargin, tmargin] = this.margins;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4403
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4404
    <xsl:text>            let m = this.text_elt.getBBox();
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4405
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4406
    <xsl:text>            let b = this.box_elt;
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4407
</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
  4408
    <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
  4409
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4410
    <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
  4411
</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
  4412
    <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
  4413
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4414
    <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
  4415
</xsl:text>
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4416
    <xsl:text>        }
9e172e4e50c7 SVGHMI: DropDown widget now using new class based style
Edouard Tisserant
parents: 3085
diff changeset
  4417
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4418
    <xsl:text>}
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4419
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4420
  </xsl:template>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4421
  <xsl:template match="widget[@type='DropDown']" mode="widget_defs">
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4422
    <xsl:param name="hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4423
    <xsl:call-template name="defs_by_labels">
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4424
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4425
      <xsl:with-param name="labels">
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4426
        <xsl:text>box button highlight</xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4427
      </xsl:with-param>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4428
    </xsl:call-template>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4429
    <xsl:variable name="text_elt" select="$hmi_element//*[@inkscape:label='text'][1]"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4430
    <xsl:text>init_specific: function() {
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4431
</xsl:text>
3134
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4432
    <xsl:choose>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4433
      <xsl:when test="count(arg) = 1 and arg[1]/@value = '#langs'">
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4434
        <xsl:text>  this.text_elt = id("</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4435
        <xsl:value-of select="$text_elt/@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4436
        <xsl:text>");
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4437
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  4438
        <xsl:text>  this.content = langs.map(([lname,lcode]) =&gt; lname);
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4439
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4440
      </xsl:when>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4441
      <xsl:when test="count(arg) = 0">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4442
        <xsl:if test="not($text_elt[self::svg:use])">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4443
          <xsl:message terminate="yes">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4444
            <xsl:text>No argrument for HMI:DropDown widget id="</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4445
            <xsl:value-of select="$hmi_element/@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4446
            <xsl:text>" and "text" labeled element is not a svg:use element</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4447
          </xsl:message>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4448
        </xsl:if>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4449
        <xsl:variable name="real_text_elt" select="$result_widgets[@id = $hmi_element/@id]//*[@original=$text_elt/@id]/svg:text"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4450
        <xsl:text>  this.text_elt = id("</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4451
        <xsl:value-of select="$real_text_elt/@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4452
        <xsl:text>");
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4453
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4454
        <xsl:variable name="from_list_id" select="substring-after($text_elt/@xlink:href,'#')"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4455
        <xsl:variable name="from_list" select="$hmi_textlists[(@id | */@id) = $from_list_id]"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4456
        <xsl:if test="count($from_list) = 0">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4457
          <xsl:message terminate="yes">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4458
            <xsl:text>HMI:DropDown widget id="</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4459
            <xsl:value-of select="$hmi_element/@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4460
            <xsl:text>" "text" labeled element does not point to a svg:text owned by a HMI:List widget</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4461
          </xsl:message>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4462
        </xsl:if>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4463
        <xsl:text>  this.content = hmi_widgets["</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4464
        <xsl:value-of select="$from_list/@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4465
        <xsl:text>"].texts;
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4466
</xsl:text>
3134
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4467
      </xsl:when>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4468
      <xsl:otherwise>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4469
        <xsl:text>  this.text_elt = id("</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4470
        <xsl:value-of select="$text_elt/@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4471
        <xsl:text>");
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4472
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4473
        <xsl:text>  this.content = [
3134
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4474
</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4475
        <xsl:for-each select="arg">
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4476
          <xsl:text>"</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4477
          <xsl:value-of select="@value"/>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4478
          <xsl:text>",
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4479
</xsl:text>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4480
        </xsl:for-each>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4481
        <xsl:text>  ];
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4482
</xsl:text>
3134
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4483
      </xsl:otherwise>
af558c9a5141 SVGHMI: Update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3128
diff changeset
  4484
    </xsl:choose>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4485
    <xsl:text>}
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4486
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4487
  </xsl:template>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4488
  <declarations:DropDown/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4489
  <xsl:template match="declarations:DropDown">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4490
    <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4491
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4492
    <xsl:text>/* </xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4493
    <xsl:value-of select="local-name()"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4494
    <xsl:text> */
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4495
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4496
    <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4497
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4498
    <xsl:text>function gettext(o) {
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4499
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4500
    <xsl:text>    if(typeof(o) == "string"){
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4501
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4502
    <xsl:text>        return o;
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4503
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4504
    <xsl:text>    }
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4505
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4506
    <xsl:text>    return svg_text_to_multiline(o);
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4507
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4508
    <xsl:text>};
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4509
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  4510
    <xsl:text>
2922
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4511
</xsl:text>
ddce4ebdf010 SVGHMI: intermediate commit while working on dropdown widget.
Edouard Tisserant
parents: 2921
diff changeset
  4512
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4513
  <xsl:template match="widget[@type='ForEach']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4514
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4515
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4516
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4517
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4518
      <xsl:text>ForEach widget is used to span a small set of widget over a larger set of
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4519
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4520
      <xsl:text>repeated HMI_NODEs. 
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4521
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4522
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4523
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4524
      <xsl:text>Idea is somewhat similar to relative page, but it all happens inside the
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4525
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4526
      <xsl:text>ForEach widget, no page involved.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4527
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4528
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4529
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4530
      <xsl:text>Together with relative Jump widgets it can be used to build a menu to reach
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4531
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4532
      <xsl:text>relative pages covering many identical HMI_NODES siblings.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4533
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4534
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4535
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4536
      <xsl:text>ForEach widget takes a HMI_CLASS name as argument and a HMI_NODE path as
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4537
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4538
      <xsl:text>variable.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4539
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4540
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4541
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4542
      <xsl:text>Direct sub-elements can be either groups of widget to be spanned, labeled
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4543
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4544
      <xsl:text>"ClassName:offset", or buttons to control the spanning, labeled
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4545
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4546
      <xsl:text>"ClassName:+/-number".
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4547
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4548
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4549
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4550
      <xsl:text>span widgets over a set of repeated HMI_NODEs</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4551
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4552
    <arg name="class_name" accepts="string">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4553
      <xsl:text>HMI_CLASS name</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4554
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4555
    <path name="root" accepts="HMI_NODE">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4556
      <xsl:text> where to find HMI_NODEs whose HMI_CLASS is class_name</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4557
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4558
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4559
  <xsl:template match="widget[@type='ForEach']" mode="widget_defs">
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4560
    <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
  4561
    <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
  4562
      <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
  4563
        <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
  4564
        <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
  4565
        <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
  4566
      </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
  4567
    </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
  4568
    <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
  4569
      <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
  4570
        <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
  4571
        <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
  4572
        <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
  4573
      </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
  4574
    </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
  4575
    <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
  4576
    <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
  4577
    <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
  4578
    <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
  4579
    <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
  4580
    <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
  4581
    <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
  4582
    <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
  4583
</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
  4584
    <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
  4585
      <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
  4586
      <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
  4587
      <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
  4588
        <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
  4589
      </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
  4590
      <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
  4591
</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
  4592
    </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
  4593
    <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
  4594
</xsl:text>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4595
    <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
  4596
</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
  4597
    <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
  4598
    <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
  4599
    <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
  4600
    <xsl:for-each select="$buttons">
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4601
      <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
  4602
      <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
  4603
      <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
  4604
      <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
  4605
      <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
  4606
      <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
  4607
      <xsl:value-of select="$op"/>
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4608
      <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
  4609
</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
  4610
    </xsl:for-each>
2896
99c5335ed59f SVGHMI: Widget ForEach buttons now call corresponding methods.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2895
diff changeset
  4611
    <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
  4612
</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
  4613
    <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
  4614
</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
  4615
    <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
  4616
    <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
  4617
    <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
  4618
      <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
  4619
      <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
  4620
      <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
  4621
      <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
  4622
      <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
  4623
      <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
  4624
      <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
  4625
      <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
  4626
      <xsl:text>" */
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4627
</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
  4628
      <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
  4629
        <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
  4630
          <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
  4631
          <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
  4632
          <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
  4633
          <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
  4634
        </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
  4635
      </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
  4636
      <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
  4637
        <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
  4638
          <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
  4639
            <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
  4640
            <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
  4641
            <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
  4642
            <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
  4643
            <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
  4644
            <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
  4645
            <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
  4646
            <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
  4647
            <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
  4648
          </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
  4649
        </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
  4650
        <xsl:text>            hmi_widgets["</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4651
        <xsl:value-of select="@id"/>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4652
        <xsl:text>"]</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4653
        <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4654
          <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4655
        </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4656
        <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4657
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4658
      </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
  4659
      <xsl:text>          ]</xsl:text>
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4660
      <xsl:if test="position()!=last()">
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4661
        <xsl:text>,</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4662
      </xsl:if>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4663
      <xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4664
</xsl:text>
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4665
    </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
  4666
    <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
  4667
</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
  4668
    <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
  4669
</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
  4670
    <xsl:text>    item_offset: 0,
2892
27dd409fba1d SVGHMI: ForEach knows its own widgets
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2890
diff changeset
  4671
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4672
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4673
  <xsl:template match="widget[@type='ForEach']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4674
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4675
    <xsl:text>ForEachWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4676
    <xsl:text> extends Widget{
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4677
</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
  4678
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4679
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4680
    <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
  4681
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4682
    <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
  4683
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4684
    <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
  4685
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4686
    <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
  4687
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4688
    <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4689
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4690
    <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4691
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4692
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4693
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4694
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4695
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4696
    <xsl:text>    unsub(){
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4697
</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
  4698
    <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
  4699
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4700
    <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
  4701
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4702
    <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
  4703
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4704
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4705
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4706
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4707
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4708
    <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
  4709
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4710
    <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
  4711
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4712
    <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
  4713
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4714
    <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
  4715
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4716
    <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
  4717
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4718
    <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
  4719
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4720
    <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
  4721
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4722
    <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
  4723
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4724
    <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
  4725
</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
  4726
    <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
  4727
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4728
    <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
  4729
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4730
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4731
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4732
    <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
  4733
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4734
    <xsl:text>                */
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4735
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4736
    <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
  4737
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4738
    <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
  4739
</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
  4740
    <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
  4741
</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
  4742
    <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
  4743
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4744
    <xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4745
</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
  4746
    <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
  4747
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4748
    <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
  4749
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4750
    <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
  4751
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4752
    <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
  4753
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4754
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4755
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4756
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4757
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4758
    <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
  4759
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4760
    <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
  4761
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4762
    <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4763
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4764
    <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4765
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4766
    <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
  4767
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4768
    <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
  4769
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4770
    <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
  4771
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4772
    <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
  4773
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4774
    <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
  4775
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4776
    <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
  4777
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4778
    <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
  4779
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4780
    <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
  4781
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4782
    <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
  4783
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4784
    <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
  4785
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4786
    <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
  4787
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4788
    <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
  4789
</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
  4790
    <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
  4791
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4792
    <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
  4793
</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
  4794
    <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
  4795
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
  4796
    <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
  4797
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4798
    <xsl:text>        update_subscriptions();
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4799
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4800
    <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
  4801
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4802
    <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
  4803
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4804
    <xsl:text>        requestHMIAnimation();
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4805
</xsl:text>
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  4806
    <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
  4807
</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
  4808
    <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
  4809
</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
  4810
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4811
  <xsl:template match="widget[@type='Input']" mode="widget_desc">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4812
    <type>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4813
      <xsl:value-of select="@type"/>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4814
    </type>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4815
    <longdesc>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4816
      <xsl:text>Input widget takes one variable path, and displays current value in
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4817
</xsl:text>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4818
      <xsl:text>optional "value" labeled sub-element. 
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4819
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4820
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4821
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4822
      <xsl:text>Click on optional "edit" labeled element opens keypad to edit value.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4823
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4824
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4825
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4826
      <xsl:text>Operation on current value is performed when click on sub-elements with
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4827
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4828
      <xsl:text>label starting with '=', '+' or '-' sign. Value after sign is used as
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4829
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4830
      <xsl:text>operand.
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4831
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4832
    </longdesc>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4833
    <shortdesc>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4834
      <xsl:text>Input field with predefined operation buttons</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4835
    </shortdesc>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4836
    <arg name="format" accepts="string">
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4837
      <xsl:text>optional printf-like format </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4838
    </arg>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  4839
    <path name="edit" accepts="HMI_INT, HMI_REAL, HMI_STRING">
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4840
      <xsl:text>single variable to edit</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4841
    </path>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4842
  </xsl:template>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4843
  <xsl:template match="widget[@type='Input']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4844
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4845
    <xsl:text>InputWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4846
    <xsl:text> extends Widget{
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4847
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4848
    <xsl:text>     on_op_click(opstr) {
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4849
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4850
    <xsl:text>         this.change_hmi_value(0, opstr);
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4851
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4852
    <xsl:text>     }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4853
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4854
    <xsl:text>     edit_callback(new_val) {
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4855
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4856
    <xsl:text>         this.apply_hmi_value(0, new_val);
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4857
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4858
    <xsl:text>     }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4859
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4860
    <xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4861
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4862
    <xsl:text>     is_inhibited = false;
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4863
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4864
    <xsl:text>     alert(msg){
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4865
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4866
    <xsl:text>         this.is_inhibited = true;
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4867
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4868
    <xsl:text>         this.display = msg;
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4869
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4870
    <xsl:text>         setTimeout(() =&gt; this.stopalert(), 1000);
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4871
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4872
    <xsl:text>         this.request_animate();
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4873
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4874
    <xsl:text>     }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4875
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4876
    <xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4877
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4878
    <xsl:text>     stopalert(){
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4879
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4880
    <xsl:text>         this.is_inhibited = false;
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4881
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4882
    <xsl:text>         this.display = this.last_value;
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4883
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4884
    <xsl:text>         this.request_animate();
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4885
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4886
    <xsl:text>     }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4887
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4888
    <xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4889
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4890
    <xsl:text>     overshot(new_val, max) {
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4891
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4892
    <xsl:text>         this.alert("max");
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4893
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4894
    <xsl:text>     }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4895
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4896
    <xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4897
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4898
    <xsl:text>     undershot(new_val, min) {
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4899
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4900
    <xsl:text>         this.alert("min");
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4901
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4902
    <xsl:text>     }
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4903
</xsl:text>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  4904
    <xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  4905
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  4906
    <xsl:text>     display = "";
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  4907
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4908
    <xsl:text>}
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4909
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4910
  </xsl:template>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  4911
  <xsl:template match="widget[@type='Input']" mode="widget_defs">
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
  4912
    <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
  4913
    <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
  4914
      <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
  4915
        <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
  4916
        <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
  4917
          <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
  4918
        </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
  4919
        <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
  4920
      </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
  4921
    </xsl:variable>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4922
    <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
  4923
    <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
  4924
    <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
  4925
      <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
  4926
        <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
  4927
        <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
  4928
          <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
  4929
        </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
  4930
        <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
  4931
      </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
  4932
    </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
  4933
    <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
  4934
    <xsl:value-of select="$edit_elt"/>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4935
    <xsl:variable name="action_elements" select="$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]"/>
2861
84c16ece8e10 SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant
parents: 2859
diff changeset
  4936
    <xsl:if test="$have_value">
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4937
      <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
  4938
</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
  4939
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4940
    <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
  4941
</xsl:text>
3155
99ce78ddd353 SVGHMI: finally found why HMI:Input wasnt't initializing properly: vsprintf takes a list. Also, removed intermediate variable last_val, since edit_value() works on strings anyhow, and in case of formated floats, it is better to workl on already formated value.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3154
diff changeset
  4942
    <xsl:if test="$have_value or $have_edit">
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4943
      <xsl:choose>
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4944
        <xsl:when test="count(arg) = 1">
3188
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4945
          <xsl:text>        this.last_value = vsprintf("</xsl:text>
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4946
          <xsl:value-of select="arg[1]/@value"/>
3155
99ce78ddd353 SVGHMI: finally found why HMI:Input wasnt't initializing properly: vsprintf takes a list. Also, removed intermediate variable last_val, since edit_value() works on strings anyhow, and in case of formated floats, it is better to workl on already formated value.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3154
diff changeset
  4947
          <xsl:text>", [value]);
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4948
</xsl:text>
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4949
        </xsl:when>
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4950
        <xsl:otherwise>
3188
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4951
          <xsl:text>        this.last_value = value;
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4952
</xsl:text>
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4953
        </xsl:otherwise>
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4954
      </xsl:choose>
3188
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4955
      <xsl:text>        if(!this.is_inhibited){
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4956
</xsl:text>
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4957
      <xsl:text>            this.display = this.last_value;
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4958
</xsl:text>
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4959
      <xsl:if test="$have_value">
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4960
        <xsl:text>            this.request_animate();
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4961
</xsl:text>
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4962
      </xsl:if>
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4963
      <xsl:text>        }
2836
ce6cecdb7320 SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant
parents: 2834
diff changeset
  4964
</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
  4965
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4966
    <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
  4967
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4968
    <xsl:if test="$have_value">
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4969
      <xsl:text>    animate: function(){
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4970
</xsl:text>
3188
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4971
      <xsl:text>        this.value_elt.textContent = String(this.display);
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4972
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4973
      <xsl:text>    },
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4974
</xsl:text>
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  4975
    </xsl:if>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4976
    <xsl:for-each select="$action_elements">
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4977
      <xsl:text>    action_elt_</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4978
      <xsl:value-of select="position()"/>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4979
      <xsl:text>: id("</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4980
      <xsl:value-of select="@id"/>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4981
      <xsl:text>"),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4982
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  4983
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  4984
    <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
  4985
</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
  4986
    <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
  4987
      <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
  4988
      <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
  4989
      <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
  4990
      <xsl:value-of select="path/@type"/>
3188
c173452bf894 SVGHMI: Fixed problems happening when value is higher than maximum or lower than minimum in Input widget. "max" and "min" string was getting into keypad text field, was not diplayed systematically, and was staying forever sometime.
Edouard Tisserant
parents: 3187
diff changeset
  4991
      <xsl:text>", this, this.last_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
  4992
</xsl:text>
3154
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4993
      <xsl:if test="$have_value">
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4994
        <xsl:text>        this.value_elt.style.pointerEvents = "none";
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4995
</xsl:text>
a8c81a080588 SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3151
diff changeset
  4996
      </xsl:if>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  4997
      <xsl:text>        this.animate();
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  4998
</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
  4999
    </xsl:if>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  5000
    <xsl:for-each select="$action_elements">
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  5001
      <xsl:text>        this.action_elt_</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  5002
      <xsl:value-of select="position()"/>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  5003
      <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
  5004
      <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
  5005
      <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
  5006
</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
  5007
    </xsl:for-each>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  5008
    <xsl:if test="$have_value">
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  5009
      <xsl:text>        this.value_elt.textContent = "";
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  5010
</xsl:text>
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  5011
    </xsl:if>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  5012
    <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
  5013
</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
  5014
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5015
  <xsl:template match="widget[@type='JsonTable']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5016
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5017
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5018
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5019
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5020
      <xsl:text>Send given variables as POST to http URL argument, spread returned JSON in
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5021
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5022
      <xsl:text>SVG sub-elements of "data" labeled element.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5023
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5024
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5025
</xsl:text>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  5026
      <xsl:text>Documentation to be written. see svghmi exemple.
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5027
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5028
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5029
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5030
      <xsl:text>Http POST variables, spread JSON back</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5031
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5032
    <arg name="url" accepts="string">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5033
      <xsl:text> </xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5034
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5035
    <path name="edit" accepts="HMI_INT, HMI_REAL, HMI_STRING">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5036
      <xsl:text>single variable to edit</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5037
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5038
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5039
  <xsl:template match="widget[@type='JsonTable']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5040
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5041
    <xsl:text>JsonTableWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5042
    <xsl:text> extends Widget{
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
  5043
</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
  5044
    <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
  5045
</xsl:text>
3187
ba8ff21fd82b SVGHMI: change default values for JsonTable, leading to scrollbar initialized at annoying non-zero position
Edouard Tisserant
parents: 3186
diff changeset
  5046
    <xsl:text>    cache = [0,0,0];
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5047
</xsl:text>
3181
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5048
    <xsl:text>    init_common() {
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
  5049
</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
  5050
    <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
  5051
</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5052
    <xsl:text>        this.handle_http_response_bound = this.handle_http_response.bind(this);
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5053
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5054
    <xsl:text>        this.fetch_error_bound = this.fetch_error.bind(this);
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5055
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5056
    <xsl:text>        this.promised = false;
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5057
</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
  5058
    <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
  5059
</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
  5060
    <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
  5061
</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
  5062
    <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
  5063
</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
  5064
    <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
  5065
</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
  5066
    <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
  5067
</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
  5068
    <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
  5069
</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
  5070
    <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
  5071
</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
  5072
    <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
  5073
</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
  5074
    <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
  5075
</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5076
    <xsl:text>    fetch_error(e){
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5077
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5078
    <xsl:text>        console.log("HTTP fetch error, message = " + e.message + "Widget:" + this.element_id);
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5079
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5080
    <xsl:text>    }
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5081
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5082
    <xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5083
</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
  5084
    <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
  5085
</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5086
    <xsl:text>        this.abort_controller = new AbortController();
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5087
</xsl:text>
3195
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5088
    <xsl:text>        return Promise.resolve().then(() =&gt; {
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5089
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5090
    <xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5091
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5092
    <xsl:text>            const query = {
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5093
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5094
    <xsl:text>                args: this.args,
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5095
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5096
    <xsl:text>                range: this.cache[1],
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5097
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5098
    <xsl:text>                position: this.cache[2],
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5099
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5100
    <xsl:text>                visible: this.visible,
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5101
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5102
    <xsl:text>                extra: this.cache.slice(4),
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5103
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5104
    <xsl:text>                options: opt
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5105
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5106
    <xsl:text>            };
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5107
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5108
    <xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5109
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5110
    <xsl:text>            const options = {
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5111
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5112
    <xsl:text>                 method: 'POST',
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5113
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5114
    <xsl:text>                 body: JSON.stringify(query),
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5115
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5116
    <xsl:text>                 headers: {'Content-Type': 'application/json'},
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5117
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5118
    <xsl:text>                 signal: this.abort_controller.signal
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5119
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5120
    <xsl:text>            };
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5121
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5122
    <xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5123
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5124
    <xsl:text>            return fetch(this.args[0], options)
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5125
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5126
    <xsl:text>                    .then(this.handle_http_response_bound)
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5127
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5128
    <xsl:text>                    .then(this.spread_json_data_bound)
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5129
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5130
    <xsl:text>                    .catch(this.fetch_error_bound);
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5131
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5132
    <xsl:text>        });
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5133
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5134
    <xsl:text>    }
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5135
</xsl:text>
cdd2a032b424 SVGHMI: JsonTable: Fixed options not being passed in JSON post when jumping to a page where additional variables are pre-defined by a HMI:VarInit.
Edouard Tisserant
parents: 3191
diff changeset
  5136
    <xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5137
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5138
    <xsl:text>    unsub(){
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5139
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5140
    <xsl:text>        this.abort_controller.abort();
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5141
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5142
    <xsl:text>        super.unsub();
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5143
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5144
    <xsl:text>    }
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5145
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5146
    <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
  5147
</xsl:text>
3189
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5148
    <xsl:text>    sub(...args){
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5149
</xsl:text>
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5150
    <xsl:text>        this.cache[0] = undefined;
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5151
</xsl:text>
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5152
    <xsl:text>        super.sub(...args);
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5153
</xsl:text>
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5154
    <xsl:text>    }
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5155
</xsl:text>
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5156
    <xsl:text>
0733114a2090 SVGHMI: JsonTable should refresh when re-subscibing, because data might have changed while not on the page we are switching to.
Edouard Tisserant
parents: 3188
diff changeset
  5157
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5158
    <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
  5159
</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5160
    <xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5161
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5162
    <xsl:text>        if(this.cache[index] != value)
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5163
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5164
    <xsl:text>            this.cache[index] = value;
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5165
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5166
    <xsl:text>        else
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5167
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5168
    <xsl:text>            return;
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5169
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5170
    <xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5171
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5172
    <xsl:text>        if(!this.promised){
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5173
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5174
    <xsl:text>            this.promised = true;
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5175
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5176
    <xsl:text>            this.do_http_request().finally(() =&gt; {
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5177
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5178
    <xsl:text>                this.promised = false;
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5179
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5180
    <xsl:text>            });
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5181
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5182
    <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
  5183
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  5184
    <xsl:text>    }
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  5185
</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
  5186
    <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
  5187
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5188
    <xsl:text>        let that = this;
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5189
</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
  5190
    <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
  5191
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5192
    <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
  5193
</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
  5194
    <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
  5195
</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
  5196
    <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
  5197
</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
  5198
    <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
  5199
</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
  5200
    <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
  5201
</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
  5202
    <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
  5203
</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
  5204
    <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
  5205
</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
  5206
  </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
  5207
  <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
  5208
    <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
  5209
      <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
  5210
      <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
  5211
      <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
  5212
    </xsl:message>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  5213
  </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
  5214
  <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
  5215
    <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
  5216
    <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
  5217
    <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
  5218
      <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
  5219
        <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
  5220
        <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
  5221
          <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
  5222
            <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
  5223
              <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
  5224
              <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
  5225
              <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
  5226
              <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
  5227
                <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
  5228
                  <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
  5229
                  <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
  5230
                    <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
  5231
                      <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
  5232
                    </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
  5233
                  </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
  5234
                  <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
  5235
                    <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
  5236
                  </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
  5237
                  <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
  5238
                    <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
  5239
                    <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
  5240
                  </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
  5241
                </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
  5242
                <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
  5243
                  <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
  5244
                  <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
  5245
                    <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
  5246
                    <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
  5247
                  </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
  5248
                </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
  5249
              </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
  5250
            </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
  5251
          </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
  5252
        </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
  5253
        <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
  5254
      </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
  5255
      <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
  5256
        <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
  5257
      </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
  5258
    </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
  5259
  </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
  5260
  <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
  5261
    <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
  5262
      <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
  5263
        <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
  5264
      </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
  5265
    </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
  5266
  </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
  5267
  <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
  5268
  <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
  5269
    <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
  5270
    <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
  5271
    <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
  5272
    <xsl:choose>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5273
      <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
  5274
        <xsl:text>        id("</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5275
        <xsl:value-of select="@id"/>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  5276
        <xsl:text>").href.baseVal =
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5277
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5278
        <xsl:text>            "#"+hmi_widgets["</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5279
        <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
  5280
        <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
  5281
        <xsl:value-of select="$expressions/expression[1]/@content"/>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  5282
        <xsl:text>];
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5283
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5284
      </xsl:when>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5285
      <xsl:otherwise>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5286
        <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
  5287
          <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
  5288
          <xsl:value-of select="@xlink:href"/>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5289
          <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
  5290
        </xsl:message>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5291
      </xsl:otherwise>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  5292
    </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
  5293
  </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
  5294
  <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
  5295
    <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
  5296
    <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
  5297
    <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
  5298
    <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
  5299
    <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
  5300
      <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
  5301
        <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
  5302
        <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
  5303
          <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
  5304
            <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
  5305
          </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
  5306
        </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
  5307
        <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
  5308
</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
  5309
        <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
  5310
        <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
  5311
        <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
  5312
</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
  5313
        <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
  5314
        <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
  5315
        <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
  5316
</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
  5317
        <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
  5318
        <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
  5319
        <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
  5320
        <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
  5321
        <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
  5322
</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
  5323
        <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
  5324
</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
  5325
      </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
  5326
      <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
  5327
        <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
  5328
        <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
  5329
        <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
  5330
        <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
  5331
        <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
  5332
</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
  5333
      </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
  5334
    </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
  5335
  </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
  5336
  <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
  5337
    <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
  5338
    <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
  5339
    <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
  5340
      <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
  5341
        <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
  5342
          <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
  5343
        </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
  5344
        <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
  5345
          <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
  5346
        </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
  5347
      </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
  5348
    </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
  5349
    <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
  5350
  </func:function>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5351
  <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
  5352
    <xsl:param name="expressions"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5353
    <xsl:param name="widget_elts"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5354
    <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
  5355
    <xsl:if test="not(starts-with($label,'#'))">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5356
      <xsl:apply-templates mode="json_table_render" select=".">
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5357
        <xsl:with-param name="expressions" select="$expressions"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5358
        <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
  5359
        <xsl:with-param name="label" select="$label"/>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5360
      </xsl:apply-templates>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5361
    </xsl:if>
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5362
  </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
  5363
  <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
  5364
    <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
  5365
    <xsl:param name="widget_elts"/>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5366
    <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
  5367
    <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
  5368
    <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
  5369
    <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
  5370
      <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
  5371
      <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
  5372
      <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
  5373
      <xsl:value-of select="@name"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5374
      <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
  5375
      <xsl:value-of select="@content"/>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5376
      <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
  5377
</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
  5378
    </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
  5379
    <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
  5380
      <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
  5381
    </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
  5382
  </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
  5383
  <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
  5384
    <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
  5385
    <xsl:param name="widget_elts"/>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5386
    <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
  5387
    <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
  5388
      <xsl:text>obj_</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5389
      <xsl:value-of select="@id"/>
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
  5390
      <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
  5391
    </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
  5392
    <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
  5393
</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
  5394
    <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
  5395
      <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
  5396
      <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
  5397
      <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
  5398
      <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
  5399
      <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
  5400
      <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
  5401
</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
  5402
      <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
  5403
      <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
  5404
      <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
  5405
      <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
  5406
</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
  5407
      <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
  5408
</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
  5409
      <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
  5410
</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
  5411
    </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
  5412
    <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
  5413
      <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
  5414
        <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
  5415
          <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
  5416
          <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
  5417
            <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
  5418
            <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
  5419
          </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
  5420
        </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
  5421
      </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
  5422
    </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
  5423
    <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
  5424
    <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
  5425
    <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
  5426
    <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
  5427
    <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
  5428
</xsl:text>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5429
    <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
  5430
      <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
  5431
      <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
  5432
    </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
  5433
    <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
  5434
</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
  5435
    <xsl:text>          id("</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5436
    <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
  5437
    <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
  5438
</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
  5439
    <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
  5440
</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
  5441
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5442
  <xsl:template match="widget[@type='JsonTable']" mode="widget_defs">
2996
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  5443
    <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
  5444
    <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
  5445
      <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
  5446
      <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
  5447
        <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
  5448
      </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
  5449
    </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
  5450
    <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
  5451
    <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
  5452
    <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
  5453
    <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
  5454
</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
  5455
    <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
  5456
</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
  5457
    <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
  5458
</xsl:text>
3150
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5459
    <xsl:text>        [[1, range], [2, position], [3, this.visible]].map(([i,v]) =&gt; {
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5460
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5461
    <xsl:text>             this.apply_hmi_value(i,v);
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5462
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5463
    <xsl:text>             this.cache[i] = v;
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5464
</xsl:text>
5a1bb6ec48a0 SVGHMI: JsonTable removed useless promise since fetch() already does one. Updated generated XSLT.
Edouard Tisserant
parents: 3147
diff changeset
  5465
    <xsl:text>        });
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  5466
</xsl:text>
3043
d7b009e49e87 SVGHMI: JsonTable now ignores elements and groups starting with #
Edouard Tisserant
parents: 3042
diff changeset
  5467
    <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
  5468
      <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
  5469
      <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
  5470
    </xsl:apply-templates>
3181
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5471
    <xsl:text>    },
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5472
</xsl:text>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5473
    <xsl:text>    init() {
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5474
</xsl:text>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5475
    <xsl:text>       this.init_common();
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5476
</xsl:text>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5477
    <xsl:for-each select="$hmi_element/*[starts-with(@inkscape:label,'action_')]">
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5478
      <xsl:text>        id("</xsl:text>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5479
      <xsl:value-of select="@id"/>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5480
      <xsl:text>").onclick = this.make_on_click("</xsl:text>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5481
      <xsl:value-of select="func:escape_quotes(@inkscape:label)"/>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5482
      <xsl:text>");
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5483
</xsl:text>
50d0fef791d5 SVGHMI: Add generic action buttons to JSON table, with an example in tests/svghmi: wipe alar list.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3178
diff changeset
  5484
    </xsl:for-each>
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
  5485
    <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
  5486
</xsl:text>
14635b09d329 SVGHMI: JsonTable now generate working data access code for data/* elements.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2994
diff changeset
  5487
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5488
  <xsl:template match="widget[@type='Jump']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5489
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5490
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5491
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5492
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5493
      <xsl:text>Jump widget brings focus to a different page. Mandatory single argument
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5494
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5495
      <xsl:text>gives name of the page.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5496
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5497
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5498
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5499
      <xsl:text>Optional single path is used as new reference when jumping to a relative
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5500
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5501
      <xsl:text>page, it must point to a HMI_NODE.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5502
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5503
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5504
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5505
      <xsl:text>"active"+"inactive" labeled elements can be provided and reflect current
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5506
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5507
      <xsl:text>page being shown.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5508
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5509
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5510
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5511
      <xsl:text>"disabled" labeled element, if provided, is shown instead of "active" or
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5512
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5513
      <xsl:text>"inactive" widget when pointed HMI_NODE is null.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5514
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5515
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5516
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5517
      <xsl:text>Jump to given page</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5518
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5519
    <arg name="page" accepts="string">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5520
      <xsl:text>name of page to jump to</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5521
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5522
    <path name="reference" count="optional" accepts="HMI_NODE">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5523
      <xsl:text>reference for relative jump</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5524
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5525
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5526
  <xsl:template match="widget[@type='Jump']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5527
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5528
    <xsl:text>JumpWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5529
    <xsl:text> extends Widget{
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
  5530
</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
  5531
    <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
  5532
</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
  5533
    <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
  5534
</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
  5535
    <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
  5536
</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
  5537
    <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
  5538
</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
  5539
    <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
  5540
</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
  5541
    <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
  5542
</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
  5543
    <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
  5544
</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
  5545
    <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
  5546
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5547
    <xsl:text>                 this.active_elt.style.display = "";
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
  5548
</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
  5549
    <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
  5550
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5551
    <xsl:text>                 this.inactive_elt.style.display = "none";
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
  5552
</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
  5553
    <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
  5554
</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
  5555
    <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
  5556
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5557
    <xsl:text>                 this.inactive_elt.style.display = "";
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
  5558
</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
  5559
    <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
  5560
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5561
    <xsl:text>                 this.active_elt.style.display = "none";
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
  5562
</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
  5563
    <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
  5564
</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
  5565
    <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
  5566
</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
  5567
    <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
  5568
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5569
    <xsl:text>        update_disability() {
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5570
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5571
    <xsl:text>            if(this.disabled) {
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5572
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5573
    <xsl:text>                /* show disabled */ 
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5574
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5575
    <xsl:text>                this.disabled_elt.style.display = "";
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5576
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5577
    <xsl:text>                /* hide inactive */ 
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5578
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5579
    <xsl:text>                this.inactive_elt.style.display = "none";
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5580
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5581
    <xsl:text>                /* hide active */ 
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5582
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5583
    <xsl:text>                this.active_elt.style.display = "none";
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5584
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5585
    <xsl:text>            } else {
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5586
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5587
    <xsl:text>                /* hide disabled */ 
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5588
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5589
    <xsl:text>                this.disabled_elt.style.display = "none";
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5590
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5591
    <xsl:text>                this.update_activity();
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5592
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5593
    <xsl:text>            }
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5594
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5595
    <xsl:text>        }
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5596
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5597
    <xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5598
</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
  5599
    <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
  5600
</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
  5601
    <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
  5602
</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
  5603
    <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
  5604
</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
  5605
    <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
  5606
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5607
    <xsl:text>                /* TODO: in order to allow jumps to page selected through for exemple a dropdown,
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5608
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5609
    <xsl:text>                   support path pointing to local variable whom value 
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5610
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5611
    <xsl:text>                   would be an HMI_TREE index and then jump to a relative page not hard-coded in advance */
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5612
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5613
    <xsl:text>                if(!that.disabled) {
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5614
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5615
    <xsl:text>                    const index = that.indexes.length &gt; 0 ? that.indexes[0] + that.offset : undefined;
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5616
</xsl:text>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5617
    <xsl:text>                    fading_page_switch(name, index);
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5618
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5619
    <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
  5620
</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
  5621
    <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
  5622
</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
  5623
    <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
  5624
</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
  5625
    <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
  5626
</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
  5627
    <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
  5628
</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
  5629
    <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
  5630
</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
  5631
    <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
  5632
</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
  5633
    <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
  5634
</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
  5635
    <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
  5636
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5637
    <xsl:text>                this.update_state();
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
  5638
</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
  5639
    <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
  5640
</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
  5641
    <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
  5642
</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
  5643
    <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
  5644
</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
  5645
    <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
  5646
</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
  5647
    <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
  5648
</xsl:text>
3582
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  5649
    <xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  5650
</xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  5651
    <xsl:text>            // TODO : use RequestAnimate and animate()
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  5652
</xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  5653
    <xsl:text>
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  5654
</xsl:text>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5655
    <xsl:text>            this.update_state();
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
  5656
</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
  5657
    <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
  5658
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5659
    <xsl:text>}
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5660
</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5661
  </xsl:template>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5662
  <xsl:template match="widget[@type='Jump']" mode="widget_defs">
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
  5663
    <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
  5664
    <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
  5665
      <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
  5666
        <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
  5667
        <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
  5668
          <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
  5669
        </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
  5670
        <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
  5671
      </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
  5672
    </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
  5673
    <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
  5674
    <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
  5675
    <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
  5676
      <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
  5677
        <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
  5678
        <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
  5679
          <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
  5680
        </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
  5681
        <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
  5682
      </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
  5683
    </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
  5684
    <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
  5685
    <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
  5686
    <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
  5687
</xsl:text>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  5688
    <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
  5689
</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
  5690
    <xsl:if test="$have_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
  5691
      <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
  5692
</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
  5693
    </xsl:if>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5694
    <xsl:if test="not($have_disability)">
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5695
      <xsl:text>        this.unsubscribable = true;
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5696
</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5697
    </xsl:if>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5698
    <xsl:text>        this.update_state = </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
  5699
    <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
  5700
      <xsl:when test="$have_disability">
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5701
        <xsl:text>this.update_disability</xsl:text>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5702
      </xsl:when>
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5703
      <xsl:when test="$have_activity">
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5704
        <xsl:text>this.update_activity</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
  5705
      </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
  5706
      <xsl:otherwise>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5707
        <xsl:text>null</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
  5708
      </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
  5709
    </xsl:choose>
3240
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5710
    <xsl:text>;
5f756332ada1 SVGHMI: Fix behaviour of Jump widget, that wasn't displaying "disabled" state in some cases.
Edouard Tisserant
parents: 3229
diff changeset
  5711
</xsl:text>
2954
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  5712
    <xsl:text>    },
b5dccd0d99ac SVGHMI: clean up dead code, update generated xslt.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2949
diff changeset
  5713
</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
  5714
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5715
  <xsl:template match="widget[@type='Jump']" mode="widget_page">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5716
    <xsl:param name="page_desc"/>
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
  5717
    <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
  5718
    <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
  5719
      <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
  5720
        <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
  5721
          <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
  5722
            <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
  5723
          </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
  5724
          <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
  5725
            <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
  5726
          </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
  5727
        </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
  5728
      </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
  5729
      <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
  5730
        <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
  5731
          <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
  5732
            <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
  5733
          </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
  5734
          <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
  5735
            <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
  5736
          </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
  5737
        </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
  5738
      </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
  5739
      <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
  5740
        <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
  5741
          <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
  5742
          <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
  5743
          <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
  5744
          <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
  5745
          <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
  5746
          <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
  5747
          <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
  5748
          <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
  5749
          <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
  5750
        </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
  5751
      </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
  5752
    </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
  5753
  </xsl:template>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5754
  <cssdefs:jump/>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5755
  <xsl:template match="cssdefs:jump">
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5756
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5757
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5758
    <xsl:text>/* </xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5759
    <xsl:value-of select="local-name()"/>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5760
    <xsl:text> */
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5761
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5762
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5763
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5764
    <xsl:text>.fade-out-page {
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5765
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
  5766
    <xsl:text>    animation: cubic-bezier(0, 0.8, 0.6, 1) fadeOut 0.6s both;
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5767
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5768
    <xsl:text>}
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5769
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5770
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5771
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5772
    <xsl:text>@keyframes fadeOut {
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5773
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5774
    <xsl:text>    0% { opacity: 1; }
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5775
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5776
    <xsl:text>    100% { opacity: 0; }
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5777
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5778
    <xsl:text>}
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5779
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5780
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5781
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5782
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5783
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  5784
  </xsl:template>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5785
  <declarations:jump/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5786
  <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
  5787
    <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
  5788
</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
  5789
    <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
  5790
    <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
  5791
    <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
  5792
</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
  5793
    <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
  5794
</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
  5795
    <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
  5796
</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
  5797
    <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
  5798
</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
  5799
    <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
  5800
</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
  5801
    <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
  5802
</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
  5803
    <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
  5804
</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
  5805
    <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
  5806
</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
  5807
    <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
  5808
</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
  5809
    <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
  5810
</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
  5811
    <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
  5812
</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
  5813
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5814
  <xsl:template match="widget[@type='Keypad']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5815
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5816
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5817
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5818
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5819
      <xsl:text>Keypad - to be written
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5820
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5821
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5822
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5823
      <xsl:text>Keypad </xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5824
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5825
    <arg name="supported_types" accepts="string">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5826
      <xsl:text>keypad can input those types </xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5827
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  5828
  </xsl:template>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5829
  <declarations:keypad/>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  5830
  <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
  5831
    <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  5832
</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
  5833
    <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
  5834
    <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
  5835
    <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
  5836
</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
  5837
    <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
  5838
</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
  5839
    <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
  5840
</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
  5841
    <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
  5842
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  5843
    <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
  5844
      <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
  5845
      <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
  5846
        <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
  5847
        <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
  5848
        <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
  5849
        <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
  5850
        <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
  5851
        <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
  5852
        <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
  5853
        <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
  5854
        <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
  5855
        <xsl:text>],
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  5856
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  5857
      </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
  5858
    </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
  5859
    <xsl:text>}
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
  5860
</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
  5861
    <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
  5862
</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
  5863
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5864
  <xsl:template match="widget[@type='Keypad']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5865
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5866
    <xsl:text>KeypadWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  5867
    <xsl:text> extends Widget{
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5868
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5869
    <xsl:text>     on_key_click(symbols) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5870
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5871
    <xsl:text>         var syms = symbols.split(" ");
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5872
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5873
    <xsl:text>         this.shift |= this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5874
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  5875
    <xsl:text>         if(this.virgin)
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  5876
</xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  5877
    <xsl:text>             this.editstr = ""; 
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  5878
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5879
    <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
  5880
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5881
    <xsl:text>         this.shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5882
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5883
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5884
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5885
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5886
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5887
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5888
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5889
    <xsl:text>     on_Esc_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5890
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5891
    <xsl:text>         end_modal.call(this);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5892
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5893
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5894
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5895
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5896
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5897
    <xsl:text>     on_Enter_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5898
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5899
    <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
  5900
</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
  5901
    <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
  5902
</xsl:text>
ed43facc7137 SVGHMI: Fix keypad : non-number input was always considered invalid because of missing type checking.
Edouard Tisserant
parents: 3041
diff changeset
  5903
    <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
  5904
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5905
    <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
  5906
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5907
    <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
  5908
</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
  5909
    <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
  5910
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5911
    <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
  5912
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5913
    <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
  5914
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5915
    <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
  5916
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  5917
    <xsl:text>         }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5918
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5919
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5920
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5921
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5922
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5923
    <xsl:text>     on_BackSpace_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5924
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5925
    <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
  5926
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5927
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5928
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5929
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5930
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5931
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5932
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5933
    <xsl:text>     on_Sign_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5934
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5935
    <xsl:text>         if(this.editstr[0] == "-")
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5936
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5937
    <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
  5938
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5939
    <xsl:text>         else
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5940
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5941
    <xsl:text>             this.editstr = "-" + this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5942
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5943
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5944
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5945
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5946
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5947
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5948
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5949
    <xsl:text>     on_NumDot_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5950
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5951
    <xsl:text>         if(this.editstr.indexOf(".") == "-1"){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5952
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5953
    <xsl:text>             this.editstr += ".";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5954
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5955
    <xsl:text>             this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5956
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5957
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5958
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5959
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5960
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5961
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5962
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5963
    <xsl:text>     on_Space_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5964
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5965
    <xsl:text>         this.editstr += " ";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5966
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5967
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5968
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5969
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5970
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5971
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5972
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5973
    <xsl:text>     caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5974
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5975
    <xsl:text>     _caps = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5976
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5977
    <xsl:text>     on_CapsLock_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5978
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5979
    <xsl:text>         this.caps = !this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5980
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5981
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5982
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5983
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5984
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5985
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5986
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5987
    <xsl:text>     shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5988
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5989
    <xsl:text>     _shift = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5990
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5991
    <xsl:text>     on_Shift_click() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5992
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5993
    <xsl:text>         this.shift = !this.shift;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5994
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5995
    <xsl:text>         this.caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5996
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5997
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5998
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  5999
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6000
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6001
    <xsl:text>     editstr = "";
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6002
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6003
    <xsl:text>     _editstr = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6004
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6005
    <xsl:text>     result_callback_obj = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6006
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6007
    <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
  6008
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6009
    <xsl:text>         show_modal.call(this,size);
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6010
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  6011
    <xsl:text>         this.editstr = String(initial);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6012
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6013
    <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
  6014
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6015
    <xsl:text>         if(this.Info_elt)
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6016
</xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6017
    <xsl:text>             this.Info_elt.textContent = info;
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6018
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6019
    <xsl:text>         this.shift = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6020
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6021
    <xsl:text>         this.caps = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6022
</xsl:text>
3034
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  6023
    <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
  6024
</xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  6025
    <xsl:text>
793ce2117258 SVGHMI: JsonTable now makes meaningfull JSON request : all arguments and variables are passed in.
Edouard Tisserant
parents: 3031
diff changeset
  6026
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6027
    <xsl:text>         this.update();
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6028
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6029
    <xsl:text>         this.virgin = true;
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6030
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6031
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6032
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6033
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6034
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6035
    <xsl:text>     update() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6036
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6037
    <xsl:text>         if(this.editstr != this._editstr){
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6038
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6039
    <xsl:text>             this.virgin = false;
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6040
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6041
    <xsl:text>             this._editstr = this.editstr;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6042
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6043
    <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
  6044
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6045
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6046
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  6047
    <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
  6048
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6049
    <xsl:text>             this._shift = this.shift;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6050
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  6051
    <xsl:text>             set_activation_state(this.Shift_sub, this.shift);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6052
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6053
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6054
</xsl:text>
3103
677764fba71d SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3097
diff changeset
  6055
    <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
  6056
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6057
    <xsl:text>             this._caps = this.caps;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6058
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  6059
    <xsl:text>             set_activation_state(this.CapsLock_sub, this.caps);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6060
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6061
    <xsl:text>         }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6062
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6063
    <xsl:text>     }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6064
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6065
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6066
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6067
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6068
  <xsl:template match="widget[@type='Keypad']" mode="widget_defs">
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6069
    <xsl:param name="hmi_element"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6070
    <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
  6071
      <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
  6072
      <xsl:with-param name="labels">
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6073
        <xsl:text>Esc Enter BackSpace Keys Value</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6074
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6075
    </xsl:call-template>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6076
    <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
  6077
      <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
  6078
      <xsl:with-param name="labels">
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6079
        <xsl:text>Sign Space NumDot Info</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6080
      </xsl:with-param>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6081
      <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
  6082
    </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
  6083
    <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
  6084
      <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
  6085
      <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
  6086
        <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
  6087
      </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
  6088
      <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
  6089
      <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
  6090
    </xsl:call-template>
2913
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  6091
    <xsl:text>    init: function() {
ac4328e69079 SVGHMI: Keypad: added code to re-attach keypad when starting edit.
Edouard Tisserant
parents: 2907
diff changeset
  6092
</xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6093
    <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
  6094
      <xsl:text>        id("</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6095
      <xsl:value-of select="@id"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6096
      <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
  6097
      <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
  6098
      <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
  6099
      <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
  6100
      <xsl:text>')");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6101
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6102
    </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
  6103
    <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
  6104
      <xsl:text>        if(this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6105
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6106
      <xsl:text>_elt)
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6107
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6108
      <xsl:text>            this.</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6109
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6110
      <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
  6111
      <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
  6112
      <xsl:text>'].on_</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6113
      <xsl:value-of select="."/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6114
      <xsl:text>_click()");
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6115
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6116
    </xsl:for-each>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6117
    <xsl:text>    },
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6118
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6119
    <xsl:text>
2917
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6120
</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6121
    <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
  6122
    <xsl:text>    coordinates: [</xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6123
    <xsl:value-of select="$g/@x"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6124
    <xsl:text>, </xsl:text>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6125
    <xsl:value-of select="$g/@y"/>
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6126
    <xsl:text>],
c8d923dd707f SVGHMI: Keypad working for HMI_STRING, still Shift/CapsLock not finished.
Edouard Tisserant
parents: 2913
diff changeset
  6127
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6128
    <xsl:text>    virgin: false,
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  6129
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6130
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6131
  <xsl:template match="widget[@type='List']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6132
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6133
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6134
    </type>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6135
    <longdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6136
      <xsl:text>List widget is a svg:group, list items are labeled elements
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6137
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6138
      <xsl:text>in that group.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6139
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6140
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6141
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6142
      <xsl:text>To use a List, clone (svg:use) one of the items inside the widget that
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6143
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6144
      <xsl:text>expects a List.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6145
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6146
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6147
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6148
      <xsl:text>Positions of items are relative to each other, and they must all be in the
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6149
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6150
      <xsl:text>same place. In order to make editing easier it is therefore recommanded to
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6151
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6152
      <xsl:text>make stacked clones of svg elements spread nearby the list.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6153
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6154
    </longdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6155
    <shortdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6156
      <xsl:text>A named list of named graphical elements</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6157
    </shortdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  6158
    <arg name="listname"/>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6159
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6160
  <xsl:template match="widget[@type='List']" mode="widget_defs">
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
  6161
    <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
  6162
    <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
  6163
</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
  6164
    <xsl:for-each select="$hmi_element/*[@inkscape:label]">
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6165
      <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
  6166
      <xsl:value-of select="@inkscape:label"/>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6167
      <xsl:text>": "</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
  6168
      <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
  6169
      <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
  6170
</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
  6171
    </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
  6172
    <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
  6173
</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
  6174
  </xsl:template>
3557
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6175
  <xsl:template match="widget[@type='List']" mode="widget_class">
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6176
    <xsl:text>class </xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6177
    <xsl:text>ListWidget</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6178
    <xsl:text> extends Widget{
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6179
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6180
    <xsl:text>}
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6181
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  6182
  </xsl:template>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6183
  <xsl:template match="widget[@type='ListSwitch']" mode="widget_desc">
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6184
    <type>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6185
      <xsl:value-of select="@type"/>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6186
    </type>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6187
    <longdesc>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6188
      <xsl:text>ListSwitch widget displays one item of an HMI:List depending on value of
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6189
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6190
      <xsl:text>given variable. Main element of the widget must be a clone of the list or
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6191
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6192
      <xsl:text>of an item of that list.  
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6193
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6194
      <xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6195
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6196
      <xsl:text>Given variable's current value is compared to list items
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6197
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6198
      <xsl:text>label. For exemple if given variable type
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6199
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6200
      <xsl:text>is HMI_INT and value is 1, then item with label '1' will be displayed.
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6201
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6202
      <xsl:text>If matching variable of type HMI_STRING, then no quotes are needed. 
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6203
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6204
      <xsl:text>For exemple, 'hello' match HMI_STRING 'hello'.
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6205
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6206
    </longdesc>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6207
    <shortdesc>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6208
      <xsl:text>Displays item of an HMI:List whose label matches value.</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6209
    </shortdesc>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6210
    <path name="value" accepts="HMI_INT,HMI_STRING">
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6211
      <xsl:text>value to compare to labels</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6212
    </path>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6213
  </xsl:template>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6214
  <xsl:template match="widget[@type='ListSwitch']" mode="widget_class">
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6215
    <xsl:text>class </xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6216
    <xsl:text>ListSwitchWidget</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6217
    <xsl:text> extends Widget{
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6218
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6219
    <xsl:text>    frequency = 5;
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6220
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6221
    <xsl:text>}
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6222
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6223
  </xsl:template>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6224
  <xsl:template match="widget[@type='ListSwitch']" mode="widget_defs">
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6225
    <xsl:param name="hmi_element"/>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6226
    <xsl:variable name="targetid" select="substring-after($hmi_element/@xlink:href,'#')"/>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6227
    <xsl:variable name="from_list" select="$hmi_lists[(@id | */@id) = $targetid]"/>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6228
    <xsl:text>    dispatch: function(value) {
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6229
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6230
    <xsl:text>        this.element.href.baseVal = "#"+hmi_widgets["</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6231
    <xsl:value-of select="$from_list/@id"/>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6232
    <xsl:text>"].items[value];
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6233
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6234
    <xsl:text>    },
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6235
</xsl:text>
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  6236
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6237
  <xsl:template match="widget[@type='Meter']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6238
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6239
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6240
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6241
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6242
      <xsl:text>Meter widget moves the end of "needle" labeled path along "range" labeled
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6243
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6244
      <xsl:text>path, according to value of the single accepted variable.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6245
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6246
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6247
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6248
      <xsl:text>Needle is reduced to a single segment. If "min" a "max" labeled texts
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6249
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6250
      <xsl:text>are provided, or if first and second argument are given, then they are used
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6251
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6252
      <xsl:text>as respective minimum and maximum value. Otherwise, value is expected to be
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6253
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6254
      <xsl:text>in between 0 and 100.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6255
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6256
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6257
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6258
      <xsl:text>Moves "needle" along "range"</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6259
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6260
    <arg name="min" count="optional" accepts="int,real">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6261
      <xsl:text>minimum value</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6262
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6263
    <arg name="max" count="optional" accepts="int,real">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6264
      <xsl:text>maximum value</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6265
    </arg>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6266
    <path name="value" accepts="HMI_INT,HMI_REAL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6267
      <xsl:text>Value to display</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6268
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6269
  </xsl:template>
3276
c696ecf5173a SVGHMI: update generated xslt
Edouard Tisserant
parents: 3268
diff changeset
  6270
  <xsl:template match="widget[@type='Meter']" mode="widget_class">
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6271
    <xsl:text>class </xsl:text>
3276
c696ecf5173a SVGHMI: update generated xslt
Edouard Tisserant
parents: 3268
diff changeset
  6272
    <xsl:text>MeterWidget</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6273
    <xsl:text> extends Widget{
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6274
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6275
    <xsl:text>    frequency = 10;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6276
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6277
    <xsl:text>    origin = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6278
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6279
    <xsl:text>    range = undefined;
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6280
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6281
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6282
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6283
    <xsl:text>    dispatch(value) {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6284
</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
  6285
    <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
  6286
</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
  6287
    <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
  6288
</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
  6289
    <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
  6290
</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
  6291
    <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
  6292
</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
  6293
    <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
  6294
</xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6295
    <xsl:text>        if(this.value_elt)
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6296
</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
  6297
    <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
  6298
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6299
    <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
  6300
</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
  6301
    <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
  6302
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6303
    <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
  6304
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6305
    <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
  6306
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6307
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6308
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6309
    <xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6310
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6311
    <xsl:text>    init() {
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6312
</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
  6313
    <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
  6314
</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
  6315
    <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
  6316
</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
  6317
    <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
  6318
</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
  6319
    <xsl:text>
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6320
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6321
    <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
  6322
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6323
    <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
  6324
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6325
    <xsl:text>    }
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6326
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6327
    <xsl:text>}
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6328
</xsl:text>
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  6329
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6330
  <xsl:template match="widget[@type='Meter']" mode="widget_defs">
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
  6331
    <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
  6332
    <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
  6333
      <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
  6334
      <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
  6335
        <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
  6336
      </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
  6337
    </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
  6338
    <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
  6339
      <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
  6340
      <xsl:with-param name="labels">
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  6341
        <xsl:text>min max</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
  6342
      </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
  6343
      <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
  6344
    </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
  6345
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6346
  <xsl:template match="widget[@type='MultiState']" mode="widget_defs">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6347
    <xsl:param name="hmi_element"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6348
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6349
      <xsl:text>Mutlistateh widget hides all subelements whose label do not match given
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6350
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6351
      <xsl:text>variable value representation. For exemple if given variable type
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6352
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6353
      <xsl:text>is HMI_INT and value is 1, then elements with label '1' will be displayed.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6354
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6355
      <xsl:text>Label can have comments, so '1#some comment' would also match. If matching
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6356
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6357
      <xsl:text>variable of type HMI_STRING, then double quotes must be used. For exemple,
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6358
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6359
      <xsl:text>'"hello"' or '"hello"#another comment' match HMI_STRING 'hello'.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6360
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6361
      <xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6362
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6363
      <xsl:text>Click on widget changes variable value to next value in given list, or to
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6364
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6365
      <xsl:text>first one if not initialized to value already part of the list.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6366
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6367
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6368
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6369
      <xsl:text>Show elements whose label match value.</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6370
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6371
    <path name="value" accepts="HMI_INT,HMI_STRING">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6372
      <xsl:text>value to compare to labels</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6373
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6374
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6375
  <xsl:template match="widget[@type='MultiState']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6376
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6377
    <xsl:text>MultiStateWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6378
    <xsl:text> extends Widget{
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6379
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6380
    <xsl:text>    frequency = 5;
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6381
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6382
    <xsl:text>    state = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6383
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6384
    <xsl:text>    dispatch(value) {
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6385
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6386
    <xsl:text>        this.state = value;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6387
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6388
    <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
  6389
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6390
    <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
  6391
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6392
    <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
  6393
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6394
    <xsl:text>            } else {
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6395
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6396
    <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
  6397
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6398
    <xsl:text>            }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6399
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6400
    <xsl:text>        }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6401
</xsl:text>
3582
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  6402
    <xsl:text>        // TODO : use RequestAnimate and animate()
7dcd0de97e6f SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3558
diff changeset
  6403
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6404
    <xsl:text>    }
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6405
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6406
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6407
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6408
    <xsl:text>    on_click(evt) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6409
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6410
    <xsl:text>        //get current selected value
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6411
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6412
    <xsl:text>        let next_ind;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6413
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6414
    <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
  6415
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6416
    <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
  6417
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6418
    <xsl:text>               next_ind = next_ind + 1;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6419
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6420
    <xsl:text>               break;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6421
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6422
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6423
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6424
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6425
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6426
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6427
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6428
    <xsl:text>        //get next selected value
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6429
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6430
    <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
  6431
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6432
    <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
  6433
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6434
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6435
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6436
    <xsl:text>        else{
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6437
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6438
    <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
  6439
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6440
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6441
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6442
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6443
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6444
    <xsl:text>        //post value to plc
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
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>        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
  6447
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6448
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6449
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6450
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6451
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6452
    <xsl:text>    init() {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6453
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6454
    <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
  6455
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6456
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  6457
</xsl:text>
2962
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6458
    <xsl:text>}
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6459
</xsl:text>
02ea529fd08c SVGHMI: Switch widget now use class declaration
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2961
diff changeset
  6460
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6461
  <xsl:template match="widget[@type='MultiState']" mode="widget_defs">
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6462
    <xsl:param name="hmi_element"/>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6463
    <xsl:text>    choices: [
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6464
</xsl:text>
2907
1695122a5e16 SVGHMI: HMI:Switch now accepts boolean values 'true' and 'false'
Edouard Tisserant
parents: 2906
diff changeset
  6465
    <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
  6466
    <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
  6467
      <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
  6468
      <xsl:text>        {
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6469
</xsl:text>
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6470
      <xsl:text>            elt:id("</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6471
      <xsl:value-of select="@id"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6472
      <xsl:text>"),
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6473
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6474
      <xsl:text>            style:"</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6475
      <xsl:value-of select="@style"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6476
      <xsl:text>",
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6477
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6478
      <xsl:text>            value:</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6479
      <xsl:value-of select="$literal"/>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6480
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6481
</xsl:text>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6482
      <xsl:text>        }</xsl:text>
2839
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6483
      <xsl:if test="position()!=last()">
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6484
        <xsl:text>,</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6485
      </xsl:if>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6486
      <xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6487
</xsl:text>
f4dd234faa11 SVGHMI: Added mostly untested switch widget
Edouard Tisserant
parents: 2838
diff changeset
  6488
    </xsl:for-each>
2851
8d15c6238e62 SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2850
diff changeset
  6489
    <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
  6490
</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
  6491
  </xsl:template>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6492
  <xsl:template match="widget[@type='PathSlider']" mode="widget_desc">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6493
    <type>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6494
      <xsl:value-of select="@type"/>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6495
    </type>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6496
    <longdesc>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  6497
      <xsl:text>PathSlider -
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6498
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6499
    </longdesc>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6500
    <shortdesc>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6501
      <xsl:text>Slide an SVG element along a path by dragging it</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6502
    </shortdesc>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6503
    <path name="value" accepts="HMI_INT,HMI_REAL">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6504
      <xsl:text>value</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6505
    </path>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6506
    <path name="min" count="optional" accepts="HMI_INT,HMI_REAL">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6507
      <xsl:text>min</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6508
    </path>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6509
    <path name="max" count="optional" accepts="HMI_INT,HMI_REAL">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6510
      <xsl:text>max</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6511
    </path>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6512
    <arg name="min" count="optional" accepts="int,real">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6513
      <xsl:text>minimum value</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6514
    </arg>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6515
    <arg name="max" count="optional" accepts="int,real">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6516
      <xsl:text>maximum value</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6517
    </arg>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6518
  </xsl:template>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6519
  <xsl:template match="widget[@type='PathSlider']" mode="widget_class">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6520
    <xsl:text>class </xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6521
    <xsl:text>PathSliderWidget</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6522
    <xsl:text> extends Widget{
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6523
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6524
    <xsl:text>    frequency = 10;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6525
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6526
    <xsl:text>    position = undefined;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6527
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6528
    <xsl:text>    min = 0;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6529
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6530
    <xsl:text>    max = 100;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6531
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6532
    <xsl:text>    scannedPoints = [];
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6533
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6534
    <xsl:text>    pathLength = undefined;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6535
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6536
    <xsl:text>    precision = undefined;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6537
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6538
    <xsl:text>    origPt = undefined;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6539
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  6540
    <xsl:text>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6541
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6542
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6543
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6544
    <xsl:text>    scanPath() {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6545
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6546
    <xsl:text>      this.pathLength = this.path_elt.getTotalLength();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6547
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6548
    <xsl:text>      this.precision = Math.floor(this.pathLength / 10);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6549
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6550
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6551
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6552
    <xsl:text>      // save linear scan for coarse approximation
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6553
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6554
    <xsl:text>      for (var scanLength = 0; scanLength &lt;= this.pathLength; scanLength += this.precision) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6555
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6556
    <xsl:text>        this.scannedPoints.push([this.path_elt.getPointAtLength(scanLength), scanLength]);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6557
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6558
    <xsl:text>      }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6559
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6560
    <xsl:text>      [this.origPt,] = this.scannedPoints[0];
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6561
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6562
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6563
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6564
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6565
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6566
    <xsl:text>    closestPoint(point) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6567
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6568
    <xsl:text>      var bestPoint,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6569
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6570
    <xsl:text>          bestLength,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6571
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6572
    <xsl:text>          bestDistance = Infinity,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6573
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6574
    <xsl:text>          scanDistance;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6575
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6576
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6577
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6578
    <xsl:text>      // use linear scan for coarse approximation
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6579
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6580
    <xsl:text>      for (let [scanPoint, scanLength] of this.scannedPoints){
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6581
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6582
    <xsl:text>        if ((scanDistance = distance2(scanPoint)) &lt; bestDistance) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6583
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6584
    <xsl:text>          bestPoint = scanPoint,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6585
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6586
    <xsl:text>          bestLength = scanLength,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6587
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6588
    <xsl:text>          bestDistance = scanDistance;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6589
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6590
    <xsl:text>        }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6591
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6592
    <xsl:text>      }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6593
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6594
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6595
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6596
    <xsl:text>      // binary search for more precise estimate
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6597
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6598
    <xsl:text>      let precision = this.precision / 2;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6599
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6600
    <xsl:text>      while (precision &gt; 0.5) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6601
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6602
    <xsl:text>        var beforePoint,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6603
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6604
    <xsl:text>            afterPoint,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6605
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6606
    <xsl:text>            beforeLength,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6607
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6608
    <xsl:text>            afterLength,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6609
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6610
    <xsl:text>            beforeDistance,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6611
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6612
    <xsl:text>            afterDistance;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6613
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6614
    <xsl:text>        if ((beforeLength = bestLength - precision) &gt;= 0 &amp;&amp;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6615
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6616
    <xsl:text>            (beforeDistance = distance2(beforePoint = this.path_elt.getPointAtLength(beforeLength))) &lt; bestDistance) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6617
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6618
    <xsl:text>          bestPoint = beforePoint,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6619
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6620
    <xsl:text>          bestLength = beforeLength,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6621
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6622
    <xsl:text>          bestDistance = beforeDistance;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6623
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  6624
    <xsl:text>        } else if ((afterLength = bestLength + precision) &lt;= this.pathLength &amp;&amp;
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6625
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6626
    <xsl:text>                   (afterDistance = distance2(afterPoint = this.path_elt.getPointAtLength(afterLength))) &lt; bestDistance) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6627
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6628
    <xsl:text>          bestPoint = afterPoint,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6629
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6630
    <xsl:text>          bestLength = afterLength,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6631
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6632
    <xsl:text>          bestDistance = afterDistance;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6633
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6634
    <xsl:text>        }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6635
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6636
    <xsl:text>        precision /= 2;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6637
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6638
    <xsl:text>      }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6639
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6640
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6641
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6642
    <xsl:text>      return [bestPoint, bestLength];
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6643
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6644
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6645
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6646
    <xsl:text>      function distance2(p) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6647
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6648
    <xsl:text>        var dx = p.x - point.x,
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6649
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6650
    <xsl:text>            dy = p.y - point.y;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6651
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6652
    <xsl:text>        return dx * dx + dy * dy;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6653
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6654
    <xsl:text>      }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6655
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6656
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6657
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6658
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6659
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6660
    <xsl:text>    dispatch(value,oldval, index) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6661
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6662
    <xsl:text>        switch(index) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6663
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6664
    <xsl:text>            case 0:
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6665
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6666
    <xsl:text>                this.position = value;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6667
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6668
    <xsl:text>                break;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6669
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6670
    <xsl:text>            case 1:
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6671
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6672
    <xsl:text>                this.min = value;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6673
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6674
    <xsl:text>                break;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6675
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6676
    <xsl:text>            case 2:
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6677
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6678
    <xsl:text>                this.max = value;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6679
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6680
    <xsl:text>                break;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6681
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6682
    <xsl:text>        }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6683
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6684
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6685
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6686
    <xsl:text>        this.request_animate();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6687
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6688
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6689
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6690
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6691
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6692
    <xsl:text>    get_current_point(){
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6693
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6694
    <xsl:text>        let currLength = this.pathLength * (this.position - this.min) / (this.max - this.min)
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6695
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6696
    <xsl:text>        return this.path_elt.getPointAtLength(currLength);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6697
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6698
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6699
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6700
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6701
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6702
    <xsl:text>    animate(){
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6703
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6704
    <xsl:text>        if(this.position == undefined)
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6705
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6706
    <xsl:text>            return;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6707
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6708
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6709
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6710
    <xsl:text>        let currPt = this.get_current_point();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6711
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6712
    <xsl:text>        this.cursor_transform.setTranslate(currPt.x - this.origPt.x, currPt.y - this.origPt.y);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6713
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6714
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6715
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6716
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6717
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6718
    <xsl:text>    init() {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6719
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6720
    <xsl:text>        if(this.args.length == 2)
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6721
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6722
    <xsl:text>            [this.min, this.max]=this.args;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6723
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6724
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6725
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6726
    <xsl:text>        this.scanPath();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6727
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6728
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6729
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6730
    <xsl:text>        this.cursor_transform = svg_root.createSVGTransform();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6731
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6732
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6733
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6734
    <xsl:text>        this.cursor_elt.transform.baseVal.appendItem(this.cursor_transform);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6735
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6736
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6737
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6738
    <xsl:text>        this.cursor_elt.onpointerdown = (e) =&gt; this.on_cursor_down(e);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6739
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6740
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6741
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6742
    <xsl:text>        this.bound_drag = this.drag.bind(this);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6743
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6744
    <xsl:text>        this.bound_drop = this.drop.bind(this);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6745
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6746
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6747
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6748
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6749
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6750
    <xsl:text>    start_dragging_from_event(e){
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6751
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6752
    <xsl:text>        let clientPoint = new DOMPoint(e.clientX, e.clientY);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6753
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6754
    <xsl:text>        let point = clientPoint.matrixTransform(this.invctm);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6755
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6756
    <xsl:text>        let currPt = this.get_current_point();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6757
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6758
    <xsl:text>        this.draggingOffset = new DOMPoint(point.x - currPt.x , point.y - currPt.y);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6759
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6760
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6761
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6762
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6763
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6764
    <xsl:text>    apply_position_from_event(e){
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6765
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6766
    <xsl:text>        let clientPoint = new DOMPoint(e.clientX, e.clientY);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6767
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6768
    <xsl:text>        let rawPoint = clientPoint.matrixTransform(this.invctm);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6769
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6770
    <xsl:text>        let point = new DOMPoint(rawPoint.x - this.draggingOffset.x , rawPoint.y - this.draggingOffset.y);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6771
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6772
    <xsl:text>        let [closestPoint, closestLength] = this.closestPoint(point);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6773
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6774
    <xsl:text>        let new_position = this.min + (this.max - this.min) * closestLength / this.pathLength;
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6775
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6776
    <xsl:text>        this.position = Math.round(Math.max(Math.min(new_position, this.max), this.min));
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6777
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6778
    <xsl:text>        this.apply_hmi_value(0, this.position);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6779
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6780
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6781
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6782
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6783
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6784
    <xsl:text>    on_cursor_down(e){
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6785
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6786
    <xsl:text>        // get scrollbar -&gt; root transform
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6787
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6788
    <xsl:text>        let ctm = this.path_elt.getCTM();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6789
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6790
    <xsl:text>        // root -&gt; path transform
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6791
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6792
    <xsl:text>        this.invctm = ctm.inverse();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6793
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6794
    <xsl:text>        this.start_dragging_from_event(e);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6795
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6796
    <xsl:text>        svg_root.addEventListener("pointerup", this.bound_drop, true);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6797
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6798
    <xsl:text>        svg_root.addEventListener("pointermove", this.bound_drag, true);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6799
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6800
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6801
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6802
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6803
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6804
    <xsl:text>    drop(e) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6805
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6806
    <xsl:text>        svg_root.removeEventListener("pointerup", this.bound_drop, true);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6807
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6808
    <xsl:text>        svg_root.removeEventListener("pointermove", this.bound_drag, true);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6809
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6810
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6811
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6812
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6813
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6814
    <xsl:text>    drag(e) {
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6815
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6816
    <xsl:text>        this.apply_position_from_event(e);
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6817
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6818
    <xsl:text>    }
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6819
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6820
    <xsl:text>}
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6821
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6822
  </xsl:template>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6823
  <xsl:template match="widget[@type='PathSlider']" mode="widget_defs">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6824
    <xsl:param name="hmi_element"/>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6825
    <xsl:call-template name="defs_by_labels">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6826
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6827
      <xsl:with-param name="labels">
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6828
        <xsl:text>cursor path</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6829
      </xsl:with-param>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6830
    </xsl:call-template>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6831
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6832
  <xsl:template match="widget[@type='ScrollBar']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6833
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6834
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6835
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6836
    <longdesc>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6837
      <xsl:text>ScrollBar - svg:rect based scrollbar
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6838
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6839
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6840
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6841
      <xsl:text>ScrollBar</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6842
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6843
    <path name="value" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6844
      <xsl:text>value</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6845
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6846
    <path name="range" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6847
      <xsl:text>range</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6848
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6849
    <path name="visible" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6850
      <xsl:text>visible</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6851
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  6852
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6853
  <xsl:template match="widget[@type='ScrollBar']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6854
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6855
    <xsl:text>ScrollBarWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  6856
    <xsl:text> extends Widget{
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6857
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6858
    <xsl:text>    frequency = 10;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6859
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6860
    <xsl:text>    position = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6861
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6862
    <xsl:text>    range = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6863
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6864
    <xsl:text>    size = undefined;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6865
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6866
    <xsl:text>    mincursize = 0.1;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6867
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6868
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6869
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6870
    <xsl:text>    dispatch(value,oldval, index) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6871
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6872
    <xsl:text>        switch(index) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6873
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6874
    <xsl:text>            case 0:
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6875
</xsl:text>
3178
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6876
    <xsl:text>                this.range = Math.max(1,value);
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6877
</xsl:text>
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6878
    <xsl:text>                break;
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6879
</xsl:text>
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6880
    <xsl:text>            case 1:
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6881
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  6882
    <xsl:text>                this.position = value;
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6883
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6884
    <xsl:text>                break;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6885
</xsl:text>
3178
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6886
    <xsl:text>            case 2:
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6887
</xsl:text>
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6888
    <xsl:text>                this.size = value;
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6889
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6890
    <xsl:text>                break;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6891
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6892
    <xsl:text>        }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6893
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6894
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6895
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6896
    <xsl:text>        this.request_animate();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6897
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6898
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6899
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6900
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6901
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6902
    <xsl:text>    get_ratios() {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6903
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6904
    <xsl:text>        let range = this.range;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6905
</xsl:text>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6906
    <xsl:text>        let size = Math.max(range * this.mincursize, Math.min(this.size, range));
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6907
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6908
    <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
  6909
</xsl:text>
3151
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3150
diff changeset
  6910
    <xsl:text>        let pixels = maxh;
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3150
diff changeset
  6911
</xsl:text>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6912
    <xsl:text>        return [size, maxh, range, pixels];
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6913
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6914
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6915
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6916
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6917
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6918
    <xsl:text>    animate(){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6919
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6920
    <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
  6921
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6922
    <xsl:text>            return;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6923
</xsl:text>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6924
    <xsl:text>        let [size, maxh, range, pixels] = this.get_ratios();
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6925
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6926
    <xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6927
</xsl:text>
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  6928
    <xsl:text>        let new_y = this.range_elt.y.baseVal.value + Math.round(Math.min(this.position,range-size) * pixels / range);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6929
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6930
    <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
  6931
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6932
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6933
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6934
    <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
  6935
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6936
    <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
  6937
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6938
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6939
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6940
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6941
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6942
    <xsl:text>    init_mandatory() {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6943
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6944
    <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
  6945
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6946
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6947
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6948
    <xsl:text>        this.bound_drag = this.drag.bind(this);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6949
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6950
    <xsl:text>        this.bound_drop = this.drop.bind(this);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6951
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6952
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6953
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6954
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6955
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6956
    <xsl:text>    apply_position(position){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6957
</xsl:text>
3151
8e5d383a58cb SVGHMI: Fixed HMI:ScrollBar to exclude cursor size from accessible range ( position is now 0->range-size instead of 0->range ). Fixed and extended tests/svghmi to have working ScrollBar on two alarm pages. Includes generated XSLT update.
Edouard Tisserant
parents: 3150
diff changeset
  6958
    <xsl:text>        this.position = Math.round(Math.max(Math.min(position, this.range - this.size), 0));
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  6959
</xsl:text>
3178
21cb76012c78 SVGHMI: Make ScrollBar's variables order match JsonTable's variables order to avoid confusion
Edouard Tisserant
parents: 3175
diff changeset
  6960
    <xsl:text>        this.apply_hmi_value(1, this.position);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6961
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6962
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6963
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6964
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6965
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6966
    <xsl:text>    on_page_click(is_up){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6967
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6968
    <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
  6969
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6970
    <xsl:text>                                  : this.position+this.size);
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6971
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6972
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6973
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6974
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6975
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6976
    <xsl:text>    on_cursor_down(e){
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6977
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6978
    <xsl:text>        // get scrollbar -&gt; root transform
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6979
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6980
    <xsl:text>        let ctm = this.range_elt.getCTM();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6981
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6982
    <xsl:text>        // relative motion -&gt; discard translation
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6983
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6984
    <xsl:text>        ctm.e = 0;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6985
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6986
    <xsl:text>        ctm.f = 0;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6987
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6988
    <xsl:text>        // root -&gt; scrollbar transform
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6989
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6990
    <xsl:text>        this.invctm = ctm.inverse();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6991
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6992
    <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
  6993
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6994
    <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
  6995
</xsl:text>
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  6996
    <xsl:text>        this.dragpos = this.position;
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  6997
</xsl:text>
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6998
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  6999
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7000
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7001
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7002
    <xsl:text>    drop(e) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7003
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7004
    <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
  7005
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7006
    <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
  7007
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7008
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7009
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7010
    <xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7011
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7012
    <xsl:text>    drag(e) {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7013
</xsl:text>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  7014
    <xsl:text>        let [size, maxh, range, pixels] = this.get_ratios();
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7015
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7016
    <xsl:text>        if(pixels == 0) return;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7017
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7018
    <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
  7019
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7020
    <xsl:text>        let movement = point.matrixTransform(this.invctm).y;
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7021
</xsl:text>
3326
18d743e517b5 SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3323
diff changeset
  7022
    <xsl:text>        this.dragpos += movement * range / pixels;
3147
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7023
</xsl:text>
910290aec533 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3141
diff changeset
  7024
    <xsl:text>        this.apply_position(this.dragpos);
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7025
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7026
    <xsl:text>    }
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7027
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7028
    <xsl:text>}
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7029
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7030
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7031
  <xsl:template match="widget[@type='ScrollBar']" mode="widget_defs">
3141
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7032
    <xsl:param name="hmi_element"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7033
    <xsl:call-template name="defs_by_labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7034
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7035
      <xsl:with-param name="labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7036
        <xsl:text>cursor range</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7037
      </xsl:with-param>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7038
    </xsl:call-template>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7039
    <xsl:variable name="pagebuttons">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7040
      <xsl:call-template name="defs_by_labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7041
        <xsl:with-param name="hmi_element" select="$hmi_element"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7042
        <xsl:with-param name="labels">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7043
          <xsl:text>pageup pagedown</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7044
        </xsl:with-param>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7045
        <xsl:with-param name="mandatory" select="'no'"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7046
      </xsl:call-template>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7047
    </xsl:variable>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7048
    <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
  7049
    <xsl:value-of select="$pagebuttons"/>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7050
    <xsl:text>    init: function() {
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7051
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7052
    <xsl:text>        this.init_mandatory();
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7053
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7054
    <xsl:if test="$have_pagebuttons">
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7055
      <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
  7056
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7057
      <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
  7058
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7059
    </xsl:if>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7060
    <xsl:text>    },
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7061
</xsl:text>
6d4c1e6560ac SVGHMI: update generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3134
diff changeset
  7062
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7063
  <xsl:template match="widget[@type='Slider']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7064
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7065
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7066
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7067
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7068
      <xsl:text>Slider - DEPRECATED - use ScrollBar or PathSlider instead
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7069
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7070
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7071
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7072
      <xsl:text>Slider - DEPRECATED - use ScrollBar instead</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7073
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7074
    <path name="value" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7075
      <xsl:text>value</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7076
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7077
    <path name="range" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7078
      <xsl:text>range</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7079
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7080
    <path name="visible" accepts="HMI_INT">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7081
      <xsl:text>visible</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7082
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7083
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7084
  <xsl:template match="widget[@type='Slider']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7085
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7086
    <xsl:text>SliderWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7087
    <xsl:text> extends Widget{
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7088
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7089
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7090
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7091
    <xsl:text>    range = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7092
</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
  7093
    <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
  7094
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7095
    <xsl:text>    scroll_size = undefined;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7096
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7097
    <xsl:text>    scroll_range = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7098
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7099
    <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
  7100
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7101
    <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
  7102
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7103
    <xsl:text>    fi = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7104
</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
  7105
    <xsl:text>    curr_value = 0;
3045
f6d428330e04 All widgets reworked to use widget class and animate function if needed
usveticic
parents: 3026
diff changeset
  7106
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7107
    <xsl:text>    drag = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7108
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7109
    <xsl:text>    enTimer = false;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7110
</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
  7111
    <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
  7112
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7113
    <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
  7114
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7115
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7116
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7117
    <xsl:text>    dispatch(value,oldval, index) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7118
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7119
    <xsl:text>        if (index == 0){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7120
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7121
    <xsl:text>            let [min,max,start,totallength] = this.range;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7122
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7123
    <xsl:text>            //save current value inside widget
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7124
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7125
    <xsl:text>            this.curr_value = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7126
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7127
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7128
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7129
    <xsl:text>            //check if in range
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7130
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7131
    <xsl:text>            if (this.curr_value &gt; max){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7132
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7133
    <xsl:text>                this.curr_value = max;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7134
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7135
    <xsl:text>                this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7136
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7137
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7138
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7139
    <xsl:text>            else if (this.curr_value &lt; min){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7140
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7141
    <xsl:text>                this.curr_value = min;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7142
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7143
    <xsl:text>                this.apply_hmi_value(0, this.curr_value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7144
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7145
    <xsl:text>            }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7146
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7147
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7148
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7149
    <xsl:text>            if(this.value_elt)
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7150
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7151
    <xsl:text>                this.value_elt.textContent = String(value);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7152
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7153
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7154
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7155
    <xsl:text>        else if(index == 1){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7156
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7157
    <xsl:text>            this.scroll_range = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7158
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7159
    <xsl:text>            this.set_scroll();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7160
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7161
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7162
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7163
    <xsl:text>        else if(index == 2){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7164
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7165
    <xsl:text>            this.scroll_visible = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7166
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7167
    <xsl:text>            this.set_scroll();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7168
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7169
    <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
  7170
</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
  7171
    <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
  7172
</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
  7173
    <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
  7174
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7175
    <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
  7176
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7177
    <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
  7178
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7179
    <xsl:text>        }
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7180
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7181
    <xsl:text>    }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7182
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7183
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7184
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7185
    <xsl:text>    set_scroll(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7186
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7187
    <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
  7188
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7189
    <xsl:text>        if(this.scroll_range &gt; this.scroll_visible){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7190
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7191
    <xsl:text>            this.scroll_size = this.scroll_range - this.scroll_visible;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7192
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7193
    <xsl:text>            this.range[0] = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7194
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7195
    <xsl:text>            this.range[1] = this.scroll_size;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7196
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7197
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7198
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7199
    <xsl:text>        else{
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7200
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7201
    <xsl:text>            this.scroll_size = 1;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7202
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7203
    <xsl:text>            this.range[0] = 0;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7204
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7205
    <xsl:text>            this.range[1] = 1;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7206
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7207
    <xsl:text>        }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7208
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7209
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7210
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7211
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7212
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7213
    <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
  7214
</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
  7215
    <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
  7216
</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
  7217
    <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
  7218
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7219
    <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
  7220
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7221
    <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
  7222
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7223
    <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
  7224
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7225
    <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
  7226
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7227
    <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
  7228
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7229
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7230
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7231
    <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
  7232
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7233
    <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
  7234
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7235
    <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
  7236
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7237
    <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
  7238
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7239
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7240
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7241
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7242
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7243
    <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
  7244
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7245
    <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
  7246
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7247
    <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
  7248
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7249
    <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
  7250
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7251
    <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
  7252
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7253
    <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
  7254
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7255
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7256
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7257
    <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
  7258
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7259
    <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
  7260
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7261
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7262
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7263
    <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
  7264
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7265
    <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
  7266
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7267
    <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
  7268
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7269
    <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
  7270
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7271
    <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
  7272
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7273
    <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
  7274
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7275
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7276
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7277
    <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
  7278
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7279
    <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
  7280
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7281
    <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
  7282
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7283
    <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
  7284
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7285
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7286
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7287
    <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
  7288
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7289
    <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
  7290
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7291
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7292
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7293
    <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
  7294
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7295
    <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
  7296
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7297
    <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
  7298
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7299
    <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
  7300
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7301
    <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
  7302
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7303
    <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
  7304
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7305
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7306
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7307
    <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
  7308
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7309
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7310
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7311
    <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
  7312
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7313
    <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
  7314
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7315
    <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
  7316
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7317
    <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
  7318
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7319
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7320
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7321
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7322
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7323
    <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
  7324
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7325
    <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
  7326
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7327
    <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
  7328
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7329
    <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
  7330
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7331
    <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
  7332
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7333
    <xsl:text>                }else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7334
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7335
    <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
  7336
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7337
    <xsl:text>                }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7338
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7339
    <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
  7340
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7341
    <xsl:text>            }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7342
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7343
    <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
  7344
</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
  7345
    <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
  7346
</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
  7347
    <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
  7348
</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
  7349
    <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
  7350
</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
  7351
    <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
  7352
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7353
    <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
  7354
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7355
    <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
  7356
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7357
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7358
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7359
    <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
  7360
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7361
    <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
  7362
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7363
    <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
  7364
</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
  7365
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7366
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7367
    <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
  7368
</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
  7369
    <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
  7370
</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
  7371
    <xsl:text>            this.drag = false;
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7372
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7373
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7374
</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
  7375
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7376
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7377
    <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
  7378
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7379
    <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
  7380
</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
  7381
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7382
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7383
    <xsl:text>    }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7384
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7385
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7386
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7387
    <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
  7388
</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
  7389
    <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
  7390
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7391
    <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
  7392
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7393
    <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
  7394
</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
  7395
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7396
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7397
    <xsl:text>            //reset timer
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7398
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7399
    <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
  7400
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7401
    <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
  7402
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7403
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7404
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7405
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7406
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7407
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7408
</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
  7409
    <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
  7410
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7411
    <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
  7412
</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
  7413
    <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
  7414
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7415
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7416
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7417
    <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
  7418
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7419
    <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
  7420
</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
  7421
    <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
  7422
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7423
    <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
  7424
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7425
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7426
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7427
    <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
  7428
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7429
    <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
  7430
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7431
    <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
  7432
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7433
    <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
  7434
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7435
    <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
  7436
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7437
    <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
  7438
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7439
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7440
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7441
    <xsl:text>        else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7442
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7443
    <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
  7444
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7445
    <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
  7446
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7447
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7448
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7449
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7450
</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
  7451
    <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
  7452
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7453
    <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
  7454
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7455
    <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
  7456
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7457
    <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
  7458
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7459
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7460
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7461
    <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
  7462
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7463
    <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
  7464
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7465
    <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
  7466
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7467
    <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
  7468
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7469
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7470
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7471
    <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
  7472
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7473
    <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
  7474
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7475
    <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
  7476
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7477
    <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
  7478
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7479
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7480
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7481
    <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
  7482
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7483
    <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
  7484
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7485
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7486
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7487
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7488
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7489
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7490
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7491
    <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
  7492
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7493
    <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
  7494
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7495
    <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
  7496
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7497
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7498
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7499
    <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
  7500
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7501
    <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
  7502
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7503
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7504
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7505
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7506
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7507
    <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
  7508
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7509
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7510
</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
  7511
    <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
  7512
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7513
    <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
  7514
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7515
    <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
  7516
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7517
    <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
  7518
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7519
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7520
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7521
    <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
  7522
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7523
    <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
  7524
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7525
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7526
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7527
    <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
  7528
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7529
    <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
  7530
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7531
    <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
  7532
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7533
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7534
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7535
    <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
  7536
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7537
    <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
  7538
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7539
    <xsl:text>                }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7540
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7541
    <xsl:text>            }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7542
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7543
    <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
  7544
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7545
    <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
  7546
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7547
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7548
</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
  7549
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7550
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7551
    <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
  7552
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7553
    <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
  7554
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7555
    <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
  7556
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7557
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7558
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7559
    <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
  7560
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7561
    <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
  7562
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7563
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7564
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7565
    <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
  7566
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7567
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7568
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7569
    <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
  7570
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7571
    <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
  7572
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7573
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7574
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7575
    <xsl:text>    }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7576
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7577
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7578
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7579
    <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
  7580
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7581
    <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
  7582
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7583
    <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
  7584
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7585
    <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
  7586
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7587
    <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
  7588
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7589
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7590
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7591
    <xsl:text>        else{
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7592
</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
  7593
    <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
  7594
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7595
    <xsl:text>        }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7596
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7597
    <xsl:text>    }
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7598
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7599
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7600
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7601
    <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
  7602
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7603
    <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
  7604
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7605
    <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
  7606
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7607
    <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
  7608
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7609
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7610
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7611
    <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
  7612
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7613
    <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
  7614
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7615
    <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
  7616
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7617
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7618
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7619
    <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
  7620
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7621
    <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
  7622
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7623
    <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
  7624
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7625
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7626
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7627
    <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
  7628
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7629
    <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
  7630
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7631
    <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
  7632
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7633
    <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
  7634
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7635
    <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
  7636
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7637
    <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
  7638
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7639
    <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
  7640
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7641
    <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
  7642
</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
  7643
    <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
  7644
</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
  7645
    <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
  7646
</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
  7647
    <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
  7648
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7649
    <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
  7650
</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
  7651
    <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
  7652
</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
  7653
    <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
  7654
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7655
    <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
  7656
</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
  7657
    <xsl:text>        }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7658
</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
  7659
    <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
  7660
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7661
    <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
  7662
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7663
    <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
  7664
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7665
    <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
  7666
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7667
    <xsl:text>        }
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7668
</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
  7669
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7670
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7671
    <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
  7672
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7673
    <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
  7674
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7675
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7676
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7677
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7678
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7679
    <xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7680
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7681
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7682
</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
  7683
    <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
  7684
</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
  7685
    <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
  7686
</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
  7687
    <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
  7688
</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
  7689
    <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
  7690
</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
  7691
    <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
  7692
</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
  7693
    <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
  7694
</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
  7695
    <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
  7696
</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
  7697
    <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
  7698
</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
  7699
    <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
  7700
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7701
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7702
</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
  7703
    <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
  7704
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7705
    <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
  7706
</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
  7707
    <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
  7708
</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
  7709
    <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
  7710
</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
  7711
    <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
  7712
</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
  7713
    <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
  7714
</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
  7715
    <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
  7716
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7717
    <xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7718
</xsl:text>
6ea4b7e1a9ed Merge + fix side effects of making warning instead of errors in case of missing HMI variable
Edouard Tisserant
parents: 3048
diff changeset
  7719
    <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
  7720
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7721
    <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
  7722
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7723
    <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
  7724
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7725
    <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
  7726
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7727
    <xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7728
</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
  7729
    <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
  7730
</xsl:text>
3021
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7731
    <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
  7732
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7733
    <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
  7734
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7735
    <xsl:text>        //touch recognised as page drag without next command
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7736
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7737
    <xsl:text>        document.body.addEventListener("touchstart", function(e){}, false);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7738
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7739
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7740
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  7741
    <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
  7742
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7743
    <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
  7744
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7745
    <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
  7746
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7747
    <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
  7748
</xsl:text>
49799de67540 SVGHMI: add a SetPoint to Slider Widget, visible only when operating the slider.
Edouard Tisserant
parents: 3019
diff changeset
  7749
    <xsl:text>        }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7750
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7751
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7752
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7753
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7754
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7755
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7756
</xsl:text>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7757
  </xsl:template>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7758
  <xsl:template match="widget[@type='Slider']" mode="widget_defs">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7759
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7760
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7761
      <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
  7762
      <xsl:with-param name="labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7763
        <xsl:text>handle range</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7764
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7765
    </xsl:call-template>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7766
    <xsl:call-template name="defs_by_labels">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7767
      <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
  7768
      <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
  7769
        <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
  7770
      </xsl:with-param>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7771
      <xsl:with-param name="mandatory" select="'no'"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7772
    </xsl:call-template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7773
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7774
  <xsl:template match="widget[@type='Switch']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7775
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7776
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7777
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7778
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7779
      <xsl:text>Switch widget hides all subelements whose label do not match given
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7780
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7781
      <xsl:text>variable current value representation. For exemple if given variable type
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7782
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7783
      <xsl:text>is HMI_INT and value is 1, then elements with label '1' will be displayed.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7784
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7785
      <xsl:text>Label can have comments, so '1#some comment' would also match. If matching
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7786
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7787
      <xsl:text>variable of type HMI_STRING, then double quotes must be used. For exemple,
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7788
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7789
      <xsl:text>'"hello"' or '"hello"#another comment' match HMI_STRING 'hello'.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7790
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7791
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7792
    <shortdesc>
3387
ecefd38d5c7d SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant
parents: 3383
diff changeset
  7793
      <xsl:text>Show elements whose label matches value.</xsl:text>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7794
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7795
    <path name="value" accepts="HMI_INT,HMI_STRING">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7796
      <xsl:text>value to compare to labels</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7797
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  7798
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7799
  <xsl:template match="widget[@type='Switch']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7800
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7801
    <xsl:text>SwitchWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7802
    <xsl:text> extends Widget{
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7803
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7804
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7805
</xsl:text>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7806
    <xsl:text>    current_value = undefined;
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7807
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7808
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7809
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7810
    <xsl:text>    init(){
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7811
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7812
    <xsl:text>        this.animate();
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7813
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7814
    <xsl:text>    }
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7815
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7816
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7817
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7818
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7819
</xsl:text>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7820
    <xsl:text>        this.current_value = value;
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7821
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7822
    <xsl:text>        this.request_animate();
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7823
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7824
    <xsl:text>    }
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7825
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7826
    <xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7827
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7828
    <xsl:text>    animate(){
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7829
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7830
    <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
  7831
</xsl:text>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7832
    <xsl:text>            if(this.current_value != choice.value){
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7833
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7834
    <xsl:text>                if(choice.parent == undefined){
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7835
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7836
    <xsl:text>                    choice.parent = choice.elt.parentElement;
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7837
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7838
    <xsl:text>                    choice.parent.removeChild(choice.elt);
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7839
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7840
    <xsl:text>                }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7841
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7842
    <xsl:text>            } else {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7843
</xsl:text>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7844
    <xsl:text>                if(choice.parent != undefined){
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7845
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7846
    <xsl:text>                    choice.parent.insertBefore(choice.elt,choice.sibling);
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7847
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7848
    <xsl:text>                    choice.parent = undefined;
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7849
</xsl:text>
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7850
    <xsl:text>                }
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7851
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7852
    <xsl:text>            }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7853
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7854
    <xsl:text>        }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7855
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7856
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7857
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7858
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7859
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7860
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  7861
  <xsl:template match="widget[@type='Switch']" mode="widget_defs">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7862
    <xsl:param name="hmi_element"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7863
    <xsl:text>    choices: [
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7864
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7865
    <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
3220
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  7866
    <xsl:variable name="subelts" select="$result_widgets[@id = $hmi_element/@id]//*"/>
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  7867
    <xsl:variable name="subwidgets" select="$subelts//*[@id = $hmi_widgets/@id]"/>
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  7868
    <xsl:variable name="accepted" select="$subelts[not(ancestor-or-self::*/@id = $subwidgets/@id)]"/>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7869
    <xsl:variable name="choices" select="$accepted[regexp:test(@inkscape:label,$regex)]"/>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7870
    <xsl:for-each select="$choices">
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7871
      <xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7872
      <xsl:variable name="sibling" select="following-sibling::*[not(@id = $choices/@id)][position()=1]"/>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7873
      <xsl:text>        {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7874
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7875
      <xsl:text>            elt:id("</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7876
      <xsl:value-of select="@id"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7877
      <xsl:text>"),
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7878
</xsl:text>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  7879
      <xsl:text>            parent:undefined,
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7880
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7881
      <xsl:choose>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7882
        <xsl:when test="count($sibling)=0">
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7883
          <xsl:text>            sibling:null,
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7884
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7885
        </xsl:when>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7886
        <xsl:otherwise>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7887
          <xsl:text>            sibling:id("</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7888
          <xsl:value-of select="$sibling/@id"/>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7889
          <xsl:text>"),
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7890
</xsl:text>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7891
        </xsl:otherwise>
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  7892
      </xsl:choose>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7893
      <xsl:text>            value:</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7894
      <xsl:value-of select="$literal"/>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7895
      <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7896
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7897
      <xsl:text>        }</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7898
      <xsl:if test="position()!=last()">
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7899
        <xsl:text>,</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7900
      </xsl:if>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7901
      <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7902
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7903
    </xsl:for-each>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7904
    <xsl:text>    ],
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7905
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  7906
  </xsl:template>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7907
  <xsl:template match="widget[@type='TextList']" mode="widget_desc">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7908
    <type>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7909
      <xsl:value-of select="@type"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7910
    </type>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7911
    <longdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7912
      <xsl:text>TextList widget is a svg:group, list items are labeled elements
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7913
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7914
      <xsl:text>in that group.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7915
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7916
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7917
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7918
      <xsl:text>To use a TextList, clone (svg:use) one of the items inside the widget 
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7919
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7920
      <xsl:text>that expects a TextList.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7921
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7922
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7923
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7924
      <xsl:text>In this list, (translated) text content is what matters. Nevertheless
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7925
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7926
      <xsl:text>text style of the cloned item will be applied in client widget.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7927
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7928
    </longdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7929
    <shortdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7930
      <xsl:text>A named list of ordered texts </xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7931
    </shortdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7932
    <arg name="listname"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7933
  </xsl:template>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7934
  <xsl:template match="widget[@type='TextList']" mode="widget_defs">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7935
    <xsl:param name="hmi_element"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7936
    <xsl:text>    texts: [
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7937
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7938
    <xsl:for-each select="func:refered_elements($hmi_element/*[@inkscape:label])[self::svg:text]">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7939
      <xsl:text>        id("</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7940
      <xsl:value-of select="@id"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7941
      <xsl:text>"),
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7942
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7943
    </xsl:for-each>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7944
    <xsl:text>    ].reverse(),
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7945
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7946
  </xsl:template>
3557
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7947
  <xsl:template match="widget[@type='TextList']" mode="widget_class">
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7948
    <xsl:text>class </xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7949
    <xsl:text>TextListWidget</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7950
    <xsl:text> extends Widget{
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7951
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7952
    <xsl:text>}
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7953
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7954
  </xsl:template>
3323
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7955
  <xsl:template match="widget[@type='TextStyleList']" mode="widget_desc">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7956
    <type>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7957
      <xsl:value-of select="@type"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7958
    </type>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7959
    <longdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7960
      <xsl:text>TextStyleList widget is a svg:group, list items are labeled elements
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7961
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7962
      <xsl:text>in that group.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7963
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7964
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7965
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7966
      <xsl:text>To use a TextStyleList, clone (svg:use) one of the items inside the widget 
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7967
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7968
      <xsl:text>that expects a TextStyleList.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7969
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7970
      <xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7971
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7972
      <xsl:text>In this list, only style matters. Text content is ignored.
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7973
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7974
    </longdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7975
    <shortdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7976
      <xsl:text>A named list of named texts</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7977
    </shortdesc>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7978
    <arg name="listname"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7979
  </xsl:template>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7980
  <xsl:template match="widget[@type='TextStyleList']" mode="widget_defs">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7981
    <xsl:param name="hmi_element"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7982
    <xsl:text>    styles: {
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7983
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7984
    <xsl:for-each select="$hmi_element/*[@inkscape:label]">
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7985
      <xsl:variable name="style" select="func:refered_elements(.)[self::svg:text]/@style"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7986
      <xsl:text>        </xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7987
      <xsl:value-of select="@inkscape:label"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7988
      <xsl:text>: "</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7989
      <xsl:value-of select="$style"/>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7990
      <xsl:text>",
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7991
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7992
    </xsl:for-each>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7993
    <xsl:text>    },
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7994
</xsl:text>
864a6e5984cc SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3299
diff changeset
  7995
  </xsl:template>
3557
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7996
  <xsl:template match="widget[@type='TextStyleList']" mode="widget_class">
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7997
    <xsl:text>class </xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7998
    <xsl:text>TextStyleListWidget</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  7999
    <xsl:text> extends Widget{
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  8000
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  8001
    <xsl:text>}
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  8002
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
  8003
  </xsl:template>
3241
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8004
  <xsl:template match="widget[@type='ToggleButton']" mode="widget_desc">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8005
    <type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8006
      <xsl:value-of select="@type"/>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8007
    </type>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8008
    <longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8009
      <xsl:text>Button widget takes one boolean variable path, and reflect current true
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8010
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8011
      <xsl:text>or false value by showing "active" or "inactive" labeled element
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8012
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8013
      <xsl:text>respectively. Clicking or touching button toggles variable.
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8014
</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8015
    </longdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8016
    <shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8017
      <xsl:text>Toggle button reflecting given boolean variable</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8018
    </shortdesc>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8019
    <path name="value" accepts="HMI_BOOL">
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8020
      <xsl:text>Boolean variable</xsl:text>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8021
    </path>
fe945f1f48b7 SVGHMI: WIP on Widget DnD UI : Added documentation to widgets, that is injected in widget parse tree during widget analysis
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3238
diff changeset
  8022
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  8023
  <xsl:template match="widget[@type='ToggleButton']" mode="widget_class">
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  8024
    <xsl:text>class </xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  8025
    <xsl:text>ToggleButtonWidget</xsl:text>
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  8026
    <xsl:text> extends Widget{
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8027
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8028
    <xsl:text>    frequency = 5;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8029
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8030
    <xsl:text>    state = 0;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8031
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8032
    <xsl:text>    active_style = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8033
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8034
    <xsl:text>    inactive_style = undefined;
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8035
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8036
    <xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8037
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8038
    <xsl:text>    dispatch(value) {
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8039
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8040
    <xsl:text>        this.state = value;
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8041
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8042
    <xsl:text>        //redraw toggle button
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8043
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8044
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8045
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8046
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8047
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8048
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8049
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8050
    <xsl:text>    on_click(evt) {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8051
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8052
    <xsl:text>        //toggle state and apply
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8053
</xsl:text>
3220
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  8054
    <xsl:text>        this.state = this.state ? false : 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
  8055
</xsl:text>
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8056
    <xsl:text>        this.apply_hmi_value(0, this.state);
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8057
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8058
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8059
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8060
    <xsl:text>        //redraw toggle button
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8061
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8062
    <xsl:text>        this.request_animate();
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8063
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8064
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8065
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8066
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8067
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8068
    <xsl:text>    animate(){
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8069
</xsl:text>
3220
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  8070
    <xsl:text>        // redraw toggle button on screen refresh
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  8071
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8072
    <xsl:text>        this.set_activation_state(this.state);
3065
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8073
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8074
    <xsl:text>    }
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8075
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8076
    <xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8077
</xsl:text>
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8078
    <xsl:text>    init() {
c369a742443d SVGHMI: non significant cosmetic changes
Edouard Tisserant
parents: 3058
diff changeset
  8079
</xsl:text>
3220
ec365ef396b1 SVGHMI: Ensure that when widgets are nested in HMI:Switch widget, their sub-elements are taken as switch's choice in case their label match the syntax.
Edouard Tisserant
parents: 3212
diff changeset
  8080
    <xsl:text>        this.element.onclick = (evt) =&gt; this.on_click(evt);
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8081
</xsl:text>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8082
    <xsl:text>        this.set_activation_state(undefined);
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8083
</xsl:text>
3015
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8084
    <xsl:text>    }
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8085
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8086
    <xsl:text>}
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8087
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
  8088
  </xsl:template>
3238
8a9d4c794cba SVGHMI: updating generated XSLT
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3229
diff changeset
  8089
  <xsl:template match="widget[@type='ToggleButton']" mode="widget_defs">
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8090
    <xsl:param name="hmi_element"/>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8091
    <xsl:text>    activable_sub:{
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8092
</xsl:text>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8093
    <xsl:call-template name="defs_by_labels">
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8094
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8095
      <xsl:with-param name="labels">
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8096
        <xsl:text>/active /inactive</xsl:text>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8097
      </xsl:with-param>
3525
c2f7e9bda366 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3521
diff changeset
  8098
      <xsl:with-param name="mandatory" select="'warn'"/>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8099
    </xsl:call-template>
3521
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8100
    <xsl:text>    }
4345b3c9b9de SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3517
diff changeset
  8101
</xsl:text>
2977
82f062408e70 SVGHMI: Added widget toggleButton.
dgaberscek
parents: 2976
diff changeset
  8102
  </xsl:template>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8103
  <xsl:template match="widget[@type='XYGraph']" mode="widget_desc">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8104
    <type>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8105
      <xsl:value-of select="@type"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8106
    </type>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8107
    <longdesc>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8108
      <xsl:text>XYGraph draws a cartesian trend graph re-using styles given for axis,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8109
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8110
      <xsl:text>grid/marks, legends and curves.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8111
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8112
      <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8113
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8114
      <xsl:text>Elements labeled "x_axis" and "y_axis" are svg:groups containg:
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8115
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8116
      <xsl:text> - "axis_label" svg:text gives style an alignment for axis labels.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8117
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8118
      <xsl:text> - "interval_major_mark" and "interval_minor_mark" are svg elements to be
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8119
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8120
      <xsl:text>   duplicated along axis line to form intervals marks.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8121
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8122
      <xsl:text> - "axis_line"  svg:path is the axis line. Paths must be intersect and their
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8123
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8124
      <xsl:text>   bounding box is the chart wall.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8125
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8126
      <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8127
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8128
      <xsl:text>Elements labeled "curve_0", "curve_1", ... are paths whose styles are used
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8129
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8130
      <xsl:text>to draw curves corresponding to data from variables passed as HMI tree paths.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8131
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8132
      <xsl:text>"curve_0" is mandatory. HMI variables outnumbering given curves are ignored.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8133
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8134
      <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8135
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8136
    </longdesc>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8137
    <shortdesc>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8138
      <xsl:text>Cartesian trend graph showing values of given variables over time</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8139
    </shortdesc>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8140
    <path name="value" count="1+" accepts="HMI_INT,HMI_REAL">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8141
      <xsl:text>value</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8142
    </path>
3507
Edouard Tisserant
parents: 3506 3478
diff changeset
  8143
    <arg name="xrange" accepts="int,time">
Edouard Tisserant
parents: 3506 3478
diff changeset
  8144
      <xsl:text>X axis range expressed either in samples or duration.</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8145
    </arg>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8146
    <arg name="xformat" count="optional" accepts="string">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8147
      <xsl:text>format string for X label</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8148
    </arg>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8149
    <arg name="yformat" count="optional" accepts="string">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8150
      <xsl:text>format string for Y label</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8151
    </arg>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8152
  </xsl:template>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8153
  <xsl:template match="widget[@type='XYGraph']" mode="widget_class">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8154
    <xsl:text>class </xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8155
    <xsl:text>XYGraphWidget</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8156
    <xsl:text> extends Widget{
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8157
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8158
    <xsl:text>    frequency = 1;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8159
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8160
    <xsl:text>    init() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8161
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8162
    <xsl:text>        let x_duration_s;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8163
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8164
    <xsl:text>        [x_duration_s,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8165
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8166
    <xsl:text>         this.x_format, this.y_format] = this.args;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8167
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8168
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8169
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8170
    <xsl:text>        let timeunit = x_duration_s.slice(-1);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8171
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8172
    <xsl:text>        let factor = {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8173
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8174
    <xsl:text>            "s":1,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8175
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8176
    <xsl:text>            "m":60,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8177
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8178
    <xsl:text>            "h":3600,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8179
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8180
    <xsl:text>            "d":86400}[timeunit];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8181
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8182
    <xsl:text>        if(factor == undefined){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8183
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8184
    <xsl:text>            this.max_data_length = Number(x_duration_s);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8185
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8186
    <xsl:text>            this.x_duration = undefined;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8187
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8188
    <xsl:text>        }else{
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8189
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8190
    <xsl:text>            let duration = factor*Number(x_duration_s.slice(0,-1));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8191
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8192
    <xsl:text>            this.max_data_length = undefined;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8193
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8194
    <xsl:text>            this.x_duration = duration*1000;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8195
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8196
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8197
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8198
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8199
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8200
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8201
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8202
    <xsl:text>        // Min and Max given with paths are meant to describe visible range,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8203
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8204
    <xsl:text>        // not to clip data.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8205
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8206
    <xsl:text>        this.clip = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8207
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8208
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8209
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8210
    <xsl:text>        let y_min = Infinity, y_max = -Infinity;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8211
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8212
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8213
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8214
    <xsl:text>        // Compute visible Y range by merging fixed curves Y ranges
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8215
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8216
    <xsl:text>        for(let minmax of this.minmaxes){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8217
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8218
    <xsl:text>           if(minmax){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8219
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8220
    <xsl:text>               let [min,max] = minmax;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8221
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8222
    <xsl:text>               if(min &lt; y_min)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8223
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8224
    <xsl:text>                   y_min = min;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8225
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8226
    <xsl:text>               if(max &gt; y_max)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8227
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8228
    <xsl:text>                   y_max = max;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8229
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8230
    <xsl:text>           }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8231
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8232
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8233
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8234
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8235
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8236
    <xsl:text>        if(y_min !== Infinity &amp;&amp; y_max !== -Infinity){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8237
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8238
    <xsl:text>           this.fixed_y_range = true;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8239
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8240
    <xsl:text>        } else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8241
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8242
    <xsl:text>           this.fixed_y_range = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8243
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8244
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8245
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8246
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8247
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8248
    <xsl:text>        this.ymin = y_min;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8249
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8250
    <xsl:text>        this.ymax = y_max;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8251
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8252
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8253
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8254
    <xsl:text>        this.curves = [];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8255
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8256
    <xsl:text>        this.init_specific();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8257
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8258
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8259
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8260
    <xsl:text>        this.reference = new ReferenceFrame(
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8261
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8262
    <xsl:text>            [[this.x_interval_minor_mark_elt, this.x_interval_major_mark_elt],
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8263
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8264
    <xsl:text>             [this.y_interval_minor_mark_elt, this.y_interval_major_mark_elt]],
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8265
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8266
    <xsl:text>            [this.x_axis_label_elt, this.y_axis_label_elt],
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8267
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8268
    <xsl:text>            [this.x_axis_line_elt, this.y_axis_line_elt],
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8269
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8270
    <xsl:text>            [this.x_format, this.y_format]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8271
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8272
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8273
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8274
    <xsl:text>        let max_stroke_width = 0;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8275
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8276
    <xsl:text>        for(let curve of this.curves){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8277
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8278
    <xsl:text>            if(curve.style.strokeWidth &gt; max_stroke_width){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8279
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8280
    <xsl:text>                max_stroke_width = curve.style.strokeWidth;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8281
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8282
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8283
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8284
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8285
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8286
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8287
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8288
    <xsl:text>        this.Margins=this.reference.getLengths().map(length =&gt; max_stroke_width/length);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8289
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8290
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8291
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8292
    <xsl:text>        // create &lt;clipPath&gt; path and attach it to widget
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8293
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8294
    <xsl:text>        let clipPath = document.createElementNS(xmlns,"clipPath");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8295
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8296
    <xsl:text>        let clipPathPath = document.createElementNS(xmlns,"path");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8297
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8298
    <xsl:text>        let clipPathPathDattr = document.createAttribute("d");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8299
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8300
    <xsl:text>        clipPathPathDattr.value = this.reference.getClipPathPathDattr();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8301
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8302
    <xsl:text>        clipPathPath.setAttributeNode(clipPathPathDattr);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8303
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8304
    <xsl:text>        clipPath.appendChild(clipPathPath);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8305
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8306
    <xsl:text>        clipPath.id = randomId();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8307
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8308
    <xsl:text>        this.element.appendChild(clipPath);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8309
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8310
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8311
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8312
    <xsl:text>        // assign created clipPath to clip-path property of curves
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8313
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8314
    <xsl:text>        for(let curve of this.curves){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8315
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8316
    <xsl:text>            curve.setAttribute("clip-path", "url(#" + clipPath.id + ")");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8317
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8318
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8319
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8320
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8321
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8322
    <xsl:text>        this.curves_data = [];
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8323
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8324
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8325
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8326
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8327
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8328
    <xsl:text>    dispatch(value,oldval, index) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8329
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8330
    <xsl:text>        // TODO: get PLC time instead of browser time
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8331
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8332
    <xsl:text>        let time = Date.now();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8333
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8334
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8335
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8336
    <xsl:text>        // naive local buffer impl. 
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8337
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8338
    <xsl:text>        // data is updated only when graph is visible
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8339
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8340
    <xsl:text>        // TODO: replace with separate recording
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8341
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8342
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8343
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8344
    <xsl:text>        if(this.curves_data[index] === undefined){
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8345
</xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8346
    <xsl:text>            this.curves_data[index] = [];
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8347
</xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8348
    <xsl:text>        }
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8349
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8350
    <xsl:text>        this.curves_data[index].push([time, value]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8351
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8352
    <xsl:text>        let data_length = this.curves_data[index].length;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8353
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8354
    <xsl:text>        let ymin_damaged = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8355
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8356
    <xsl:text>        let ymax_damaged = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8357
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8358
    <xsl:text>        let overflow;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8359
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8360
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8361
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8362
    <xsl:text>        if(this.max_data_length == undefined){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8363
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8364
    <xsl:text>            let peremption = time - this.x_duration;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8365
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8366
    <xsl:text>            let oldest = this.curves_data[index][0][0]
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8367
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8368
    <xsl:text>            this.xmin = peremption;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8369
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8370
    <xsl:text>            if(oldest &lt; peremption){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8371
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8372
    <xsl:text>                // remove first item
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8373
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8374
    <xsl:text>                overflow = this.curves_data[index].shift()[1];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8375
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8376
    <xsl:text>                data_length = data_length - 1;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8377
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8378
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8379
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8380
    <xsl:text>        } else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8381
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8382
    <xsl:text>            if(data_length &gt; this.max_data_length){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8383
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8384
    <xsl:text>                // remove first item
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8385
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8386
    <xsl:text>                [this.xmin, overflow] = this.curves_data[index].shift();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8387
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8388
    <xsl:text>                data_length = data_length - 1;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8389
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8390
    <xsl:text>            } else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8391
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8392
    <xsl:text>                if(this.xmin == undefined){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8393
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8394
    <xsl:text>                    this.xmin = time;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8395
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8396
    <xsl:text>                }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8397
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8398
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8399
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8400
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8401
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8402
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8403
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8404
    <xsl:text>        this.xmax = time;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8405
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8406
    <xsl:text>        let Xrange = this.xmax - this.xmin;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8407
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8408
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8409
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8410
    <xsl:text>        if(!this.fixed_y_range){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8411
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8412
    <xsl:text>            ymin_damaged = overflow &lt;= this.ymin;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8413
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8414
    <xsl:text>            ymax_damaged = overflow &gt;= this.ymax;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8415
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8416
    <xsl:text>            if(value &gt; this.ymax){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8417
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8418
    <xsl:text>                ymax_damaged = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8419
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8420
    <xsl:text>                this.ymax = value;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8421
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8422
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8423
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8424
    <xsl:text>            if(value &lt; this.ymin){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8425
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8426
    <xsl:text>                ymin_damaged = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8427
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8428
    <xsl:text>                this.ymin = value;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8429
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8430
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8431
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8432
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8433
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8434
    <xsl:text>        let Yrange = this.ymax - this.ymin;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8435
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8436
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8437
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8438
    <xsl:text>        // apply margin by moving min and max to enlarge range
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8439
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8440
    <xsl:text>        let [xMargin,yMargin] = zip(this.Margins, [Xrange, Yrange]).map(([m,l]) =&gt; m*l);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8441
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8442
    <xsl:text>        [[this.dxmin, this.dxmax],[this.dymin,this.dymax]] =
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8443
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8444
    <xsl:text>            [[this.xmin-xMargin, this.xmax+xMargin],
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8445
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8446
    <xsl:text>             [this.ymin-yMargin, this.ymax+yMargin]];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8447
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8448
    <xsl:text>        Xrange += 2*xMargin;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8449
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8450
    <xsl:text>        Yrange += 2*yMargin;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8451
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8452
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8453
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8454
    <xsl:text>        // recompute curves "d" attribute
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8455
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8456
    <xsl:text>        // FIXME: use SVG getPathData and setPathData when available.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8457
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8458
    <xsl:text>        //        https://svgwg.org/specs/paths/#InterfaceSVGPathData
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8459
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8460
    <xsl:text>        //        https://github.com/jarek-foksa/path-data-polyfill
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8461
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8462
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8463
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8464
    <xsl:text>        let [base_point, xvect, yvect] = this.reference.getBaseRef();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8465
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8466
    <xsl:text>        this.curves_d_attr =
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8467
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8468
    <xsl:text>            zip(this.curves_data, this.curves).map(([data,curve]) =&gt; {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8469
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8470
    <xsl:text>                let new_d = data.map(([x,y], i) =&gt; {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8471
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8472
    <xsl:text>                    // compute curve point from data, ranges, and base_ref
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8473
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8474
    <xsl:text>                    let xv = vectorscale(xvect, (x - this.dxmin) / Xrange);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8475
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8476
    <xsl:text>                    let yv = vectorscale(yvect, (y - this.dymin) / Yrange);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8477
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8478
    <xsl:text>                    let px = base_point.x + xv.x + yv.x;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8479
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8480
    <xsl:text>                    let py = base_point.y + xv.y + yv.y;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8481
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8482
    <xsl:text>                    if(!this.fixed_y_range){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8483
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8484
    <xsl:text>                        // update min and max from curve data if needed
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8485
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8486
    <xsl:text>                        if(ymin_damaged &amp;&amp; y &lt; this.ymin) this.ymin = y;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8487
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8488
    <xsl:text>                        if(ymax_damaged &amp;&amp; y &gt; this.ymax) this.ymax = y;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8489
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8490
    <xsl:text>                    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8491
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8492
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8493
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8494
    <xsl:text>                    return " " + px + "," + py;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8495
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8496
    <xsl:text>                });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8497
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8498
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8499
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8500
    <xsl:text>                new_d.unshift("M ");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8501
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8502
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8503
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8504
    <xsl:text>                return new_d.join('');
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8505
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8506
    <xsl:text>            });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8507
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8508
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8509
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8510
    <xsl:text>        // computed curves "d" attr is applied to svg curve during animate();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8511
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8512
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8513
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8514
    <xsl:text>        this.request_animate();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8515
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8516
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8517
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8518
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8519
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8520
    <xsl:text>    animate(){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8521
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8522
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8523
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8524
    <xsl:text>        // move elements only if enough data
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8525
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8526
    <xsl:text>        if(this.curves_data.some(data =&gt; data.length &gt; 1)){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8527
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8528
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8529
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8530
    <xsl:text>            // move marks and update labels
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8531
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8532
    <xsl:text>            this.reference.applyRanges([[this.dxmin, this.dxmax],
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8533
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8534
    <xsl:text>                                        [this.dymin, this.dymax]]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8535
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8536
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8537
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8538
    <xsl:text>            // apply computed curves "d" attributes
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8539
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8540
    <xsl:text>            for(let [curve, d_attr] of zip(this.curves, this.curves_d_attr)){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8541
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8542
    <xsl:text>                curve.setAttribute("d", d_attr);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8543
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8544
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8545
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8546
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8547
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8548
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8549
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8550
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8551
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8552
    <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8553
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8554
  </xsl:template>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8555
  <func:function name="func:check_curves_label_consistency">
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8556
    <xsl:param name="curve_elts"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8557
    <xsl:param name="number_to_check"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8558
    <xsl:variable name="res">
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8559
      <xsl:choose>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8560
        <xsl:when test="$curve_elts[@inkscape:label = concat('curve_', string($number_to_check))]">
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8561
          <xsl:if test="$number_to_check &gt; 0">
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8562
            <xsl:value-of select="func:check_curves_label_consistency($curve_elts, $number_to_check - 1)"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8563
          </xsl:if>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8564
        </xsl:when>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8565
        <xsl:otherwise>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8566
          <xsl:value-of select="concat('missing curve_', string($number_to_check))"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8567
        </xsl:otherwise>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8568
      </xsl:choose>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8569
    </xsl:variable>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8570
    <func:result select="$res"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8571
  </func:function>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8572
  <xsl:template match="widget[@type='XYGraph']" mode="widget_defs">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8573
    <xsl:param name="hmi_element"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8574
    <xsl:call-template name="defs_by_labels">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8575
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8576
      <xsl:with-param name="labels">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8577
        <xsl:text>/x_interval_minor_mark /x_axis_line /x_interval_major_mark /x_axis_label</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8578
      </xsl:with-param>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8579
    </xsl:call-template>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8580
    <xsl:call-template name="defs_by_labels">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8581
      <xsl:with-param name="hmi_element" select="$hmi_element"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8582
      <xsl:with-param name="labels">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8583
        <xsl:text>/y_interval_minor_mark /y_axis_line /y_interval_major_mark /y_axis_label</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8584
      </xsl:with-param>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8585
    </xsl:call-template>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8586
    <xsl:text>    init_specific() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8587
</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8588
    <xsl:variable name="curves" select="$hmi_element/*[regexp:test(@inkscape:label,'^curve_[0-9]+$')]"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8589
    <xsl:variable name="curves_error" select="func:check_curves_label_consistency($curves,count($curves)-1)"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8590
    <xsl:if test="string-length($curves_error)">
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8591
      <xsl:message terminate="yes">
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8592
        <xsl:text>XYGraph id="</xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8593
        <xsl:value-of select="@id"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8594
        <xsl:text>", label="</xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8595
        <xsl:value-of select="@inkscape:label"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8596
        <xsl:text>" : </xsl:text>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8597
        <xsl:value-of select="$curves_error"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8598
      </xsl:message>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8599
    </xsl:if>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8600
    <xsl:for-each select="$curves">
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8601
      <xsl:variable name="label" select="@inkscape:label"/>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8602
      <xsl:variable name="_id" select="@id"/>
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8603
      <xsl:variable name="curve_num" select="substring(@inkscape:label, 7)"/>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8604
      <xsl:text>        this.curves[</xsl:text>
3510
0d7f9c555ae2 SVGHMI: update generated XSLT filesw
Edouard Tisserant
parents: 3507
diff changeset
  8605
      <xsl:value-of select="$curve_num"/>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8606
      <xsl:text>] = id("</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8607
      <xsl:value-of select="@id"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8608
      <xsl:text>"); /* </xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8609
      <xsl:value-of select="@inkscape:label"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8610
      <xsl:text> */
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8611
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8612
    </xsl:for-each>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8613
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8614
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8615
  </xsl:template>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8616
  <declarations:XYGraph/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8617
  <xsl:template match="declarations:XYGraph">
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8618
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8619
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8620
    <xsl:text>/* </xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8621
    <xsl:value-of select="local-name()"/>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8622
    <xsl:text> */
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8623
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8624
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8625
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8626
    <xsl:text>function lineFromPath(path_elt) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8627
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8628
    <xsl:text>    let start = path_elt.getPointAtLength(0);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8629
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8630
    <xsl:text>    let end = path_elt.getPointAtLength(path_elt.getTotalLength());
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8631
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8632
    <xsl:text>    return [start, new DOMPoint(end.x - start.x , end.y - start.y)];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8633
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8634
    <xsl:text>};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8635
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8636
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8637
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8638
    <xsl:text>function vector(p1, p2) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8639
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8640
    <xsl:text>    return new DOMPoint(p2.x - p1.x , p2.y - p1.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8641
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8642
    <xsl:text>};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8643
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8644
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8645
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8646
    <xsl:text>function vectorscale(p1, p2) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8647
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8648
    <xsl:text>    return new DOMPoint(p2 * p1.x , p2 * p1.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8649
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8650
    <xsl:text>};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8651
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8652
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8653
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8654
    <xsl:text>function vectorLength(p1) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8655
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8656
    <xsl:text>    return Math.sqrt(p1.x*p1.x + p1.y*p1.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8657
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8658
    <xsl:text>};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8659
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8660
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8661
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8662
    <xsl:text>function randomId(){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8663
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8664
    <xsl:text>    return Date.now().toString(36) + Math.random().toString(36).substr(2);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8665
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8666
    <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8667
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8668
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8669
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8670
    <xsl:text>function move_elements_to_group(elements) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8671
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8672
    <xsl:text>    let newgroup = document.createElementNS(xmlns,"g");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8673
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8674
    <xsl:text>    newgroup.id = randomId();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8675
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8676
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8677
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8678
    <xsl:text>    for(let element of elements){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8679
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8680
    <xsl:text>        let parent = element.parentElement;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8681
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8682
    <xsl:text>        if(parent !== null)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8683
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8684
    <xsl:text>            parent.removeChild(element);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8685
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8686
    <xsl:text>        newgroup.appendChild(element);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8687
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8688
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8689
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8690
    <xsl:text>    return newgroup;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8691
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8692
    <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8693
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8694
    <xsl:text>function getLinesIntesection(l1, l2) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8695
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8696
    <xsl:text>    let [l1start, l1vect] = l1;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8697
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8698
    <xsl:text>    let [l2start, l2vect] = l2;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8699
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8700
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8701
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8702
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8703
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8704
    <xsl:text>    /*
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8705
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8706
    <xsl:text>    Compute intersection of two lines
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8707
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8708
    <xsl:text>    =================================
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8709
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8710
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8711
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8712
    <xsl:text>                          ^ l2vect
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8713
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8714
    <xsl:text>                         /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8715
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8716
    <xsl:text>                        /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8717
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8718
    <xsl:text>                       /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8719
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8720
    <xsl:text>    l1start ----------X--------------&gt; l1vect
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8721
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8722
    <xsl:text>                     / intersection
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8723
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8724
    <xsl:text>                    /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8725
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8726
    <xsl:text>                   /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8727
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8728
    <xsl:text>                   l2start
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8729
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8730
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8731
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8732
    <xsl:text>	*/
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8733
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8734
    <xsl:text>    let [x1, y1, x3, y3] = [l1start.x, l1start.y, l2start.x, l2start.y];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8735
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8736
    <xsl:text>	let [x2, y2, x4, y4] = [x1+l1vect.x, y1+l1vect.y, x3+l2vect.x, y3+l2vect.y];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8737
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8738
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8739
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8740
    <xsl:text>	// line intercept math by Paul Bourke http://paulbourke.net/geometry/pointlineplane/
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8741
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8742
    <xsl:text>	// Determine the intersection point of two line segments
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8743
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8744
    <xsl:text>	// Return FALSE if the lines don't intersect
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8745
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8746
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8747
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8748
    <xsl:text>    // Check if none of the lines are of length 0
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8749
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8750
    <xsl:text>    if ((x1 === x2 &amp;&amp; y1 === y2) || (x3 === x4 &amp;&amp; y3 === y4)) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8751
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8752
    <xsl:text>        return false
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8753
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8754
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8755
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8756
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8757
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8758
    <xsl:text>    denominator = ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1))
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8759
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8760
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8761
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8762
    <xsl:text>    // Lines are parallel
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8763
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8764
    <xsl:text>    if (denominator === 0) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8765
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8766
    <xsl:text>        return false
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8767
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8768
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8769
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8770
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8771
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8772
    <xsl:text>    let ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8773
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8774
    <xsl:text>    let ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / denominator
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8775
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8776
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8777
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8778
    <xsl:text>    // Return a object with the x and y coordinates of the intersection
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8779
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8780
    <xsl:text>    let x = x1 + ua * (x2 - x1)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8781
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8782
    <xsl:text>    let y = y1 + ua * (y2 - y1)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8783
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8784
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8785
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8786
    <xsl:text>    return new DOMPoint(x,y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8787
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8788
    <xsl:text>};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8789
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8790
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8791
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8792
    <xsl:text>class ReferenceFrame {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8793
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8794
    <xsl:text>    constructor(
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8795
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8796
    <xsl:text>        // [[Xminor,Xmajor], [Yminor,Ymajor]]
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8797
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8798
    <xsl:text>        marks,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8799
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8800
    <xsl:text>        // [Xlabel, Ylabel]
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8801
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8802
    <xsl:text>        labels,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8803
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8804
    <xsl:text>        // [Xline, Yline]
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8805
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8806
    <xsl:text>        lines,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8807
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8808
    <xsl:text>        // [Xformat, Yformat] printf-like formating strings
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8809
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8810
    <xsl:text>        formats
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8811
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8812
    <xsl:text>    ){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8813
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8814
    <xsl:text>        this.axes = zip(labels,marks,lines,formats).map(args =&gt; new Axis(...args));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8815
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8816
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8817
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8818
    <xsl:text>        let [lx,ly] = this.axes.map(axis =&gt; axis.line);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8819
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8820
    <xsl:text>        let [[xstart, xvect], [ystart, yvect]] = [lx,ly];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8821
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8822
    <xsl:text>        let base_point = this.getBasePoint();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8823
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8824
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8825
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8826
    <xsl:text>        // setup clipping for curves
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8827
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8828
    <xsl:text>        this.clipPathPathDattr =
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8829
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8830
    <xsl:text>            "m " + base_point.x + "," + base_point.y + " "
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8831
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8832
    <xsl:text>                 + xvect.x + "," + xvect.y + " "
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8833
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8834
    <xsl:text>                 + yvect.x + "," + yvect.y + " "
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8835
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8836
    <xsl:text>                 + -xvect.x + "," + -xvect.y + " "
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8837
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8838
    <xsl:text>                 + -yvect.x + "," + -yvect.y + " z";
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8839
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8840
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8841
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8842
    <xsl:text>        this.base_ref = [base_point, xvect, yvect];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8843
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8844
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8845
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8846
    <xsl:text>        this.lengths = [xvect,yvect].map(v =&gt; vectorLength(v));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8847
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8848
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8849
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8850
    <xsl:text>        for(let axis of this.axes){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8851
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8852
    <xsl:text>            axis.setBasePoint(base_point);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8853
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8854
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8855
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8856
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8857
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8858
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8859
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8860
    <xsl:text>    getLengths(){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8861
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8862
    <xsl:text>        return this.lengths;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8863
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8864
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8865
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8866
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8867
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8868
    <xsl:text>	getBaseRef(){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8869
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8870
    <xsl:text>        return this.base_ref;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8871
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8872
    <xsl:text>	}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8873
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8874
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8875
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8876
    <xsl:text>    getClipPathPathDattr(){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8877
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8878
    <xsl:text>        return this.clipPathPathDattr;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8879
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8880
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8881
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8882
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8883
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8884
    <xsl:text>    applyRanges(ranges){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8885
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8886
    <xsl:text>        let origin_moves = zip(ranges,this.axes).map(([range,axis]) =&gt; axis.applyRange(...range));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8887
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8888
    <xsl:text>		zip(origin_moves.reverse(),this.axes).forEach(([vect,axis]) =&gt; axis.moveOrigin(vect));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8889
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8890
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8891
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8892
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8893
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8894
    <xsl:text>    getBasePoint() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8895
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8896
    <xsl:text>        let [[xstart, xvect], [ystart, yvect]] = this.axes.map(axis =&gt; axis.line);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8897
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8898
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8899
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8900
    <xsl:text>        /*
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8901
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8902
    <xsl:text>        Compute graph clipping region base point
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8903
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8904
    <xsl:text>        ========================================
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8905
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8906
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8907
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8908
    <xsl:text>        Clipping region is a parallelogram containing axes lines,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8909
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8910
    <xsl:text>        and whose sides are parallel to axes line respectively.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8911
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8912
    <xsl:text>        Given axes lines are not starting at the same point, hereafter is
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8913
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8914
    <xsl:text>        calculus of parallelogram base point.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8915
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8916
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8917
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8918
    <xsl:text>                              ^ given Y axis (yvect)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8919
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8920
    <xsl:text>                   /         /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8921
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8922
    <xsl:text>                  /         /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8923
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8924
    <xsl:text>                 /         /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8925
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8926
    <xsl:text>         xstart *---------*--------------&gt; given X axis (xvect)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8927
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8928
    <xsl:text>               /         /origin
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8929
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8930
    <xsl:text>              /         /
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8931
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8932
    <xsl:text>             *---------*--------------
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8933
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8934
    <xsl:text>        base_point   ystart
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8935
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8936
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8937
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8938
    <xsl:text>        */
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8939
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8940
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8941
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8942
    <xsl:text>        let base_point = getLinesIntesection([xstart,yvect],[ystart,xvect]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8943
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8944
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8945
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8946
    <xsl:text>        return base_point;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8947
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8948
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8949
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8950
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8951
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8952
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8953
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8954
    <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8955
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8956
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8957
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8958
    <xsl:text>class Axis {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8959
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8960
    <xsl:text>    constructor(label, marks, line, format){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8961
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8962
    <xsl:text>        this.lineElement = line;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8963
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8964
    <xsl:text>        this.line = lineFromPath(line);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8965
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8966
    <xsl:text>        this.format = format;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8967
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8968
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8969
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8970
    <xsl:text>        this.label = label;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8971
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8972
    <xsl:text>        this.marks = marks;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8973
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8974
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8975
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8976
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8977
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8978
    <xsl:text>        // add transforms for elements sliding along the axis line
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8979
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8980
    <xsl:text>        for(let [elementname,element] of zip(["minor", "major", "label"],[...marks,label])){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8981
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8982
    <xsl:text>            for(let name of ["base","slide"]){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8983
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8984
    <xsl:text>                let transform = svg_root.createSVGTransform();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8985
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8986
    <xsl:text>                element.transform.baseVal.insertItemBefore(transform,0);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8987
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8988
    <xsl:text>                this[elementname+"_"+name+"_transform"]=transform;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8989
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8990
    <xsl:text>            };
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8991
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8992
    <xsl:text>        };
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8993
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8994
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8995
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8996
    <xsl:text>        // group marks an labels together
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8997
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8998
    <xsl:text>        let parent = line.parentElement;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  8999
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9000
    <xsl:text>        this.marks_group = move_elements_to_group(marks);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9001
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9002
    <xsl:text>        this.marks_and_label_group = move_elements_to_group([this.marks_group, label]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9003
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9004
    <xsl:text>        this.group = move_elements_to_group([this.marks_and_label_group,line]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9005
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9006
    <xsl:text>        parent.appendChild(this.group);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9007
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9008
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9009
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9010
    <xsl:text>        // Add transforms to group
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9011
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9012
    <xsl:text>        for(let name of ["base","origin"]){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9013
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9014
    <xsl:text>            let transform = svg_root.createSVGTransform();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9015
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9016
    <xsl:text>            this.group.transform.baseVal.appendItem(transform);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9017
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9018
    <xsl:text>            this[name+"_transform"]=transform;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9019
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9020
    <xsl:text>        };
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9021
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9022
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9023
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9024
    <xsl:text>        this.marks_and_label_group_transform = svg_root.createSVGTransform();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9025
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9026
    <xsl:text>        this.marks_and_label_group.transform.baseVal.appendItem(this.marks_and_label_group_transform);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9027
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9028
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9029
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9030
    <xsl:text>        this.duplicates = [];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9031
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9032
    <xsl:text>        this.last_duplicate_index = 0;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9033
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9034
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9035
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9036
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9037
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9038
    <xsl:text>    setBasePoint(base_point){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9039
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9040
    <xsl:text>        // move Axis to base point
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9041
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9042
    <xsl:text>        let [start, _vect] = this.line;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9043
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9044
    <xsl:text>        let v = vector(start, base_point);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9045
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9046
    <xsl:text>        this.base_transform.setTranslate(v.x, v.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9047
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9048
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9049
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9050
    <xsl:text>        // Move marks and label to base point.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9051
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9052
    <xsl:text>        // _|_______          _|________
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9053
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9054
    <xsl:text>        //  |  '  |     ==&gt;    '
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9055
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9056
    <xsl:text>        //  |     0            0
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9057
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9058
    <xsl:text>        //  |                  |
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9059
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9060
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9061
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9062
    <xsl:text>        for(let [markname,mark] of zip(["minor", "major"],this.marks)){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9063
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9064
    <xsl:text>            let pos = vector(
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9065
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9066
    <xsl:text>                // Marks are expected to be paths
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9067
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9068
    <xsl:text>                // paths are expected to be lines
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9069
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9070
    <xsl:text>                // intersection with axis line is taken 
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9071
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9072
    <xsl:text>                // as reference for mark position
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9073
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9074
    <xsl:text>                getLinesIntesection(
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9075
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9076
    <xsl:text>                    this.line, lineFromPath(mark)),base_point);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9077
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9078
    <xsl:text>            this[markname+"_base_transform"].setTranslate(pos.x - v.x, pos.y - v.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9079
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9080
    <xsl:text>            if(markname == "major"){ // label follow major mark
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9081
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9082
    <xsl:text>                this.label_base_transform.setTranslate(pos.x - v.x, pos.y - v.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9083
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9084
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9085
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9086
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9087
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9088
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9089
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9090
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9091
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9092
    <xsl:text>	moveOrigin(vect){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9093
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9094
    <xsl:text>		this.origin_transform.setTranslate(vect.x, vect.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9095
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9096
    <xsl:text>	}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9097
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9098
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9099
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9100
    <xsl:text>    applyRange(min, max){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9101
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9102
    <xsl:text>        let range = max - min;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9103
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9104
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9105
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9106
    <xsl:text>        // compute how many units for a mark
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9107
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9108
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9109
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9110
    <xsl:text>        // - Units are expected to be an order of magnitude smaller than range,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9111
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9112
    <xsl:text>        //   so that marks are not too dense and also not too sparse.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9113
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9114
    <xsl:text>        //   Order of magnitude of range is log10(range)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9115
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9116
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9117
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9118
    <xsl:text>        // - Units are necessarily power of ten, otherwise it is complicated to
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9119
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9120
    <xsl:text>        //   fill the text in labels...
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9121
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9122
    <xsl:text>        //   Unit is pow(10, integer_number )
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9123
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9124
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9125
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9126
    <xsl:text>        // - To transform order of magnitude to an integer, floor() is used.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9127
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9128
    <xsl:text>        //   This results in a count of mark fluctuating in between 10 and 100.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9129
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9130
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9131
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9132
    <xsl:text>        // - To spare resources result is better in between 3 and 30,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9133
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9134
    <xsl:text>        //   and log10(3) is substracted to order of magnitude to obtain this
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9135
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9136
    <xsl:text>        let unit = Math.pow(10, Math.floor(Math.log10(range)-Math.log10(3)));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9137
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9138
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9139
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9140
    <xsl:text>        // TODO: for time values (ms), units may be :
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9141
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9142
    <xsl:text>        //       1       -&gt; ms
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9143
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9144
    <xsl:text>        //       10      -&gt; s/100
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9145
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9146
    <xsl:text>        //       100     -&gt; s/10
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9147
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9148
    <xsl:text>        //       1000    -&gt; s
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9149
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9150
    <xsl:text>        //       60000   -&gt; min
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9151
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9152
    <xsl:text>        //       3600000 -&gt; hour
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9153
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9154
    <xsl:text>        //       ...
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9155
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9156
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9157
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9158
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9159
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9160
    <xsl:text>        // Compute position of origin along axis [0...range]
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9161
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9162
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9163
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9164
    <xsl:text>        // min &lt; 0, max &gt; 0, offset = -min
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9165
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9166
    <xsl:text>        // _____________|________________
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9167
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9168
    <xsl:text>        // ... -3 -2 -1 |0  1  2  3  4 ...
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9169
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9170
    <xsl:text>        // &lt;--offset---&gt; ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9171
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9172
    <xsl:text>        //               |_original
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9173
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9174
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9175
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9176
    <xsl:text>        // min &gt; 0, max &gt; 0, offset = 0
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9177
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9178
    <xsl:text>        // |________________
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9179
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9180
    <xsl:text>        // |6  7  8  9  10...
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9181
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9182
    <xsl:text>        //  ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9183
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9184
    <xsl:text>        //  |_original
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9185
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9186
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9187
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9188
    <xsl:text>        // min &lt; 0, max &lt; 0, offset = max-min (range)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9189
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9190
    <xsl:text>        // _____________|_
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9191
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9192
    <xsl:text>        // ... -5 -4 -3 |-2
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9193
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9194
    <xsl:text>        // &lt;--offset---&gt; ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9195
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9196
    <xsl:text>        //               |_original
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9197
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9198
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9199
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9200
    <xsl:text>        let offset = (max&gt;=0 &amp;&amp; min&gt;=0) ? 0 : (
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9201
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9202
    <xsl:text>                     (max&lt;0 &amp;&amp; min&lt;0)   ? range : -min);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9203
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9204
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9205
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9206
    <xsl:text>        // compute unit vector
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9207
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9208
    <xsl:text>        let [_start, vect] = this.line;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9209
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9210
    <xsl:text>        let unit_vect = vectorscale(vect, 1/range);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9211
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9212
    <xsl:text>        let [mark_min, mark_max, mark_offset] = [min,max,offset].map(val =&gt; Math.round(val/unit));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9213
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9214
    <xsl:text>        let mark_count = mark_max-mark_min;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9215
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9216
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9217
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9218
    <xsl:text>        // apply unit vector to marks and label
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9219
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9220
    <xsl:text>        // offset is a representing position of an 
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9221
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9222
    <xsl:text>        // axis along the opposit axis line, expressed in major marks units
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9223
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9224
    <xsl:text>        // unit_vect is unit vector
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9225
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9226
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9227
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9228
    <xsl:text>        //              ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9229
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9230
    <xsl:text>        //              | unit_vect
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9231
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9232
    <xsl:text>        //              |&lt;---&gt;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9233
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9234
    <xsl:text>        //     _________|__________&gt;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9235
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9236
    <xsl:text>        //     ^  |  '  |  '  |  '
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9237
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9238
    <xsl:text>        //     |yoffset |     1 
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9239
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9240
    <xsl:text>        //     |        |
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9241
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9242
    <xsl:text>        //     v xoffset|
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9243
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9244
    <xsl:text>        //     X&lt;------&gt;|
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9245
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9246
    <xsl:text>        // base_point
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9247
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9248
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9249
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9250
    <xsl:text>        // move major marks and label to first positive mark position
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9251
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9252
    <xsl:text>        // let v = vectorscale(unit_vect, unit);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9253
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9254
    <xsl:text>        // this.label_slide_transform.setTranslate(v.x, v.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9255
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9256
    <xsl:text>        // this.major_slide_transform.setTranslate(v.x, v.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9257
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9258
    <xsl:text>        // move minor mark to first half positive mark position
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9259
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9260
    <xsl:text>        let v = vectorscale(unit_vect, unit/2);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9261
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9262
    <xsl:text>        this.minor_slide_transform.setTranslate(v.x, v.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9263
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9264
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9265
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9266
    <xsl:text>        // duplicate marks and labels as needed
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9267
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9268
    <xsl:text>        let current_mark_count = this.duplicates.length;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9269
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9270
    <xsl:text>        for(let i = current_mark_count; i &lt;= mark_count; i++){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9271
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9272
    <xsl:text>            // cloneNode() label and add a svg:use of marks in a new group
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9273
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9274
    <xsl:text>            let newgroup = document.createElementNS(xmlns,"g");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9275
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9276
    <xsl:text>            let transform = svg_root.createSVGTransform();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9277
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9278
    <xsl:text>            let newlabel = this.label.cloneNode(true);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9279
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9280
    <xsl:text>            let newuse = document.createElementNS(xmlns,"use");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9281
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9282
    <xsl:text>            let newuseAttr = document.createAttribute("href");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9283
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9284
    <xsl:text>            newuseAttr.value = "#"+this.marks_group.id;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9285
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9286
    <xsl:text>            newuse.setAttributeNode(newuseAttr);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9287
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9288
    <xsl:text>            newgroup.transform.baseVal.appendItem(transform);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9289
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9290
    <xsl:text>            newgroup.appendChild(newlabel);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9291
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9292
    <xsl:text>            newgroup.appendChild(newuse);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9293
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9294
    <xsl:text>            this.duplicates.push([transform,newgroup]);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9295
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9296
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9297
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9298
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9299
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9300
    <xsl:text>        // move marks and labels, set labels
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9301
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9302
    <xsl:text>        // 
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9303
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9304
    <xsl:text>        // min &gt; 0, max &gt; 0, offset = 0
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9305
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9306
    <xsl:text>        //         ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9307
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9308
    <xsl:text>        //         |________&gt;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9309
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9310
    <xsl:text>        //        '| |  '  |
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9311
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9312
    <xsl:text>        //         | 6     7
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9313
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9314
    <xsl:text>        //         X
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9315
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9316
    <xsl:text>        //     base_point
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9317
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9318
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9319
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9320
    <xsl:text>        // min &lt; 0, max &gt; 0, offset = -min
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9321
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9322
    <xsl:text>        //              ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9323
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9324
    <xsl:text>        //     _________|__________&gt;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9325
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9326
    <xsl:text>        //     '  |  '  |  '  |  '
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9327
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9328
    <xsl:text>        //       -1     |     1 
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9329
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9330
    <xsl:text>        //       offset |
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9331
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9332
    <xsl:text>        //     X&lt;------&gt;|
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9333
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9334
    <xsl:text>        // base_point
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9335
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9336
    <xsl:text>        //
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9337
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9338
    <xsl:text>        // min &lt; 0, max &lt; 0, offset = range
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9339
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9340
    <xsl:text>        //                 ^
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9341
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9342
    <xsl:text>        //     ____________|    
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9343
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9344
    <xsl:text>        //      '  |  '  | |'
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9345
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9346
    <xsl:text>        //        -5    -4 |
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9347
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9348
    <xsl:text>        //         offset  |
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9349
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9350
    <xsl:text>        //     X&lt;---------&gt;|
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9351
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9352
    <xsl:text>        // base_point
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9353
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9354
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9355
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9356
    <xsl:text>        let duplicate_index = 0;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9357
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9358
    <xsl:text>        for(let mark_index = 0; mark_index &lt;= mark_count; mark_index++){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9359
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9360
    <xsl:text>            let val = (mark_min + mark_index) * unit;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9361
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9362
    <xsl:text>            let vec = vectorscale(unit_vect, val - min);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9363
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9364
    <xsl:text>            let text = this.format ? sprintf(this.format, val) : val.toString();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9365
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9366
    <xsl:text>            if(mark_index == mark_offset){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9367
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9368
    <xsl:text>                // apply offset to original marks and label groups
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9369
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9370
    <xsl:text>                this.marks_and_label_group_transform.setTranslate(vec.x, vec.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9371
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9372
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9373
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9374
    <xsl:text>                // update original label text
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9375
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9376
    <xsl:text>                this.label.getElementsByTagName("tspan")[0].textContent = text;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9377
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9378
    <xsl:text>            } else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9379
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9380
    <xsl:text>                let [transform,element] = this.duplicates[duplicate_index++];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9381
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9382
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9383
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9384
    <xsl:text>                // apply unit vector*N to marks and label groups
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9385
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9386
    <xsl:text>                transform.setTranslate(vec.x, vec.y);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9387
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9388
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9389
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9390
    <xsl:text>                // update label text
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9391
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9392
    <xsl:text>                element.getElementsByTagName("tspan")[0].textContent = text;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9393
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9394
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9395
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9396
    <xsl:text>                // Attach to group if not already
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9397
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9398
    <xsl:text>                if(element.parentElement == null){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9399
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9400
    <xsl:text>                    this.group.appendChild(element);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9401
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9402
    <xsl:text>                }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9403
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9404
    <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9405
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9406
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9407
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9408
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9409
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9410
    <xsl:text>        let save_duplicate_index = duplicate_index;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9411
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9412
    <xsl:text>        // dettach marks and label from group if not anymore visible
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9413
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9414
    <xsl:text>        for(;duplicate_index &lt; this.last_duplicate_index; duplicate_index++){
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9415
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9416
    <xsl:text>            let [transform,element] = this.duplicates[duplicate_index];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9417
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9418
    <xsl:text>            this.group.removeChild(element);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9419
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9420
    <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9421
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9422
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9423
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9424
    <xsl:text>        this.last_duplicate_index = save_duplicate_index;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9425
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9426
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9427
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9428
    <xsl:text>		return vectorscale(unit_vect, offset);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9429
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9430
    <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9431
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9432
    <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9433
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9434
    <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9435
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9436
  </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
  9437
  <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
  9438
    <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
  9439
      <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
  9440
    </xsl:comment>
3264
51645afeded9 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3242
diff changeset
  9441
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3212
2b5b3f4f26f0 SVGHMI: silence debug output in generated xhtml.
Edouard Tisserant
parents: 3211
diff changeset
  9442
      <head>
3264
51645afeded9 SVGHMI: update generated XSLT files
Edouard Tisserant
parents: 3242
diff changeset
  9443
        <style type="text/css" media="screen">
3212
2b5b3f4f26f0 SVGHMI: silence debug output in generated xhtml.
Edouard Tisserant
parents: 3211
diff changeset
  9444
          <xsl:value-of select="ns:GetFonts()"/>
3517
dacf329abdd9 SVGHMI: update generated xslt files
Edouard Tisserant
parents: 3510
diff changeset
  9445
          <xsl:apply-templates select="document('')/*/cssdefs:*"/>
3212
2b5b3f4f26f0 SVGHMI: silence debug output in generated xhtml.
Edouard Tisserant
parents: 3211
diff changeset
  9446
        </style>
2b5b3f4f26f0 SVGHMI: silence debug output in generated xhtml.
Edouard Tisserant
parents: 3211
diff changeset
  9447
      </head>
3084
1ae4a871b6f9 SVGHMI: update generated XSLT
Edouard Tisserant
parents: 3080
diff changeset
  9448
      <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
  9449
        <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
  9450
        <script>
2943
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9451
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9452
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9453
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9454
// Early independent declarations 
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9455
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9456
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9457
</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
  9458
          <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
  9459
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9460
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9461
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9462
// 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
  9463
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9464
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9465
</xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9466
          <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
  9467
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9468
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9469
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9470
// 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
  9471
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9472
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9473
</xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9474
          <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
  9475
          <xsl:text>
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9476
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9477
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9478
// 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
  9479
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9480
//
304e88bae115 SVGHMI: added more meaningful namespaces to emit javascript code from.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2942
diff changeset
  9481
</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
  9482
          <xsl:apply-templates select="document('')/*/epilogue:*"/>
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9483
          <xsl:text>/* https://github.com/alexei/sprintf.js/blob/master/src/sprintf.js */
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9484
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9485
          <xsl:text>/* global window, exports, define */
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9486
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9487
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9488
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9489
          <xsl:text>!function() {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9490
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9491
          <xsl:text>    'use strict'
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9492
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9493
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9494
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9495
          <xsl:text>    var re = {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9496
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9497
          <xsl:text>        not_string: /[^s]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9498
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9499
          <xsl:text>        not_bool: /[^t]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9500
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9501
          <xsl:text>        not_type: /[^T]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9502
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9503
          <xsl:text>        not_primitive: /[^v]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9504
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9505
          <xsl:text>        number: /[diefg]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9506
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9507
          <xsl:text>        numeric_arg: /[bcdiefguxX]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9508
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9509
          <xsl:text>        json: /[j]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9510
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9511
          <xsl:text>        not_json: /[^j]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9512
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9513
          <xsl:text>        text: /^[^%]+/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9514
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9515
          <xsl:text>        modulo: /^%{2}/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9516
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9517
          <xsl:text>        placeholder: /^%(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxXD])/,
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9518
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9519
          <xsl:text>        key: /^([a-z_][a-z_\d]*)/i,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9520
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9521
          <xsl:text>        key_access: /^\.([a-z_][a-z_\d]*)/i,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9522
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9523
          <xsl:text>        index_access: /^\[(\d+)\]/,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9524
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9525
          <xsl:text>        sign: /^[+-]/
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9526
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9527
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9528
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9529
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9530
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9531
          <xsl:text>    function sprintf(key) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9532
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9533
          <xsl:text>        // arguments is not an array, but should be fine for this call
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9534
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9535
          <xsl:text>        return sprintf_format(sprintf_parse(key), arguments)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9536
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9537
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9538
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9539
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9540
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9541
          <xsl:text>    function vsprintf(fmt, argv) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9542
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9543
          <xsl:text>        return sprintf.apply(null, [fmt].concat(argv || []))
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9544
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9545
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9546
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9547
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9548
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9549
          <xsl:text>    function sprintf_format(parse_tree, argv) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9550
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9551
          <xsl:text>        var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9552
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9553
          <xsl:text>        for (i = 0; i &lt; tree_length; i++) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9554
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9555
          <xsl:text>            if (typeof parse_tree[i] === 'string') {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9556
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9557
          <xsl:text>                output += parse_tree[i]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9558
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9559
          <xsl:text>            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9560
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9561
          <xsl:text>            else if (typeof parse_tree[i] === 'object') {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9562
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9563
          <xsl:text>                ph = parse_tree[i] // convenience purposes only
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9564
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9565
          <xsl:text>                if (ph.keys) { // keyword argument
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9566
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9567
          <xsl:text>                    arg = argv[cursor]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9568
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9569
          <xsl:text>                    for (k = 0; k &lt; ph.keys.length; k++) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9570
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9571
          <xsl:text>                        if (arg == undefined) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9572
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9573
          <xsl:text>                            throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9574
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9575
          <xsl:text>                        }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9576
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9577
          <xsl:text>                        arg = arg[ph.keys[k]]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9578
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9579
          <xsl:text>                    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9580
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9581
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9582
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9583
          <xsl:text>                else if (ph.param_no) { // positional argument (explicit)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9584
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9585
          <xsl:text>                    arg = argv[ph.param_no]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9586
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9587
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9588
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9589
          <xsl:text>                else { // positional argument (implicit)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9590
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9591
          <xsl:text>                    arg = argv[cursor++]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9592
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9593
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9594
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9595
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9596
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9597
          <xsl:text>                if (re.not_type.test(ph.type) &amp;&amp; re.not_primitive.test(ph.type) &amp;&amp; arg instanceof Function) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9598
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9599
          <xsl:text>                    arg = arg()
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9600
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9601
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9602
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9603
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9604
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9605
          <xsl:text>                if (re.numeric_arg.test(ph.type) &amp;&amp; (typeof arg !== 'number' &amp;&amp; isNaN(arg))) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9606
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9607
          <xsl:text>                    throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9608
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9609
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9610
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9611
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9612
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9613
          <xsl:text>                if (re.number.test(ph.type)) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9614
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9615
          <xsl:text>                    is_positive = arg &gt;= 0
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9616
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9617
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9618
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9619
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9620
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9621
          <xsl:text>                switch (ph.type) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9622
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9623
          <xsl:text>                    case 'b':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9624
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9625
          <xsl:text>                        arg = parseInt(arg, 10).toString(2)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9626
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9627
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9628
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9629
          <xsl:text>                    case 'c':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9630
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9631
          <xsl:text>                        arg = String.fromCharCode(parseInt(arg, 10))
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9632
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9633
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9634
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9635
          <xsl:text>                    case 'd':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9636
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9637
          <xsl:text>                    case 'i':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9638
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9639
          <xsl:text>                        arg = parseInt(arg, 10)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9640
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9641
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9642
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9643
          <xsl:text>                    case 'D':
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9644
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9645
          <xsl:text>                        /*  
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9646
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9647
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9648
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9649
          <xsl:text>                            select date format with width
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9650
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9651
          <xsl:text>                            select time format with precision
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9652
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9653
          <xsl:text>                            %D  =&gt; 13:31 AM (default)
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9654
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9655
          <xsl:text>                            %1D  =&gt; 13:31 AM
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9656
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9657
          <xsl:text>                            %.1D  =&gt; 07/07/20
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9658
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9659
          <xsl:text>                            %1.1D  =&gt; 07/07/20, 13:31 AM
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9660
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9661
          <xsl:text>                            %1.2D  =&gt; 07/07/20, 13:31:55 AM
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9662
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9663
          <xsl:text>                            %2.2D  =&gt; May 5, 2022, 9:29:16 AM
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9664
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9665
          <xsl:text>                            %3.3D  =&gt; May 5, 2022 at 9:28:16 AM GMT+2
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9666
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9667
          <xsl:text>                            %4.4D  =&gt; Thursday, May 5, 2022 at 9:26:59 AM Central European Summer Time
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9668
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9669
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9670
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9671
          <xsl:text>                            see meaning of DateTimeFormat's options "datestyle" and "timestyle" in MDN 
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9672
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9673
          <xsl:text>                        */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9674
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9675
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9676
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9677
          <xsl:text>                        let [datestyle, timestyle] = [ph.width, ph.precision].map(val =&gt; ({
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9678
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9679
          <xsl:text>                            1: "short",
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9680
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9681
          <xsl:text>                            2: "medium",
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9682
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9683
          <xsl:text>                            3: "long",
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9684
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9685
          <xsl:text>                            4: "full"
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9686
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9687
          <xsl:text>                        }[val]));
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9688
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9689
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9690
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9691
          <xsl:text>                        if(timestyle === undefined &amp;&amp; datestyle === undefined){
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9692
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9693
          <xsl:text>                            timestyle = "short";
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9694
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9695
          <xsl:text>                        }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9696
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9697
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9698
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9699
          <xsl:text>                        let options = {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9700
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9701
          <xsl:text>                            dateStyle: datestyle,
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9702
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9703
          <xsl:text>                            timeStyle: timestyle,
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9704
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9705
          <xsl:text>                            hour12: false
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9706
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9707
          <xsl:text>                        }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9708
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9709
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9710
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9711
          <xsl:text>                        /* get lang from globals */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9712
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9713
          <xsl:text>                        let lang = get_current_lang_code();
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9714
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9715
          <xsl:text>                        let f;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9716
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9717
          <xsl:text>                        try{
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9718
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9719
          <xsl:text>                            f = new Intl.DateTimeFormat(lang, options);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9720
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9721
          <xsl:text>                        } catch(e) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9722
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9723
          <xsl:text>                            f = new Intl.DateTimeFormat('en-US', options);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9724
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9725
          <xsl:text>                        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9726
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9727
          <xsl:text>                        arg = f.format(arg);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9728
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
  9729
          <xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9730
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9731
          <xsl:text>                        /*    
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9732
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9733
          <xsl:text>                            TODO: select with padding char
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9734
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9735
          <xsl:text>                                  a: absolute time and date (default)
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9736
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9737
          <xsl:text>                                  r: relative time
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9738
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9739
          <xsl:text>                        */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9740
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9741
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9742
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9743
          <xsl:text>                        break
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
  9744
</xsl:text>
3331
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9745
          <xsl:text>                    case 'j':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9746
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9747
          <xsl:text>                        arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9748
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9749
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9750
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9751
          <xsl:text>                    case 'e':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9752
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9753
          <xsl:text>                        arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9754
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9755
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9756
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9757
          <xsl:text>                    case 'f':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9758
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9759
          <xsl:text>                        arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9760
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9761
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9762
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9763
          <xsl:text>                    case 'g':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9764
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9765
          <xsl:text>                        arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9766
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9767
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9768
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9769
          <xsl:text>                    case 'o':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9770
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9771
          <xsl:text>                        arg = (parseInt(arg, 10) &gt;&gt;&gt; 0).toString(8)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9772
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9773
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9774
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9775
          <xsl:text>                    case 's':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9776
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9777
          <xsl:text>                        arg = String(arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9778
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9779
          <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9780
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9781
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9782
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9783
          <xsl:text>                    case 't':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9784
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9785
          <xsl:text>                        arg = String(!!arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9786
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9787
          <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9788
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9789
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9790
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9791
          <xsl:text>                    case 'T':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9792
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9793
          <xsl:text>                        arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9794
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9795
          <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9796
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9797
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9798
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9799
          <xsl:text>                    case 'u':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9800
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9801
          <xsl:text>                        arg = parseInt(arg, 10) &gt;&gt;&gt; 0
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9802
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9803
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9804
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9805
          <xsl:text>                    case 'v':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9806
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9807
          <xsl:text>                        arg = arg.valueOf()
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9808
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9809
          <xsl:text>                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9810
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9811
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9812
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9813
          <xsl:text>                    case 'x':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9814
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9815
          <xsl:text>                        arg = (parseInt(arg, 10) &gt;&gt;&gt; 0).toString(16)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9816
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9817
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9818
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9819
          <xsl:text>                    case 'X':
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9820
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9821
          <xsl:text>                        arg = (parseInt(arg, 10) &gt;&gt;&gt; 0).toString(16).toUpperCase()
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9822
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9823
          <xsl:text>                        break
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9824
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9825
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9826
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9827
          <xsl:text>                if (re.json.test(ph.type)) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9828
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9829
          <xsl:text>                    output += arg
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9830
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9831
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9832
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9833
          <xsl:text>                else {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9834
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9835
          <xsl:text>                    if (re.number.test(ph.type) &amp;&amp; (!is_positive || ph.sign)) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9836
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9837
          <xsl:text>                        sign = is_positive ? '+' : '-'
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9838
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9839
          <xsl:text>                        arg = arg.toString().replace(re.sign, '')
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9840
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9841
          <xsl:text>                    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9842
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9843
          <xsl:text>                    else {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9844
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9845
          <xsl:text>                        sign = ''
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9846
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9847
          <xsl:text>                    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9848
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9849
          <xsl:text>                    pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9850
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9851
          <xsl:text>                    pad_length = ph.width - (sign + arg).length
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9852
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9853
          <xsl:text>                    pad = ph.width ? (pad_length &gt; 0 ? pad_character.repeat(pad_length) : '') : ''
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9854
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9855
          <xsl:text>                    output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9856
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9857
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9858
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9859
          <xsl:text>            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9860
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9861
          <xsl:text>        }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9862
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9863
          <xsl:text>        return output
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9864
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9865
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9866
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9867
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9868
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9869
          <xsl:text>    var sprintf_cache = Object.create(null)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9870
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9871
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9872
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9873
          <xsl:text>    function sprintf_parse(fmt) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9874
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9875
          <xsl:text>        if (sprintf_cache[fmt]) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9876
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9877
          <xsl:text>            return sprintf_cache[fmt]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9878
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9879
          <xsl:text>        }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9880
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9881
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9882
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9883
          <xsl:text>        var _fmt = fmt, match, parse_tree = [], arg_names = 0
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9884
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9885
          <xsl:text>        while (_fmt) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9886
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9887
          <xsl:text>            if ((match = re.text.exec(_fmt)) !== null) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9888
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9889
          <xsl:text>                parse_tree.push(match[0])
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9890
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9891
          <xsl:text>            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9892
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9893
          <xsl:text>            else if ((match = re.modulo.exec(_fmt)) !== null) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9894
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9895
          <xsl:text>                parse_tree.push('%')
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9896
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9897
          <xsl:text>            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9898
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9899
          <xsl:text>            else if ((match = re.placeholder.exec(_fmt)) !== null) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9900
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9901
          <xsl:text>                if (match[2]) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9902
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9903
          <xsl:text>                    arg_names |= 1
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9904
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9905
          <xsl:text>                    var field_list = [], replacement_field = match[2], field_match = []
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9906
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9907
          <xsl:text>                    if ((field_match = re.key.exec(replacement_field)) !== null) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9908
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9909
          <xsl:text>                        field_list.push(field_match[1])
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9910
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9911
          <xsl:text>                        while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9912
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9913
          <xsl:text>                            if ((field_match = re.key_access.exec(replacement_field)) !== null) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9914
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9915
          <xsl:text>                                field_list.push(field_match[1])
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9916
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9917
          <xsl:text>                            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9918
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9919
          <xsl:text>                            else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9920
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9921
          <xsl:text>                                field_list.push(field_match[1])
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9922
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9923
          <xsl:text>                            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9924
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9925
          <xsl:text>                            else {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9926
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9927
          <xsl:text>                                throw new SyntaxError('[sprintf] failed to parse named argument key')
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9928
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9929
          <xsl:text>                            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9930
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9931
          <xsl:text>                        }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9932
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9933
          <xsl:text>                    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9934
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9935
          <xsl:text>                    else {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9936
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9937
          <xsl:text>                        throw new SyntaxError('[sprintf] failed to parse named argument key')
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9938
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9939
          <xsl:text>                    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9940
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9941
          <xsl:text>                    match[2] = field_list
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9942
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9943
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9944
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9945
          <xsl:text>                else {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9946
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9947
          <xsl:text>                    arg_names |= 2
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9948
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9949
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9950
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9951
          <xsl:text>                if (arg_names === 3) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9952
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9953
          <xsl:text>                    throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9954
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9955
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9956
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9957
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9958
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9959
          <xsl:text>                parse_tree.push(
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9960
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9961
          <xsl:text>                    {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9962
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9963
          <xsl:text>                        placeholder: match[0],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9964
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9965
          <xsl:text>                        param_no:    match[1],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9966
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9967
          <xsl:text>                        keys:        match[2],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9968
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9969
          <xsl:text>                        sign:        match[3],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9970
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9971
          <xsl:text>                        pad_char:    match[4],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9972
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9973
          <xsl:text>                        align:       match[5],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9974
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9975
          <xsl:text>                        width:       match[6],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9976
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9977
          <xsl:text>                        precision:   match[7],
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9978
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9979
          <xsl:text>                        type:        match[8]
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9980
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9981
          <xsl:text>                    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9982
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9983
          <xsl:text>                )
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9984
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9985
          <xsl:text>            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9986
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9987
          <xsl:text>            else {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9988
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9989
          <xsl:text>                throw new SyntaxError('[sprintf] unexpected placeholder')
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9990
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9991
          <xsl:text>            }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9992
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9993
          <xsl:text>            _fmt = _fmt.substring(match[0].length)
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9994
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9995
          <xsl:text>        }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9996
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9997
          <xsl:text>        return sprintf_cache[fmt] = parse_tree
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9998
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
  9999
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10000
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10001
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10002
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10003
          <xsl:text>    /**
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10004
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10005
          <xsl:text>     * export to either browser or node.js
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10006
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10007
          <xsl:text>     */
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10008
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10009
          <xsl:text>    /* eslint-disable quote-props */
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10010
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10011
          <xsl:text>    if (typeof exports !== 'undefined') {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10012
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10013
          <xsl:text>        exports['sprintf'] = sprintf
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10014
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10015
          <xsl:text>        exports['vsprintf'] = vsprintf
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10016
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10017
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10018
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10019
          <xsl:text>    if (typeof window !== 'undefined') {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10020
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10021
          <xsl:text>        window['sprintf'] = sprintf
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10022
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10023
          <xsl:text>        window['vsprintf'] = vsprintf
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10024
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10025
          <xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10026
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10027
          <xsl:text>        if (typeof define === 'function' &amp;&amp; define['amd']) {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10028
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10029
          <xsl:text>            define(function() {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10030
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10031
          <xsl:text>                return {
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10032
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10033
          <xsl:text>                    'sprintf': sprintf,
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10034
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10035
          <xsl:text>                    'vsprintf': vsprintf
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10036
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10037
          <xsl:text>                }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10038
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10039
          <xsl:text>            })
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10040
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10041
          <xsl:text>        }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10042
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10043
          <xsl:text>    }
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10044
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10045
          <xsl:text>    /* eslint-enable quote-props */
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10046
</xsl:text>
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10047
          <xsl:text>}(); // eslint-disable-line    
6e7a80825f03 SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3326
diff changeset
 10048
</xsl:text>
3506
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10049
          <xsl:text>/*
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10050
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10051
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10052
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10053
          <xsl:text>From https://github.com/keyvan-m-sadeghi/pythonic
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10054
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10055
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10056
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10057
          <xsl:text>Slightly modified in order to be usable in browser (i.e. not as a node.js module)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10058
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10059
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10060
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10061
          <xsl:text>The MIT License (MIT)
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10062
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10063
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10064
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10065
          <xsl:text>Copyright (c) 2016 Assister.Ai
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10066
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10067
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10068
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10069
          <xsl:text>Permission is hereby granted, free of charge, to any person obtaining a copy of
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10070
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10071
          <xsl:text>this software and associated documentation files (the "Software"), to deal in
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10072
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10073
          <xsl:text>the Software without restriction, including without limitation the rights to
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10074
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10075
          <xsl:text>use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10076
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10077
          <xsl:text>the Software, and to permit persons to whom the Software is furnished to do so,
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10078
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10079
          <xsl:text>subject to the following conditions:
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10080
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10081
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10082
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10083
          <xsl:text>The above copyright notice and this permission notice shall be included in all
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10084
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10085
          <xsl:text>copies or substantial portions of the Software.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10086
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10087
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10088
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10089
          <xsl:text>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10090
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10091
          <xsl:text>IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10092
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10093
          <xsl:text>FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10094
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10095
          <xsl:text>COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10096
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10097
          <xsl:text>IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10098
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10099
          <xsl:text>CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10100
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10101
          <xsl:text>*/
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10102
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10103
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10104
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10105
          <xsl:text>class Iterator {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10106
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10107
          <xsl:text>    constructor(generator) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10108
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10109
          <xsl:text>        this[Symbol.iterator] = generator;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10110
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10111
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10112
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10113
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10114
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10115
          <xsl:text>    async * [Symbol.asyncIterator]() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10116
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10117
          <xsl:text>        for (const element of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10118
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10119
          <xsl:text>            yield await element;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10120
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10121
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10122
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10123
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10124
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10125
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10126
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10127
          <xsl:text>    forEach(callback) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10128
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10129
          <xsl:text>        for (const element of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10130
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10131
          <xsl:text>            callback(element);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10132
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10133
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10134
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10135
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10136
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10137
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10138
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10139
          <xsl:text>    map(callback) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10140
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10141
          <xsl:text>        const result = [];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10142
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10143
          <xsl:text>        for (const element of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10144
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10145
          <xsl:text>            result.push(callback(element));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10146
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10147
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10148
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10149
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10150
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10151
          <xsl:text>        return result;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10152
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10153
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10154
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10155
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10156
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10157
          <xsl:text>    filter(callback) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10158
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10159
          <xsl:text>        const result = [];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10160
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10161
          <xsl:text>        for (const element of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10162
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10163
          <xsl:text>            if (callback(element)) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10164
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10165
          <xsl:text>                result.push(element);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10166
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10167
          <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10168
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10169
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10170
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10171
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10172
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10173
          <xsl:text>        return result;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10174
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10175
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10176
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10177
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10178
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10179
          <xsl:text>    reduce(callback, initialValue) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10180
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10181
          <xsl:text>        let empty = typeof initialValue === 'undefined';
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10182
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10183
          <xsl:text>        let accumulator = initialValue;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10184
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10185
          <xsl:text>        let index = 0;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10186
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10187
          <xsl:text>        for (const currentValue of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10188
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10189
          <xsl:text>            if (empty) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10190
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10191
          <xsl:text>                accumulator = currentValue;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10192
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10193
          <xsl:text>                empty = false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10194
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10195
          <xsl:text>                continue;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10196
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10197
          <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10198
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10199
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10200
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10201
          <xsl:text>            accumulator = callback(accumulator, currentValue, index, this);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10202
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10203
          <xsl:text>            index++;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10204
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10205
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10206
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10207
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10208
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10209
          <xsl:text>        if (empty) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10210
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10211
          <xsl:text>            throw new TypeError('Reduce of empty Iterator with no initial value');
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10212
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10213
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10214
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10215
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10216
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10217
          <xsl:text>        return accumulator;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10218
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10219
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10220
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10221
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10222
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10223
          <xsl:text>    some(callback) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10224
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10225
          <xsl:text>        for (const element of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10226
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10227
          <xsl:text>            if (callback(element)) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10228
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10229
          <xsl:text>                return true;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10230
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10231
          <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10232
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10233
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10234
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10235
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10236
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10237
          <xsl:text>        return false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10238
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10239
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10240
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10241
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10242
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10243
          <xsl:text>    every(callback) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10244
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10245
          <xsl:text>        for (const element of this) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10246
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10247
          <xsl:text>            if (!callback(element)) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10248
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10249
          <xsl:text>                return false;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10250
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10251
          <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10252
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10253
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10254
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10255
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10256
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10257
          <xsl:text>        return true;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10258
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10259
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10260
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10261
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10262
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10263
          <xsl:text>    static fromIterable(iterable) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10264
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10265
          <xsl:text>        return new Iterator(function * () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10266
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10267
          <xsl:text>            for (const element of iterable) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10268
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10269
          <xsl:text>                yield element;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10270
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10271
          <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10272
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10273
          <xsl:text>        });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10274
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10275
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10276
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10277
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10278
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10279
          <xsl:text>    toArray() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10280
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10281
          <xsl:text>        return Array.from(this);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10282
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10283
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10284
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10285
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10286
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10287
          <xsl:text>    next() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10288
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10289
          <xsl:text>        if (!this.currentInvokedGenerator) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10290
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10291
          <xsl:text>            this.currentInvokedGenerator = this[Symbol.iterator]();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10292
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10293
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10294
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10295
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10296
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10297
          <xsl:text>        return this.currentInvokedGenerator.next();
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10298
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10299
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10300
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10301
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10302
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10303
          <xsl:text>    reset() {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10304
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10305
          <xsl:text>        delete this.currentInvokedGenerator;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10306
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10307
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10308
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10309
          <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10310
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10311
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10312
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10313
          <xsl:text>function rangeSimple(stop) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10314
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10315
          <xsl:text>    return new Iterator(function * () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10316
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10317
          <xsl:text>        for (let i = 0; i &lt; stop; i++) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10318
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10319
          <xsl:text>            yield i;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10320
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10321
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10322
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10323
          <xsl:text>    });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10324
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10325
          <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10326
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10327
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10328
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10329
          <xsl:text>function rangeOverload(start, stop, step = 1) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10330
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10331
          <xsl:text>    return new Iterator(function * () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10332
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10333
          <xsl:text>        for (let i = start; i &lt; stop; i += step) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10334
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10335
          <xsl:text>            yield i;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10336
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10337
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10338
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10339
          <xsl:text>    });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10340
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10341
          <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10342
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10343
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10344
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10345
          <xsl:text>function range(...args) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10346
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10347
          <xsl:text>    if (args.length &lt; 2) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10348
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10349
          <xsl:text>        return rangeSimple(...args);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10350
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10351
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10352
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10353
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10354
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10355
          <xsl:text>    return rangeOverload(...args);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10356
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10357
          <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10358
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10359
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10360
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10361
          <xsl:text>function enumerate(iterable) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10362
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10363
          <xsl:text>    return new Iterator(function * () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10364
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10365
          <xsl:text>        let index = 0;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10366
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10367
          <xsl:text>        for (const element of iterable) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10368
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10369
          <xsl:text>            yield [index, element];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10370
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10371
          <xsl:text>            index++;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10372
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10373
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10374
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10375
          <xsl:text>    });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10376
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10377
          <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10378
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10379
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10380
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10381
          <xsl:text>const _zip = longest =&gt; (...iterables) =&gt; {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10382
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10383
          <xsl:text>    if (iterables.length &lt; 2) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10384
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10385
          <xsl:text>        throw new TypeError("zip takes 2 iterables at least, "+iterables.length+" given");
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10386
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10387
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10388
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10389
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10390
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10391
          <xsl:text>    return new Iterator(function * () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10392
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10393
          <xsl:text>        const iterators = iterables.map(iterable =&gt; Iterator.fromIterable(iterable));
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10394
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10395
          <xsl:text>        while (true) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10396
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10397
          <xsl:text>            const row = iterators.map(iterator =&gt; iterator.next());
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10398
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10399
          <xsl:text>            const check = longest ? row.every.bind(row) : row.some.bind(row);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10400
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10401
          <xsl:text>            if (check(next =&gt; next.done)) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10402
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10403
          <xsl:text>                return;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10404
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10405
          <xsl:text>            }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10406
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10407
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10408
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10409
          <xsl:text>            yield row.map(next =&gt; next.value);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10410
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10411
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10412
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10413
          <xsl:text>    });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10414
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10415
          <xsl:text>};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10416
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10417
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10418
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10419
          <xsl:text>const zip = _zip(false), zipLongest= _zip(true);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10420
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10421
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10422
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10423
          <xsl:text>function items(obj) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10424
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10425
          <xsl:text>    let {keys, get} = obj;
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10426
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10427
          <xsl:text>    if (obj instanceof Map) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10428
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10429
          <xsl:text>        keys = keys.bind(obj);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10430
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10431
          <xsl:text>        get = get.bind(obj);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10432
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10433
          <xsl:text>    } else {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10434
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10435
          <xsl:text>        keys = function () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10436
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10437
          <xsl:text>            return Object.keys(obj);
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10438
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10439
          <xsl:text>        };
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10440
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10441
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10442
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10443
          <xsl:text>        get = function (key) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10444
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10445
          <xsl:text>            return obj[key];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10446
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10447
          <xsl:text>        };
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10448
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10449
          <xsl:text>    }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10450
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10451
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10452
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10453
          <xsl:text>    return new Iterator(function * () {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10454
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10455
          <xsl:text>        for (const key of keys()) {
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10456
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10457
          <xsl:text>            yield [key, get(key)];
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10458
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10459
          <xsl:text>        }
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10460
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10461
          <xsl:text>    });
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10462
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10463
          <xsl:text>}
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10464
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10465
          <xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10466
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10467
          <xsl:text>/*
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10468
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10469
          <xsl:text>module.exports = {Iterator, range, enumerate, zip: _zip(false), zipLongest: _zip(true), items};
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10470
</xsl:text>
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10471
          <xsl:text>*/
ca312be56929 SVGHMI: update generated xslt.
Edouard Tisserant
parents: 3418
diff changeset
 10472
</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
 10473
          <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
 10474
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 10475
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 10476
</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
 10477
          <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
 10478
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 10479
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 10480
</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
 10481
          <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
 10482
</xsl:text>
3022
f6fe42b7ce60 SVGHMI: finished initial implementation of PAGE_LOCAL and HMI_LOCAL variables.
Edouard Tisserant
parents: 3017
diff changeset
 10483
          <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
 10484
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10485
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10486
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10487
          <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
 10488
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10489
          <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
 10490
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10491
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10492
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10493
          <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
 10494
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10495
          <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
 10496
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10497
          <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
 10498
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10499
          <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10500
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10501
          <xsl:text>    }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10502
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10503
          <xsl:text>};
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10504
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10505
          <xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10506
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10507
          <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
 10508
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10509
          <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
 10510
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 10511
          <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
 10512
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10513
          <xsl:text>        widget.do_init();
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10514
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10515
          <xsl:text>    });
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10516
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10517
          <xsl:text>};
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10518
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10519
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10520
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10521
          <xsl:text>// Open WebSocket to relative "/ws" address
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10522
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10523
          <xsl:text>var has_watchdog = window.location.hash == "#watchdog";
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10524
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10525
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10526
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10527
          <xsl:text>var ws_url = 
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10528
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10529
          <xsl:text>    window.location.href.replace(/^http(s?:\/\/[^\/]*)\/.*$/, 'ws$1/ws')
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10530
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10531
          <xsl:text>    + '?mode=' + (has_watchdog ? "watchdog" : "multiclient");
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10532
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10533
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10534
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10535
          <xsl:text>var ws = new WebSocket(ws_url);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10536
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10537
          <xsl:text>ws.binaryType = 'arraybuffer';
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10538
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10539
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10540
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10541
          <xsl:text>const dvgetters = {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10542
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10543
          <xsl:text>    INT: (dv,offset) =&gt; [dv.getInt16(offset, true), 2],
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10544
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10545
          <xsl:text>    BOOL: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10546
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10547
          <xsl:text>    NODE: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10548
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10549
          <xsl:text>    REAL: (dv,offset) =&gt; [dv.getFloat32(offset, true), 4],
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10550
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10551
          <xsl:text>    STRING: (dv, offset) =&gt; {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10552
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10553
          <xsl:text>        const size = dv.getInt8(offset);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10554
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10555
          <xsl:text>        return [
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10556
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10557
          <xsl:text>            String.fromCharCode.apply(null, new Uint8Array(
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10558
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10559
          <xsl:text>                dv.buffer, /* original buffer */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10560
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10561
          <xsl:text>                offset + 1, /* string starts after size*/
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10562
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10563
          <xsl:text>                size /* size of string */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10564
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10565
          <xsl:text>            )), size + 1]; /* total increment */
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10566
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10567
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10568
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10569
          <xsl:text>};
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10570
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10571
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10572
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10573
          <xsl:text>// Apply updates recieved through ws.onmessage to subscribed widgets
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10574
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10575
          <xsl:text>function apply_updates() {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10576
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10577
          <xsl:text>    updates.forEach((value, index) =&gt; {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10578
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10579
          <xsl:text>        dispatch_value(index, value);
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10580
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10581
          <xsl:text>    });
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10582
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10583
          <xsl:text>    updates.clear();
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10584
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10585
          <xsl:text>}
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10586
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10587
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10588
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10589
          <xsl:text>// Called on requestAnimationFrame, modifies DOM
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10590
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10591
          <xsl:text>var requestAnimationFrameID = null;
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10592
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10593
          <xsl:text>function animate() {
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10594
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10595
          <xsl:text>    let rearm = true;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10596
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10597
          <xsl:text>    do{
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10598
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10599
          <xsl:text>        if(page_fading == "pending" || page_fading == "forced"){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10600
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10601
          <xsl:text>            if(page_fading == "pending")
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10602
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10603
          <xsl:text>                svg_root.classList.add("fade-out-page");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10604
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10605
          <xsl:text>            page_fading = "in_progress";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10606
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10607
          <xsl:text>            if(page_fading_args.length)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10608
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10609
          <xsl:text>                setTimeout(function(){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10610
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10611
          <xsl:text>                    switch_page(...page_fading_args);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10612
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10613
          <xsl:text>                },1);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10614
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10615
          <xsl:text>            break;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10616
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10617
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10618
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10619
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10620
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10621
          <xsl:text>        // Do the page swith if pending
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10622
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10623
          <xsl:text>        if(page_switch_in_progress){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10624
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10625
          <xsl:text>            if(current_subscribed_page != current_visible_page){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10626
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10627
          <xsl:text>                switch_visible_page(current_subscribed_page);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10628
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10629
          <xsl:text>            }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10630
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10631
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10632
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10633
          <xsl:text>            page_switch_in_progress = false;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10634
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10635
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10636
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10637
          <xsl:text>            if(page_fading == "in_progress"){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10638
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10639
          <xsl:text>                svg_root.classList.remove("fade-out-page");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10640
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10641
          <xsl:text>                page_fading = "off";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10642
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10643
          <xsl:text>            }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10644
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10645
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10646
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10647
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10648
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10649
          <xsl:text>        while(widget = need_cache_apply.pop()){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10650
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10651
          <xsl:text>            widget.apply_cache();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10652
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10653
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10654
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10655
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10656
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10657
          <xsl:text>        if(jumps_need_update) update_jumps();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10658
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10659
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10660
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10661
          <xsl:text>        apply_updates();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10662
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10663
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10664
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10665
          <xsl:text>        pending_widget_animates.forEach(widget =&gt; widget._animate());
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10666
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10667
          <xsl:text>        pending_widget_animates = [];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10668
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10669
          <xsl:text>        rearm = false;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10670
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10671
          <xsl:text>    } while(0);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10672
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10673
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10674
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10675
          <xsl:text>    requestAnimationFrameID = null;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10676
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10677
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10678
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10679
          <xsl:text>    if(rearm) requestHMIAnimation();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10680
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10681
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10682
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10683
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10684
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10685
          <xsl:text>function requestHMIAnimation() {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10686
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10687
          <xsl:text>    if(requestAnimationFrameID == null){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10688
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10689
          <xsl:text>        requestAnimationFrameID = window.requestAnimationFrame(animate);
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10690
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10691
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10692
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10693
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10694
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10695
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10696
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10697
          <xsl:text>// Message reception handler
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10698
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10699
          <xsl:text>// Hash is verified and HMI values updates resulting from binary parsing
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10700
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10701
          <xsl:text>// are stored until browser can compute next frame, DOM is left untouched
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10702
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10703
          <xsl:text>ws.onmessage = function (evt) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10704
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10705
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10706
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10707
          <xsl:text>    let data = evt.data;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10708
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10709
          <xsl:text>    let dv = new DataView(data);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10710
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10711
          <xsl:text>    let i = 0;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10712
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10713
          <xsl:text>    try {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10714
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10715
          <xsl:text>        for(let hash_int of hmi_hash) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10716
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10717
          <xsl:text>            if(hash_int != dv.getUint8(i)){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10718
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10719
          <xsl:text>                throw new Error("Hash doesn't match");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10720
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10721
          <xsl:text>            };
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10722
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10723
          <xsl:text>            i++;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10724
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10725
          <xsl:text>        };
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10726
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10727
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10728
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10729
          <xsl:text>        while(i &lt; data.byteLength){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10730
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10731
          <xsl:text>            let index = dv.getUint32(i, true);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10732
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10733
          <xsl:text>            i += 4;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10734
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10735
          <xsl:text>            let iectype = hmitree_types[index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10736
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10737
          <xsl:text>            if(iectype != undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10738
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10739
          <xsl:text>                let dvgetter = dvgetters[iectype];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10740
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10741
          <xsl:text>                let [value, bytesize] = dvgetter(dv,i);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10742
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10743
          <xsl:text>                updates.set(index, value);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10744
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10745
          <xsl:text>                i += bytesize;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10746
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10747
          <xsl:text>            } else {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10748
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10749
          <xsl:text>                throw new Error("Unknown index "+index);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10750
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10751
          <xsl:text>            }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10752
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10753
          <xsl:text>        };
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10754
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10755
          <xsl:text>        // register for rendering on next frame, since there are updates
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10756
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10757
          <xsl:text>        requestHMIAnimation();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10758
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10759
          <xsl:text>    } catch(err) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10760
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10761
          <xsl:text>        // 1003 is for "Unsupported Data"
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10762
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10763
          <xsl:text>        // ws.close(1003, err.message);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10764
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10765
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10766
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10767
          <xsl:text>        // TODO : remove debug alert ?
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10768
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10769
          <xsl:text>        alert("Error : "+err.message+"\nHMI will be reloaded.");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10770
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10771
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10772
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10773
          <xsl:text>        // force reload ignoring cache
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10774
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10775
          <xsl:text>        location.reload(true);
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10776
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10777
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10778
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10779
          <xsl:text>};
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10780
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10781
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10782
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10783
          <xsl:text>hmi_hash_u8 = new Uint8Array(hmi_hash);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10784
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10785
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10786
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10787
          <xsl:text>function send_blob(data) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10788
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10789
          <xsl:text>    if(data.length &gt; 0) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10790
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10791
          <xsl:text>        ws.send(new Blob([hmi_hash_u8].concat(data)));
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10792
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10793
          <xsl:text>    };
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10794
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10795
          <xsl:text>};
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10796
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10797
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10798
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10799
          <xsl:text>const typedarray_types = {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10800
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10801
          <xsl:text>    INT: (number) =&gt; new Int16Array([number]),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10802
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10803
          <xsl:text>    BOOL: (truth) =&gt; new Int16Array([truth]),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10804
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10805
          <xsl:text>    NODE: (truth) =&gt; new Int16Array([truth]),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10806
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10807
          <xsl:text>    REAL: (number) =&gt; new Float32Array([number]),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10808
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10809
          <xsl:text>    STRING: (str) =&gt; {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10810
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10811
          <xsl:text>        // beremiz default string max size is 128
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10812
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10813
          <xsl:text>        str = str.slice(0,128);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10814
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10815
          <xsl:text>        binary = new Uint8Array(str.length + 1);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10816
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10817
          <xsl:text>        binary[0] = str.length;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10818
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10819
          <xsl:text>        for(let i = 0; i &lt; str.length; i++){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10820
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10821
          <xsl:text>            binary[i+1] = str.charCodeAt(i);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10822
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10823
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10824
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10825
          <xsl:text>        return binary;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10826
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10827
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10828
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10829
          <xsl:text>    /* TODO */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10830
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10831
          <xsl:text>};
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10832
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10833
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10834
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10835
          <xsl:text>function send_reset() {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10836
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10837
          <xsl:text>    send_blob(new Uint8Array([1])); /* reset = 1 */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10838
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10839
          <xsl:text>};
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10840
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10841
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10842
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10843
          <xsl:text>var subscriptions = [];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10844
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10845
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10846
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10847
          <xsl:text>function subscribers(index) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10848
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10849
          <xsl:text>    let entry = subscriptions[index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10850
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10851
          <xsl:text>    let res;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10852
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10853
          <xsl:text>    if(entry == undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10854
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10855
          <xsl:text>        res = new Set();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10856
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10857
          <xsl:text>        subscriptions[index] = [res,0];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10858
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10859
          <xsl:text>    }else{
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10860
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10861
          <xsl:text>        [res, _ign] = entry;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10862
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10863
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10864
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10865
          <xsl:text>    return res
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10866
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10867
          <xsl:text>}
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10868
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10869
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10870
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10871
          <xsl:text>function get_subscription_period(index) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10872
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10873
          <xsl:text>    let entry = subscriptions[index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10874
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10875
          <xsl:text>    if(entry == undefined)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10876
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10877
          <xsl:text>        return 0;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10878
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10879
          <xsl:text>    let [_ign, period] = entry;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10880
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10881
          <xsl:text>    return period;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10882
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10883
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10884
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10885
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10886
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10887
          <xsl:text>function set_subscription_period(index, period) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10888
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10889
          <xsl:text>    let entry = subscriptions[index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10890
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10891
          <xsl:text>    if(entry == undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10892
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10893
          <xsl:text>        subscriptions[index] = [new Set(), period];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10894
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10895
          <xsl:text>    } else {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10896
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10897
          <xsl:text>        entry[1] = period;
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10898
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10899
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10900
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10901
          <xsl:text>}
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10902
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10903
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 10904
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10905
          <xsl:text>if(has_watchdog){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10906
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10907
          <xsl:text>    // artificially subscribe the watchdog widget to "/heartbeat" hmi variable
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10908
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10909
          <xsl:text>    // Since dispatch directly calls change_hmi_value,
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10910
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10911
          <xsl:text>    // PLC will periodically send variable at given frequency
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10912
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10913
          <xsl:text>    subscribers(heartbeat_index).add({
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10914
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10915
          <xsl:text>        /* type: "Watchdog", */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10916
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10917
          <xsl:text>        frequency: 1,
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10918
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10919
          <xsl:text>        indexes: [heartbeat_index],
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10920
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10921
          <xsl:text>        new_hmi_value: function(index, value, oldval) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10922
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10923
          <xsl:text>            apply_hmi_value(heartbeat_index, value+1);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10924
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10925
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10926
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10927
          <xsl:text>    });
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10928
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10929
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10930
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10931
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10932
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10933
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10934
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10935
          <xsl:text>var page_fading = "off";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10936
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10937
          <xsl:text>var page_fading_args = "off";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10938
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10939
          <xsl:text>function fading_page_switch(...args){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10940
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10941
          <xsl:text>    if(page_fading == "in_progress")
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10942
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10943
          <xsl:text>        page_fading = "forced";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10944
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10945
          <xsl:text>    else
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10946
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10947
          <xsl:text>        page_fading = "pending";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10948
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10949
          <xsl:text>    page_fading_args = args;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10950
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10951
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10952
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10953
          <xsl:text>    requestHMIAnimation();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10954
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10955
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10956
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10957
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10958
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10959
          <xsl:text>document.body.style.backgroundColor = "black";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10960
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10961
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10962
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10963
          <xsl:text>// subscribe to per instance current page hmi variable
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10964
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10965
          <xsl:text>// PLC must prefix page name with "!" for page switch to happen
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10966
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10967
          <xsl:text>subscribers(current_page_var_index).add({
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10968
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10969
          <xsl:text>    frequency: 1,
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10970
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10971
          <xsl:text>    indexes: [current_page_var_index],
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10972
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10973
          <xsl:text>    new_hmi_value: function(index, value, oldval) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10974
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10975
          <xsl:text>        if(value.startsWith("!"))
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10976
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10977
          <xsl:text>            fading_page_switch(value.slice(1));
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10978
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10979
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10980
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10981
          <xsl:text>});
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10982
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10983
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10984
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10985
          <xsl:text>function svg_text_to_multiline(elt) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10986
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10987
          <xsl:text>    return(Array.prototype.map.call(elt.children, x=&gt;x.textContent).join("\n")); 
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10988
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10989
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10990
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10991
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10992
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10993
          <xsl:text>function multiline_to_svg_text(elt, str, blank) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10994
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10995
          <xsl:text>    str.split('\n').map((line,i) =&gt; {elt.children[i].textContent = blank?"":line;});
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10996
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10997
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10998
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 10999
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11000
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11001
          <xsl:text>function switch_langnum(langnum) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11002
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11003
          <xsl:text>    langnum = Math.max(0, Math.min(langs.length - 1, langnum));
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11004
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11005
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11006
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11007
          <xsl:text>    for (let translation of translations) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11008
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11009
          <xsl:text>        let [objs, msgs] = translation;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11010
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11011
          <xsl:text>        let msg = msgs[langnum];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11012
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11013
          <xsl:text>        for (let obj of objs) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11014
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11015
          <xsl:text>            multiline_to_svg_text(obj, msg);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11016
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11017
          <xsl:text>            obj.setAttribute("lang",langnum);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11018
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11019
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11020
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11021
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11022
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11023
          <xsl:text>    return langnum;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11024
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11025
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11026
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11027
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11028
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11029
          <xsl:text>// backup original texts
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11030
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11031
          <xsl:text>for (let translation of translations) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11032
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11033
          <xsl:text>    let [objs, msgs] = translation;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11034
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11035
          <xsl:text>    msgs.unshift(svg_text_to_multiline(objs[0])); 
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11036
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11037
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11038
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11039
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11040
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11041
          <xsl:text>var lang_local_index = hmi_local_index("lang");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11042
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11043
          <xsl:text>var langcode_local_index = hmi_local_index("lang_code");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11044
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11045
          <xsl:text>var langname_local_index = hmi_local_index("lang_name");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11046
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11047
          <xsl:text>subscribers(lang_local_index).add({
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11048
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11049
          <xsl:text>    indexes: [lang_local_index],
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11050
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11051
          <xsl:text>    new_hmi_value: function(index, value, oldval) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11052
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11053
          <xsl:text>        let current_lang =  switch_langnum(value);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11054
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11055
          <xsl:text>        let [langname,langcode] = langs[current_lang];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11056
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11057
          <xsl:text>        apply_hmi_value(langcode_local_index, langcode);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11058
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11059
          <xsl:text>        apply_hmi_value(langname_local_index, langname);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11060
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11061
          <xsl:text>        switch_page();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11062
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11063
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11064
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11065
          <xsl:text>});
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11066
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11067
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11068
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11069
          <xsl:text>// returns en_US, fr_FR or en_UK depending on selected language
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11070
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11071
          <xsl:text>function get_current_lang_code(){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11072
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11073
          <xsl:text>    return cache[langcode_local_index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11074
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11075
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11076
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11077
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11078
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11079
          <xsl:text>function setup_lang(){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11080
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11081
          <xsl:text>    let current_lang = cache[lang_local_index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11082
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11083
          <xsl:text>    let new_lang = switch_langnum(current_lang);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11084
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11085
          <xsl:text>    if(current_lang != new_lang){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11086
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11087
          <xsl:text>        apply_hmi_value(lang_local_index, new_lang);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11088
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11089
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11090
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11091
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11092
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11093
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11094
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11095
          <xsl:text>setup_lang();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11096
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11097
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11098
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11099
          <xsl:text>function update_subscriptions() {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11100
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11101
          <xsl:text>    let delta = [];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11102
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11103
          <xsl:text>    for(let index in subscriptions){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11104
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11105
          <xsl:text>        let widgets = subscribers(index);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11106
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11107
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11108
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11109
          <xsl:text>        // periods are in ms
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11110
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11111
          <xsl:text>        let previous_period = get_subscription_period(index);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11112
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11113
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11114
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11115
          <xsl:text>        // subscribing with a zero period is unsubscribing
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11116
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11117
          <xsl:text>        let new_period = 0;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11118
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11119
          <xsl:text>        if(widgets.size &gt; 0) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11120
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11121
          <xsl:text>            let maxfreq = 0;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11122
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11123
          <xsl:text>            for(let widget of widgets){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11124
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11125
          <xsl:text>                let wf = widget.frequency;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11126
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11127
          <xsl:text>                if(wf != undefined &amp;&amp; maxfreq &lt; wf)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11128
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11129
          <xsl:text>                    maxfreq = wf;
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
 11130
</xsl:text>
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 11131
          <xsl:text>            }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 11132
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11133
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11134
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11135
          <xsl:text>            if(maxfreq != 0)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11136
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11137
          <xsl:text>                new_period = 1000/maxfreq;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11138
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11139
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11140
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11141
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11142
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11143
          <xsl:text>        if(previous_period != new_period) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11144
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11145
          <xsl:text>            set_subscription_period(index, new_period);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11146
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11147
          <xsl:text>            if(index &lt;= last_remote_index){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11148
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11149
          <xsl:text>                delta.push(
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11150
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11151
          <xsl:text>                    new Uint8Array([2]), /* subscribe = 2 */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11152
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11153
          <xsl:text>                    new Uint32Array([index]),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11154
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11155
          <xsl:text>                    new Uint16Array([new_period]));
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11156
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11157
          <xsl:text>            }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11158
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11159
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11160
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11161
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11162
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11163
          <xsl:text>    send_blob(delta);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11164
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11165
          <xsl:text>};
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11166
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11167
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11168
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11169
          <xsl:text>function send_hmi_value(index, value) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11170
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11171
          <xsl:text>    if(index &gt; last_remote_index){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11172
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11173
          <xsl:text>        updates.set(index, value);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11174
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11175
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11176
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11177
          <xsl:text>        if(persistent_indexes.has(index)){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11178
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11179
          <xsl:text>            let varname = persistent_indexes.get(index);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11180
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11181
          <xsl:text>            document.cookie = varname+"="+value+"; max-age=3153600000";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11182
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11183
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11184
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11185
          <xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11186
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11187
          <xsl:text>        requestHMIAnimation();
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11188
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11189
          <xsl:text>        return;
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11190
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11191
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11192
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11193
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11194
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11195
          <xsl:text>    let iectype = hmitree_types[index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11196
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11197
          <xsl:text>    let tobinary = typedarray_types[iectype];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11198
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11199
          <xsl:text>    send_blob([
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11200
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11201
          <xsl:text>        new Uint8Array([0]),  /* setval = 0 */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11202
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11203
          <xsl:text>        new Uint32Array([index]),
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11204
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11205
          <xsl:text>        tobinary(value)]);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11206
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11207
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11208
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11209
          <xsl:text>    // DON'T DO THAT unless read_iterator in svghmi.c modifies wbuf as well, not only rbuf
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11210
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11211
          <xsl:text>    // cache[index] = value;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11212
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11213
          <xsl:text>};
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11214
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11215
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11216
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11217
          <xsl:text>function apply_hmi_value(index, new_val) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11218
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11219
          <xsl:text>    // Similarly to previous comment, taking decision to update based 
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11220
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11221
          <xsl:text>    // on cache content is bad and can lead to inconsistency
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11222
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11223
          <xsl:text>    /*let old_val = cache[index];*/
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11224
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11225
          <xsl:text>    if(new_val != undefined /*&amp;&amp; old_val != new_val*/)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11226
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11227
          <xsl:text>        send_hmi_value(index, new_val);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11228
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11229
          <xsl:text>    return new_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11230
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11231
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11232
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11233
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11234
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11235
          <xsl:text>const quotes = {"'":null, '"':null};
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11236
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11237
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11238
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11239
          <xsl:text>function eval_operation_string(old_val, opstr) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11240
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11241
          <xsl:text>    let op = opstr[0];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11242
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11243
          <xsl:text>    let given_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11244
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11245
          <xsl:text>    if(opstr.length &lt; 2) 
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11246
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11247
          <xsl:text>        return undefined;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11248
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11249
          <xsl:text>    if(opstr[1] in quotes){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11250
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11251
          <xsl:text>        if(opstr.length &lt; 3) 
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11252
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11253
          <xsl:text>            return undefined;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11254
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11255
          <xsl:text>        if(opstr[opstr.length-1] == opstr[1]){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11256
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11257
          <xsl:text>            given_val = opstr.slice(2,opstr.length-1);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11258
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11259
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11260
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11261
          <xsl:text>    } else {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11262
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11263
          <xsl:text>        given_val = Number(opstr.slice(1));
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11264
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11265
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11266
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11267
          <xsl:text>    let new_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11268
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11269
          <xsl:text>    switch(op){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11270
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11271
          <xsl:text>      case "=":
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11272
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11273
          <xsl:text>        new_val = given_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11274
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11275
          <xsl:text>        break;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11276
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11277
          <xsl:text>      case "+":
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11278
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11279
          <xsl:text>        new_val = old_val + given_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11280
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11281
          <xsl:text>        break;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11282
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11283
          <xsl:text>      case "-":
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11284
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11285
          <xsl:text>        new_val = old_val - given_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11286
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11287
          <xsl:text>        break;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11288
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11289
          <xsl:text>      case "*":
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11290
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11291
          <xsl:text>        new_val = old_val * given_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11292
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11293
          <xsl:text>        break;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11294
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11295
          <xsl:text>      case "/":
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11296
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11297
          <xsl:text>        new_val = old_val / given_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11298
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11299
          <xsl:text>        break;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11300
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11301
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11302
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11303
          <xsl:text>    return new_val;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11304
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11305
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11306
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11307
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11308
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11309
          <xsl:text>var current_visible_page;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11310
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11311
          <xsl:text>var current_subscribed_page;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11312
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11313
          <xsl:text>var current_page_index;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11314
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11315
          <xsl:text>var page_node_local_index = hmi_local_index("page_node");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11316
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11317
          <xsl:text>var page_switch_in_progress = false;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11318
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11319
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11320
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11321
          <xsl:text>function toggleFullscreen() {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11322
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11323
          <xsl:text>  let elem = document.documentElement;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11324
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11325
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11326
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11327
          <xsl:text>  if (!document.fullscreenElement) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11328
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11329
          <xsl:text>    elem.requestFullscreen().catch(err =&gt; {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11330
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11331
          <xsl:text>      console.log("Error attempting to enable full-screen mode: "+err.message+" ("+err.name+")");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11332
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11333
          <xsl:text>    });
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11334
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11335
          <xsl:text>  } else {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11336
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11337
          <xsl:text>    document.exitFullscreen();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11338
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11339
          <xsl:text>  }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11340
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11341
          <xsl:text>}
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11342
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11343
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11344
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11345
          <xsl:text>function prepare_svg() {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11346
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11347
          <xsl:text>    // prevents context menu from appearing on right click and long touch
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11348
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11349
          <xsl:text>    document.body.addEventListener('contextmenu', e =&gt; {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11350
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11351
          <xsl:text>        toggleFullscreen();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11352
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11353
          <xsl:text>        e.preventDefault();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11354
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11355
          <xsl:text>    });
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11356
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11357
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11358
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11359
          <xsl:text>    for(let eltid in detachable_elements){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11360
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11361
          <xsl:text>        let [element,parent] = detachable_elements[eltid];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11362
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11363
          <xsl:text>        parent.removeChild(element);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11364
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11365
          <xsl:text>    }
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11366
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11367
          <xsl:text>};
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11368
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11369
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11370
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11371
          <xsl:text>function switch_page(page_name, page_index) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11372
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11373
          <xsl:text>    if(page_switch_in_progress){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11374
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11375
          <xsl:text>        /* page switch already going */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11376
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11377
          <xsl:text>        /* TODO LOG ERROR */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11378
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11379
          <xsl:text>        return false;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11380
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11381
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11382
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11383
          <xsl:text>    page_switch_in_progress = true;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11384
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11385
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11386
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11387
          <xsl:text>    if(page_name == undefined)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11388
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11389
          <xsl:text>        page_name = current_subscribed_page;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11390
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11391
          <xsl:text>    else if(page_index == undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11392
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11393
          <xsl:text>        [page_name, page_index] = page_name.split('@')
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11394
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11395
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11396
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11397
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11398
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11399
          <xsl:text>    let old_desc = page_desc[current_subscribed_page];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11400
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11401
          <xsl:text>    let new_desc = page_desc[page_name];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11402
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11403
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11404
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11405
          <xsl:text>    if(new_desc == undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11406
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11407
          <xsl:text>        /* TODO LOG ERROR */
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11408
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11409
          <xsl:text>        return false;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11410
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11411
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11412
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11413
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11414
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11415
          <xsl:text>    if(page_index == undefined)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11416
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11417
          <xsl:text>        page_index = new_desc.page_index;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11418
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11419
          <xsl:text>    else if(typeof(page_index) == "string") {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11420
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11421
          <xsl:text>        let hmitree_node = hmitree_nodes[page_index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11422
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11423
          <xsl:text>        if(hmitree_node !== undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11424
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11425
          <xsl:text>            let [int_index, hmiclass] = hmitree_node;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11426
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11427
          <xsl:text>            if(hmiclass == new_desc.page_class)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11428
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11429
          <xsl:text>                page_index = int_index;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11430
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11431
          <xsl:text>            else
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11432
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11433
          <xsl:text>                page_index = new_desc.page_index;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11434
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11435
          <xsl:text>        } else {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11436
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11437
          <xsl:text>            page_index = new_desc.page_index;
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11438
</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
 11439
          <xsl:text>        }
ff9ae4f4e3be SVGHMI: widgets are not anymore binary relative or absolute, but have a "relativeness".
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3004
diff changeset
 11440
</xsl:text>
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11441
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11442
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11443
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11444
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11445
          <xsl:text>    if(old_desc){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11446
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11447
          <xsl:text>        old_desc.widgets.map(([widget,relativeness])=&gt;widget.unsub());
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11448
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11449
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11450
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11451
          <xsl:text>    const new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11452
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11453
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11454
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11455
          <xsl:text>    const container_id = page_name + (page_index != undefined ? page_index : "");
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11456
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11457
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11458
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11459
          <xsl:text>    new_desc.widgets.map(([widget,relativeness])=&gt;widget.sub(new_offset,relativeness,container_id));
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11460
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11461
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11462
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11463
          <xsl:text>    update_subscriptions();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11464
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11465
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11466
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11467
          <xsl:text>    current_subscribed_page = page_name;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11468
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11469
          <xsl:text>    current_page_index = page_index;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11470
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11471
          <xsl:text>    let page_node;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11472
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11473
          <xsl:text>    if(page_index != undefined){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11474
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11475
          <xsl:text>        page_node = hmitree_paths[page_index];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11476
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11477
          <xsl:text>    }else{
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11478
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11479
          <xsl:text>        page_node = "";
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11480
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11481
          <xsl:text>    }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11482
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11483
          <xsl:text>    apply_hmi_value(page_node_local_index, page_node);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11484
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11485
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11486
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11487
          <xsl:text>    jumps_need_update = true;
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11488
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11489
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11490
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11491
          <xsl:text>    requestHMIAnimation();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11492
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11493
          <xsl:text>    jump_history.push([page_name, page_index]);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11494
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11495
          <xsl:text>    if(jump_history.length &gt; 42)
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11496
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11497
          <xsl:text>        jump_history.shift();
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11498
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11499
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11500
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11501
          <xsl:text>    apply_hmi_value(current_page_var_index, page_index == undefined
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11502
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11503
          <xsl:text>        ? page_name
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11504
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11505
          <xsl:text>        : page_name + "@" + hmitree_paths[page_index]);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11506
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11507
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11508
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11509
          <xsl:text>    return true;
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11510
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11511
          <xsl:text>};
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11512
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11513
          <xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11514
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11515
          <xsl:text>function switch_visible_page(page_name) {
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11516
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11517
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11518
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11519
          <xsl:text>    let old_desc = page_desc[current_visible_page];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11520
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11521
          <xsl:text>    let new_desc = page_desc[page_name];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11522
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11523
          <xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11524
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11525
          <xsl:text>    if(old_desc){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11526
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11527
          <xsl:text>        for(let eltid in old_desc.required_detachables){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11528
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11529
          <xsl:text>            if(!(eltid in new_desc.required_detachables)){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11530
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11531
          <xsl:text>                let [element, parent] = old_desc.required_detachables[eltid];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11532
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11533
          <xsl:text>                parent.removeChild(element);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11534
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11535
          <xsl:text>            }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11536
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11537
          <xsl:text>        }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11538
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11539
          <xsl:text>        for(let eltid in new_desc.required_detachables){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11540
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11541
          <xsl:text>            if(!(eltid in old_desc.required_detachables)){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11542
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11543
          <xsl:text>                let [element, parent] = new_desc.required_detachables[eltid];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11544
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11545
          <xsl:text>                parent.appendChild(element);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11546
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11547
          <xsl:text>            }
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11548
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11549
          <xsl:text>        }
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11550
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11551
          <xsl:text>    }else{
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11552
</xsl:text>
3554
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11553
          <xsl:text>        for(let eltid in new_desc.required_detachables){
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11554
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11555
          <xsl:text>            let [element, parent] = new_desc.required_detachables[eltid];
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11556
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11557
          <xsl:text>            parent.appendChild(element);
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11558
</xsl:text>
611fd1f44ce9 SVGHMI: update generated XSLT file
Edouard Tisserant
parents: 3525
diff changeset
 11559
          <xsl:text>        }
3478
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11560
</xsl:text>
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11561
          <xsl:text>    }
c04c6db09eff SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3418
diff changeset
 11562
</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
 11563
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11564
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11565
          <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
 11566
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11567
          <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
 11568
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11569
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11570
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11571
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11572
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11573
          <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
 11574
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11575
          <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
 11576
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11577
          <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
 11578
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11579
          <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
 11580
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11581
          <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
 11582
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11583
          <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
 11584
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11585
          <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
 11586
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11587
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11588
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11589
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11590
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11591
          <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
 11592
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11593
          <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
 11594
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11595
          <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
 11596
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11597
          <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
 11598
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11599
          <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
 11600
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11601
          <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
 11602
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11603
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11604
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11605
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11606
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11607
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11608
</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
 11609
          <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
 11610
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11611
          <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
 11612
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11613
          <xsl:text>const localtypes = {"PAGE_LOCAL":null, "HMI_LOCAL":null}
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11614
</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
 11615
          <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
 11616
</xsl:text>
3079
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11617
          <xsl:text>    if(valuetype in localtypes){
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11618
</xsl:text>
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11619
          <xsl:text>        valuetype = (typeof initial) == "number" ? "HMI_REAL" : "HMI_STRING";
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11620
</xsl:text>
1021c6c74dde SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3069
diff changeset
 11621
          <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
 11622
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11623
          <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
 11624
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11625
          <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
 11626
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11627
          <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
 11628
</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
 11629
          <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
 11630
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11631
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11632
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11633
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11634
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11635
          <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
 11636
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11637
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11638
</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
 11639
          <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
 11640
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11641
          <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
 11642
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11643
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11644
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11645
          <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
 11646
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11647
          <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
 11648
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11649
          <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
 11650
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11651
          <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
 11652
</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
 11653
          <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
 11654
</xsl:text>
bd0b120cf277 Rebuilded gen_index_html.xslt after all new widgets were commited
usveticic
parents: 3004
diff changeset
 11655
          <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
 11656
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11657
          <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
 11658
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11659
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11660
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11661
          <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
 11662
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11663
          <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
 11664
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11665
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11666
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11667
          <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
 11668
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11669
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11670
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11671
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11672
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11673
          <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
 11674
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11675
          <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
 11676
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11677
          <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
 11678
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11679
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11680
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11681
          <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
 11682
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11683
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11684
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11685
          <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
 11686
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11687
          <xsl:text>};
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11688
</xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11689
          <xsl:text>
ef13a4007538 SVGHMI: spread JS code from svghmi/scripts.ysl2 in other .ysl2 files, using dedicated preamble and epilogue namespaces
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2940
diff changeset
 11690
</xsl:text>
3557
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11691
          <xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11692
//
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11693
//
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11694
// Declarations from SVG scripts (inkscape document properties) 
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11695
//
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11696
//
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11697
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11698
          <xsl:for-each select="/svg:svg/svg:script">
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11699
            <xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11700
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11701
            <xsl:text>/* </xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11702
            <xsl:value-of select="@id"/>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11703
            <xsl:text> */
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11704
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11705
            <xsl:value-of select="text()"/>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11706
            <xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11707
</xsl:text>
59158e360b8c SVGHMI: update generated xslt file
Edouard Tisserant
parents: 3554
diff changeset
 11708
          </xsl:for-each>
2883
8e3d130399b0 SVGHMI: created widget_*.ysl2. Renamed widget_common in widgets_common, so that it doesn't match globing.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2881
diff changeset
 11709
        </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
 11710
      </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
 11711
    </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
 11712
  </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
 11713
</xsl:stylesheet>