From 86a366126a09379365acb3d1cadf362a236e24da Mon Sep 17 00:00:00 2001 From: Kristina Date: Thu, 22 May 2025 21:38:32 -0500 Subject: [PATCH] Transformations: Transpose should respect renamed field names (#105893) Co-authored-by: Leon Sorokin --- .../transformations/transformers/transpose.test.ts | 10 +++++++++- .../src/transformations/transformers/transpose.ts | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/grafana-data/src/transformations/transformers/transpose.test.ts b/packages/grafana-data/src/transformations/transformers/transpose.test.ts index e522b93e885..c14026a8920 100644 --- a/packages/grafana-data/src/transformations/transformers/transpose.test.ts +++ b/packages/grafana-data/src/transformations/transformers/transpose.test.ts @@ -86,9 +86,17 @@ describe('Transpose transformer', () => { { name: 'env', type: FieldType.string, values: ['dev', 'prod', 'staging', 'release', 'beta'] }, { name: 'january', type: FieldType.number, values: [11, 12, 13, 14, 15] }, { name: 'february', type: FieldType.number, values: [6, 7, 8, 9, 10] }, - { name: 'type', type: FieldType.string, values: ['metricA', 'metricB', 'metricC', 'metricD', 'metricE'] }, + { + name: 'metricName', + type: FieldType.string, + values: ['metricA', 'metricB', 'metricC', 'metricD', 'metricE'], + config: { + displayName: 'type', + }, + }, ], }); + await expect(transformDataFrame([cfgB], [seriesB])).toEmitValuesWith((received) => { const result = received[0]; expect(result[0].fields).toEqual([ diff --git a/packages/grafana-data/src/transformations/transformers/transpose.ts b/packages/grafana-data/src/transformations/transformers/transpose.ts index ae97e8f4ceb..651254a736d 100644 --- a/packages/grafana-data/src/transformations/transformers/transpose.ts +++ b/packages/grafana-data/src/transformations/transformers/transpose.ts @@ -1,5 +1,6 @@ import { map } from 'rxjs/operators'; +import { cacheFieldDisplayNames } from '../../field/fieldState'; import { DataFrame, Field, FieldType } from '../../types/dataFrame'; import { DataTransformerInfo } from '../../types/transformations'; @@ -28,6 +29,8 @@ export const transposeTransformer: DataTransformerInfo { const firstField = frame.fields[0]; const firstName = !options.firstFieldName ? 'Field' : options.firstFieldName; @@ -38,8 +41,12 @@ function transposeDataFrame(options: TransposeTransformerOptions, data: DataFram ? [firstName, ...fieldValuesAsStrings(firstField, firstField.values)] : [firstName, ...firstField.values.map((_, i) => restName)]; const rows = useFirstFieldAsHeaders - ? frame.fields.map((field) => field.name).slice(1) - : frame.fields.map((field) => field.name); + ? frame.fields + .map((field) => { + return field.state?.displayName ?? field.name; + }) + .slice(1) + : frame.fields.map((field) => field.state?.displayName ?? field.name); const fieldType = determineFieldType( useFirstFieldAsHeaders ? frame.fields.map((field) => field.type).slice(1)