import Humanize from "humanize-plus" import echarts from "echarts/lib/echarts" import "echarts/theme/macarons" import "echarts/lib/chart/bar" import "echarts/lib/chart/pie" import "echarts/lib/component/tooltip" import "echarts/lib/component/title" function DrawTrafficChart(elementId, trafficIn, trafficOut) { let myChart = echarts.init(document.getElementById(elementId), 'macarons'); myChart.showLoading() let option = { title: { text: 'Network Traffic', subtext: 'today', x: 'center' }, tooltip: { trigger: 'item', formatter: function(v) { return Humanize.fileSize(v.data.value) + " (" + v.percent + "%)" } }, series: [{ type: 'pie', radius: '55%', center: ['50%', '60%'], data: [{ value: trafficIn, name: 'Traffic In' }, { value: trafficOut, name: 'Traffic Out' }, ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }] }; myChart.setOption(option); myChart.hideLoading() } function DrawProxyChart(elementId, serverInfo) { if (serverInfo.proxy_type_count.tcp == null) { serverInfo.proxy_type_count.tcp = 0 } if (serverInfo.proxy_type_count.udp == null) { serverInfo.proxy_type_count.udp = 0 } if (serverInfo.proxy_type_count.http == null) { serverInfo.proxy_type_count.http = 0 } if (serverInfo.proxy_type_count.https == null) { serverInfo.proxy_type_count.https = 0 } let myChart = echarts.init(document.getElementById(elementId), 'macarons') myChart.showLoading() let option = { title: { text: 'Proxies', subtext: 'now', x: 'center' }, tooltip: { trigger: 'item', formatter: function(v) { return v.data.value } }, series: [{ type: 'pie', radius: '55%', center: ['50%', '60%'], data: [{ value: serverInfo.proxy_type_count.tcp, name: 'TCP' }, { value: serverInfo.proxy_type_count.udp, name: 'UDP' }, { value: serverInfo.proxy_type_count.http, name: 'HTTP' }, { value: serverInfo.proxy_type_count.https, name: 'HTTPS' }], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }] }; myChart.setOption(option); myChart.hideLoading() } // 7 days function DrawProxyTrafficChart(elementId, trafficInArr, trafficOutArr) { let params = { width: '600px', height: '400px' } let myChart = echarts.init(document.getElementById(elementId), 'macarons', params); myChart.showLoading() trafficInArr = trafficInArr.reverse() trafficOutArr = trafficOutArr.reverse() let now = new Date() now = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 6) let dates = new Array() for (let i = 0; i < 7; i++) { dates.push(now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate()) now = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1) } let option = { tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, formatter: function(data) { let html = '' if (data.length > 0) { html += data[0].name + '
' } for (let v of data) { let colorEl = ''; html += colorEl + v.seriesName + ': ' + Humanize.fileSize(v.value) + '
' } return html } }, legend: { data: ['Traffic In', 'Traffic Out'] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [{ type: 'category', data: dates }], yAxis: [{ type: 'value', axisLabel: { formatter: function(value) { return Humanize.fileSize(value) } } }], series: [{ name: 'Traffic In', type: 'bar', data: trafficInArr }, { name: 'Traffic Out', type: 'bar', data: trafficOutArr }] }; myChart.setOption(option); myChart.hideLoading() } export { DrawTrafficChart, DrawProxyChart, DrawProxyTrafficChart }