自定义的YAxis显示和ChartJ的stepSize

时间:2019-10-04 05:58:51

标签: javascript ecmascript-6 charts

我创建了一个图表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

我创建了一个将数据转换为GB或MB的函数,原始数据看起来像这样

          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];
               }
            } 

有什么主意吗?

0 个答案:

没有答案