aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
diff options
context:
space:
mode:
authorNathan-SR <144961007+Nathan-SR@users.noreply.github.com>2025-05-12 07:26:51 -0400
committerNathan-SR <144961007+Nathan-SR@users.noreply.github.com>2025-05-12 07:26:51 -0400
commit03d1cd8d220fbb27acb49a3ff9e791db9292b83c (patch)
tree54e6d0f434fa88f5d5cdd5c5c16ebeade739c2c4 /src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
parent259aaed6bdb77872c40d5c1ea63af741eb52fd4c (diff)
c
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, 27 insertions, 10 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
index b024a6e9b..bd5c50aa0 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
@@ -38,6 +38,7 @@ import { TemplateMenuAIUtils } from './Backend/TemplateMenuAIUtils'
import { TemplatePreviewGrid } from './Menu/TemplatePreviewGrid';
import { FireflyStructureOptions, TemplateEditingWindow } from './Menu/TemplateEditingWindow';
import { DocCreatorMenuButton } from './Menu/DocCreatorMenuButton';
+import { ConditionalsTextArea } from './Menu/ConditionalsTextarea';
export enum LayoutType {
FREEFORM = 'Freeform',
@@ -91,6 +92,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
@observable _userTemplates: Template[] = [];
@observable _selectedTemplate: Template | undefined = undefined;
@observable _currEditingTemplate: Template | undefined = undefined;
+ @observable _editedTemplateTrail: Template[] = [];
@observable _userCreatedFields: Col[] = [];
@observable _collapsedCols: String[] = []; //any columns whose options panels are hidden
@@ -589,8 +591,6 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
this.variations = [];
const mainCollection = this._dataViz?.DocumentView?.().containerViewPath?.().lastElement()?.ComponentView as CollectionFreeFormView;
- console.log('styleref: ', useStyleRef);
-
const clone: Doc = (await Doc.MakeClone(onDoc)).clone;
mainCollection.addDocument(clone);
clone.x = 10000;
@@ -618,15 +618,19 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
}
};
+ @action editLastTemplate = () => { if (this._editedTemplateTrail.length) this._currEditingTemplate = this._editedTemplateTrail.pop()}
+
@action setExpandedView = (template: Template | undefined) => {
- this._currEditingTemplate = template;
if (template) {
this._menuContent = 'templateEditing';
+ this._currEditingTemplate && this._editedTemplateTrail.push(this._currEditingTemplate);
} else {
this._menuContent = 'templates';
}
+ this._currEditingTemplate = template;
+
//Docs.Create.FreeformDocument([doc], { _height: NumListCast(doc._height)[0], _width: NumListCast(doc._width)[0], title: ''});
};
@@ -910,15 +914,26 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
);
}
+ private _newCondCache: Record<string, Conditional> = {};
+
+ getParams = (title: string, parameters?: Conditional): Conditional => {
+ if (parameters) return parameters;
+
+ if (!this._newCondCache[title]) {
+ this._newCondCache[title] = { field: title, operator: '=', condition: '', target: '', attribute: '', value: '' };
+ }
+ return this._newCondCache[title];
+ };
+
get dashboardContents() {
const contentFieldTitles = this.fieldsInfos.filter(field => field.type !== TemplateFieldType.DATA).map(field => field.title).concat('Template');
const conditionForm = (title: string, parameters?: Conditional, empty: boolean = false) => {
- const params: Conditional = parameters ?? this._currEditingConditional;
+ const params: Conditional = this.getParams(title, parameters);
return (
- <div className='form' id={String(Math.random() * 100000)}>
+ <div className='form'>
<div className='form-row'>
<div className='form-row-plain-text'>If</div>
<div className='form-row-plain-text'>{title}</div>
@@ -929,7 +944,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
<div className='operator-dropdown-option' onPointerDown={() => {params.operator = '<'}}>{'<'}</div>
<div className='operator-dropdown-option' onPointerDown={() => {params.operator = 'contains'}}>{'has'}</div>
</div>
- <textarea
+ <input
className="form-row-textarea"
onChange={e => runInAction(() => params.condition = e.target.value)}
placeholder='value'
@@ -957,9 +972,9 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
/>
</div>
{empty ?
- <DocCreatorMenuButton icon={'plus'} styles={'float-right'} function={() => this.templateManager.addFieldCondition(title, params)}/>
+ <DocCreatorMenuButton icon={'plus'} styles={'float-right border'} function={() => this.templateManager.addFieldCondition(title, params)}/>
:
- <DocCreatorMenuButton icon={'minus'} styles={'float-right'} function={() => this.templateManager.removeFieldCondition(title, params)}/>
+ <DocCreatorMenuButton icon={'minus'} styles={'float-right border'} function={() => this.templateManager.removeFieldCondition(title, params)}/>
}
</div>
)
@@ -1032,7 +1047,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
}
<div className="conditionals-section">
<span className="conditionals-title">Conditional Logic</span>
- {conditionForm(field.title, this._currEditingConditional, true)}
+ {conditionForm(field.title, undefined, true)}
{this.templateManager.conditionalFieldLogic[field.title]?.map(condition => conditionForm(condition.field, condition))}
</div>
</>
@@ -1053,6 +1068,8 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
@computed get editingView() { return <TemplateEditingWindow template={this._currEditingTemplate as Template} menu={this} /> }
+ private optionsButtonOpts: [IconProp, () => any] = ['gear', () => (this._menuContent = 'dashboard')];
+
get renderSelectedViewType() {
switch (this._menuContent) {
case 'templates':
@@ -1063,7 +1080,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
title={'Suggested Templates'}
menu={this}
loading={this._GPTLoading}
- optionsButtonOpts={['gear', () => (this._menuContent = 'dashboard')]}
+ optionsButtonOpts={this.optionsButtonOpts}
templates={this._suggestedTemplates}
/>
<div className="docCreatorMenu-GPT-options">