diff --git a/packages/grafana-ui/src/components/BarGauge/BarGauge.test.tsx b/packages/grafana-ui/src/components/BarGauge/BarGauge.test.tsx index d34b27d943d..3f0cfc2de07 100644 --- a/packages/grafana-ui/src/components/BarGauge/BarGauge.test.tsx +++ b/packages/grafana-ui/src/components/BarGauge/BarGauge.test.tsx @@ -159,6 +159,10 @@ describe('BarGauge', () => { it('-30 to 30 and value 30', () => { expect(getValuePercent(30, -30, 30)).toEqual(1); }); + + it('returns 0 if the min, max and value are all the same value', () => { + expect(getValuePercent(25, 25, 25)).toEqual(0); + }); }); describe('Vertical bar', () => { diff --git a/packages/grafana-ui/src/components/BarGauge/BarGauge.tsx b/packages/grafana-ui/src/components/BarGauge/BarGauge.tsx index 4971d4f2323..fd5bd1ad8d9 100644 --- a/packages/grafana-ui/src/components/BarGauge/BarGauge.tsx +++ b/packages/grafana-ui/src/components/BarGauge/BarGauge.tsx @@ -430,7 +430,9 @@ export function getCellColor( } export function getValuePercent(value: number, minValue: number, maxValue: number): number { - return Math.min((value - minValue) / (maxValue - minValue), 1); + // Need special logic for when minValue === maxValue === value to prevent returning NaN + const valueRatio = Math.min((value - minValue) / (maxValue - minValue), 1); + return isNaN(valueRatio) ? 0 : valueRatio; } /**