From 1c2aea8f84f519192f8d36b4241743a73488d62c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Bergenthal-Grotl=C3=BCschen?= <197286649+laura-b-g@users.noreply.github.com> Date: Thu, 12 Mar 2026 11:41:42 +0100 Subject: [PATCH] Add formatDecimalBytes method and update bytes conversion utilities (#25297) Co-authored-by: Ousmane SAMBA --- .../src/util/NumberUtils.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/graylog2-web-interface/src/util/NumberUtils.ts b/graylog2-web-interface/src/util/NumberUtils.ts index 54e1494ab6..ba9ce36d99 100644 --- a/graylog2-web-interface/src/util/NumberUtils.ts +++ b/graylog2-web-interface/src/util/NumberUtils.ts @@ -21,6 +21,7 @@ type NumberInput = number | string; const NumberUtils = { JAVA_INTEGER_MIN_VALUE: 2 ** 31 * -1, JAVA_INTEGER_MAX_VALUE: 2 ** 31 - 1, + BYTES_PER_GB: 1_000_000_000 as const, normalizeNumber(number: NumberInput): number { switch (number) { case 'NaN': @@ -72,6 +73,27 @@ const NumberUtils = { return formattedNumber; }, + formatDecimalBytes(number: NumberInput): string { + numeral.zeroFormat('0B'); + + let formattedNumber: string; + + try { + formattedNumber = numeral(this.normalizeNumber(number)).format('0.0b'); + } catch (_e) { + formattedNumber = String(number); + } + + numeral.zeroFormat(null); + + return formattedNumber; + }, + bytesToGb(bytes: number): number { + return parseFloat((bytes / this.BYTES_PER_GB).toFixed(2)); + }, + gbToBytes(gb: number): number { + return Math.round(gb * this.BYTES_PER_GB); + }, isNumber(possibleNumber: unknown): boolean { return possibleNumber !== '' && !Number.isNaN(Number(possibleNumber)); },