DataFrame: Data source field naming control that does not use field.config.displayName (#27186)

* Field naming simple fix

* fixed unit tests

* Updated to use displayNameDS config

* Update packages/grafana-data/src/types/dataFrame.ts

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>

* Updated name

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
pull/27271/head
Torkel Ödegaard 5 years ago committed by GitHub
parent 57b2d08755
commit 7d72837d40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      packages/grafana-data/src/dataframe/processDataFrame.ts
  2. 4
      packages/grafana-data/src/field/fieldState.ts
  3. 15
      packages/grafana-data/src/types/dataFrame.ts
  4. 6
      public/app/plugins/datasource/prometheus/datasource.test.ts

@ -95,7 +95,7 @@ function convertTimeSeriesToDataFrame(timeSeries: TimeSeries): DataFrame {
];
if (timeSeries.title) {
(fields[1].config as FieldConfig).displayName = timeSeries.title;
(fields[1].config as FieldConfig).displayNameFromDS = timeSeries.title;
}
return {

@ -58,6 +58,10 @@ function calculateFieldDisplayName(field: Field, frame?: DataFrame, allFrames?:
return displayName;
}
if (frame && field.config?.displayNameFromDS) {
return field.config.displayNameFromDS;
}
// This is an ugly exception for time field
// For time series we should normally treat time field with same name
// But in case it has a join source we should handle it as normal field

@ -23,7 +23,20 @@ export enum FieldType {
* Plugins may extend this with additional properties. Something like series overrides
*/
export interface FieldConfig<TOptions extends object = any> {
displayName?: string; // The display value for this field. This supports template variables blank is auto
/**
* The display value for this field. This supports template variables blank is auto
*/
displayName?: string;
/**
* This can be used by data sources that return and explicit naming structure for values and labels
* When this property is configured, this value is used rather than the default naming strategy.
*/
displayNameFromDS?: string;
/**
* True if data source field supports ad-hoc filters
*/
filterable?: boolean;
// Numeric Options

@ -625,7 +625,7 @@ describe('PrometheusDatasource', () => {
it('should return series list', async () => {
const frame = toDataFrame(results.data[0]);
expect(results.data.length).toBe(1);
expect(getFieldDisplayName(frame.fields[1])).toBe('test{job="testjob"}');
expect(getFieldDisplayName(frame.fields[1], frame)).toBe('test{job="testjob"}');
});
});
@ -771,7 +771,7 @@ describe('PrometheusDatasource', () => {
const frame = toDataFrame(results.data[0]);
expect(results.data.length).toBe(1);
expect(frame.name).toBe('test{job="testjob"}');
expect(getFieldDisplayName(frame.fields[1])).toBe('test{job="testjob"}');
expect(getFieldDisplayName(frame.fields[1], frame)).toBe('test{job="testjob"}');
});
});
@ -1721,7 +1721,7 @@ describe('PrometheusDatasource for POST', () => {
it('should return series list', () => {
const frame = toDataFrame(results.data[0]);
expect(results.data.length).toBe(1);
expect(getFieldDisplayName(frame.fields[1])).toBe('test{job="testjob"}');
expect(getFieldDisplayName(frame.fields[1], frame)).toBe('test{job="testjob"}');
});
});

Loading…
Cancel
Save