diff options
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts')
| -rw-r--r-- | src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts index 1a4384bc1..2bf9f8de5 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts @@ -8,16 +8,15 @@ import { Conditional } from './Backend/TemplateManager'; export class Template { _mainField: DynamicField; - private conditionalLogic: Record<string, Conditional[]>; + private conditionalLogic: Record<string, Conditional[]> = {}; /** * A Template can be created from a description of its fields (FieldSettings) or from a DynamicField * @param definition definition of template as settings or DynamicField */ - constructor(definition: FieldSettings | DynamicField, conditionalLogic: Record<string, Conditional[]>) { + constructor(definition: FieldSettings | DynamicField) { makeAutoObservable(this); this._mainField = definition instanceof DynamicField ? definition : this.setupMainField(definition); - this.conditionalLogic = conditionalLogic; } get childFields(): TemplateField[] { @@ -56,7 +55,7 @@ export class Template { //dispose each subfields disposers, etc. }; - cloneBase = () => new Template(this._mainField?.makeClone(undefined) ?? TemplateLayouts.BasicSettings, this.conditionalLogic); + cloneBase = () => new Template(this._mainField?.makeClone(undefined) ?? TemplateLayouts.BasicSettings); getRenderedDoc = () => this.doc; @@ -103,6 +102,14 @@ export class Template { fields.forEach(this.applyConditionalLogicToField); } + addConditionalStatement = (field: string, statement: Conditional) => { + !this.conditionalLogic[field] ? this.conditionalLogic[field] = [statement] : this.conditionalLogic[field].push(statement); + } + + removeConditionalStatement = (field: string, statement: Conditional) => { + this.conditionalLogic[field] = this.conditionalLogic[field]?.filter(cond => cond !== statement); + } + getMatches = (cols: Col[]): number[][] => { const numFields = this.contentFields.length; |
