aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx')
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
index ea38430ca..fe91254f8 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
@@ -56,6 +56,7 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
@observable _fullyRenderedDocs: Doc[] = [];
@observable _renderedDocCollectionPreview: Doc | undefined = undefined;
@observable _renderedDocCollection: Doc | undefined = undefined;
+ @observable _docsRendering: boolean = false;
@observable _userTemplates: {template: Template, doc: Doc}[] = []; //!!! used to keep track of all templates, should be refactored to work with actual templates and not docs
@observable _selectedTemplate: Template | undefined = undefined;
@@ -109,21 +110,20 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
this._dataViz = dataViz;
};
@action addUserTemplate = (template: Template) => {
- this._userTemplates.push({template: template, doc: template.mainField.renderedDoc()});
+ this._userTemplates.push({template: template, doc: template.getRenderedDoc()});
};
@action removeUserTemplate = (template: Template) => {
this._userTemplates = this._userTemplates.filter(info => info.template !== template);
}
@action updateTemplatePreview = (template: Template) => {
template.renderUpdates();
- const preview = {template: template, doc: template.mainField.renderedDoc()};
- const doc = template.mainField.renderedDoc();
- this._suggestedTemplatePreviews.map(t => { return t.template === preview.template ? {doc: doc, template: template} : t }); //prettier-ignore
- this._userTemplates = this._userTemplates.map(t => { return t.template === preview.template ? {doc: doc, template: template} : t }); //prettier-ignore
+ const preview = {template: template, doc: template.getRenderedDoc()};
+ this._suggestedTemplatePreviews.map(t => { return t.template === preview.template ? preview : t }); //prettier-ignore
+ this._userTemplates = this._userTemplates.map(t => { return t.template === preview.template ? preview : t }); //prettier-ignore
};
@action setSuggestedTemplates = (templates: Template[]) => {
this._suggestedTemplates = templates;
- this._suggestedTemplatePreviews = templates.map(template => {return {template: template, doc: template.mainField.renderedDoc()}}); //prettier-ignore
+ this._suggestedTemplatePreviews = templates.map(template => {return {template: template, doc: template.getRenderedDoc()}}); //prettier-ignore
};
@computed get docsToRender() {
@@ -682,6 +682,9 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
createDocsFromTemplate = async (template: Template) => {
const dv = this._dataViz;
if (!dv) return;
+
+ this._docsRendering = true;
+
const fields: string[] = Array.from(Object.keys(dv.records[0]));
const selectedRows = NumListCast(dv.layoutDoc.dataViz_selectedRows);
@@ -696,12 +699,9 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
const processContent = async (content: {[title: string]: string}) => {
const templateCopy = template.cloneBase();
-
- console.log('rows: ', content, '---------------- fields: ', fields)
fields.filter(title => title).forEach(title => {
const field = templateCopy.getFieldByTitle(title);
- console.log('field: ', field);
if (field === undefined) { return };
field.setContent(content[title]);
});
@@ -717,14 +717,15 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
await Promise.all(gptPromises);
- console.log(templateCopy);
- return templateCopy.mainField.renderedDoc();
+ return templateCopy.getRenderedDoc();
};
const promises = rowContents.map(content => processContent(content));
const renderedDocs = await Promise.all(promises);
+ this._docsRendering = false;
+
return renderedDocs;
}
@@ -831,7 +832,7 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
className="option-button left"
onPointerDown={e =>
this.setUpButtonClick(e, () => {
- this.setExpandedView(template.mainField.renderedDoc());
+ this.setExpandedView(template.getRenderedDoc());
})
}>
<FontAwesomeIcon icon="magnifying-glass" color="white" />
@@ -900,7 +901,7 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
className="option-button left"
onPointerDown={e =>
this.setUpButtonClick(e, () => {
- this.setExpandedView(template.mainField.renderedDoc());
+ this.setExpandedView(template.getRenderedDoc());
})
}>
<FontAwesomeIcon icon="magnifying-glass" color="white" />
@@ -1105,7 +1106,11 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
const doc: Doc | undefined = altLayout ? altLayout.template : this._fullyRenderedDocs[0]; //!!! might cause a slow down
if (!doc) return;
- return !this._renderedDocCollection? null : (
+ return this._docsRendering ? (
+ <div className="loading-spinner">
+ <ReactLoading type="spin" color={StrCast(Doc.UserDoc().userVariantColor)} height={30} width={30} />
+ </div>
+ ) : !this._renderedDocCollection? null : (
<div className="docCreatorMenu-layout-preview-window-wrapper" id={String(id) ?? undefined}>
<DocumentView
Document={this._renderedDocCollection}
@@ -1131,7 +1136,7 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
hideDecorations={true}
/>
</div>
- );
+ )
};
get optionsMenuContents() {
@@ -1213,7 +1218,7 @@ export class DocCreatorMenu extends ObservableReactComponent<FieldViewProps> {
clickEv.stopPropagation();
if (!this._selectedTemplate) return;
const layout: DataVizTemplateLayout = {
- template: this._selectedTemplate.mainField.renderedDoc(),
+ template: this._selectedTemplate.getRenderedDoc(),
layout: { type: this._layout.type, xMargin: this._layout.xMargin, yMargin: this._layout.yMargin, repeat: 0 },
columns: this.columnsCount,
rows: this.rowsCount,