--- a/svghmi/gen_index_xhtml.xslt Thu Nov 28 14:46:50 2024 +0100
+++ b/svghmi/gen_index_xhtml.xslt Mon Dec 02 11:33:19 2024 +0100
@@ -4816,6 +4816,76 @@
<xsl:text>}
</xsl:text>
</xsl:template>
+ <xsl:template match="widget[@type='Image']" mode="widget_desc">
+ <type>
+ <xsl:value-of select="@type"/>
+ </type>
+ <longdesc>
+ <xsl:text>If Image widget is a svg:image element, then href content is replaced by
+</xsl:text>
+ <xsl:text>value of given variable.
+</xsl:text>
+ </longdesc>
+ <shortdesc>
+ <xsl:text>Image display</xsl:text>
+ </shortdesc>
+ </xsl:template>
+ <xsl:template match="widget[@type='Image']" mode="widget_class">
+ <xsl:text>class </xsl:text>
+ <xsl:text>ImageWidget</xsl:text>
+ <xsl:text> extends Widget{
+</xsl:text>
+ <xsl:text> frequency = 5;
+</xsl:text>
+ <xsl:text> dispatch(value, oldval, index) {
+</xsl:text>
+ <xsl:text> if (index == 0) {
+</xsl:text>
+ <xsl:text> this.given_url = value;
+</xsl:text>
+ <xsl:text> this.ready = true;
+</xsl:text>
+ <xsl:text> this.request_animate();
+</xsl:text>
+ <xsl:text> }
+</xsl:text>
+ <xsl:text> }
+</xsl:text>
+ <xsl:text>}
+</xsl:text>
+ </xsl:template>
+ <xsl:template match="widget[@type='Image']" mode="widget_defs">
+ <xsl:param name="hmi_element"/>
+ <xsl:variable name="disability">
+ <xsl:call-template name="defs_by_labels">
+ <xsl:with-param name="hmi_element" select="$hmi_element"/>
+ <xsl:with-param name="labels">
+ <xsl:text>/disabled</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="mandatory" select="'no'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$disability"/>
+ <xsl:variable name="has_disability" select="string-length($disability)>0"/>
+ <xsl:text> given_url: "",
+</xsl:text>
+ <xsl:text> ready: false,
+</xsl:text>
+ <xsl:text> animate: function(){
+</xsl:text>
+ <xsl:text> this.element.setAttribute('href', this.given_url);
+</xsl:text>
+ <xsl:text> },
+</xsl:text>
+ <xsl:text>
+</xsl:text>
+ <xsl:text> init: function() {
+</xsl:text>
+ <xsl:text> this.animate();
+</xsl:text>
+ <xsl:text> },
+</xsl:text>
+ </xsl:template>
<xsl:template match="widget[@type='Input']" mode="widget_desc">
<type>
<xsl:value-of select="@type"/>
@@ -5042,7 +5112,7 @@
</xsl:text>
<xsl:text>
</xsl:text>
- <xsl:text>Documentation to be written. see svghmi exemple.
+ <xsl:text>Documentation to be written. see svghmi example.
</xsl:text>
</longdesc>
<shortdesc>
@@ -5247,7 +5317,7 @@
<xsl:variable name="name" select="substring-before($suffix,'=')"/>
<xsl:if test="$expr/@name[. != $name]">
<xsl:message terminate="yes">
- <xsl:text>JsonTable : missplaced '=' or inconsistent names in Json data expressions.</xsl:text>
+ <xsl:text>JsonTable : misplaced '=' or inconsistent names in Json data expressions.</xsl:text>
</xsl:message>
</xsl:if>
<xsl:attribute name="name">
@@ -5320,7 +5390,7 @@
<xsl:variable name="content_expr" select="$expressions/expression[2]/@content"/>
<xsl:if test="string-length($content_expr) = 0 or $expressions/expression[2]/@name != 'textContent'">
<xsl:message terminate="yes">
- <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>
+ <xsl:text>Clones (svg:use) in JsonTable Widget pointing to a HMI:TextStyleList widget or item must have a "textContent=.someVal" assignment following value expression in label.</xsl:text>
</xsl:message>
</xsl:if>
<xsl:text> {
@@ -5352,6 +5422,16 @@
</xsl:otherwise>
</xsl:choose>
</xsl:template>
+ <xsl:template mode="json_table_elt_render" match="svg:image">
+ <xsl:param name="expressions"/>
+ <xsl:variable name="value_expr" select="$expressions/expression[1]/@content"/>
+ <xsl:text> id("</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>").setAttribute('href', String(</xsl:text>
+ <xsl:value-of select="$value_expr"/>
+ <xsl:text>));
+</xsl:text>
+ </xsl:template>
<func:function name="func:filter_non_widget_label">
<xsl:param name="elt"/>
<xsl:param name="widget_elts"/>
@@ -10142,8 +10222,6 @@
</xsl:text>
<xsl:text> let widget = hmi_widgets[id];
</xsl:text>
- <xsl:text> if(widget.curr_value != undefined) return;
-</xsl:text>
<xsl:text> widget.do_init();
</xsl:text>
<xsl:text> });