Skip to content

Commit 3d4fb07

Browse files
refactor: streamline node selection logic in ClustersService
1 parent 63dc342 commit 3d4fb07

1 file changed

Lines changed: 33 additions & 15 deletions

File tree

src/app/khiops-covisualization/providers/clusters.service.ts

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -130,20 +130,16 @@ export class ClustersService {
130130
filteredDimensionsClusters = this.getCurrentClusterDetailsFromNode(
131131
this.dimensionsDatasService.dimensionsDatas.dimensionsTrees[0] || [],
132132
);
133-
let selectedNode =
134-
this.dimensionsDatasService.dimensionsDatas.selectedNodes[0];
133+
let selectedNode = this.getSelectedNodeFromIndex(0);
135134

136-
let otherselectedNode =
137-
this.dimensionsDatasService.dimensionsDatas.selectedNodes[1];
135+
let otherselectedNode = this.getSelectedNodeFromIndex(1);
138136

139137
if (position === 1) {
140138
filteredDimensionsClusters = this.getCurrentClusterDetailsFromNode(
141139
this.dimensionsDatasService.dimensionsDatas.dimensionsTrees[1] || [],
142140
);
143-
selectedNode =
144-
this.dimensionsDatasService.dimensionsDatas.selectedNodes[1];
145-
otherselectedNode =
146-
this.dimensionsDatasService.dimensionsDatas.selectedNodes[0];
141+
selectedNode = this.getSelectedNodeFromIndex(1);
142+
otherselectedNode = this.getSelectedNodeFromIndex(0);
147143
}
148144

149145
selectedNode && selectedNode.getChildrenList();
@@ -177,14 +173,8 @@ export class ClustersService {
177173
);
178174

179175
// For distribution chart, we want to show the label of the OTHER dimension
180-
const otherPosition = position === 0 ? 1 : 0;
181176
const currentDataSet = new ChartDatasetModel(
182-
(this.dimensionsDatasService.dimensionsDatas.selectedNodes[
183-
otherPosition
184-
] &&
185-
this.dimensionsDatasService.dimensionsDatas.selectedNodes[otherPosition]
186-
.shortDescription) ||
187-
'',
177+
otherselectedNode?.shortDescription || otherselectedNode?.name || '',
188178
);
189179

190180
let distributionsGraphDetails: ChartDatasModel | undefined =
@@ -286,6 +276,34 @@ export class ClustersService {
286276
return distributionsGraphDetails;
287277
}
288278

279+
/**
280+
* Retrieves the selected node from the dimensions data based on the given index.
281+
* @param position - The index of the selected node.
282+
* @returns The selected TreeNodeModel or undefined if not found.
283+
*/
284+
private getSelectedNodeFromIndex(
285+
position: number,
286+
): TreeNodeModel | undefined {
287+
const dimensionsDatas = this.dimensionsDatasService.dimensionsDatas;
288+
if (!dimensionsDatas) {
289+
return undefined;
290+
}
291+
292+
const selectedNode = dimensionsDatas.selectedNodes[position];
293+
const selectedDimension = dimensionsDatas.selectedDimensions[position];
294+
295+
if (!selectedNode || !selectedDimension) {
296+
return selectedNode;
297+
}
298+
299+
return (
300+
this.treenodesService.getNodeFromName(
301+
selectedDimension.name,
302+
selectedNode.name,
303+
) || selectedNode
304+
);
305+
}
306+
289307
/**
290308
* Generates a dataset representing information per cluster at a given rank.
291309
* This method processes the initial data and hierarchy data to create a chart dataset.

0 commit comments

Comments
 (0)