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