From 518b55cf0f9baa865527fe6334caf37640eb3b6f Mon Sep 17 00:00:00 2001 From: Jesse Mazzella Date: Thu, 17 Oct 2024 15:08:52 -0700 Subject: [PATCH] fix(vipergc-660): identify axis keys upon adding object to composition (#7897) * fix: identify axis keys upon adding object to composition * fix: set yKey to 'none' if nonArrayValues --- src/plugins/charts/bar/BarGraphView.vue | 30 ++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/plugins/charts/bar/BarGraphView.vue b/src/plugins/charts/bar/BarGraphView.vue index 0bc90e3ebb..07c24932d6 100644 --- a/src/plugins/charts/bar/BarGraphView.vue +++ b/src/plugins/charts/bar/BarGraphView.vue @@ -332,7 +332,11 @@ export default { this.domainObject.configuration.axes.xKey === undefined || this.domainObject.configuration.axes.yKey === undefined ) { - return; + const { xKey, yKey } = this.identifyAxesKeys(axisMetadata); + this.openmct.objects.mutate(this.domainObject, 'configuration.axes', { + xKey, + yKey + }); } let xValues = []; @@ -431,6 +435,30 @@ export default { subscribeToAll() { const telemetryObjects = Object.values(this.telemetryObjects); telemetryObjects.forEach(this.subscribeToObject); + }, + identifyAxesKeys(metadata) { + const { xAxisMetadata, yAxisMetadata } = metadata; + + let xKey; + let yKey; + + // If xAxisMetadata contains array values, use the first one for xKey + const arrayValues = xAxisMetadata.filter((metaDatum) => metaDatum.isArrayValue); + const nonArrayValues = xAxisMetadata.filter((metaDatum) => !metaDatum.isArrayValue); + + if (arrayValues.length > 0) { + xKey = arrayValues[0].key; + yKey = arrayValues.length > 1 ? arrayValues[1].key : yAxisMetadata.key; + } else if (nonArrayValues.length > 0) { + xKey = nonArrayValues[0].key; + yKey = 'none'; + } else { + // Fallback if no valid xKey or yKey is found + xKey = 'none'; + yKey = 'none'; + } + + return { xKey, yKey }; } } };