From c1b707874de02878682a6b209290f980dfe8ceb6 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Thu, 2 Jan 2020 07:46:49 -0800 Subject: [PATCH] Units: support dynamic count and currency units (#21279) --- .../grafana-data/src/valueFormats/valueFormats.test.ts | 8 ++++++++ packages/grafana-data/src/valueFormats/valueFormats.ts | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/grafana-data/src/valueFormats/valueFormats.test.ts b/packages/grafana-data/src/valueFormats/valueFormats.test.ts index dea42d07076..dff09f434a3 100644 --- a/packages/grafana-data/src/valueFormats/valueFormats.test.ts +++ b/packages/grafana-data/src/valueFormats/valueFormats.test.ts @@ -53,6 +53,14 @@ const formatTests: ValueFormatTest[] = [ { id: 'si:µF', value: 1234000000, decimals: 2, result: '1.23 kF' }, { id: 'si:µF', value: 1234000000000000, decimals: 2, result: '1.23 GF' }, + // Counts (suffix) + { id: 'count:xpm', value: 1234567, decimals: 2, result: '1.23M xpm' }, + { id: 'count:x/min', value: 1234, decimals: 2, result: '1.23K x/min' }, + + // Currency (prefix) + { id: 'currency:@', value: 1234567, decimals: 2, result: '@1.23M' }, + { id: 'currency:@', value: 1234, decimals: 2, result: '@1.23K' }, + // Time format { id: 'time:YYYY', decimals: 0, value: dateTime(new Date(1999, 6, 2)).valueOf(), result: '1999' }, { id: 'time:YYYY.MM', decimals: 0, value: dateTime(new Date(2010, 6, 2)).valueOf(), result: '2010.07' }, diff --git a/packages/grafana-data/src/valueFormats/valueFormats.ts b/packages/grafana-data/src/valueFormats/valueFormats.ts index 176e3a997dc..179542cfed2 100644 --- a/packages/grafana-data/src/valueFormats/valueFormats.ts +++ b/packages/grafana-data/src/valueFormats/valueFormats.ts @@ -1,7 +1,7 @@ import { getCategories } from './categories'; import { DecimalCount } from '../types/displayValue'; import { toDateTimeValueFormatter } from './dateTimeFormatters'; -import { getOffsetFromSIPrefix, decimalSIPrefix } from './symbolFormatters'; +import { getOffsetFromSIPrefix, decimalSIPrefix, currency } from './symbolFormatters'; export interface FormattedValue { text: string; @@ -197,6 +197,12 @@ export function getValueFormat(id: string): ValueFormatter { const unit = offset === 0 ? sub : sub.substring(1); return decimalSIPrefix(unit, offset); } + if (key === 'count') { + return simpleCountUnit(sub); + } + if (key === 'currency') { + return currency(sub); + } } return toFixedUnit(id); }