receptor/src/bitrate.js

56 lines
1.2 KiB
JavaScript
Raw Normal View History

2017-09-07 08:19:11 +02:00
export const Rates = {
2017-10-01 18:20:54 +02:00
"B/s": Math.pow(1024, 0),
2017-09-07 08:19:11 +02:00
"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];
}
2017-09-10 13:17:32 +02:00
export function convertFromBitrate(value, unit) {
return value / Rates[unit];
}
export function convertedRate(bitrate) {
2017-09-07 08:19:11 +02:00
if (bitrate > Rates["GiB/s"]) {
return [bitrate / Rates["GiB/s"], "GiB/s"];
2017-09-07 08:19:11 +02:00
} else if (bitrate > Rates["MiB/s"]) {
return [bitrate / Rates["MiB/s"], "MiB/s"];
2017-09-07 08:19:11 +02:00
} else if (bitrate > Rates["KiB/s"]) {
return [bitrate / Rates["KiB/s"], "KiB/s"];
2017-08-25 04:49:24 +02:00
} else {
return [bitrate, "B/s"];
}
}
export function formatBitrate(bitrate) {
const [rate, unit] = convertedRate(bitrate);
let places = 2;
if (rate >= 100) {
places = 0;
} else if (rate >= 10) {
places = 1;
2017-08-25 04:49:24 +02:00
}
return `${rate.toFixed(places)} ${unit}`;
2017-08-25 04:49:24 +02:00
}
2017-09-10 14:21:08 +02:00
export function formatAmount(amount) {
const units = {
"GiB/s": "GiB",
"MiB/s": "MiB",
"KiB/s": "KiB",
"B/s": "bytes"
};
const [rate, unit] = convertedRate(amount);
let places = 2;
if (rate >= 100) {
places = 0;
} else if (rate >= 10) {
places = 1;
2017-09-10 14:21:08 +02:00
}
return `${rate.toFixed(places)} ${units[unit]}`;
2017-09-10 14:21:08 +02:00
}