diff options
| author | bobzel <zzzman@gmail.com> | 2025-03-16 19:02:56 -0400 |
|---|---|---|
| committer | bobzel <zzzman@gmail.com> | 2025-03-16 19:02:56 -0400 |
| commit | df708c90d8356934d2e3d9123129c761d328c1fe (patch) | |
| tree | 98b0588710ac8ca00c303960da0851614aacf597 /src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx | |
| parent | 7d9fae09e8906e5636f6ea695ad560797b08d023 (diff) | |
| parent | f4042257be7359734a0dd35cedbf03fe4aa14cf1 (diff) | |
Merge branch 'DocCreatorMenu-work' of https://github.com/brown-dash/Dash-Web into DocCreatorMenu-work
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx')
| -rw-r--r-- | src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx | 81 |
1 files changed, 37 insertions, 44 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx index e8e9dca4f..3c610b36a 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx @@ -1,17 +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, ViewType } from "./FieldTypes/Field"; -import { } from "./FieldTypes/FieldUtils"; -import { observer } from "mobx-react"; -import { IDisposer } from "mobx-utils"; -import { Width } from "../../../../../fields/DocSymbols"; +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; @@ -21,49 +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 = () => { - const clone: Template = new Template(this.settings); - this.mainField.applyAttributes(clone.mainField); - clone.allFields.filter(field => field !== clone.mainField).forEach(field => { - const matchingField: Field = this.allFields.filter(f => f.getID === field.getID)[0]; - matchingField.applyAttributes(field); - }) - clone.mainField.initRenderedDoc(); + cloneBase = async (): Promise<Template> => { + const clone: Template = new Template(TemplateLayouts.BasicSettings); + 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 = ''; @@ -81,17 +81,11 @@ export class Template { return summary; } - resetToBase = () => { - this.allFields.forEach(field => { - field.initRenderedDoc(); - }) - } - isValidTemplate = (cols: Col[]) => { const matches: number[][] = this.getMatches(cols); const maxMatches: number = this.maxMatches(matches); return maxMatches === this.contentFields.length; - } + }; getMatches = (cols: Col[]): number[][] => { const numFields = this.contentFields.length; @@ -103,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; @@ -142,5 +136,4 @@ export class Template { return count; }; - -}
\ No newline at end of file +} |
