需求:单位为Bit/s的数据需要换算y轴、legend和tooltip的单位;
显示数据时需要换算单位是因为数据以比特每秒(Bit/s)的形式返回,但是在实际展示中,可能更方便和易读的是使用其他单位,例如Gb/s、Mb/s、Kb/s等等
换算Y轴的单位:需要根据负 Y 轴关键字处理y轴刻度值,并将数据放在-y轴
实现思路:判断legend中是否含有negative_y_keyword关键字,含有的放到负轴,需要转成负数(后端返回的都是正数);换算y轴的单位
data.value = props.series.metrics?.map((item: any, index: any) => {
/* 判断legend中是否含有negative_y_keyword关键字,含有的放到正轴 */
const isNegative = item.legend.includes(props.series.negative_y_keyword);
return {
name: item.legend,
type: 'line',
symbol: 'none',
data: item.values.map((value: any) => {
let yValue = parseInt(value[1], 10);
if (isNegative === true) {
yValue = -yValue;
}
return [value[0], yValue];
}),
color: color[index % 10],
lineStyle: {
width: 1, // 设置曲线的粗细,单位为像素
},
areaStyle: {
opacity: 0.1 }, // 设置曲线阴影的透明度
};
});
/* Bit/s的Y坐标轴数据单位转换 */
const yAxisTransUnit = (total: number) => {
if (total > 1000000000 || total < -1000000000) {
return `