X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d3cf4aea6553f1065fc9d2312e246604653cabd8..273119605b7f33940a5ef9b1422eb1ff152d6764:/src/common/formatters.ts diff --git a/src/common/formatters.ts b/src/common/formatters.ts index 1fbf171039..a38609a678 100644 --- a/src/common/formatters.ts +++ b/src/common/formatters.ts @@ -2,8 +2,12 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { PropertyValue } from "models/search-bar"; -import { Vocabulary, getTagKeyLabel, getTagValueLabel } from "models/vocabulary"; +import { PropertyValue } from 'models/search-bar'; +import { + Vocabulary, + getTagKeyLabel, + getTagValueLabel, +} from 'models/vocabulary'; export const formatDate = (isoDate?: string | null, utc: boolean = false) => { if (isoDate) { @@ -11,41 +15,42 @@ export const formatDate = (isoDate?: string | null, utc: boolean = false) => { let text: string; if (utc) { text = date.toUTCString(); - } - else { + } else { text = date.toLocaleString(); } - return text === 'Invalid Date' ? "(none)" : text; + return text === 'Invalid Date' ? '(none)' : text; } - return "(none)"; + return '-'; }; export const formatFileSize = (size?: number | string) => { - if (typeof size === "number") { - if (size === 0) { return "0 B"; } + if (typeof size === 'number') { + if (size === 0) { + return '0 B'; + } for (const { base, unit } of FILE_SIZES) { if (size >= base) { - return `${(size / base).toFixed()} ${unit}`; + return `${(size / base).toFixed(base === 1 ? 0 : 1)} ${unit}`; } } } - if ((typeof size === "string" && size === '') || size === undefined) { - return ''; + if ((typeof size === 'string' && size === '') || size === undefined) { + return '-'; } - return "0 B"; + return '0 B'; }; export const formatTime = (time: number, seconds?: boolean) => { - const minutes = Math.floor(time / (1000 * 60) % 60).toFixed(0); + const minutes = Math.floor((time / (1000 * 60)) % 60).toFixed(0); const hours = Math.floor(time / (1000 * 60 * 60)).toFixed(0); if (seconds) { - const seconds = Math.floor(time / (1000) % 60).toFixed(0); - return hours + "h " + minutes + "m " + seconds + "s"; + const seconds = Math.floor((time / 1000) % 60).toFixed(0); + return hours + 'h ' + minutes + 'm ' + seconds + 's'; } - return hours + "h " + minutes + "m"; + return hours + 'h ' + minutes + 'm'; }; export const getTimeDiff = (endTime: string, startTime: string) => { @@ -53,14 +58,20 @@ export const getTimeDiff = (endTime: string, startTime: string) => { }; export const formatProgress = (loaded: number, total: number) => { - const progress = loaded >= 0 && total > 0 ? loaded * 100 / total : 0; + const progress = loaded >= 0 && total > 0 ? (loaded * 100) / total : 0; return `${progress.toFixed(2)}%`; }; -export function formatUploadSpeed(prevLoaded: number, loaded: number, prevTime: number, currentTime: number) { - const speed = loaded > prevLoaded && currentTime > prevTime - ? (loaded - prevLoaded) / (currentTime - prevTime) - : 0; +export function formatUploadSpeed( + prevLoaded: number, + loaded: number, + prevTime: number, + currentTime: number +) { + const speed = + loaded > prevLoaded && currentTime > prevTime + ? (loaded - prevLoaded) / (currentTime - prevTime) + : 0; return `${(speed / 1000).toFixed(2)} MB/s`; } @@ -68,46 +79,51 @@ export function formatUploadSpeed(prevLoaded: number, loaded: number, prevTime: const FILE_SIZES = [ { base: 1099511627776, - unit: "TB" + unit: 'TiB', }, { base: 1073741824, - unit: "GB" + unit: 'GiB', }, { base: 1048576, - unit: "MB" + unit: 'MiB', }, { base: 1024, - unit: "KB" + unit: 'KiB', }, { base: 1, - unit: "B" - } + unit: 'B', + }, ]; -export const formatPropertyValue = (pv: PropertyValue, vocabulary?: Vocabulary) => { +export const formatPropertyValue = ( + pv: PropertyValue, + vocabulary?: Vocabulary +) => { if (vocabulary && pv.keyID && pv.valueID) { - return `${getTagKeyLabel(pv.keyID, vocabulary)}: ${getTagValueLabel(pv.keyID, pv.valueID!, vocabulary)}`; + return `${getTagKeyLabel(pv.keyID, vocabulary)}: ${getTagValueLabel( + pv.keyID, + pv.valueID!, + vocabulary + )}`; } if (pv.key) { - return pv.value - ? `${pv.key}: ${pv.value}` - : pv.key; + return pv.value ? `${pv.key}: ${pv.value}` : pv.key; } - return ""; + return ''; }; export const formatContainerCost = (cost: number): string => { const decimalPlaces = 3; const factor = Math.pow(10, decimalPlaces); - const rounded = Math.round(cost*factor)/factor; + const rounded = Math.round(cost * factor) / factor; if (cost > 0 && rounded === 0) { // Display min value of 0.001 - return `$${1/factor}`; + return `$${1 / factor}`; } else { // Otherwise use rounded value to proper decimal places return `$${rounded}`;