aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx36
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/DynamicField.ts1
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/StaticContentField.ts2
-rw-r--r--src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/TemplateField.ts7
4 files changed, 39 insertions, 7 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
index 3cf9baa2c..de345a335 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx
@@ -33,6 +33,7 @@ import { TemplateFieldSize, TemplateFieldType, TemplateLayouts } from './Templat
import { TemplateManager } from './TemplateManager';
import { DrawingFillHandler } from '../../../smartdraw/DrawingFillHandler';
import { CgPathIntersect } from 'react-icons/cg';
+import { StaticContentField } from './TemplateFieldTypes/StaticContentField';
export enum LayoutType {
FREEFORM = 'Freeform',
@@ -649,6 +650,17 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
const field = template.getFieldByID(Number(fieldID));
field.setContent(col.defaultContent ?? '', col.type === TemplateFieldType.VISUAL ? ViewType.IMG : ViewType.TEXT);
field.setTitle(col.title);
+ this._conditions.filter(c => c.field === field.getTitle()).forEach(conditional => {
+ if (field.getContent() === conditional.condition){
+ if (conditional.target === 'self'){
+ field.renderedDoc![conditional.attribute] = conditional.value;
+ (field.settings.opts as any)[conditional.attribute] = conditional.value;
+ } else if (conditional.target === 'template'){
+ template._mainField!.renderedDoc![conditional.attribute] = conditional.value;
+ (template._mainField!.settings.opts as any)[conditional.attribute] = conditional.value;
+ }
+ }
+ })
} else {
a[Number(fieldID)] = this.getColByTitle(colTitle);
}
@@ -676,7 +688,6 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
} else {
this._dataViz?.updateColDefaults();
- console.log('field infos are: ', this.fieldsInfos)
templates.push(...this.templateManager.getValidTemplates(this.fieldsInfos));
const assignments = await this.assignColsToFields(templates, this.fieldsInfos);
@@ -778,7 +789,23 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
.filter(title => title)
.forEach(title => {
const field = templateCopy.getFieldByTitle(title);
- if (field !== undefined) field.setContent(content[title], field.viewType);
+ if (field !== undefined) {
+ field.setContent(content[title], field.viewType);
+ console.log('content set')
+ this._conditions.filter(c => c.field === title).forEach(conditional => {
+ console.log('in conditional')
+ if (content[title] === conditional.condition){
+ if (conditional.target === 'self'){
+ field.renderedDoc![conditional.attribute] = conditional.value;
+ (field.settings.opts as any)[conditional.attribute] = conditional.value;
+ } else if (conditional.target === 'template'){
+ console.log('setting', conditional.attribute, 'to: ', conditional.value)
+ templateCopy._mainField!.renderedDoc![conditional.attribute] = conditional.value;
+ (templateCopy._mainField!.settings.opts as any)[conditional.attribute] = conditional.value;
+ }
+ }
+ })
+ }
});
const gptFunc = (type: TemplateFieldType) => (type === TemplateFieldType.VISUAL ? this.renderGPTImageCall : this.renderGPTTextCall);
@@ -1337,7 +1364,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
}
get dashboardContents() {
- const conditionForm = (title: String, parameters?: Conditional) => {
+ const conditionForm = (title: string, parameters?: Conditional) => {
const params: Conditional = parameters ?? this._currEditingConditional;
@@ -1358,7 +1385,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
placeholder='value'
defaultValue={params.condition}
/>
- <div className='form-row-plain-text'>Then</div>
+ <div className='form-row-plain-text'>then</div>
<div className="operator-options-dropdown">
<span className="operator-dropdown-current">{params.target ?? 'self'}</span>
<div className='operator-dropdown-option' onPointerDown={() => {params.target = 'self'}}>{'self'}</div>
@@ -1380,6 +1407,7 @@ export class DocCreatorMenu extends ObservableReactComponent<DocCreateMenuProps>
</div>
<div className='form-action-button' onPointerDown={e => this.setUpButtonClick(e, runInAction(() => () => {
if (this._currEditingConditional === params) {
+ params.field = title;
this._conditions.push(params);
this._currEditingConditional = {} as Conditional;
} else {
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/DynamicField.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/DynamicField.ts
index 6326a4a25..56db33ed5 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/DynamicField.ts
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/DynamicField.ts
@@ -92,6 +92,7 @@ export class DynamicField extends TemplateField {
this._subfields = settings.subfields?.map((fieldSettings, index) => TemplateField.CreateField(fieldSettings, index, this)) || [];
const renderedSubfields = this._subfields.filter(field => field.renderedDoc).map(field => field.renderedDoc!);
settings.opts.title = settings.title;
+ console.log('initializing dynamicfield with color: ', settings.opts.backgroundColor)
this._renderDoc = (() => { switch (settings.viewType) {
case ViewType.CAROUSEL3D: return Docs.Create.Carousel3DDocument(renderedSubfields, settings.opts);
case ViewType.FREEFORM:
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/StaticContentField.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/StaticContentField.ts
index 38b301c87..7049bb56f 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/StaticContentField.ts
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/StaticContentField.ts
@@ -27,12 +27,10 @@ export abstract class StaticContentField extends TemplateField {
export class ImageTemplateField extends StaticContentField {
setContent(url: string, type?: ViewType) {
- console.log('setting image content to ', url)
this.setDataContent(ViewType.IMG, 'data', new ImageField(url), url, type);
}
initRenderDoc(settings: FieldSettings) {
- console.log('initializing image field')
settings.opts.title = settings.title ?? '';
settings.opts._layout_fitWidth = false;
this._renderDoc = Docs.Create.ImageDocument('', settings.opts);
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/TemplateField.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/TemplateField.ts
index f7a91bbd8..ecb4f6f24 100644
--- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/TemplateField.ts
+++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/TemplateFieldTypes/TemplateField.ts
@@ -51,6 +51,10 @@ export abstract class TemplateField {
return this._settings?.viewType;
}
+ get settings(): FieldSettings {
+ return this._settings;
+ }
+
abstract get isContentField(): boolean;
abstract initRenderDoc(settings: FieldSettings): TemplateField;
abstract getContent(): string;
@@ -66,7 +70,8 @@ export abstract class TemplateField {
getTitle = () => this._title;
makeClone(parent?: TemplateField) {
- const cloned = TemplateField.CreateField(this._settings, this._id, parent, true); // create a value for this.Document/subfields that we want to ignore
+ const settings: FieldSettings = structuredClone(this._settings);
+ const cloned = TemplateField.CreateField(settings, this._id, parent, true); // create a value for this.Document/subfields that we want to ignore
this._renderDoc && Doc.MakeClone(this._renderDoc).then(({ clone }) => (cloned._renderDoc = clone));
cloned._title = this._title;
cloned._dimensions = this._dimensions;