diff --git a/packages/grafana-data/src/transformations/fieldReducer.test.ts b/packages/grafana-data/src/transformations/fieldReducer.test.ts index baa5d704911..120a416d81a 100644 --- a/packages/grafana-data/src/transformations/fieldReducer.test.ts +++ b/packages/grafana-data/src/transformations/fieldReducer.test.ts @@ -55,13 +55,14 @@ describe('Stats Calculators', () => { it('should calculate basic stats', () => { const stats = reduceField({ field: basicTable.fields[0], - reducers: [ReducerID.first, ReducerID.last, ReducerID.mean, ReducerID.count], + reducers: [ReducerID.first, ReducerID.last, ReducerID.mean, ReducerID.count, ReducerID.diffperc], }); expect(stats.first).toEqual(10); expect(stats.last).toEqual(20); expect(stats.mean).toEqual(15); expect(stats.count).toEqual(2); + expect(stats.diffperc).toEqual(100); }); it('should handle undefined field data without crashing', () => { diff --git a/packages/grafana-data/src/transformations/fieldReducer.ts b/packages/grafana-data/src/transformations/fieldReducer.ts index a032619aeb3..a7d1f0c7242 100644 --- a/packages/grafana-data/src/transformations/fieldReducer.ts +++ b/packages/grafana-data/src/transformations/fieldReducer.ts @@ -582,7 +582,7 @@ export function doStandardCalcs(field: Field, ignoreNulls: boolean, nullAsZero: } if (isNumber(calcs.firstNotNull) && isNumber(calcs.diff)) { - calcs.diffperc = calcs.diff / calcs.firstNotNull; + calcs.diffperc = (calcs.diff / calcs.firstNotNull) * 100; } return calcs; } diff --git a/packages/grafana-ui/src/components/BigValue/BigValue.test.tsx b/packages/grafana-ui/src/components/BigValue/BigValue.test.tsx index ff682372578..e7819cd110d 100644 --- a/packages/grafana-ui/src/components/BigValue/BigValue.test.tsx +++ b/packages/grafana-ui/src/components/BigValue/BigValue.test.tsx @@ -41,7 +41,7 @@ describe('BigValue', () => { /> ); - expect(screen.getByText('50%')).toBeInTheDocument(); + expect(screen.getByText('0.5%')).toBeInTheDocument(); }); it('should render without percent change', () => { diff --git a/packages/grafana-ui/src/components/BigValue/PercentChange.tsx b/packages/grafana-ui/src/components/BigValue/PercentChange.tsx index 24de61cbbc6..1e9c97a2ee2 100644 --- a/packages/grafana-ui/src/components/BigValue/PercentChange.tsx +++ b/packages/grafana-ui/src/components/BigValue/PercentChange.tsx @@ -27,6 +27,7 @@ export const PercentChange = ({ percentChange, styles }: Props) => { ); }; +// percentChange is expected to be a value between 0-100 export const percentChangeString = (percentChange: number) => { - return percentChange.toLocaleString(undefined, { style: 'percent', maximumSignificantDigits: 3 }); + return (percentChange / 100).toLocaleString(undefined, { style: 'percent', maximumSignificantDigits: 3 }); };