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.ts62
1 files changed, 32 insertions, 30 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts
index b13ec46f0..cf6e145cb 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.ts
@@ -5,52 +5,33 @@ import { DynamicField } from './TemplateFieldTypes/DynamicField';
import { FieldSettings, TemplateField } from './TemplateFieldTypes/TemplateField';
export class Template {
- mainField: DynamicField;
- private settings: FieldSettings;
+ _mainField: DynamicField | undefined;
- constructor(templateInfo: FieldSettings, mainField?: DynamicField) {
+ /**
+ * 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) {
makeAutoObservable(this);
- this.settings = templateInfo;
- this.mainField = mainField ?? this.setupMainField(templateInfo);
+ this._mainField = definition instanceof DynamicField ? definition : this.setupMainField(definition);
}
get childFields(): TemplateField[] {
- return this.mainField.getSubfields;
+ return this._mainField?.getSubfields ?? [];
}
get allFields(): TemplateField[] {
- return this.mainField.getAllSubfields;
+ return this._mainField?.getAllSubfields ?? [];
}
get contentFields(): TemplateField[] {
return this.allFields.filter(field => field.isContentField);
}
get doc() {
- return this.mainField.renderedDoc;
+ return this._mainField?.renderedDoc;
}
get title() {
- return this.mainField.getTitle();
+ return this._mainField?.getTitle();
}
- cleanup = () => {
- //dispose each subfields disposers, etc.
- };
-
- cloneBase = () => new Template(TemplateLayouts.BasicSettings, this.mainField.makeClone(undefined));
-
- printFieldInfo = () => {
- this.allFields.forEach(field => {
- const doc = field.renderedDoc;
- console.log('title: ', field.getTitle(), ' width: ', doc?.width);
- });
- };
-
- getRenderedDoc = () => this.doc;
-
- getFieldByID = (id: number): TemplateField => this.allFields.filter(field => field.getID === id)[0];
-
- getFieldByTitle = (title: string) => this.allFields.filter(field => field.getTitle() === title)[0];
-
- setupMainField = (templateInfo: FieldSettings) => DynamicField.Create(templateInfo, 1);
-
get descriptionSummary(): string {
let summary: string = '';
this.contentFields.forEach(field => {
@@ -67,6 +48,27 @@ export class Template {
return summary;
}
+ cleanup = () => {
+ //dispose each subfields disposers, etc.
+ };
+
+ cloneBase = () => new Template(this._mainField?.makeClone(undefined) ?? TemplateLayouts.BasicSettings);
+
+ getRenderedDoc = () => this.doc;
+
+ getFieldByID = (id: number): TemplateField => this.allFields.filter(field => field.getID === id)[0];
+
+ getFieldByTitle = (title: string) => this.allFields.filter(field => field.getTitle() === title)[0];
+
+ setupMainField = (templateInfo: FieldSettings) => TemplateField.CreateField(templateInfo, 1, undefined) as DynamicField;
+
+ printFieldInfo = () => {
+ this.allFields.forEach(field => {
+ const doc = field.renderedDoc;
+ console.log('title: ', field.getTitle(), ' width: ', doc?.width);
+ });
+ };
+
isValidTemplate = (cols: Col[]) => {
const maxMatches = this.maxMatches(this.getMatches(cols));
return maxMatches === this.contentFields.length;