From 9aecf0ba87719322c818953b66ac83ae0154e642 Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Wed, 8 Apr 2026 18:24:35 +0300 Subject: [PATCH] Add roundDown option to ShortNumberPipe Add optional roundDown parameter that uses Math.floor instead of Math.round when abbreviating numbers. This prevents values like 3993979 from rounding up to 4M, showing 3.9M instead. Also improve typing: replace any with ShortNumberArgs interface and ensure transform always returns string. --- .../src/app/shared/pipe/short-number.pipe.ts | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/ui-ngx/src/app/shared/pipe/short-number.pipe.ts b/ui-ngx/src/app/shared/pipe/short-number.pipe.ts index 0fda04844f..ea57709688 100644 --- a/ui-ngx/src/app/shared/pipe/short-number.pipe.ts +++ b/ui-ngx/src/app/shared/pipe/short-number.pipe.ts @@ -16,20 +16,26 @@ import { Pipe, PipeTransform } from '@angular/core'; +export interface ShortNumberArgs { + long?: boolean; + roundDown?: boolean; +} + @Pipe({ - name: 'shortNumber', - standalone: false + name: 'shortNumber', + standalone: false }) export class ShortNumberPipe implements PipeTransform { - transform(number: number, args?: any): any { - if (isNaN(number)) return 0; - if (number === null) return 0; - if (number === 0) return 0; + transform(number: number, args?: ShortNumberArgs): string { + if (isNaN(number)) return '0'; + if (number === null) return '0'; + if (number === 0) return '0'; let abs = Math.abs(number); const rounder = Math.pow(10, 1); const isNegative = number < 0; - const isLong = args && args.long; + const isLong = args?.long; + const roundDown = args?.roundDown; let key = ''; const powers = [ @@ -42,7 +48,7 @@ export class ShortNumberPipe implements PipeTransform { for (let i = 0; i < powers.length; i++) { let reduced = abs / powers[i].value; - reduced = Math.round(reduced * rounder) / rounder; + reduced = (roundDown ? Math.floor : Math.round)(reduced * rounder) / rounder; if (reduced >= 1) { abs = reduced; key = isLong ? powers[i].longKey : powers[i].key;