From e232629917aa74388519f0975cf77b4bb6a9a4d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 2 Aug 2019 23:50:55 +0200 Subject: [PATCH] FieldDisplay: Return field defaults when there are no data (#18357) (cherry picked from commit 202c136238c3be57071c03c27703585028153775) --- .../grafana-ui/src/utils/fieldDisplay.test.ts | 26 +++++++++++++++++++ packages/grafana-ui/src/utils/fieldDisplay.ts | 6 ++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/grafana-ui/src/utils/fieldDisplay.test.ts b/packages/grafana-ui/src/utils/fieldDisplay.test.ts index 648834a1174..4e697603a92 100644 --- a/packages/grafana-ui/src/utils/fieldDisplay.test.ts +++ b/packages/grafana-ui/src/utils/fieldDisplay.test.ts @@ -135,4 +135,30 @@ describe('FieldDisplay', () => { expect(field.thresholds!.length).toEqual(2); expect(field.thresholds![0].value).toBe(-Infinity); }); + + it('Should return field thresholds when there is no data', () => { + const options: GetFieldDisplayValuesOptions = { + data: [ + { + name: 'No data', + fields: [], + rows: [], + }, + ], + replaceVariables: (value: string) => { + return value; + }, + fieldOptions: { + calcs: [], + override: {}, + defaults: { + thresholds: [{ color: '#F2495C', value: 50 }], + }, + }, + theme: getTheme(GrafanaThemeType.Dark), + }; + + const display = getFieldDisplayValues(options); + expect(display[0].field.thresholds!.length).toEqual(1); + }); }); diff --git a/packages/grafana-ui/src/utils/fieldDisplay.ts b/packages/grafana-ui/src/utils/fieldDisplay.ts index 4dd59f8c978..3e7c179473c 100644 --- a/packages/grafana-ui/src/utils/fieldDisplay.ts +++ b/packages/grafana-ui/src/utils/fieldDisplay.ts @@ -182,7 +182,10 @@ export const getFieldDisplayValues = (options: GetFieldDisplayValuesOptions): Fi if (values.length === 0) { values.push({ - field: { name: 'No Data' }, + field: { + ...defaults, + name: 'No Data', + }, display: { numeric: 0, text: 'No data', @@ -244,6 +247,7 @@ type PartialField = Partial; export function getFieldProperties(...props: PartialField[]): Field { let field = props[0] as Field; + for (let i = 1; i < props.length; i++) { field = applyFieldProperties(field, props[i]); }