svghmi/svghmi.js
branchsvghmi
changeset 2970 4a9b0df0602a
parent 2960 5ad82541b46e
child 3000 a9a45977bac0
--- a/svghmi/svghmi.js	Thu May 14 17:49:20 2020 +0200
+++ b/svghmi/svghmi.js	Thu May 21 11:29:45 2020 +0200
@@ -247,25 +247,44 @@
     return new_val;
 }
 
+quotes = {"'":null, '"':null};
+
 function change_hmi_value(index, opstr) {
     let op = opstr[0];
-    let given_val = opstr.slice(1);
-    let old_val = cache[index]
+    let given_val;
+    if(opstr.length < 2) 
+        return undefined; // TODO raise
+    if(opstr[1] in quotes){
+        if(opstr.length < 3) 
+            return undefined; // TODO raise
+        if(opstr[opstr.length-1] == opstr[1]){
+            given_val = opstr.slice(2,opstr.length-1);
+        }
+    } else {
+        given_val = Number(opstr.slice(1));
+    }
+    let old_val = cache[index];
     let new_val;
     switch(op){
       case "=":
-        eval("new_val"+opstr);
+        new_val = given_val;
         break;
       case "+":
+        new_val = old_val + given_val;
+        break;
       case "-":
+        new_val = old_val - given_val;
+        break;
       case "*":
+        new_val = old_val * given_val;
+        break;
       case "/":
-        if(old_val != undefined)
-            new_val = eval("old_val"+opstr);
+        new_val = old_val / given_val;
         break;
     }
     if(new_val != undefined && old_val != new_val)
         send_hmi_value(index, new_val);
+    // TODO else raise
     return new_val;
 }