--- 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;
}