mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
DataFrame: Align frame (__series.name) and field naming (__field.name) (#69621)
Align frame and field naming
This commit is contained in:
parent
3e48c0b570
commit
862b04c1b2
@ -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…
Reference in New Issue
Block a user