From c232bbfd28937c139ae18727310c91d9c6c2dbec Mon Sep 17 00:00:00 2001 From: anika-ahluwalia Date: Mon, 8 Jun 2020 13:07:11 -0500 Subject: added function UI --- src/client/util/ScriptManager.ts | 25 ++++++++++++++++++++++--- src/client/util/Scripting.ts | 14 +++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) (limited to 'src/client/util') 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 diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts index 5619b22b0..16012eb5a 100644 --- a/src/client/util/Scripting.ts +++ b/src/client/util/Scripting.ts @@ -65,7 +65,11 @@ export namespace Scripting { obj = [nameOrGlobal]; obj.push(global); if (params) { - obj.push(params); + if (params.indexOf("(") > 0) { + obj.push(params); + } else { + n = params; + } } if (name) { n = name; @@ -93,6 +97,14 @@ export namespace Scripting { scriptingGlobals = globals; } + export function removeGlobal(name: string) { + if (_scriptingGlobals.hasKey(name)) { + delete _scriptingGlobals.container[name]; + return true; + } + return false; + } + export function resetScriptingGlobals() { scriptingGlobals = _scriptingGlobals; } -- cgit v1.2.3-70-g09d2