From ccf952983b83703c7a2a1782db018aa29b03b3f9 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Fri, 17 Nov 2023 02:22:57 +0000 Subject: [PATCH] Round memory usage to 3sf --- .../src/app/dashboard/dashboard.component.html | 2 +- .../src/app/shared/pipes/bytes-pipe/bytes.pipe.ts | 14 +++++++++----- frontend/src/app/shared/pipes/bytes-pipe/utils.ts | 4 ++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/dashboard/dashboard.component.html b/frontend/src/app/dashboard/dashboard.component.html index fdd2131fe..2e2e4bccc 100644 --- a/frontend/src/app/dashboard/dashboard.component.html +++ b/frontend/src/app/dashboard/dashboard.component.html @@ -237,7 +237,7 @@
 
-
/
+
/
diff --git a/frontend/src/app/shared/pipes/bytes-pipe/bytes.pipe.ts b/frontend/src/app/shared/pipes/bytes-pipe/bytes.pipe.ts index f8ea4d4b6..83fc2433d 100644 --- a/frontend/src/app/shared/pipes/bytes-pipe/bytes.pipe.ts +++ b/frontend/src/app/shared/pipes/bytes-pipe/bytes.pipe.ts @@ -1,6 +1,6 @@ /* tslint:disable */ import { Pipe, PipeTransform } from '@angular/core'; -import { isNumberFinite, isPositive, isInteger, toDecimal } from './utils'; +import { isNumberFinite, isPositive, isInteger, toDecimal, toSigFigs } from './utils'; export type ByteUnit = 'B' | 'kB' | 'MB' | 'GB' | 'TB'; @@ -17,7 +17,7 @@ export class BytesPipe implements PipeTransform { 'TB': {max: Number.MAX_SAFE_INTEGER, prev: 'GB'} }; - transform(input: any, decimal: number = 0, from: ByteUnit = 'B', to?: ByteUnit): any { + transform(input: any, decimal: number = 0, from: ByteUnit = 'B', to?: ByteUnit, sigfigs?: number): any { if (!(isNumberFinite(input) && isNumberFinite(decimal) && @@ -33,10 +33,14 @@ export class BytesPipe implements PipeTransform { unit = BytesPipe.formats[unit].prev!; } + let numberFormat = sigfigs == null ? + (number) => toDecimal(number, decimal).toString() : + (number) => toSigFigs(number, sigfigs); + if (to) { const format = BytesPipe.formats[to]; - const result = toDecimal(BytesPipe.calculateResult(format, bytes), decimal); + const result = numberFormat(BytesPipe.calculateResult(format, bytes)); return BytesPipe.formatResult(result, to); } @@ -45,14 +49,14 @@ export class BytesPipe implements PipeTransform { const format = BytesPipe.formats[key]; if (bytes < format.max) { - const result = toDecimal(BytesPipe.calculateResult(format, bytes), decimal); + const result = numberFormat(BytesPipe.calculateResult(format, bytes)); return BytesPipe.formatResult(result, key); } } } - static formatResult(result: number, unit: string): string { + static formatResult(result: string, unit: string): string { return `${result} ${unit}`; } diff --git a/frontend/src/app/shared/pipes/bytes-pipe/utils.ts b/frontend/src/app/shared/pipes/bytes-pipe/utils.ts index 2700be45d..7c88c83bc 100644 --- a/frontend/src/app/shared/pipes/bytes-pipe/utils.ts +++ b/frontend/src/app/shared/pipes/bytes-pipe/utils.ts @@ -54,6 +54,10 @@ export function toDecimal(value: number, decimal: number): number { return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal); } +export function toSigFigs(value: number, sigFigs: number): string { + return value >= Math.pow(10, sigFigs - 1) ? Math.round(value).toString() : value.toPrecision(sigFigs); +} + export function upperFirst(value: string): string { return value.slice(0, 1).toUpperCase() + value.slice(1); }