aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2025-03-16 19:02:56 -0400
committerbobzel <zzzman@gmail.com>2025-03-16 19:02:56 -0400
commitdf708c90d8356934d2e3d9123129c761d328c1fe (patch)
tree98b0588710ac8ca00c303960da0851614aacf597 /src/client/views/nodes/DataVizBox/DocCreatorMenu/Template.tsx
parent7d9fae09e8906e5636f6ea695ad560797b08d023 (diff)
parentf4042257be7359734a0dd35cedbf03fe4aa14cf1 (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.tsx81
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
+}