Skip to content

Commit d84dab3

Browse files
author
JelteMX
committed
Bugfix 2: tree structure issues when loading a whole tree and subscription is fired
1 parent 6a5a051 commit d84dab3

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/MxTreeTable.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ class MxTreeTable extends Component<MxTreeTableContainerProps> {
133133
validColumns: this.columnPropsValid,
134134
selectFirstOnSingle: this.props.selectSelectFirstOnSingle && this.props.selectMode === "single",
135135
columns,
136+
loadScenario: this.props.loadScenario,
136137
convertMxObjectToRow: this.convertMxObjectToRow,
137138
childLoader: this.loadChildData,
138139
resetColumns: this.resetColumns,
@@ -364,6 +365,7 @@ class MxTreeTable extends Component<MxTreeTableContainerProps> {
364365
level?: number
365366
): Promise<void> {
366367
this.debug("handleData", objects.length, parentKey, level);
368+
// this.debug("handleData objects", objects);
367369

368370
try {
369371
this.store.setRowObjects(objects, level, parentKey);

src/store/index.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export interface NodeStoreConstructorOptions {
5151
selectFirstOnSingle: boolean;
5252
validationMessages: ValidationMessage[];
5353
calculateInitialParents: boolean;
54+
loadScenario: "all" | "partial";
5455
expandFirstLevel: boolean;
5556
resetState: boolean;
5657
rowObjectMxProperties: RowObjectMxProperties;
@@ -94,6 +95,7 @@ export class NodeStore {
9495
private onSelect: (ids?: string[]) => void;
9596

9697
private selectionMode: SelectionMode;
98+
private loadScenario: "all" | "partial";
9799
private dataResetOnContextChange: boolean;
98100
private needToCalculateInitialParents: boolean;
99101
private needToRestoreStateOnContextChange: boolean;
@@ -111,6 +113,7 @@ export class NodeStore {
111113
validColumns,
112114
selectFirstOnSingle,
113115
calculateInitialParents,
116+
loadScenario,
114117
childLoader,
115118
convertMxObjectToRow,
116119
rowObjectMxProperties,
@@ -133,6 +136,7 @@ export class NodeStore {
133136
this.selectFirstOnSingle = selectFirstOnSingle;
134137
this.needToRestoreSelectFirst = selectFirstOnSingle;
135138
this.calculateInitialParents = calculateInitialParents;
139+
this.loadScenario = loadScenario;
136140
this.needToCalculateInitialParents = calculateInitialParents;
137141
this.validationMessages = validationMessages;
138142
this.rowObjectMxProperties = rowObjectMxProperties;
@@ -219,7 +223,7 @@ export class NodeStore {
219223

220224
@action
221225
setRowObjects(mxObjects: mendix.lib.MxObject[], level?: number, parent?: string | null): void {
222-
this.debug("store: setRowObjects", mxObjects.length, level, this.resetState);
226+
this.debug("store: setRowObjects", mxObjects.length, level, this.resetState, this.calculateInitialParents);
223227
let currentRows: RowObject[] = level === -1 ? [] : [...this.rowObjects];
224228
let initialState: TableState = { context: this.contextObject?.getGuid() || null, expanded: [], selected: [] };
225229

@@ -285,6 +289,7 @@ export class NodeStore {
285289
const objIndex = currentRows.findIndex(row => row.key === mxObject.getGuid());
286290
if (objIndex === -1) {
287291
const treeParent = treeMapping[mxObject.getGuid()];
292+
// console.log(treeMapping, treeParent);
288293
const parentObj = this.calculateInitialParents && treeParent ? treeParent : parent;
289294
currentRows.push(
290295
new RowObject({
@@ -321,10 +326,10 @@ export class NodeStore {
321326
}
322327
});
323328
this.rowObjects = currentRows;
324-
if (this.calculateInitialParents) {
329+
if (this.calculateInitialParents && this.loadScenario === "partial") {
325330
this.disableCalculateInitial();
326331
}
327-
if (this.resetState) {
332+
if (this.resetState && this.loadScenario === "partial") {
328333
this.disableResetState();
329334
}
330335
if (this.selectFirstOnSingle) {
@@ -428,7 +433,7 @@ export class NodeStore {
428433
subscribe({
429434
callback: () => {
430435
this.debug(`store: subcription fired context ${guid}`);
431-
this.clearSubscriptions("store context subscription");
436+
this.resetSubscriptions("store context subscription");
432437
this.reset();
433438
},
434439
guid

0 commit comments

Comments
 (0)