aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts')
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts15
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;