1
1
<template >
2
2
<div ref =" main" style =" width : 100% ; height : 400px " ></div >
3
3
</template >
4
-
4
+
5
5
<script setup lang="ts">
6
- import * as echarts from " echarts" ;
7
- import { ref , onMounted , toRefs , watch } from ' vue'
6
+ import * as echarts from ' echarts'
7
+ import { onMounted , ref , toRefs , watch } from ' vue'
8
+
9
+ import router from ' @/router'
8
10
import { useServerStore } from ' @/store/clusterManagement/server'
9
- import router from " @/router"
10
11
11
12
const serverStore = useServerStore ()
12
- const state = serverStore .state ;
13
- const { fullServerDetail } = toRefs (state );
13
+ const state = serverStore .state
14
+ const { fullServerDetail } = toRefs (state )
14
15
15
16
// 获取概览数据从接口
16
17
17
18
const main = ref <HTMLDivElement >() // 使用ref创建虚拟DOM引用,使用时用main.value
18
19
19
- const drawChart = (( ) => {
20
+ const drawChart = () => {
20
21
function timestampToTime(timestamp : number ) {
21
22
const dateObj = new Date (+ timestamp * 1000 ) // ps, 必须是数字类型,不能是字符串, +运算符把字符串转化为数字,更兼容
22
23
const year = dateObj .getFullYear () // 获取年,
23
24
const month = dateObj .getMonth () + 1 // 获取月,必须要加1,因为月份是从0开始计算的
24
25
const date = dateObj .getDate () // 获取日,记得区分getDay()方法是获取星期几的。
25
- const hours = pad (dateObj .getHours ()) // 获取时, pad函数用来补0
26
+ const hours = pad (dateObj .getHours ()) // 获取时, pad函数用来补0
26
27
const minutes = pad (dateObj .getMinutes ()) // 获取分
27
28
const seconds = pad (dateObj .getSeconds ()) // 获取秒
28
29
return hours + ' :' + minutes + ' :' + seconds
@@ -32,83 +33,79 @@ const drawChart = (() => {
32
33
return + str >= 10 ? str : ' 0' + str
33
34
}
34
35
35
- const timeStamp: Array <string > = [];
36
-
37
- let trafficReceive = fullServerDetail .value .networkTraffic .receive ;
38
- // 获取timestamp并将其存入相应数组
39
- let timeItem = Object .values (trafficReceive );
40
- timeItem [0 ].forEach (item => {
41
- let convertedTime = timestampToTime (item .timestamp );
42
- timeStamp .push (convertedTime )
43
- })
36
+ const timeStamp: Array <string > = []
44
37
45
- // 获取键值
46
- const keys = [];
47
- let legendKeys = [];
48
- for (let key in trafficReceive ) {
49
- keys .push (key );
50
- }
51
- // 获取数据数组
52
- const receiveData = []
53
- timeItem .forEach (item => {
54
- let valueData = [];
55
- item .forEach (valueItem => {
56
- let val = valueItem .value / (1024 * 8 * 1024 );
57
- val = val .toFixed (2 )
58
- valueData .push (val )
59
- })
60
- receiveData .push (valueData )
61
- })
38
+ let trafficReceive = fullServerDetail .value .networkTraffic .receive
39
+ // 获取timestamp并将其存入相应数组
40
+ let timeItem = Object .values (trafficReceive )
41
+ timeItem [0 ].forEach (item => {
42
+ let convertedTime = timestampToTime (item .timestamp )
43
+ timeStamp .push (convertedTime )
44
+ })
62
45
63
- // 整理出图标里需要的数据数组
64
- const charReceiveData = []
65
- for (let i = 0 ; i < keys .length ; i ++ ) {
66
- charReceiveData .push (
67
- {
68
- name: keys [i ],
69
- type: ' line' ,
70
- data: receiveData [i ]
71
- },
72
- );
73
- }
46
+ // 获取键值
47
+ const keys = []
48
+ let legendKeys = []
49
+ for (let key in trafficReceive ) {
50
+ keys .push (key )
51
+ }
52
+ // 获取数据数组
53
+ const receiveData = []
54
+ timeItem .forEach (item => {
55
+ let valueData = []
56
+ item .forEach (valueItem => {
57
+ let val = valueItem .value / (1024 * 8 * 1024 )
58
+ val = val .toFixed (2 )
59
+ valueData .push (val )
60
+ })
61
+ receiveData .push (valueData )
62
+ })
74
63
64
+ // 整理出图标里需要的数据数组
65
+ const charReceiveData = []
66
+ for (let i = 0 ; i < keys .length ; i ++ ) {
67
+ charReceiveData .push ({
68
+ name: keys [i ],
69
+ type: ' line' ,
70
+ data: receiveData [i ],
71
+ })
72
+ }
75
73
76
- // 基于准备好的dom,初始化echarts实例
77
- var myChart = echarts .init (main .value );
78
- // 指定图表的配置项和数据
79
- var option = {
80
- title: { text: " 网络下行带宽" },
81
- tooltip: {
82
- trigger: ' axis'
83
- },
84
- legend: {
85
- data: keys ,
86
- bottom: 0
87
- },
88
- grid: {
89
- left: ' 3%' ,
90
- right: ' 4%' ,
91
- containLabel: true
92
- },
93
- xAxis: {
94
- type: ' category' ,
95
- boundaryGap: false ,
96
- data: timeStamp
74
+ // 基于准备好的dom,初始化echarts实例
75
+ var myChart = echarts .init (main .value )
76
+ // 指定图表的配置项和数据
77
+ var option = {
78
+ title: { text: ' 网络下行带宽' },
79
+ tooltip: {
80
+ trigger: ' axis' ,
81
+ },
82
+ legend: {
83
+ data: keys ,
84
+ bottom: 0 ,
85
+ },
86
+ grid: {
87
+ left: ' 3%' ,
88
+ right: ' 4%' ,
89
+ containLabel: true ,
90
+ },
91
+ xAxis: {
92
+ type: ' category' ,
93
+ boundaryGap: false ,
94
+ data: timeStamp ,
95
+ },
96
+ yAxis: {
97
+ type: ' value' ,
98
+ axisLabel: {
99
+ formatter: ' {value} MB/s' ,
97
100
},
98
- yAxis: {
99
- type: ' value' ,
100
- axisLabel: {
101
- formatter: ' {value} MB/s'
102
- }
103
- },
104
- series: charReceiveData
105
- };
106
- // 使用刚指定的配置项和数据显示图表。
107
- myChart .setOption (option );
108
-
109
- })
101
+ },
102
+ series: charReceiveData ,
103
+ }
104
+ // 使用刚指定的配置项和数据显示图表。
105
+ myChart .setOption (option )
106
+ }
110
107
111
- watch (fullServerDetail , ( newVal ) => {
112
- drawChart ();
108
+ watch (fullServerDetail , newVal => {
109
+ drawChart ()
113
110
})
114
- </script >
111
+ </script >
0 commit comments