svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 3034 793ce2117258
parent 3031 440d74319a74
child 3038 92101729f7b7
--- a/svghmi/gen_index_xhtml.xslt	Fri Aug 21 13:22:54 2020 +0200
+++ b/svghmi/gen_index_xhtml.xslt	Fri Aug 21 14:29:03 2020 +0200
@@ -3337,7 +3337,7 @@
     <xsl:value-of select="path/@value"/>
     <xsl:text>", "</xsl:text>
     <xsl:value-of select="path/@type"/>
-    <xsl:text>", this, this.last_val,size);
+    <xsl:text>", this, this.last_val, size);
 </xsl:text>
     <xsl:text>    },
 </xsl:text>
@@ -3351,15 +3351,15 @@
   <xsl:template mode="widget_class" match="widget[@type='JsonTable']">
     <xsl:text>class JsonTableWidget extends Widget{
 </xsl:text>
+    <xsl:text>    cache = [];
+</xsl:text>
     <xsl:text>    do_http_request() {
 </xsl:text>
     <xsl:text>        const query = {
 </xsl:text>
-    <xsl:text>             offset: '42',
-</xsl:text>
-    <xsl:text>             filter: '*powerloss*',
-</xsl:text>
-    <xsl:text>             args: this.args
+    <xsl:text>            args: this.args,
+</xsl:text>
+    <xsl:text>            vars: this.cache
 </xsl:text>
     <xsl:text>        };
 </xsl:text>
@@ -3373,7 +3373,7 @@
 </xsl:text>
     <xsl:text>             headers: {'Content-Type': 'application/json'}
 </xsl:text>
-    <xsl:text>        }
+    <xsl:text>        };
 </xsl:text>
     <xsl:text>
 </xsl:text>
@@ -3387,7 +3387,11 @@
 </xsl:text>
     <xsl:text>    }
 </xsl:text>
-    <xsl:text>    dispatch(value) {
+    <xsl:text>    dispatch(value, oldval, index) {
+</xsl:text>
+    <xsl:text>        console.log("mhooo", index);
+</xsl:text>
+    <xsl:text>        this.cache[index] = value;
 </xsl:text>
     <xsl:text>        this.do_http_request();
 </xsl:text>
@@ -4017,11 +4021,23 @@
 </xsl:text>
     <xsl:text>     on_Enter_click() {
 </xsl:text>
-    <xsl:text>         end_modal.call(this);
-</xsl:text>
-    <xsl:text>         let callback_obj = this.result_callback_obj;
-</xsl:text>
-    <xsl:text>         callback_obj.edit_callback(this.editstr);
+    <xsl:text>         let coercedval = (typeof this.initial) == "number" ? Number(this.editstr) : this.editstr;
+</xsl:text>
+    <xsl:text>         if(isNaN(coercedval)){
+</xsl:text>
+    <xsl:text>             this.editstr = String(this.initial);
+</xsl:text>
+    <xsl:text>             this.update();
+</xsl:text>
+    <xsl:text>         } else { // revert to initial so it explicitely shows input was ignored
+</xsl:text>
+    <xsl:text>             let callback_obj = this.result_callback_obj;
+</xsl:text>
+    <xsl:text>             end_modal.call(this);
+</xsl:text>
+    <xsl:text>             callback_obj.edit_callback(coercedval);
+</xsl:text>
+    <xsl:text>         }
 </xsl:text>
     <xsl:text>     }
 </xsl:text>
@@ -4115,7 +4131,7 @@
 </xsl:text>
     <xsl:text>         show_modal.call(this,size);
 </xsl:text>
-    <xsl:text>         this.editstr = initial;
+    <xsl:text>         this.editstr = String(initial);
 </xsl:text>
     <xsl:text>         this.result_callback_obj = callback_obj;
 </xsl:text>
@@ -4125,6 +4141,10 @@
 </xsl:text>
     <xsl:text>         this.caps = false;
 </xsl:text>
+    <xsl:text>         this.initial = initial;
+</xsl:text>
+    <xsl:text>
+</xsl:text>
     <xsl:text>         this.update();
 </xsl:text>
     <xsl:text>     }