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. svghmi
authorEdouard Tisserant <edouard.tisserant@gmail.com>
Sun, 21 Feb 2021 21:38:44 +0100
branchsvghmi
changeset 3155 99ce78ddd353
parent 3154 a8c81a080588
child 3156 76c0c0a524c9
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.
svghmi/gen_index_xhtml.xslt
svghmi/widget_input.ysl2
--- a/svghmi/gen_index_xhtml.xslt	Fri Feb 19 10:04:36 2021 +0100
+++ b/svghmi/gen_index_xhtml.xslt	Sun Feb 21 21:38:44 2021 +0100
@@ -4452,16 +4452,12 @@
     </xsl:if>
     <xsl:text>    dispatch: function(value) {
 </xsl:text>
-    <xsl:if test="$have_edit">
-      <xsl:text>        this.last_val = value;
-</xsl:text>
-    </xsl:if>
-    <xsl:if test="$have_value">
+    <xsl:if test="$have_value or $have_edit">
       <xsl:choose>
         <xsl:when test="count(arg) = 1">
           <xsl:text>        this.last_display = vsprintf("</xsl:text>
           <xsl:value-of select="arg[1]/@value"/>
-          <xsl:text>", value);
+          <xsl:text>", [value]);
 </xsl:text>
         </xsl:when>
         <xsl:otherwise>
@@ -4469,6 +4465,8 @@
 </xsl:text>
         </xsl:otherwise>
       </xsl:choose>
+    </xsl:if>
+    <xsl:if test="$have_value">
       <xsl:text>        this.request_animate();
 </xsl:text>
     </xsl:if>
@@ -4489,7 +4487,7 @@
       <xsl:value-of select="path/@value"/>
       <xsl:text>", "</xsl:text>
       <xsl:value-of select="path/@type"/>
-      <xsl:text>", this, this.last_val);
+      <xsl:text>", this, this.last_display);
 </xsl:text>
       <xsl:if test="$have_value">
         <xsl:text>        this.value_elt.style.pointerEvents = "none";
--- a/svghmi/widget_input.ysl2	Fri Feb 19 10:04:36 2021 +0100
+++ b/svghmi/widget_input.ysl2	Sun Feb 21 21:38:44 2021 +0100
@@ -41,18 +41,18 @@
 
     |     dispatch: function(value) {
 
-    if "$have_edit"
-    |         this.last_val = value;
 
-    if "$have_value" {
+    if "$have_value or $have_edit" {
         choose{
             when "count(arg) = 1" {
-    |         this.last_display = vsprintf("«arg[1]/@value»", value);
+    |         this.last_display = vsprintf("«arg[1]/@value»", [value]);
             }
             otherwise {
     |         this.last_display = value;
             }
         }
+    }
+    if "$have_value" {
     |         this.request_animate();
     }
     |     },
@@ -66,7 +66,7 @@
     |     init: function() {
 
     if "$have_edit" {
-    |         this.edit_elt.onclick = () => edit_value("«path/@value»", "«path/@type»", this, this.last_val);
+    |         this.edit_elt.onclick = () => edit_value("«path/@value»", "«path/@type»", this, this.last_display);
         if "$have_value" {
     |         this.value_elt.style.pointerEvents = "none";
         }