diff options
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx')
-rw-r--r-- | src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx | 78 |
1 files changed, 33 insertions, 45 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx index b0f8a522c..3c610b36a 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx @@ -1,13 +1,10 @@ -import { makeAutoObservable, reaction } from "mobx"; -import { Doc, DocListCast, FieldType } from "../../../../../fields/Doc"; -import { Docs } from "../../../../documents/Documents"; -import { Col } from "./DocCreatorMenu"; -import { DynamicField } from "./FieldTypes/DynamicField"; -import { Field, FieldSettings, FieldTree, ViewType } from "./FieldTypes/Field"; -import { TemplateLayouts } from "./TemplateBackend"; +import { makeAutoObservable } from 'mobx'; +import { Col } from './DocCreatorMenu'; +import { DynamicField } from './FieldTypes/DynamicField'; +import { Field, FieldSettings } from './FieldTypes/Field'; +import { TemplateLayouts } from './TemplateBackend'; export class Template { - mainField: DynamicField; private settings: FieldSettings; @@ -17,57 +14,56 @@ export class Template { this.mainField = this.setupMainField(templateInfo); } - get childFields(): Field[] { return this.mainField.getSubfields }; - get allFields(): Field[] { return this.mainField.getAllSubfields }; - get contentFields(): Field[] { return this.allFields.filter(field => field.isContentField) }; - get doc(){ return this.mainField.renderedDoc; }; - get title() { return this.mainField.getTitle() }; + get childFields(): Field[] { + return this.mainField.getSubfields; + } + get allFields(): Field[] { + return this.mainField.getAllSubfields; + } + get contentFields(): Field[] { + return this.allFields.filter(field => field.isContentField); + } + get doc() { + return this.mainField.renderedDoc; + } + get title() { + return this.mainField.getTitle(); + } cleanup = () => { //dispose each subfields disposers, etc. - } + }; cloneBase = async (): Promise<Template> => { - const makeCloneFieldTree = async (field: Field): Promise<Field> => { - const root: Field = await field.makeClone(); - field.getSubfields.forEach(async field => { - const clone: Field = await makeCloneFieldTree(field); - root.addField(clone); - }); - return root; - } - const clone: Template = new Template(TemplateLayouts.BasicSettings); - clone.mainField = await makeCloneFieldTree(this.mainField) as DynamicField; - console.log('last init') - clone.mainField.initializeDocument(); + clone.mainField = (await this.mainField.makeClone(undefined)) as unknown as DynamicField; clone.mainField.renderedDoc._width = this.mainField.renderedDoc._width; clone.mainField.renderedDoc._height = this.mainField.renderedDoc._height; return clone; - } + }; printFieldInfo = () => { this.allFields.forEach(field => { const doc = field.renderedDoc; console.log('title: ', field.getTitle(), ' width: ', doc.width); }); - } + }; getRenderedDoc = () => { return this.doc; - } + }; getFieldByID = (id: number): Field => { return this.allFields.filter(field => field.getID === id)[0]; - } + }; getFieldByTitle = (title: string) => { return this.allFields.filter(field => field.getTitle() === title)[0]; - } + }; setupMainField = (templateInfo: FieldSettings) => { - return new DynamicField(templateInfo, 1); - } + return new DynamicField().init(templateInfo, 1); + }; get descriptionSummary(): string { let summary: string = ''; @@ -85,18 +81,11 @@ export class Template { return summary; } - resetToBase = () => { - this.allFields.forEach(field => { - field.initializeDocument(); - }) - } - isValidTemplate = (cols: Col[]) => { const matches: number[][] = this.getMatches(cols); const maxMatches: number = this.maxMatches(matches); - console.log('title: ', this.mainField.getTitle(), ' matches: ', matches, ' max: ', maxMatches, ' num content fields: ', this.contentFields.length) return maxMatches === this.contentFields.length; - } + }; getMatches = (cols: Col[]): number[][] => { const numFields = this.contentFields.length; @@ -108,11 +97,11 @@ export class Template { .map(() => []); this.contentFields.forEach((field, i) => { - matches[i] = (field.matches(cols)); + matches[i] = field.matches(cols); }); return matches; - } + }; maxMatches = (matches: number[][]) => { if (matches.length === 0) return 0; @@ -147,5 +136,4 @@ export class Template { return count; }; - -}
\ No newline at end of file +} |