|
39 | 39 | ></el-date-picker> |
40 | 40 | </div> |
41 | 41 | </template> |
42 | | - <div class="chart"> |
| 42 | + <div class="chart" v-loading="loadingMap.load"> |
43 | 43 | <v-charts |
44 | 44 | height="400px" |
45 | 45 | id="loadLoadChart" |
|
71 | 71 | ></el-date-picker> |
72 | 72 | </div> |
73 | 73 | </template> |
74 | | - <div class="chart"> |
| 74 | + <div class="chart" v-loading="loadingMap.cpu"> |
75 | 75 | <v-charts |
76 | 76 | height="400px" |
77 | 77 | id="loadCPUChart" |
|
101 | 101 | ></el-date-picker> |
102 | 102 | </div> |
103 | 103 | </template> |
104 | | - <div class="chart"> |
| 104 | + <div class="chart" v-loading="loadingMap.memory"> |
105 | 105 | <v-charts |
106 | 106 | height="400px" |
107 | 107 | id="loadMemoryChart" |
|
152 | 152 | ></el-date-picker> |
153 | 153 | </div> |
154 | 154 | </template> |
155 | | - <div class="chart"> |
| 155 | + <div class="chart" v-loading="loadingMap.io"> |
156 | 156 | <v-charts |
157 | 157 | height="400px" |
158 | 158 | id="loadIOChart" |
|
201 | 201 | ></el-date-picker> |
202 | 202 | </div> |
203 | 203 | </template> |
204 | | - <div class="chart"> |
| 204 | + <div class="chart" v-loading="loadingMap.network"> |
205 | 205 | <v-charts |
206 | 206 | height="400px" |
207 | 207 | id="loadNetworkChart" |
@@ -246,6 +246,13 @@ const netOptions = ref(); |
246 | 246 | const ioChoose = ref(); |
247 | 247 | const ioOptions = ref(); |
248 | 248 | const chartsOption = ref({ loadLoadChart: null, loadCPUChart: null, loadMemoryChart: null, loadNetworkChart: null }); |
| 249 | +const loadingMap = reactive({ |
| 250 | + load: false, |
| 251 | + cpu: false, |
| 252 | + memory: false, |
| 253 | + io: false, |
| 254 | + network: false, |
| 255 | +}); |
249 | 256 |
|
250 | 257 | const searchTime = ref(); |
251 | 258 | const searchInfo = reactive<Host.MonitorSearch>({ |
@@ -299,36 +306,41 @@ const search = async (param: string) => { |
299 | 306 | searchInfo.startTime = searchTime.value[0]; |
300 | 307 | searchInfo.endTime = searchTime.value[1]; |
301 | 308 | } |
302 | | - const res = await loadMonitor(searchInfo); |
303 | | - monitorBase.value = res.data; |
304 | | - for (const item of monitorBase.value) { |
305 | | - if (!item.value) { |
306 | | - item.value = []; |
307 | | - item.date = []; |
308 | | - } |
309 | | - switch (item.param) { |
310 | | - case 'base': |
311 | | - let baseDate = item.date.length === 0 ? loadEmptyDate(timeRangeCpu.value) : item.date; |
312 | | - baseDate = baseDate.map(function (item: any) { |
313 | | - return dateFormatWithoutYear(item); |
314 | | - }); |
315 | | - if (param === 'cpu' || param === 'all') { |
316 | | - initCPUCharts(baseDate, item); |
317 | | - } |
318 | | - if (param === 'memory' || param === 'all') { |
319 | | - initMemCharts(baseDate, item); |
320 | | - } |
321 | | - if (param === 'load' || param === 'all') { |
322 | | - initLoadCharts(item); |
323 | | - } |
324 | | - break; |
325 | | - case 'io': |
326 | | - initIOCharts(item); |
327 | | - break; |
328 | | - case 'network': |
329 | | - initNetCharts(item); |
330 | | - break; |
| 309 | + setChartLoading(param, true); |
| 310 | + try { |
| 311 | + const res = await loadMonitor(searchInfo); |
| 312 | + monitorBase.value = res.data; |
| 313 | + for (const item of monitorBase.value) { |
| 314 | + if (!item.value) { |
| 315 | + item.value = []; |
| 316 | + item.date = []; |
| 317 | + } |
| 318 | + switch (item.param) { |
| 319 | + case 'base': |
| 320 | + let baseDate = item.date.length === 0 ? loadEmptyDate(timeRangeCpu.value) : item.date; |
| 321 | + baseDate = baseDate.map(function (item: any) { |
| 322 | + return dateFormatWithoutYear(item); |
| 323 | + }); |
| 324 | + if (param === 'cpu' || param === 'all') { |
| 325 | + initCPUCharts(baseDate, item); |
| 326 | + } |
| 327 | + if (param === 'memory' || param === 'all') { |
| 328 | + initMemCharts(baseDate, item); |
| 329 | + } |
| 330 | + if (param === 'load' || param === 'all') { |
| 331 | + initLoadCharts(item); |
| 332 | + } |
| 333 | + break; |
| 334 | + case 'io': |
| 335 | + initIOCharts(item); |
| 336 | + break; |
| 337 | + case 'network': |
| 338 | + initNetCharts(item); |
| 339 | + break; |
| 340 | + } |
331 | 341 | } |
| 342 | + } finally { |
| 343 | + setChartLoading(param, false); |
332 | 344 | } |
333 | 345 | }; |
334 | 346 |
|
@@ -356,6 +368,34 @@ const loadOptions = async () => { |
356 | 368 | search('all'); |
357 | 369 | }; |
358 | 370 |
|
| 371 | +const setChartLoading = (param: string, value: boolean) => { |
| 372 | + if (param === 'all') { |
| 373 | + loadingMap.load = value; |
| 374 | + loadingMap.cpu = value; |
| 375 | + loadingMap.memory = value; |
| 376 | + loadingMap.io = value; |
| 377 | + loadingMap.network = value; |
| 378 | + return; |
| 379 | + } |
| 380 | + switch (param) { |
| 381 | + case 'load': |
| 382 | + loadingMap.load = value; |
| 383 | + break; |
| 384 | + case 'cpu': |
| 385 | + loadingMap.cpu = value; |
| 386 | + break; |
| 387 | + case 'memory': |
| 388 | + loadingMap.memory = value; |
| 389 | + break; |
| 390 | + case 'io': |
| 391 | + loadingMap.io = value; |
| 392 | + break; |
| 393 | + case 'network': |
| 394 | + loadingMap.network = value; |
| 395 | + break; |
| 396 | + } |
| 397 | +}; |
| 398 | +
|
359 | 399 | function initLoadCharts(item: Host.MonitorData) { |
360 | 400 | let itemLoadDate = item.date.length === 0 ? loadEmptyDate(timeRangeLoad.value) : item.date; |
361 | 401 | let loadDate = itemLoadDate.map(function (item: any) { |
|
0 commit comments