From 862b04c1b217991c7c95d37b7a42bb531840e420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 8 Jun 2023 09:52:14 +0200 Subject: [PATCH] DataFrame: Align frame (__series.name) and field naming (__field.name) (#69621) Align frame and field naming --- .../grafana-data/src/field/fieldState.test.ts | 23 +++++++++++++++++-- packages/grafana-data/src/field/fieldState.ts | 19 ++++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/packages/grafana-data/src/field/fieldState.test.ts b/packages/grafana-data/src/field/fieldState.test.ts index 8be0a7d4ad3..979f3b90837 100644 --- a/packages/grafana-data/src/field/fieldState.test.ts +++ b/packages/grafana-data/src/field/fieldState.test.ts @@ -1,5 +1,5 @@ import { toDataFrame } from '../dataframe'; -import { DataFrame, TIME_SERIES_VALUE_FIELD_NAME, FieldType } from '../types'; +import { DataFrame, TIME_SERIES_VALUE_FIELD_NAME, FieldType, TIME_SERIES_TIME_FIELD_NAME } from '../types'; import { getFieldDisplayName, getFrameDisplayName } from './fieldState'; @@ -42,7 +42,8 @@ describe('getFrameDisplayName', () => { const frame = toDataFrame({ fields: [{ name: 'value', labels: { server: 'A' } }], }); - expect(getFrameDisplayName(frame)).toBe('{server="A"}'); + + expect(getFrameDisplayName(frame)).toBe('value A'); }); it('Should return field names when labels object exist but has no keys', () => { @@ -51,6 +52,24 @@ describe('getFrameDisplayName', () => { }); expect(getFrameDisplayName(frame)).toBe('value'); }); + + it('Should return value field name if single value field', () => { + const frame = toDataFrame({ + fields: [ + { name: TIME_SERIES_TIME_FIELD_NAME, values: [1, 2, 3], type: FieldType.time }, + { + name: TIME_SERIES_VALUE_FIELD_NAME, + values: [1, 2, 3], + type: FieldType.number, + config: { + displayName: 'ServerA', + }, + }, + ], + }); + + expect(getFrameDisplayName(frame, 1)).toBe('ServerA'); + }); }); describe('Check field state calculations (displayName and id)', () => { diff --git a/packages/grafana-data/src/field/fieldState.ts b/packages/grafana-data/src/field/fieldState.ts index 01f3a8760c1..b9e6109d591 100644 --- a/packages/grafana-data/src/field/fieldState.ts +++ b/packages/grafana-data/src/field/fieldState.ts @@ -9,16 +9,23 @@ export function getFrameDisplayName(frame: DataFrame, index?: number) { return frame.name; } - // Single field with tags - const valuesWithLabels: Field[] = []; + const valueFieldNames: string[] = []; for (const field of frame.fields) { - if (field.labels && Object.keys(field.labels).length > 0) { - valuesWithLabels.push(field); + if (field.type === FieldType.time) { + continue; } + + // No point in doing more + if (valueFieldNames.length > 1) { + break; + } + + valueFieldNames.push(getFieldDisplayName(field, frame)); } - if (valuesWithLabels.length === 1) { - return formatLabels(valuesWithLabels[0].labels!); + // If the frame has a single value field then use the name of that field as the frame name + if (valueFieldNames.length === 1) { + return valueFieldNames[0]; } // list all the