Files
mixtape/zero.Backoffice.UI/app/utils/filesize.ts
T
2021-12-17 13:51:16 +01:00

30 lines
612 B
TypeScript

const BYTE_UNIT = 'B';
const UNITS = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
/**
* Generate human-readable filesize from byte number
* @returns {string} Readable filesize
*/
export function getFilesize(bytes: number, decimalPlaces: number = 1): string
{
if (typeof bytes !== 'number')
{
return '0 ' + BYTE_UNIT;
}
var thresh = 1024;
if (Math.abs(bytes) < thresh)
{
return bytes + ' ' + BYTE_UNIT;
}
var u = -1;
do
{
bytes /= thresh;
++u;
} while (Math.abs(bytes) >= thresh && u < UNITS.length - 1);
return bytes.toFixed(decimalPlaces) + ' ' + UNITS[u];
}