From 8e34ea9a165f200dcedc3710dba2e10655ecdfb9 Mon Sep 17 00:00:00 2001 From: "Jason.Chuah" Date: Mon, 3 Jul 2023 18:47:16 +0800 Subject: [PATCH] issue#121: remove `eval` func --- src/js/brutusin-json-forms.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/js/brutusin-json-forms.js b/src/js/brutusin-json-forms.js index d0d28ce..19ca27d 100644 --- a/src/js/brutusin-json-forms.js +++ b/src/js/brutusin-json-forms.js @@ -1270,13 +1270,24 @@ if (typeof brutusin === "undefined") { } function getInitialValue(id) { - var ret; - try { - eval("ret = initialValue" + id.substring(1)); - } catch (e) { - ret = null; + var fields = id.substring(2).split('.'); + var initialValueClone = initialValue; + for(var i = 0; i < fields.length; i++) { + var field = fields[i]; + if (field != "") { + if (field.substring(field.length - 1) === "]") { + //Get the index from the array in the field + var arrayIndex = parseInt(field.substring(field.lastIndexOf("[") + 1, field.length - 1)); + //Substring off the square bracket from the field + field = field.substring(0, field.lastIndexOf("[")); + initialValueClone = initialValueClone[field][arrayIndex]; + } else { + initialValueClone = initialValueClone[field]; + } + } } - return ret; + + return initialValueClone; } function getValue(schema, input) {