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

Align frame and field naming
This commit is contained in:
Torkel Ödegaard 2023-06-08 09:52:14 +02:00 committed by GitHub
parent 3e48c0b570
commit 862b04c1b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 8 deletions

View File

@ -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)', () => {

View File

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