From 227233ce7f750d5875218d7d36a2e4b72f708e39 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Tue, 9 Feb 2021 16:55:15 -0500 Subject: [PATCH 1/4] [TSVB] Stop inserting zeroes for null series --- src/plugins/vis_type_timeseries/common/get_last_value.js | 2 +- .../vis_type_timeseries/common/get_last_value.test.js | 4 ++-- .../public/application/visualizations/views/gauge.js | 2 +- .../public/application/visualizations/views/metric.js | 2 +- test/functional/apps/dashboard/dashboard_filtering.ts | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/plugins/vis_type_timeseries/common/get_last_value.js b/src/plugins/vis_type_timeseries/common/get_last_value.js index 9d5ad4c264c993..354979dc796ed8 100644 --- a/src/plugins/vis_type_timeseries/common/get_last_value.js +++ b/src/plugins/vis_type_timeseries/common/get_last_value.js @@ -8,7 +8,7 @@ import { isArray, last } from 'lodash'; -const DEFAULT_VALUE = 0; +const DEFAULT_VALUE = null; const extractValue = (data) => (data && data[1]) || null; export const getLastValue = (data, defaultValue = DEFAULT_VALUE) => { diff --git a/src/plugins/vis_type_timeseries/common/get_last_value.test.js b/src/plugins/vis_type_timeseries/common/get_last_value.test.js index e4192de2392eb9..af97ad2f969d29 100644 --- a/src/plugins/vis_type_timeseries/common/get_last_value.test.js +++ b/src/plugins/vis_type_timeseries/common/get_last_value.test.js @@ -18,7 +18,7 @@ describe('getLastValue(data)', () => { }); test('should returns the default value ', () => { - expect(getLastValue()).toBe(0); + expect(getLastValue()).toBe(null); }); test('should returns 0 if second to last is not defined (default)', () => { @@ -27,7 +27,7 @@ describe('getLastValue(data)', () => { [1, null], [2, null], ]) - ).toBe(0); + ).toBe(null); }); test('should allows to override the default value', () => { diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/gauge.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/gauge.js index c7287f79dfdb85..31ea3412972e8f 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/gauge.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/gauge.js @@ -61,7 +61,7 @@ export class Gauge extends Component { render() { const { metric, type } = this.props; const { scale, translateX, translateY } = this.state; - const value = (metric && getLastValue(metric.data)) || 0; + const value = metric && getLastValue(metric.data); const max = (metric && getValueBy('max', metric.data)) || 1; const formatter = (metric && (metric.tickFormatter || metric.formatter)) || diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/metric.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/metric.js index e5b368aefa2e9a..17cadb94457b6e 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/metric.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/metric.js @@ -58,7 +58,7 @@ export class Metric extends Component { const { metric, secondary } = this.props; const { scale, translateX, translateY } = this.state; const primaryFormatter = (metric && (metric.tickFormatter || metric.formatter)) || ((n) => n); - const primaryValue = primaryFormatter(getLastValue((metric && metric.data) || 0)); + const primaryValue = primaryFormatter(getLastValue(metric && metric.data)); const styles = reactcss( { default: { diff --git a/test/functional/apps/dashboard/dashboard_filtering.ts b/test/functional/apps/dashboard/dashboard_filtering.ts index 2aa24fc8b70658..bc0e127cb36d71 100644 --- a/test/functional/apps/dashboard/dashboard_filtering.ts +++ b/test/functional/apps/dashboard/dashboard_filtering.ts @@ -106,11 +106,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tsvb metric is filtered', async () => { - await dashboardExpect.tsvbMetricValuesExist(['0 custom template']); + await dashboardExpect.tsvbMetricValuesExist(['custom template']); }); it('tsvb top n is filtered', async () => { - await dashboardExpect.tsvbTopNValuesExist(['0', '0']); + await dashboardExpect.tsvbTopNValuesExist(['', '']); }); it('saved search is filtered', async () => { @@ -168,11 +168,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tsvb metric is filtered', async () => { - await dashboardExpect.tsvbMetricValuesExist(['0 custom template']); + await dashboardExpect.tsvbMetricValuesExist(['custom template']); }); it('tsvb top n is filtered', async () => { - await dashboardExpect.tsvbTopNValuesExist(['0', '0']); + await dashboardExpect.tsvbTopNValuesExist(['', '']); }); it('saved search is filtered', async () => { From 2015c6306abe8c409b7c18bba9e472fa17a69997 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Fri, 19 Feb 2021 13:50:46 -0500 Subject: [PATCH 2/4] Replace empty default value with hyphen --- src/plugins/vis_type_timeseries/common/get_last_value.js | 2 +- test/functional/apps/dashboard/dashboard_filtering.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/vis_type_timeseries/common/get_last_value.js b/src/plugins/vis_type_timeseries/common/get_last_value.js index 354979dc796ed8..46ac330aef4c98 100644 --- a/src/plugins/vis_type_timeseries/common/get_last_value.js +++ b/src/plugins/vis_type_timeseries/common/get_last_value.js @@ -8,7 +8,7 @@ import { isArray, last } from 'lodash'; -const DEFAULT_VALUE = null; +const DEFAULT_VALUE = '-'; const extractValue = (data) => (data && data[1]) || null; export const getLastValue = (data, defaultValue = DEFAULT_VALUE) => { diff --git a/test/functional/apps/dashboard/dashboard_filtering.ts b/test/functional/apps/dashboard/dashboard_filtering.ts index bc0e127cb36d71..9abe50c38e742b 100644 --- a/test/functional/apps/dashboard/dashboard_filtering.ts +++ b/test/functional/apps/dashboard/dashboard_filtering.ts @@ -106,11 +106,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tsvb metric is filtered', async () => { - await dashboardExpect.tsvbMetricValuesExist(['custom template']); + await dashboardExpect.tsvbMetricValuesExist(['- custom template']); }); it('tsvb top n is filtered', async () => { - await dashboardExpect.tsvbTopNValuesExist(['', '']); + await dashboardExpect.tsvbTopNValuesExist(['-', '-']); }); it('saved search is filtered', async () => { @@ -168,11 +168,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tsvb metric is filtered', async () => { - await dashboardExpect.tsvbMetricValuesExist(['custom template']); + await dashboardExpect.tsvbMetricValuesExist(['- custom template']); }); it('tsvb top n is filtered', async () => { - await dashboardExpect.tsvbTopNValuesExist(['', '']); + await dashboardExpect.tsvbTopNValuesExist(['-', '-']); }); it('saved search is filtered', async () => { From d62ef1372a32e78076ac8fe4d41acd6eee2adfb8 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Fri, 19 Feb 2021 14:05:41 -0500 Subject: [PATCH 3/4] Stop treating 0 as false --- .../vis_type_timeseries/common/get_last_value.js | 6 +++--- .../common/get_last_value.test.js | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/plugins/vis_type_timeseries/common/get_last_value.js b/src/plugins/vis_type_timeseries/common/get_last_value.js index 46ac330aef4c98..5a36a5e099f9d0 100644 --- a/src/plugins/vis_type_timeseries/common/get_last_value.js +++ b/src/plugins/vis_type_timeseries/common/get_last_value.js @@ -9,12 +9,12 @@ import { isArray, last } from 'lodash'; const DEFAULT_VALUE = '-'; -const extractValue = (data) => (data && data[1]) || null; +const extractValue = (data) => (data && data[1]) ?? null; export const getLastValue = (data, defaultValue = DEFAULT_VALUE) => { if (!isArray(data)) { - return data || defaultValue; + return data ?? defaultValue; } - return extractValue(last(data)) || defaultValue; + return extractValue(last(data)) ?? defaultValue; }; diff --git a/src/plugins/vis_type_timeseries/common/get_last_value.test.js b/src/plugins/vis_type_timeseries/common/get_last_value.test.js index af97ad2f969d29..122f037ddf3e47 100644 --- a/src/plugins/vis_type_timeseries/common/get_last_value.test.js +++ b/src/plugins/vis_type_timeseries/common/get_last_value.test.js @@ -13,12 +13,20 @@ describe('getLastValue(data)', () => { expect(getLastValue('foo')).toBe('foo'); }); + test('should returns 0 as a value when not an array', () => { + expect(getLastValue(0)).toBe(0); + }); + test('should returns the last value', () => { expect(getLastValue([[1, 2]])).toBe(2); }); + test('should return 0 as a valid value', () => { + expect(getLastValue([[0, 0]])).toBe(0); + }); + test('should returns the default value ', () => { - expect(getLastValue()).toBe(null); + expect(getLastValue()).toBe('-'); }); test('should returns 0 if second to last is not defined (default)', () => { @@ -27,10 +35,10 @@ describe('getLastValue(data)', () => { [1, null], [2, null], ]) - ).toBe(null); + ).toBe('-'); }); test('should allows to override the default value', () => { - expect(getLastValue(null, '-')).toBe('-'); + expect(getLastValue(null, 'default')).toBe('default'); }); }); From f63276a23f0d720da0dad71ae300b9ab52754480 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Mon, 22 Feb 2021 14:19:01 -0500 Subject: [PATCH 4/4] Fix test cases --- test/functional/apps/dashboard/dashboard_filtering.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/apps/dashboard/dashboard_filtering.ts b/test/functional/apps/dashboard/dashboard_filtering.ts index 9abe50c38e742b..e995bc4e52c498 100644 --- a/test/functional/apps/dashboard/dashboard_filtering.ts +++ b/test/functional/apps/dashboard/dashboard_filtering.ts @@ -106,7 +106,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tsvb metric is filtered', async () => { - await dashboardExpect.tsvbMetricValuesExist(['- custom template']); + await dashboardExpect.tsvbMetricValuesExist(['0 custom template']); }); it('tsvb top n is filtered', async () => { @@ -168,7 +168,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('tsvb metric is filtered', async () => { - await dashboardExpect.tsvbMetricValuesExist(['- custom template']); + await dashboardExpect.tsvbMetricValuesExist(['0 custom template']); }); it('tsvb top n is filtered', async () => {