Я создал диаграмму js, и ее YAxis генерируется динамически на основе ответа API, пока что это имеет место в Yaxis
1.49 GB
1.3 GB
1.12 GB
953.67 MB
762.94 MB
572.2 MB
381.47 MB
190.73 MB
0 Bytes
То, что я хочу достичь на основе выше, выглядит так:
2 GB
1 GB
900 MB
800 MB
700 MB
600 MB
500 MB
400 MB
300 MB
200 MB
100 MB
0 BYTES
Я создал функцию для преобразования данных в ГБ или МБ, где исходные данные выглядят так:
223990547.68666667,25568546.453333333, 44518612.25067709
yAxes: [
{
ticks: {
callback:(v) => {
return this.formatBytes(v)
},
.....
function formatBytes(bytes) {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB',
'EB', 'ZB', 'YB'];
if(bytes >= 0) {
const i = Math.floor(Math.log(bytes) / Math.log(k));
if(i <= 0 || i === -1) {
return '0 Byte'
}
let positiveBytes = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));
return parseFloat((bytes / Math.pow(k,i)).toFixed(dm)) + ' ' + sizes[i];
}
}
Есть идеи?