@@ -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