Skip to content

Commit 062b4ba

Browse files
ISSUE-139957: fixing components init and update
1 parent c74bef9 commit 062b4ba

File tree

7 files changed

+52
-47
lines changed

7 files changed

+52
-47
lines changed

scripts/dxcomponents/components-manager.js

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,4 @@ export class ComponentsManager {
4848
const ComponentClass = getComponentFromMap(type);
4949
return new ComponentClass(this, ...args);
5050
}
51-
52-
/**
53-
* Creates or updates a component.
54-
* @param component - component to update, or null/undefined to create a new one
55-
* @param type - type of component to create
56-
* @param args - arguments to pass to the component's constructor
57-
* @param init - if true, calls the component's init() method after creation
58-
* @returns created or updated component
59-
*/
60-
upsert(component, type, args = []) {
61-
if (component) {
62-
component.update(...args);
63-
return component;
64-
} else {
65-
return this.create(type, args);
66-
}
67-
}
6851
}

scripts/dxcomponents/components/containers/assignment.component.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,12 @@ export class AssignmentComponent extends BaseComponent {
127127
this.arSecondaryButtons$,
128128
this.onActionButtonClick,
129129
];
130-
this.assignmentCardComponent = this.componentsManager.upsert(
131-
this.assignmentCardComponent,
132-
"AssignmentCard",
133-
assignmentCardArgs
134-
);
135-
this.assignmentCardComponent.init();
130+
if (this.assignmentCardComponent) {
131+
this.assignmentCardComponent.update(...assignmentCardArgs);
132+
} else {
133+
this.assignmentCardComponent = this.componentsManager.create("AssignmentCard", assignmentCardArgs);
134+
this.assignmentCardComponent.init();
135+
}
136136
this.loading = this.newPConn.getLoadingStatus();
137137
this.sendPropsUpdate();
138138
}

scripts/dxcomponents/components/containers/root-container.component.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,12 @@ export class RootContainerComponent extends BaseComponent {
103103
options,
104104
};
105105
const viewContainerPConn = PCore.createPConnect(viewContConfig).getPConnect();
106-
this.#viewContainerComponent = this.componentsManager.upsert(
107-
this.#viewContainerComponent,
108-
viewContainerPConn.meta.type,
109-
[viewContainerPConn]
110-
);
111-
this.#viewContainerComponent.init();
106+
if (this.#viewContainerComponent) {
107+
this.#viewContainerComponent.update(viewContainerPConn)
108+
} else {
109+
this.#viewContainerComponent = this.componentsManager.create(viewContainerPConn.meta.type, [viewContainerPConn])
110+
this.#viewContainerComponent.init();
111+
}
112112
}
113113

114114
#configureModalContainer() {
@@ -123,12 +123,12 @@ export class RootContainerComponent extends BaseComponent {
123123
});
124124

125125
const modalViewContainerPConn = configObjModal.getPConnect();
126-
this.#modalViewContainerComponent = this.componentsManager.upsert(
127-
this.#modalViewContainerComponent,
128-
modalViewContainerPConn.meta.type,
129-
[modalViewContainerPConn]
130-
);
131-
this.#modalViewContainerComponent.init();
126+
if (this.#modalViewContainerComponent) {
127+
this.#modalViewContainerComponent.update(modalViewContainerPConn)
128+
} else {
129+
this.#modalViewContainerComponent = this.componentsManager.create(modalViewContainerPConn.meta.type, [modalViewContainerPConn])
130+
this.#modalViewContainerComponent.init();
131+
}
132132
if (this.compId !== "1") {
133133
console.error(TAG, "RootComponent id must be '1' to match root container on consumer side");
134134
return;

scripts/dxcomponents/components/containers/templates/field-group-template.component.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,14 @@ export class FieldGroupTemplateComponent extends BaseComponent {
9999
lookForChildInConfig,
100100
evaluateAllowRowAction(allowRowEdit, item)
101101
).getPConnect();
102-
const newComponent = this.componentsManager.upsert(oldComponent, newPConn.meta.type, [newPConn]);
103-
newComponent.init();
102+
let newComponent;
103+
if (oldComponent) {
104+
oldComponent.update(newPConn)
105+
newComponent = oldComponent;
106+
} else {
107+
newComponent = this.componentsManager.create(newPConn.meta.type, [newPConn]);
108+
newComponent.init();
109+
}
104110
updatedItems.push({
105111
id: index,
106112
name:

scripts/dxcomponents/components/containers/templates/simple-table-manual.component.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,14 @@ export class SimpleTableManualComponent extends BaseComponent {
244244
};
245245
const cellPConn = PCore.createPConnect(config).getPConnect();
246246
const oldComponent = editableRow?.cells?.[cellIndex]?.component;
247-
const newComponent = this.componentsManager.upsert(oldComponent, cellPConn.meta.type, [cellPConn]);
247+
let newComponent;
248+
if (oldComponent) {
249+
oldComponent.update(cellPConn)
250+
newComponent = oldComponent
251+
} else {
252+
newComponent = this.componentsManager.create(cellPConn.meta.type, [cellPConn])
253+
newComponent.init();
254+
}
248255
newEditableCells.push({ component: newComponent })
249256
}
250257
});

scripts/dxcomponents/components/containers/templates/simple-table.component.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,22 @@ export class SimpleTableComponent extends BaseComponent {
6969
}
7070
if (multiRecordDisplayAs === "fieldGroup") {
7171
const fieldGroupProps = { ...configProps, contextClass };
72-
this.childComponent = this.componentsManager.upsert(this.childComponent, "FieldGroupTemplate", [
73-
this.pConn,
74-
fieldGroupProps,
75-
]);
76-
this.childComponent.init();
72+
if (this.childComponent) {
73+
this.childComponent.update(this.pConn, fieldGroupProps)
74+
} else {
75+
this.childComponent = this.componentsManager.create("FieldGroupTemplate", [this.pConn, fieldGroupProps]);
76+
this.childComponent.init();
77+
}
7778
this.#sendPropsUpdate();
7879
} else if (fieldMetadata && fieldMetadata.type === 'Page List' && fieldMetadata.dataRetrievalType === 'refer') {
7980
console.warn(TAG, 'Displaying ListView in SimpleTable is not supported yet.');
8081
} else {
81-
this.childComponent = this.componentsManager.upsert(this.childComponent, "SimpleTableManual", [this.pConn]);
82-
this.childComponent.init();
82+
if (this.childComponent) {
83+
this.childComponent.update(this.pConn);
84+
} else {
85+
this.childComponent = this.componentsManager.create("SimpleTableManual", [this.pConn]);
86+
this.childComponent.init();
87+
}
8388
this.#sendPropsUpdate();
8489
}
8590
}

scripts/dxcomponents/components/containers/view.component.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,12 @@ export class ViewComponent extends ContainerBaseComponent {
116116
this.destroyChildren();
117117
}
118118

119-
this.childrenComponents[0] = this.componentsManager.upsert(this.childrenComponents[0], template, [this.pConn]);
120-
this.childrenComponents[0].init();
119+
if (this.childrenComponents[0]) {
120+
this.childrenComponents[0].update(this.pConn);
121+
} else {
122+
this.childrenComponents[0] = this.componentsManager.create(template, [this.pConn]);
123+
this.childrenComponents[0].init();
124+
}
121125
}
122126

123127
#evaluateVisibility(pConn, referenceContext) {

0 commit comments

Comments
 (0)