From 0879a35eeb105ce6f15267986191fe720b16d64c Mon Sep 17 00:00:00 2001 From: jackhoo_98 Date: Wed, 15 Mar 2023 13:54:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=90=E7=BB=B4=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E4=BB=AA=E8=A1=A8=E7=9B=98=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/link/DashBoard/components/Cpu.vue | 37 ++++++++++++------ src/views/link/DashBoard/components/Jvm.vue | 35 ++++++++++++----- .../link/DashBoard/components/Network.vue | 39 ++++++++++++------- .../link/DashBoard/components/TopCard.vue | 8 ++-- src/views/link/DashBoard/typings.d.ts | 4 ++ 5 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 src/views/link/DashBoard/typings.d.ts diff --git a/src/views/link/DashBoard/components/Cpu.vue b/src/views/link/DashBoard/components/Cpu.vue index 14ecc946..a637fbad 100644 --- a/src/views/link/DashBoard/components/Cpu.vue +++ b/src/views/link/DashBoard/components/Cpu.vue @@ -33,7 +33,17 @@ > -
+
+ +
+
@@ -50,26 +60,27 @@ import { areaStyleCpu, typeDataLine, } from './tool.ts'; +import { DataType } from '../typings'; const chartRef = ref>({}); const loading = ref(false); -const data = ref({ +const data = ref({ type: 'hour', time: [null, null], }); - +const isEmpty = ref(false); const pickerTimeChange = () => { data.value.type = undefined; }; -const getCPUEcharts = async (val) => { +const getCPUEcharts = async (val: any) => { loading.value = true; - const res = await dashboard(defulteParamsData('cpu', val)); + const res: any = await dashboard(defulteParamsData('cpu', val)); if (res.success) { const _cpuOptions = {}; const _cpuXAxis = new Set(); if (res.result?.length) { - res.result.forEach((item) => { + res.result.forEach((item: any) => { const value = item.data.value; const nodeID = item.data.clusterNodeId; _cpuXAxis.add( @@ -84,15 +95,18 @@ const getCPUEcharts = async (val) => { Number(value.cpuSystemUsage).toFixed(2), ); }); + handleCpuOptions(_cpuOptions, [..._cpuXAxis.keys()]); + } else { + handleCpuOptions([], []); + isEmpty.value = true; } - handleCpuOptions(_cpuOptions, [..._cpuXAxis.keys()]); } setTimeout(() => { loading.value = false; }, 300); }; -const setOptions = (optionsData, key) => ({ +const setOptions = (optionsData: any, key: string) => ({ data: arrayReverse(optionsData[key]), name: key, type: 'line', @@ -101,8 +115,9 @@ const setOptions = (optionsData, key) => ({ areaStyle: areaStyleCpu, }); -const handleCpuOptions = (optionsData, xAxis) => { - const chart = chartRef.value; +const handleCpuOptions = (optionsData: any, xAxis: any) => { + if (optionsData.length === 0 && xAxis.length === 0) return; + const chart: any = chartRef.value; if (chart) { const myChart = echarts.init(chart); const dataKeys = Object.keys(optionsData); @@ -114,7 +129,7 @@ const handleCpuOptions = (optionsData, xAxis) => { }, tooltip: { trigger: 'axis', - valueFormatter: (value) => `${value}%`, + valueFormatter: (value: any) => `${value}%`, }, yAxis: { type: 'value', diff --git a/src/views/link/DashBoard/components/Jvm.vue b/src/views/link/DashBoard/components/Jvm.vue index f77c80c9..399aa347 100644 --- a/src/views/link/DashBoard/components/Jvm.vue +++ b/src/views/link/DashBoard/components/Jvm.vue @@ -33,7 +33,17 @@ > -
+
+ +
+
@@ -50,26 +60,27 @@ import { areaStyleJvm, defulteParamsData, } from './tool.ts'; +import { DataType } from '../typings'; const chartRef = ref>({}); const loading = ref(false); -const data = ref({ +const data = ref({ type: 'hour', time: [null, null], }); - +const isEmpty = ref(false); const pickerTimeChange = () => { data.value.type = undefined; }; -const getJVMEcharts = async (val) => { +const getJVMEcharts = async (val: any) => { loading.value = true; - const res = await dashboard(defulteParamsData('jvm', val)); + const res: any = await dashboard(defulteParamsData('jvm', val)); if (res.success) { const _jvmOptions = {}; const _jvmXAxis = new Set(); if (res.result?.length) { - res.result.forEach((item) => { + res.result.forEach((item: any) => { const value = item.data.value; const memoryJvmHeapFree = value.memoryJvmHeapFree; const memoryJvmHeapTotal = value.memoryJvmHeapTotal; @@ -90,15 +101,18 @@ const getJVMEcharts = async (val) => { ); _jvmOptions[nodeID].push(_value); }); + handleJVMOptions(_jvmOptions, [..._jvmXAxis.keys()]); + } else { + handleJVMOptions([], []); + isEmpty.value = true; } - handleJVMOptions(_jvmOptions, [..._jvmXAxis.keys()]); } setTimeout(() => { loading.value = false; }, 300); }; -const setOptions = (optionsData, key) => ({ +const setOptions = (optionsData: any, key: string) => ({ data: arrayReverse(optionsData[key]), name: key, type: 'line', @@ -106,8 +120,9 @@ const setOptions = (optionsData, key) => ({ symbol: 'none', areaStyle: areaStyleJvm, }); -const handleJVMOptions = (optionsData, xAxis) => { - const chart = chartRef.value; +const handleJVMOptions = (optionsData: any, xAxis: any) => { + if (optionsData.length === 0 && xAxis.length === 0) return; + const chart: any = chartRef.value; if (chart) { const myChart = echarts.init(chart); const dataKeys = Object.keys(optionsData); diff --git a/src/views/link/DashBoard/components/Network.vue b/src/views/link/DashBoard/components/Network.vue index 930f191c..23ed3520 100644 --- a/src/views/link/DashBoard/components/Network.vue +++ b/src/views/link/DashBoard/components/Network.vue @@ -43,7 +43,15 @@
-
+ +
@@ -59,33 +67,34 @@ import { } from './tool.ts'; import moment from 'moment'; import * as echarts from 'echarts'; +import { DataType } from '../typings.d'; const chartRef = ref>({}); const loading = ref(false); -const data = ref({ +const data = ref({ type: 'bytesRead', time: { - type: 'today', + type: 'hour', time: [null, null], }, }); - +const isEmpty = ref(false); const pickerTimeChange = () => { data.value.time.type = undefined; }; -const getNetworkEcharts = async (val) => { +const getNetworkEcharts = async (val: any) => { loading.value = true; - const resp = await dashboard(networkParams(val)); + const resp: any = await dashboard(networkParams(val)); if (resp.success) { const _networkOptions = {}; const _networkXAxis = new Set(); if (resp.result.length) { - resp.result.forEach((item) => { + resp.result.forEach((item: any) => { const value = item.data.value; - const _data = []; + const _data: Array = []; const nodeID = item.data.clusterNodeId; - value.forEach((item) => { + value.forEach((item: any) => { _data.push(item.value); _networkXAxis.add(item.timeString); }); @@ -98,13 +107,14 @@ const getNetworkEcharts = async (val) => { handleNetworkOptions(_networkOptions, [..._networkXAxis.keys()]); } else { handleNetworkOptions([], []); + isEmpty.value = true; } } setTimeout(() => { loading.value = false; }, 300); }; -const networkValueRender = (obj) => { +const networkValueRender = (obj: any) => { const { value } = obj; let _data = ''; if (value >= 1024 && value < 1024 * 1024) { @@ -117,7 +127,7 @@ const networkValueRender = (obj) => { return `${obj?.axisValueLabel}
${obj?.marker}${obj?.seriesName}: ${_data}`; }; -const setOptions = (data, key) => ({ +const setOptions = (data: any, key: string) => ({ data: data[key]._data, // .map((item) => Number((item / 1024 / 1024).toFixed(2))), name: key, type: 'line', @@ -125,8 +135,9 @@ const setOptions = (data, key) => ({ areaStyle, }); -const handleNetworkOptions = (optionsData, xAxis) => { - const chart = chartRef.value; +const handleNetworkOptions = (optionsData: any, xAxis: any) => { + if (optionsData.length === 0 && xAxis.length === 0) return; + const chart: any = chartRef.value; if (chart) { const myChart = echarts.init(chart); const dataKeys = Object.keys(optionsData); @@ -145,7 +156,7 @@ const handleNetworkOptions = (optionsData, xAxis) => { }, tooltip: { trigger: 'axis', - formatter: (_value) => networkValueRender(_value[0]), + formatter: (_value: any) => networkValueRender(_value[0]), }, color: ['#979AFF'], series: dataKeys.length diff --git a/src/views/link/DashBoard/components/TopCard.vue b/src/views/link/DashBoard/components/TopCard.vue index f1b17c9c..2bf79655 100644 --- a/src/views/link/DashBoard/components/TopCard.vue +++ b/src/views/link/DashBoard/components/TopCard.vue @@ -49,7 +49,7 @@ import { getWebSocket } from '@/utils/websocket'; import { map } from 'rxjs/operators'; const serverId = ref(); -const serverNodeOptions = ref([]); +const serverNodeOptions = ref>([]); const topValues = ref({ cpu: 0, jvm: 0, @@ -73,7 +73,7 @@ const getData = () => { interval: '1s', agg: 'avg', }) - .pipe(map((res) => res.payload)) + .pipe(map((res: any) => res.payload)) .subscribe((payload) => { const { value: { cpu, memory, disk }, @@ -103,9 +103,9 @@ const getData = () => { }; onMounted(() => { - serverNode().then((resp) => { + serverNode().then((resp: any) => { if (resp.success) { - serverNodeOptions.value = resp.result.map((item) => ({ + serverNodeOptions.value = resp.result.map((item: any) => ({ label: item.name, value: item.id, })); diff --git a/src/views/link/DashBoard/typings.d.ts b/src/views/link/DashBoard/typings.d.ts new file mode 100644 index 00000000..ffcc8623 --- /dev/null +++ b/src/views/link/DashBoard/typings.d.ts @@ -0,0 +1,4 @@ +export type DataType = { + type: string | undefined; + time: array; +};