配置项如下
let [in_new, in_min, in_max, in_avg] = ['0', '0', '0', '0', ]
let [out_new, out_min, out_max, out_avg] = ['0', '0', '0', '0', ]
let {
date,
in_data,
out_data
} = {
date: [],
in_data: [],
out_data: []
}
// 格式化时间
function getTime() {
var ts = arguments[0] || 0;
var t, h, i, s;
t = ts ? new Date(ts * 1000) : new Date();
h = t.getHours();
i = t.getMinutes();
s = t.getSeconds();
// 可根据需要在这里定义时间格式
return (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s);
}
// 生成初始数据
for (var i = 0; i < 100; i++) {
in_data.push(Math.ceil(Math.random() * 500));
out_data.push(Math.ceil(Math.random() * 800));
date.push(getTime(Math.round(new Date().getTime() / 1000) - i))
}
option = {
title: [{
text: '图表名称',
x: 15,
y: '20',
textBaseline: 'middle',
textStyle: {
fontSize: 20,
fontWeight: '500'
}
}, {
text: '设备接口',
x: 15,
y: '40',
textBaseline: 'middle',
textStyle: {
color:'#cccccc',
fontSize: 16,
fontWeight: '100'
}
}, {
text: '最新',
x2: 235,
y: '10',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: '最小',
x2: 165,
y: '10',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: '最大',
x2: 95,
y: '10',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: '平均',
x2: 20,
y: '10',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: in_new,
x2: 235,
y: '26',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: in_min,
x2: 165,
y: '26',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: in_max,
x2: 95,
y: '25',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: in_avg,
x2: 20,
y: '25',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: out_new,
x2: 235,
y: '40',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: out_min,
x2: 165,
y: '40',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: out_max,
x2: 95,
y: '40',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}, {
text: out_avg,
x2: 20,
y: '40',
textBaseline: 'middle',
textStyle: {
fontSize: 12,
fontWeight: '100'
}
}],
legend: [{
x2: 300,
y: 20,
icon: 'rect',
itemGap: 3,
itemWidth: 11,
itemHeight: 11,
orient: 'vertical',
data: ['接收', '发送']
}],
grid: [{
left: 20,
right: 20,
top: 80,
bottom: 20,
containLabel: true
}],
tooltip: {
trigger: 'axis',
axisPointer: {
lineStyle: {
color: '#57617B'
}
}
},
xAxis: [{
type: 'category',
boundaryGap: false,
axisLine: {
lineStyle: {
color: '#57617B'
}
},
data: date
}],
yAxis: [{
type: 'value',
axisTick: {
show: false
},
axisLine: {
lineStyle: {
color: '#57617B'
}
},
axisLabel: {
formatter: '{value}Mbps',
textStyle: {
fontSize: 12
}
},
splitLine: {
lineStyle: {
color: '#cccccc'
}
}
}],
series: [{
name: '发送',
type: 'line',
showSymbol: false,
lineStyle: {
normal: {
width: 0
}
},
itemStyle: {
normal: {
color: 'rgba(0,0,255)'
}
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(0,0,255, 1)'
}, {
offset: 0.8,
color: 'rgba(0,0,255, 0.5)'
}])
},
},
data: out_data
}, {
name: '接收',
type: 'line',
showSymbol: false,
lineStyle: {
normal: {
width: 0
}
},
itemStyle: {
normal: {
color: 'rgba(0,255,0)'
}
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(0,255,0,1)'
}, {
offset: 0.8,
color: 'rgba(0,255,0, 0.5)'
}])
},
},
data: in_data
}]
};
setInterval(function() {
date.shift()
in_data.shift();
out_data.shift();
in_data.push(Math.ceil(Math.random() * 500));
out_data.push(Math.ceil(Math.random() * 800));
date.push(getTime(Math.round(new Date().getTime() / 1000)))
in_new = in_data[in_data.length - 1]
out_new = out_data[out_data.length - 1]
in_min = Math.min.apply(null, in_data);
in_max = Math.max.apply(null, in_data);
out_min = Math.min.apply(null, out_data);
out_max = Math.max.apply(null, out_data);
in_avg = in_data.reduce(function(tmp, item, index) {
if (index != in_data.length - 1) {
return tmp + item;
} else {
return (tmp + item) / out_data.length;
}
});
out_avg = out_data.reduce(function(tmp, item, index) {
if (index != out_data.length - 1) {
return tmp + item;
} else {
return (tmp + item) / out_data.length;
}
});
myChart.setOption({
title: [{
text: '实时流量监控'
}, {
text: 'GigabitEthernet 0/24'
}, {
text: '最新'
}, {
text: '最小',
}, {
text: '最大'
}, {
text: '平均'
}, {
text: in_new + 'Mbps'
}, {
text: in_min + 'Mbps'
}, {
text: in_max + 'Mbps'
}, {
text: in_avg + 'Mbps'
}, {
text: out_new + 'Mbps'
}, {
text: out_min + 'Mbps'
}, {
text: out_max + 'Mbps'
}, {
text: out_avg + 'Mbps'
}],
series: [{
data: out_data
}, {
data: in_data
}],
xAxis: [{
data: date
}],
});
}, 1000)