aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/ScriptManager.ts
diff options
context:
space:
mode:
authoranika-ahluwalia <anika.ahluwalia@gmail.com>2020-06-08 13:07:11 -0500
committeranika-ahluwalia <anika.ahluwalia@gmail.com>2020-06-08 13:07:11 -0500
commitc232bbfd28937c139ae18727310c91d9c6c2dbec (patch)
tree0738f299b050edfa7f14d4015a8863d7b2294486 /src/client/util/ScriptManager.ts
parentb21aeae569c3ebcf2538918a13cf64b9d4c8bade (diff)
added function UI
Diffstat (limited to 'src/client/util/ScriptManager.ts')
-rw-r--r--src/client/util/ScriptManager.ts25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/client/util/ScriptManager.ts b/src/client/util/ScriptManager.ts
index 5bddb44ca..c87fdf5fd 100644
--- a/src/client/util/ScriptManager.ts
+++ b/src/client/util/ScriptManager.ts
@@ -2,7 +2,8 @@ import { Doc, DocListCast } from "../../fields/Doc";
import { List } from "../../fields/List";
import { Docs } from "../documents/Documents";
import { Scripting, ScriptParam } from "./Scripting";
-import { StrCast } from "../../fields/Types";
+import { StrCast, Cast } from "../../fields/Types";
+import { listSpec } from "../../fields/Schema";
export class ScriptManager {
@@ -38,6 +39,10 @@ export class ScriptManager {
}
public deleteScript(scriptDoc: Doc): boolean {
+
+ if (scriptDoc.funcName) {
+ Scripting.removeGlobal(StrCast(scriptDoc.funcName));
+ }
const scriptList = ScriptManager.Instance.getAllScripts();
const index = ScriptManager.Instance.getAllScripts().indexOf(scriptDoc);
if (index > -1) {
@@ -55,9 +60,23 @@ const scriptList = ScriptManager.Instance.getAllScripts();
scriptList.forEach((scriptDoc: Doc) => {
- const p = scriptDoc.compileParams?.reduce((o: ScriptParam, p: string) => { o[p] = "any"; return o; }, {} as ScriptParam);
+ const params = Cast(scriptDoc.compileParams, listSpec("string"), []);
+ const p = params.reduce((o: ScriptParam, p: string) => { o[p] = "any"; return o; }, {} as ScriptParam);
const f = new Function(...Array.from(Object.keys(p)), StrCast(scriptDoc.rawScript));
- Scripting.addGlobal(f, StrCast(scriptDoc.description), StrCast(p), StrCast(scriptDoc.name));
+ let parameters = "(";
+ params.forEach((element: string, i: number) => {
+ if (i === params.length - 1) {
+ parameters = parameters + element + ")";
+ } else {
+ parameters = parameters + element + ", ";
+ }
+ });
+
+ if (parameters === "(") {
+ Scripting.addGlobal(f, StrCast(scriptDoc.description), StrCast(scriptDoc.funcName));
+ } else {
+ Scripting.addGlobal(f, StrCast(scriptDoc.description), parameters, StrCast(scriptDoc.funcName));
+ }
}); \ No newline at end of file