From 22078471fbe5a4dea6177bd1fa19da1cf887679e Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Wed, 13 Jan 2021 09:15:43 +0100 Subject: show first decimal for views above a thousand (#3564) * show first decimal for views above a thousand * Update client/src/app/shared/shared-main/angular/number-formatter.pipe.ts --- .../shared-main/angular/number-formatter.pipe.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts b/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts index e2eba3a60..5e6ccfa16 100644 --- a/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts +++ b/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts @@ -10,10 +10,25 @@ export class NumberFormatterPipe implements PipeTransform { { max: 1000000000, type: 'M' } ] + /** + * @param x number + * @param n number of decimals to get (defaults to 1, needs to be >= 1) + */ + static getDecimalForNumber (x: number, n = 1) { + const v = x.toString().split('.') + const f = v[1] || '' + if (f.length > n) return +f.substr(0, n) + return +f + } + transform (value: number) { const format = this.dictionary.find(d => value < d.max) || this.dictionary[this.dictionary.length - 1] - const calc = Math.floor(value / (format.max / 1000)) + const calc = value / (format.max / 1000) + const integralPart = Math.floor(calc) + const decimalPart = NumberFormatterPipe.getDecimalForNumber(calc) - return `${calc}${format.type}` + return integralPart < 10 && decimalPart > 0 + ? `${integralPart}.${decimalPart}${format.type}` + : `${integralPart}${format.type}` } } -- cgit v1.2.3