--- a/svghmi/gen_index_xhtml.xslt Thu Feb 13 09:41:43 2020 +0100
+++ b/svghmi/gen_index_xhtml.xslt Thu Feb 13 09:43:35 2020 +0100
@@ -386,6 +386,10 @@
+ <xsl:text> } catch(err) { + <xsl:text> console.log(err); @@ -434,9 +438,7 @@
<xsl:text> } catch(err) {
- <xsl:text> console.log("Widget initialization error : "+err.message);
+ <xsl:text> console.log(err); @@ -929,19 +931,25 @@
<xsl:for-each select="str:split($labels)">
<xsl:variable name="name" select="."/>
<xsl:variable name="elt_id" select="$hmi_element//*[@inkscape:label=$name][1]/@id"/>
- <xsl:if test="$mandatory='yes' and not($elt_id)">
- <xsl:message terminate="no">
- <xsl:value-of select="$widget_type"/>
- <xsl:text> widget must have a </xsl:text>
+ <xsl:when test="not($elt_id)"> + <xsl:if test="$mandatory='yes'"> + <xsl:message terminate="no"> + <xsl:value-of select="$widget_type"/> + <xsl:text> widget must have a </xsl:text> + <xsl:value-of select="$name"/> + <xsl:text> element</xsl:text> <xsl:value-of select="$name"/>
- <xsl:text> element</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>_elt: document.getElementById("</xsl:text>
- <xsl:value-of select="$elt_id"/>
+ <xsl:text>_elt: document.getElementById("</xsl:text> + <xsl:value-of select="$elt_id"/> <xsl:template mode="widget_defs" match="widget[@type='Display']">
@@ -1016,18 +1024,26 @@
<xsl:template mode="widget_defs" match="widget[@type='Input']">
<xsl:param name="hmi_element"/>
- <xsl:text>frequency: 5,
+ <xsl:variable name="value_elt"> + <xsl:call-template name="defs_by_labels"> + <xsl:with-param name="hmi_element" select="$hmi_element"/> + <xsl:with-param name="labels"> + <xsl:text>value</xsl:text> + <xsl:with-param name="mandatory" select="'no'"/> + <xsl:value-of select="$value_elt"/> + <xsl:if test="$value_elt"> + <xsl:text>frequency: 5, - <xsl:call-template name="defs_by_labels">
- <xsl:with-param name="hmi_element" select="$hmi_element"/>
- <xsl:with-param name="labels">
- <xsl:text>value</xsl:text>
<xsl:text>dispatch: function(value) {
- <xsl:text> this.value_elt.textContent = String(value);
+ <xsl:if test="$value_elt"> + <xsl:text> this.value_elt.textContent = String(value); <xsl:variable name="edit_elt_id" select="$hmi_element/*[@inkscape:label='edit'][1]/@id"/>
--- a/svghmi/gen_index_xhtml.ysl2 Thu Feb 13 09:41:43 2020 +0100
+++ b/svghmi/gen_index_xhtml.ysl2 Thu Feb 13 09:43:35 2020 +0100
@@ -8,6 +8,12 @@
with "labels"{text *ptr};
+in xsl decl optional_labels(*ptr, name="defs_by_labels") alias call-template { + with "hmi_element", "$hmi_element"; + with "labels"{text *ptr}; + with "mandatory","'no'"; xmlns:dc="http://purl.org/dc/elements/1.1/"
@@ -337,9 +343,18 @@
foreach "str:split($labels)" {
const "elt_id","$hmi_element//*[@inkscape:label=$name][1]/@id";
- if "$mandatory='yes' and not($elt_id)"
- warning > «$widget_type» widget must have a «$name» element
- | «$name»_elt: document.getElementById("«$elt_id»"),
+ if "$mandatory='yes'" { + // TODO FIXME error > «$widget_type» widget must have a «$name» element + warning > «$widget_type» widget must have a «$name» element + // otherwise produce nothing + | «$name»_elt: document.getElementById("«$elt_id»"), @@ -397,9 +412,14 @@
template "widget[@type='Input']", mode="widget_defs" {
+ optional_labels("value"); | dispatch: function(value) {
| this.value_elt.textContent = String(value);
const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id";
--- a/svghmi/svghmi.js Thu Feb 13 09:41:43 2020 +0100
+++ b/svghmi/svghmi.js Thu Feb 13 09:43:35 2020 +0100
@@ -14,6 +14,8 @@
throw new Error("Dunno how to dispatch to widget at index = " + index);
@@ -38,8 +40,7 @@
- console.log("Widget initialization error : "+err.message);