aboutsummaryrefslogtreecommitdiff
path: root/src/fields/ScriptField.ts
diff options
context:
space:
mode:
authorStanley Yip <stanley_yip@brown.edu>2020-05-23 22:27:06 -0700
committerStanley Yip <stanley_yip@brown.edu>2020-05-23 22:27:06 -0700
commit577e93f075e44277254f096ae8bf769a239ebd33 (patch)
tree3b4562befa8124fb5b4d6294e3a94529a27fe30c /src/fields/ScriptField.ts
parent1113da5f2db22bd2b2b457b1f5b183d7f1f2e68d (diff)
parent19ababdb6098ac36358c86e43ad63ab3066b4663 (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
Diffstat (limited to 'src/fields/ScriptField.ts')
-rw-r--r--src/fields/ScriptField.ts17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/fields/ScriptField.ts b/src/fields/ScriptField.ts
index 503c60790..5192af407 100644
--- a/src/fields/ScriptField.ts
+++ b/src/fields/ScriptField.ts
@@ -65,14 +65,14 @@ export class ScriptField extends ObjectField {
@serializable(autoObject())
private captures?: ProxyField<Doc>;
- constructor(script: CompiledScript, setterscript?: CompileResult) {
+ constructor(script: CompiledScript, setterscript?: CompiledScript) {
super();
if (script?.options.capturedVariables) {
const doc = Doc.assign(new Doc, script.options.capturedVariables);
this.captures = new ProxyField(doc);
}
- this.setterscript = setterscript?.compiled ? setterscript : undefined;
+ this.setterscript = setterscript;
this.script = script;
}
@@ -98,10 +98,10 @@ export class ScriptField extends ObjectField {
// }
[Copy](): ObjectField {
- return new ScriptField(this.script);
+ return new ScriptField(this.script, this.setterscript);
}
toString() {
- return `${this.script.originalScript}`;
+ return `${this.script.originalScript} + ${this.setterscript?.originalScript}`;
}
[ToScriptString]() {
@@ -141,22 +141,21 @@ export class ComputedField extends ScriptField {
[Copy](): ObjectField {
- return new ComputedField(this.script);
+ return new ComputedField(this.script, this.setterscript);
}
public static MakeScript(script: string, params: object = {}) {
const compiled = ScriptField.CompileScript(script, params, false);
return compiled.compiled ? new ComputedField(compiled) : undefined;
}
- public static MakeFunction(script: string, params: object = {}, capturedVariables?: { [name: string]: Field }, setterScript?: string) {
+ public static MakeFunction(script: string, params: object = {}, capturedVariables?: { [name: string]: Field }) {
const compiled = ScriptField.CompileScript(script, params, true, capturedVariables);
- const setCompiled = setterScript ? ScriptField.CompileScript(setterScript, params, true, capturedVariables) : undefined;
- return compiled.compiled ? new ComputedField(compiled, setCompiled?.compiled ? setCompiled : undefined) : undefined;
+ return compiled.compiled ? new ComputedField(compiled) : undefined;
}
public static MakeInterpolated(fieldKey: string, interpolatorKey: string) {
const getField = ScriptField.CompileScript(`getIndexVal(self['${fieldKey}-indexed'], self.${interpolatorKey})`, {}, true, {});
const setField = ScriptField.CompileScript(`(self['${fieldKey}-indexed'])[self.${interpolatorKey}] = value`, { value: "any" }, true, {});
- return getField.compiled ? new ComputedField(getField, setField?.compiled ? setField : undefined) : undefined;
+ return getField.compiled && setField.compiled ? new ComputedField(getField, setField) : undefined;
}
}