From fc10bd7b8e7b5d775a9bb664576dee5f2e0a516f Mon Sep 17 00:00:00 2001 From: lzd Date: Fri, 13 Sep 2019 22:15:31 +0800 Subject: [PATCH] =?UTF-8?q?Singlestat:=20fix=20format=20messes=20up=20on?= =?UTF-8?q?=20negative=20values=20if=20select=20duratio=E2=80=A6=20(#19044?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Singlestat: fix format messes up on negative values if select duration (hh:mm:ss) unit * Added test for 0 --- .../utils/valueFormats/dateTimeFormatters.test.ts | 13 +++++++++++++ .../src/utils/valueFormats/dateTimeFormatters.ts | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.test.ts b/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.test.ts index 2fa851867f5..1640b63d907 100644 --- a/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.test.ts +++ b/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.test.ts @@ -7,6 +7,7 @@ import { toDuration, toDurationInMilliseconds, toDurationInSeconds, + toDurationInHoursMinutesSeconds, } from './dateTimeFormatters'; import { toUtc, dateTime } from '@grafana/data'; @@ -161,6 +162,18 @@ describe('duration', () => { const str = toDuration(36993906007, 8, Interval.Millisecond); expect(str).toBe('1 year, 2 months, 0 weeks, 3 days, 4 hours, 5 minutes, 6 seconds, 7 milliseconds'); }); + it('1 dthms', () => { + const str = toDurationInHoursMinutesSeconds(1); + expect(str).toBe('00:00:01'); + }); + it('-1 dthms', () => { + const str = toDurationInHoursMinutesSeconds(-1); + expect(str).toBe('00:00:01 ago'); + }); + it('0 dthms', () => { + const str = toDurationInHoursMinutesSeconds(0); + expect(str).toBe('00:00:00'); + }); }); describe('clock', () => { diff --git a/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.ts b/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.ts index 45187924250..20ffbab6509 100644 --- a/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.ts +++ b/packages/grafana-ui/src/utils/valueFormats/dateTimeFormatters.ts @@ -283,7 +283,10 @@ export function toDurationInSeconds(size: number, decimals: DecimalCount) { return toDuration(size, decimals, Interval.Second); } -export function toDurationInHoursMinutesSeconds(size: number) { +export function toDurationInHoursMinutesSeconds(size: number): string { + if (size < 0) { + return toDurationInHoursMinutesSeconds(-size) + ' ago'; + } const strings = []; const numHours = Math.floor(size / 3600); const numMinutes = Math.floor((size % 3600) / 60);