DataFrame: Align frame (__series.name) and field naming (__field.name) (#69621)

Align frame and field naming
pull/69449/head
Torkel Ödegaard 2 years ago committed by GitHub
parent 3e48c0b570
commit 862b04c1b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      packages/grafana-data/src/field/fieldState.test.ts
  2. 19
      packages/grafana-data/src/field/fieldState.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)', () => {

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

Loading…
Cancel
Save