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) { if (timeSeries.title) {
(fields[1].config as FieldConfig).displayName = timeSeries.title; (fields[1].config as FieldConfig).displayNameFromDS = timeSeries.title;
} }
return { return {

@ -58,6 +58,10 @@ function calculateFieldDisplayName(field: Field, frame?: DataFrame, allFrames?:
return displayName; return displayName;
} }
if (frame && field.config?.displayNameFromDS) {
return field.config.displayNameFromDS;
}
// This is an ugly exception for time field // This is an ugly exception for time field
// For time series we should normally treat time field with same name // 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 // 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 * Plugins may extend this with additional properties. Something like series overrides
*/ */
export interface FieldConfig<TOptions extends object = any> { 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; filterable?: boolean;
// Numeric Options // Numeric Options

@ -625,7 +625,7 @@ describe('PrometheusDatasource', () => {
it('should return series list', async () => { it('should return series list', async () => {
const frame = toDataFrame(results.data[0]); const frame = toDataFrame(results.data[0]);
expect(results.data.length).toBe(1); 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]); const frame = toDataFrame(results.data[0]);
expect(results.data.length).toBe(1); expect(results.data.length).toBe(1);
expect(frame.name).toBe('test{job="testjob"}'); 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', () => { it('should return series list', () => {
const frame = toDataFrame(results.data[0]); const frame = toDataFrame(results.data[0]);
expect(results.data.length).toBe(1); 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