--- a/svghmi/analyse_widget.xslt Wed Jun 01 09:14:19 2022 +0200
+++ b/svghmi/analyse_widget.xslt Wed Jun 01 09:15:26 2022 +0200
@@ -2,7 +2,7 @@
<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:svg="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" extension-element-prefixes="ns func exsl regexp str dyn" exclude-result-prefixes="ns func exsl regexp str dyn svg inkscape">
<xsl:output method="xml"/>
<xsl:variable name="indexed_hmitree" select="/.."/>
- <xsl:variable name="pathregex" select="'^([^\[,]+)(\[[^\]]+\])?([\d,]*)$'"/>
+ <xsl:variable name="pathregex" select="'^([^\[,]+)(\[[^\]]+\])?([-.\d,]*)$'"/>
<xsl:template mode="parselabel" match="*">
<xsl:variable name="label" select="@inkscape:label"/>
<xsl:variable name="id" select="@id"/>
@@ -50,6 +50,16 @@
<xsl:value-of select="$type"/>
</xsl:attribute>
<xsl:if test="$freq">
+ <xsl:if test="not(regexp:test($freq,'^[0-9]*(\.[0-9]+)?[smh]?'))">
+ <xsl:message terminate="yes">
+ <xsl:text>Widget id:</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> label:</xsl:text>
+ <xsl:value-of select="$label"/>
+ <xsl:text> has wrong syntax of frequency forcing </xsl:text>
+ <xsl:value-of select="$freq"/>
+ </xsl:message>
+ </xsl:if>
<xsl:attribute name="freq">
<xsl:value-of select="$freq"/>
</xsl:attribute>
@@ -223,8 +233,6 @@
</xsl:template>
<xsl:template name="generated_button_class">
<xsl:param name="fsm"/>
- <xsl:text> frequency = 5;
-</xsl:text>
<xsl:text> display = "inactive";
</xsl:text>
<xsl:text> state = "init";
@@ -717,7 +725,7 @@
<xsl:value-of select="@type"/>
</type>
<longdesc>
- <xsl:text>PathSlider -
+ <xsl:text>PathSlider -
</xsl:text>
</longdesc>
<shortdesc>
@@ -877,6 +885,62 @@
<xsl:text>Boolean variable</xsl:text>
</path>
</xsl:template>
+ <xsl:template match="widget[@type='XYGraph']" mode="widget_desc">
+ <type>
+ <xsl:value-of select="@type"/>
+ </type>
+ <longdesc>
+ <xsl:text>XYGraph draws a cartesian trend graph re-using styles given for axis,
+</xsl:text>
+ <xsl:text>grid/marks, legends and curves.
+</xsl:text>
+ <xsl:text>
+</xsl:text>
+ <xsl:text>Elements labeled "x_axis" and "y_axis" are svg:groups containg:
+</xsl:text>
+ <xsl:text> - "axis_label" svg:text gives style an alignment for axis labels.
+</xsl:text>
+ <xsl:text> - "interval_major_mark" and "interval_minor_mark" are svg elements to be
+</xsl:text>
+ <xsl:text> duplicated along axis line to form intervals marks.
+</xsl:text>
+ <xsl:text> - "axis_line" svg:path is the axis line. Paths must be intersect and their
+</xsl:text>
+ <xsl:text> bounding box is the chart wall.
+</xsl:text>
+ <xsl:text>
+</xsl:text>
+ <xsl:text>Elements labeled "curve_0", "curve_1", ... are paths whose styles are used
+</xsl:text>
+ <xsl:text>to draw curves corresponding to data from variables passed as HMI tree paths.
+</xsl:text>
+ <xsl:text>"curve_0" is mandatory. HMI variables outnumbering given curves are ignored.
+</xsl:text>
+ <xsl:text>
+</xsl:text>
+ </longdesc>
+ <shortdesc>
+ <xsl:text>Cartesian trend graph showing values of given variables over time</xsl:text>
+ </shortdesc>
+ <path name="value" count="1+" accepts="HMI_INT,HMI_REAL">
+ <xsl:text>value</xsl:text>
+ </path>
+ <arg name="size" accepts="int">
+ <xsl:text>buffer size</xsl:text>
+ </arg>
+ <arg name="xformat" count="optional" accepts="string">
+ <xsl:text>format string for X label</xsl:text>
+ </arg>
+ <arg name="yformat" count="optional" accepts="string">
+ <xsl:text>format string for Y label</xsl:text>
+ </arg>
+ <arg name="xmin" count="optional" accepts="int,real">
+ <xsl:text>minimum value foe X axis</xsl:text>
+ </arg>
+ <arg name="xmax" count="optional" accepts="int,real">
+ <xsl:text>maximum value for X axis</xsl:text>
+ </arg>
+ </xsl:template>
<xsl:template mode="document" match="@* | node()">
<xsl:copy>
<xsl:apply-templates mode="document" select="@* | node()"/>