60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
export const Rates = {
|
|
"B/s": Math.pow(1024, 0),
|
|
"KiB/s": Math.pow(1024, 1),
|
|
"MiB/s": Math.pow(1024, 2),
|
|
"GiB/s": Math.pow(1024, 3),
|
|
"TiB/s": Math.pow(1024, 4),
|
|
};
|
|
|
|
export function convertToBitrate(value, unit) {
|
|
return value * Rates[unit];
|
|
}
|
|
|
|
export function convertFromBitrate(value, unit) {
|
|
return value / Rates[unit];
|
|
}
|
|
|
|
export function convertedRate(bitrate) {
|
|
if (bitrate > Rates["TiB/s"]) {
|
|
return [bitrate / Rates["TiB/s"], "TiB/s"];
|
|
} else if (bitrate > Rates["GiB/s"]) {
|
|
return [bitrate / Rates["GiB/s"], "GiB/s"];
|
|
} else if (bitrate > Rates["MiB/s"]) {
|
|
return [bitrate / Rates["MiB/s"], "MiB/s"];
|
|
} else if (bitrate > Rates["KiB/s"]) {
|
|
return [bitrate / Rates["KiB/s"], "KiB/s"];
|
|
} else {
|
|
return [bitrate, "B/s"];
|
|
}
|
|
}
|
|
|
|
function places(n) {
|
|
let places = 2;
|
|
if (n >= 100) {
|
|
places = 0;
|
|
} else if (n >= 10) {
|
|
places = 1;
|
|
}
|
|
if (n.toFixed(places) === (0).toFixed(places)) {
|
|
places = 0;
|
|
}
|
|
return places;
|
|
}
|
|
|
|
export function formatBitrate(bitrate) {
|
|
const [rate, unit] = convertedRate(bitrate);
|
|
return `${rate.toFixed(places(rate))} ${unit}`;
|
|
}
|
|
|
|
export function formatAmount(amount) {
|
|
const units = {
|
|
"TiB/s": "TiB",
|
|
"GiB/s": "GiB",
|
|
"MiB/s": "MiB",
|
|
"KiB/s": "KiB",
|
|
"B/s": "bytes"
|
|
};
|
|
const [rate, unit] = convertedRate(amount);
|
|
return `${rate.toFixed(places(rate))} ${units[unit]}`;
|
|
}
|