diff options
| author | anika-ahluwalia <anika.ahluwalia@gmail.com> | 2020-06-08 13:07:11 -0500 |
|---|---|---|
| committer | anika-ahluwalia <anika.ahluwalia@gmail.com> | 2020-06-08 13:07:11 -0500 |
| commit | c232bbfd28937c139ae18727310c91d9c6c2dbec (patch) | |
| tree | 0738f299b050edfa7f14d4015a8863d7b2294486 /src/client/util | |
| parent | b21aeae569c3ebcf2538918a13cf64b9d4c8bade (diff) | |
added function UI
Diffstat (limited to 'src/client/util')
| -rw-r--r-- | src/client/util/ScriptManager.ts | 25 | ||||
| -rw-r--r-- | src/client/util/Scripting.ts | 14 |
2 files changed, 35 insertions, 4 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 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; } |
