feat:修改y轴显示数值

This commit is contained in:
zhangyu
2020-09-22 09:41:17 +08:00
parent 0c59fd7031
commit 2a1df14e5f
5 changed files with 158 additions and 29 deletions

View File

@@ -10,11 +10,12 @@ function none(value, index){
} }
function short(value,index,type=1,dot){ function short(value,index,type=1,dot){
if(type == 1){ if(type == 1){
return asciiCompute(value,1000,['','K','Mil','Bil','Til','Quadrillion','Quintillion'],0) return asciiCompute(value,1000,[' ','K','Mil','Bil','Til','Quadrillion','Quintillion'],0)
}else if(type == -1){ }else if(type == -1){
return asciiCompute(value,1000,['','K','Mil','Bil','Til','Quadrillion','Quintillion'],dot) console.log(value);
return asciiCompute(value,1000,[' ','K','Mil','Bil','Til','Quadrillion','Quintillion'],dot)
}else{ }else{
return asciiCompute(value,1000,['','K','Mil','Bil','Til','Quadrillion','Quintillion'],2) return asciiCompute(value,1000,[' ','K','Mil','Bil','Til','Quadrillion','Quintillion'],2)
} }
} }
@@ -316,7 +317,7 @@ function days(value,index,type=1,dot){
function asciiCompute(num,ascii,units,dot=2){ function asciiCompute(num,ascii,units,dot=2){
num=Number(num) num=Number(num)
let carry=0; let carry=0;
if(num > 0){ if(num > 1){
let log=Math.log(num)/Math.log(ascii) let log=Math.log(num)/Math.log(ascii)
carry = parseInt(log) carry = parseInt(log)
num = num / Math.pow(ascii,carry) num = num / Math.pow(ascii,carry)
@@ -446,37 +447,37 @@ let unitOptions=[
{ {
value:6, value:6,
compute:bits, compute:bits,
label:'bits' label:'bits',
}, },
{ {
value:7, value:7,
compute:bytes, compute:bytes,
label:'bytes' label:'bytes',
}, },
{ {
value:8, value:8,
compute:kilobytes, compute:kilobytes,
label:'kilobytes' label:'kilobytes',
}, },
{ {
value:9, value:9,
compute:megabytes, compute:megabytes,
label:'megabytes' label:'megabytes',
}, },
{ {
value:10, value:10,
compute:gigabytes, compute:gigabytes,
label:'gigabytes' label:'gigabytes',
}, },
{ {
value:11, value:11,
compute:terabytes, compute:terabytes,
label:'terabytes' label:'terabytes',
}, },
{ {
value:12, value:12,
compute:petabytes, compute:petabytes,
label:'petabytes' label:'petabytes',
} }
] ]
},//Data end },//Data end
@@ -487,47 +488,47 @@ let unitOptions=[
{ {
value:13, value:13,
compute:packetsSec, compute:packetsSec,
label:'packets/sec' label:'packets/sec',
}, },
{ {
value:14, value:14,
compute:bitsSec, compute:bitsSec,
label:'bits/sec' label:'bits/sec',
}, },
{ {
value:15, value:15,
compute:bytesSec, compute:bytesSec,
label:'bytes/sec' label:'bytes/sec',
}, },
{ {
value:16, value:16,
compute:kilobytesSec, compute:kilobytesSec,
label:'kilobytes/sec' label:'kilobytes/sec',
}, },
{ {
value:17, value:17,
compute:kilobitsSec, compute:kilobitsSec,
label:'kilobits/sec' label:'kilobits/sec',
}, },
{ {
value:18, value:18,
compute:megabytesSec, compute:megabytesSec,
label:'megabytes/sec' label:'megabytes/sec',
}, },
{ {
value:19, value:19,
compute:megabitsSec, compute:megabitsSec,
label:'megabits/sec' label:'megabits/sec',
}, },
{ {
value:20, value:20,
compute:gigabytesSec, compute:gigabytesSec,
label:'gigabytes/sec' label:'gigabytes/sec',
}, },
{ {
value:21, value:21,
compute:gigabitsSec, compute:gigabitsSec,
label:'gigabits/sec' label:'gigabits/sec',
}, },
{ {
value:22, value:22,
@@ -617,7 +618,7 @@ export default {
if(units.length < 1){ if(units.length < 1){
unitOptions.forEach((item,index)=>{ unitOptions.forEach((item,index)=>{
item.children.forEach((n,i)=>{ item.children.forEach((n,i)=>{
units.push(n); units.push({...n,type:item.label});
}) })
}) })
} }
@@ -625,5 +626,79 @@ export default {
}, },
formatData:function(value,unit){ formatData:function(value,unit){
return this.getUnit(unit).compute(value,null,2) return this.getUnit(unit).compute(value,null,2)
},
formatDatas:function(value,type,flow='ceil'){
let pow=0;
if(type ==='Time'){
return value
}
if(type==='Data' || type==='DataRate'){
if(value>1){
while(value>1000){
pow++;
value=value/1000
}
if(flow==='ceil'){
let length=JSON.stringify(Math.ceil(value)).length;
value=value/Math.pow(10,length-1);
return Math.ceil(value)*Math.pow(1024,pow)*Math.pow(10,length-1);
}else if(flow==='floor'){
let length=JSON.stringify(Math.floor(value)).length;
value=value/Math.pow(10,length-1);
return Math.floor(value)*Math.pow(1024,pow)*Math.pow(10,length-1);
}
}else{
return value
}
}
if(type==='Misc'){
if(value>1){
while(value>1000){
pow++;
value=value/1000
}
if(flow==='ceil'){
let length=JSON.stringify(Math.ceil(value)).length;
value=value/Math.pow(10,length-1);
return Math.ceil(value)*Math.pow(1000,pow)*Math.pow(10,length-1);
}else if(flow==='floor'){
let length=JSON.stringify(Math.floor(value)).length;
value=value/Math.pow(10,length-1);
return Math.floor(value)*Math.pow(1000,pow)*Math.pow(10,length-1);
}
}else{
return value
}
}
return value;
},
copies:function(value){
switch(parseInt(value)){
case 1: return 5;
case 2: return 2;
case 3: return 3;
case 4: return 4;
case 5: return 5;
case 6: return 3;
case 7: return 7;
case 8: return 8;
case 9: return 3;
case 10: return 5;
}
},
Interval:function(value,copies,type){
if(type==='Data' || type==='DataRate' || type==='Misc'){
let interVal=value/copies;
interVal = interVal || 1;
console.log(interVal);
return interVal
}
return 1;
} }
} }

View File

@@ -397,6 +397,7 @@
}, },
// chartSite用于区分是全屏显示还是局部显示 // chartSite用于区分是全屏显示还是局部显示
initChart(chartInfo, dataArg, ele, chartSite,legend) { initChart(chartInfo, dataArg, ele, chartSite,legend) {
console.log(dataArg);
this.chartInfo=chartInfo; this.chartInfo=chartInfo;
const self = this; const self = this;
this.chartType = ''; // 图表类型 this.chartType = ''; // 图表类型
@@ -404,7 +405,7 @@
this.chartType = 'line'; this.chartType = 'line';
} }
let minTime = null; let minTime = null;
let maxTime = null let maxTime = null;
if(dataArg.length>0 && dataArg[0].data if(dataArg.length>0 && dataArg[0].data
&& dataArg[0].data.length>0 && dataArg[0].data[0].length>0){ && dataArg[0].data.length>0 && dataArg[0].data[0].length>0){
let len = dataArg[0].data.length-1; let len = dataArg[0].data.length-1;
@@ -435,6 +436,48 @@
}; };
let stackIconBorderColor = (chartInfo.type==='stackArea'?'#53a3cb':'#7e7e7e'); let stackIconBorderColor = (chartInfo.type==='stackArea'?'#53a3cb':'#7e7e7e');
let stackIconChooseBorderColor = (chartInfo.type==='stackArea'?'#7e7e7e':'#53a3cb'); let stackIconChooseBorderColor = (chartInfo.type==='stackArea'?'#7e7e7e':'#53a3cb');
console.log(chartInfo, dataArg, chartSite,legend);
let maxValue='';
let minValue='';
if(chartInfo.type==='line' && chartInfo.unit){
maxValue=dataArg[0].data[0][1];
minValue=dataArg[0].data[0][1];
for(let j = 0; j < dataArg.length ; j++){
for (let i = 0; i < dataArg[j].data.length - 1; i++) {
maxValue = (maxValue < dataArg[j].data[i+1][1] ? dataArg[j].data[i+1][1] : maxValue);
minValue = (minValue > dataArg[j].data[i+1][1] ? dataArg[j].data[i+1][1] : minValue);
}
}
}
let chartUnit=chartInfo.unit?chartInfo.unit:2;
let unit=chartDataFormat.getUnit(chartUnit);
maxValue=chartDataFormat.formatDatas(maxValue,unit.type,'ceil');
minValue=chartDataFormat.formatDatas(minValue,unit.type,'floor');
let oldValue=maxValue;
console.log(maxValue,'123123');
let dot=0;
if(maxValue==1){
dot++;
}
if(oldValue>10){
while(oldValue>10){
oldValue=oldValue/10;
}
}else if(oldValue<1&&maxValue!==0){
while(oldValue<1&&oldValue>0){
oldValue=oldValue*10;
dot++;
}
maxValue=Math.ceil(oldValue)/Math.pow(10,dot);
dot++;
}
let copies=chartDataFormat.copies(oldValue);
console.log(oldValue,copies,maxValue)
let oldDot=2;
if(maxValue<=1){
oldDot=dot>6?6:dot;
}
// console.log(unit.compute(maxValue),unit.compute(minValue));
var option = { var option = {
title:{ title:{
show:false, show:false,
@@ -532,7 +575,6 @@
formatter:function(params){ formatter:function(params){
//display:inline-block;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis; //display:inline-block;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;
let str = `<div>`; let str = `<div>`;
//let str = `<div style='white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;min-width:150px;max-width:600px;display:inline-block;line-height: 18px;font-size:12px;font-family: Roboto,Helvetica Neue,Arial,sans-serif;'>`; //let str = `<div style='white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;min-width:150px;max-width:600px;display:inline-block;line-height: 18px;font-size:12px;font-family: Roboto,Helvetica Neue,Arial,sans-serif;'>`;
let sum = 0; let sum = 0;
params.forEach((item, i) => { params.forEach((item, i) => {
@@ -553,7 +595,7 @@
str += `<div style="white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;display: flex; justify-content: space-between; min-width: 150px; max-width: 600px; line-height: 18px; font-size: 12px;">`; str += `<div style="white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;display: flex; justify-content: space-between; min-width: 150px; max-width: 600px; line-height: 18px; font-size: 12px;">`;
str += `<div style="max-width: 500px;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;"><span style='display:inline-block;margin-right:5px;border-radius:10px;width:15px;height:5px;background-color: ${color};}'></span>${tip?(tip.alias?tip.alias:tip.name):item.seriesName} </div>`; str += `<div style="max-width: 500px;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;"><span style='display:inline-block;margin-right:5px;border-radius:10px;width:15px;height:5px;background-color: ${color};}'></span>${tip?(tip.alias?tip.alias:tip.name):item.seriesName} </div>`;
str += `<div style="padding-left: 10px;">`; str += `<div style="padding-left: 10px;">`;
str += chartDataFormat.getUnit(chartInfo.unit?chartInfo.unit:2).compute(val,null,2); str += chartDataFormat.getUnit(chartInfo.unit?chartInfo.unit:2).compute(val,null,-1,oldDot);
str += `</div>`; str += `</div>`;
str += `</div>`; str += `</div>`;
}); });
@@ -693,11 +735,12 @@
width: 1 width: 1
} }
}, },
// maxInterval:{},
//去掉y轴--start //去掉y轴--start
axisLine:{ axisLine:{
show:false show:false
}, },
minInterval: 1, minInterval: chartDataFormat.Interval(maxValue,copies,unit.type),
axisTick: { axisTick: {
show: false, show: false,
}, },
@@ -709,8 +752,10 @@
let chartUnit=chartInfo.unit; let chartUnit=chartInfo.unit;
chartUnit=chartUnit?chartUnit:2; chartUnit=chartUnit?chartUnit:2;
let unit=chartDataFormat.getUnit(chartUnit); let unit=chartDataFormat.getUnit(chartUnit);
console.log(value);
// console.log(value,unit,unit.compute(value,index),123);
//console.info(value, chartUnit, unit.compute(value,index)) //console.info(value, chartUnit, unit.compute(value,index))
return unit.compute(value,index); return unit.compute(value,index,-1,dot);
}, },
}, },
//boundaryGap:[0,0.2] //boundaryGap:[0,0.2]
@@ -718,8 +763,10 @@
useUTC: false,//使用本地时间 useUTC: false,//使用本地时间
series: dataArg series: dataArg
}; };
// params.series = dataArg; // params.series = dataArg;
if (chartSite === 'local') { // 本地显示 if (chartSite === 'local') { // 本地显示
console.log(legend,'legend');
if(legend){ if(legend){
this.legendList = []; this.legendList = [];
legend.forEach((item, i) => { legend.forEach((item, i) => {
@@ -1376,6 +1423,7 @@
this.divFirstShow = true; this.divFirstShow = true;
}, },
dealLegendAlias:function(legend,expression){ dealLegendAlias:function(legend,expression){
console.log(legend,expression,'123123');
if(/\{\{.+\}\}/.test(expression)){ if(/\{\{.+\}\}/.test(expression)){
let labelValue=expression.replace(/(\{\{.+?\}\})/g,function(i){ let labelValue=expression.replace(/(\{\{.+?\}\})/g,function(i){
let label=i.substr(i.indexOf('{{')+2,i.indexOf('}}')-i.indexOf('{{')-2); let label=i.substr(i.indexOf('{{')+2,i.indexOf('}}')-i.indexOf('{{')-2);

View File

@@ -725,6 +725,7 @@
height: 50px; height: 50px;
background-color: #232f3e; background-color: #232f3e;
z-index: 1; z-index: 1;
} }
.menu-create { .menu-create {

View File

@@ -13,7 +13,7 @@
<span class="expressions-box-value" style="font-weight: bold">Value</span> <span class="expressions-box-value" style="font-weight: bold">Value</span>
</div> </div>
<div v-for="item1 in item.value" class="expressions-metric"> <div v-for="item1 in item.value" class="expressions-metric">
<span class="expressions-box-label">{{legendFormat(item.metric,item.legend)}}</span> <span class="expressions-box-label">{{legendFormat(item.metric,item.legend,item1.metric)}}</span>
<span class="expressions-box-value">{{ dataFormat(item.unit,item1.value[1])}}</span> <span class="expressions-box-value">{{ dataFormat(item.unit,item1.value[1])}}</span>
</div> </div>
</div> </div>
@@ -85,7 +85,8 @@
dataFormat(unit,value){ dataFormat(unit,value){
return chartDataFormat.getUnit(unit?unit:2).compute(value) return chartDataFormat.getUnit(unit?unit:2).compute(value)
}, },
legendFormat:function(legend,expression){ legendFormat:function(legend,expression,metric){
console.log(metric)
if(/\{\{.+\}\}/.test(expression)&&expression){ if(/\{\{.+\}\}/.test(expression)&&expression){
let labelValue=expression.replace(/(\{\{.+?\}\})/g,function(i){ let labelValue=expression.replace(/(\{\{.+?\}\})/g,function(i){
let label=i.substr(i.indexOf('{{')+2,i.indexOf('}}')-i.indexOf('{{')-2); let label=i.substr(i.indexOf('{{')+2,i.indexOf('}}')-i.indexOf('{{')-2);
@@ -97,7 +98,7 @@
} }
return value?value:label; return value?value:label;
}); });
return labelValue return metric[labelValue]?metric[labelValue]:labelValue
}else{ }else{
return expression?expression:legend; return expression?expression:legend;
} }

View File

@@ -57,6 +57,7 @@
}, },
created() { created() {
this.option=chartConfig.getOption(this.chartType); this.option=chartConfig.getOption(this.chartType);
console.log(this.option);
if(this.showToolbox == false){ if(this.showToolbox == false){
//this.option.grid.top = 10; //this.option.grid.top = 10;
} }
@@ -158,6 +159,7 @@
this.noData=false; this.noData=false;
this.chart.clear(); this.chart.clear();
this.optionSeriesAll=[...this.option.series]; this.optionSeriesAll=[...this.option.series];
console.log( this.optionSeriesAll);
if(this.option.series instanceof Array){ if(this.option.series instanceof Array){
this.option.series=this.option.series.filter((item,index)=>index<this.dataSize); this.option.series=this.option.series.filter((item,index)=>index<this.dataSize);
} }
@@ -374,6 +376,7 @@
let option={ let option={
series:this.optionSeriesAll series:this.optionSeriesAll
}; };
console.log(option);
this.chart.setOption(option); this.chart.setOption(option);
this.chart.resize() this.chart.resize()
}, },
@@ -384,6 +387,7 @@
mounted() { mounted() {
this.chartInit(); this.chartInit();
EleResize.on(this.$el, this.resize, this.chartType); EleResize.on(this.$el, this.resize, this.chartType);
console.log(this.chartType)
}, },
watch:{ watch:{