Улучшена функция форматирования размера данных

This commit is contained in:
goodmice 2022-07-25 14:28:15 +05:00
parent 5d51234bfc
commit ebec1957e7

View File

@ -121,11 +121,22 @@ export const downloadFile = async (fileInfo: FileInfoDto) => {
}
}
export const formatBytes = (bytes: number) => {
if(bytes < 1024)
return `${bytes.toFixed(0)}b`
if(bytes < 1024 * 1024)
return `${(bytes / 1024).toFixed(2)}kb`
else
return `${(bytes / 1024 / 1024).toFixed(2)}Mb`
const bytesUnits = {
ru: {
short: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ', 'ПБ', 'ЭБ', 'ЗБ', 'ЙБ'],
full: ['байт', 'Килобайт', 'Мегабайт', 'Гигабайт', 'Петабайт', 'Экзабайт', 'Зетабайт', 'Йотабайт'],
},
en: {
short: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'],
full: ['byte', 'kibibyte', 'mebibyte', 'gibibyte', 'tebibyte', 'pebibyte', 'exbibyte', 'zebibyte', 'yobubyte'],
}
}
export const formatBytes = (bytes: number, fixed: number = 2, fullname?: boolean, locale: keyof typeof bytesUnits = 'ru') => {
const units = bytesUnits[locale][fullname ? 'full' : 'short']
for (let i = 0; i < units.length; i++)
if (bytes < 2 ** (10 * (i + 1)))
return `${(bytes / (2 ** (10 * i))).toFixed(fixed)} ${units[i]}`
return `>1024 ${units.at(-1)}`
}