diff --git a/src/store/modules/topology.ts b/src/store/modules/topology.ts index acdc7503..32da7b3f 100644 --- a/src/store/modules/topology.ts +++ b/src/store/modules/topology.ts @@ -403,6 +403,10 @@ export const topologyStore = defineStore({ return res.data; }, async getLinkClientMetrics(linkClientMetrics: string[]) { + if (!linkClientMetrics.length) { + this.setLinkClientMetrics({}); + return; + } const idsC = this.calls .filter((i: Call) => i.detectPoints.includes("CLIENT")) .map((b: Call) => b.id); @@ -414,6 +418,10 @@ export const topologyStore = defineStore({ } }, async getLinkServerMetrics(linkServerMetrics: string[]) { + if (!linkServerMetrics.length) { + this.setLinkServerMetrics({}); + return; + } const idsS = this.calls .filter((i: Call) => i.detectPoints.includes("SERVER")) .map((b: Call) => b.id); @@ -425,6 +433,10 @@ export const topologyStore = defineStore({ } }, async queryNodeMetrics(nodeMetrics: string[]) { + if (!nodeMetrics.length) { + this.setNodeMetricValue({}); + return; + } const ids = this.nodes.map((d: Node) => d.id); const param = await useQueryTopologyMetrics(nodeMetrics, ids); const res = await this.getNodeMetricValue(param); diff --git a/src/views/dashboard/List.vue b/src/views/dashboard/List.vue index f767b2b9..9211c0cd 100644 --- a/src/views/dashboard/List.vue +++ b/src/views/dashboard/List.vue @@ -46,7 +46,9 @@ limitations under the License. --> diff --git a/src/views/dashboard/related/topology/components/Graph.vue b/src/views/dashboard/related/topology/components/Graph.vue index 2a3d70b7..8389f8ba 100644 --- a/src/views/dashboard/related/topology/components/Graph.vue +++ b/src/views/dashboard/related/topology/components/Graph.vue @@ -132,9 +132,9 @@ onMounted(async () => { if (resp && resp.errors) { ElMessage.error(resp.errors); } - topologyStore.getLinkClientMetrics(settings.value.linkClientMetrics); - topologyStore.getLinkServerMetrics(settings.value.linkServerMetrics); - topologyStore.queryNodeMetrics(settings.value.nodeMetrics); + topologyStore.getLinkClientMetrics(settings.value.linkClientMetrics || []); + topologyStore.getLinkServerMetrics(settings.value.linkServerMetrics || []); + topologyStore.queryNodeMetrics(settings.value.nodeMetrics || []); const dom = document.querySelector(".topology")?.getBoundingClientRect() || { height: 40, width: 0, @@ -243,6 +243,7 @@ function handleLinkClick(event: any, d: Call) { if (!settings.value.linkDashboard) { return; } + const origin = dashboardStore.entity; const e = dashboardStore.entity === EntityType[1].value ? EntityType[0].value @@ -258,6 +259,7 @@ function handleLinkClick(event: any, d: Call) { }/${p.name.split(" ").join("-")}`; const routeUrl = router.resolve({ path }); window.open(routeUrl.href, "_blank"); + dashboardStore.setEntity(origin); } function update() { // node element @@ -387,6 +389,7 @@ async function handleInspect() { update(); } function handleGoEndpoint(name: string) { + const origin = dashboardStore.entity; const p = getDashboard({ name, layer: dashboardStore.layerId, @@ -399,8 +402,10 @@ function handleGoEndpoint(name: string) { const routeUrl = router.resolve({ path }); window.open(routeUrl.href, "_blank"); + dashboardStore.setEntity(origin); } function handleGoInstance(name: string) { + const origin = dashboardStore.entity; const p = getDashboard({ name, layer: dashboardStore.layerId, @@ -413,8 +418,10 @@ function handleGoInstance(name: string) { const routeUrl = router.resolve({ path }); window.open(routeUrl.href, "_blank"); + dashboardStore.setEntity(origin); } function handleGoDashboard(name: string) { + const origin = dashboardStore.entity; const p = getDashboard({ name, layer: dashboardStore.layerId, @@ -427,6 +434,7 @@ function handleGoDashboard(name: string) { const routeUrl = router.resolve({ path }); window.open(routeUrl.href, "_blank"); + dashboardStore.setEntity(origin); } function handleGoAlarm() { const path = `/alarm`; diff --git a/src/views/dashboard/related/topology/components/PodTopology.vue b/src/views/dashboard/related/topology/components/PodTopology.vue index b3eb4839..cdc0b029 100644 --- a/src/views/dashboard/related/topology/components/PodTopology.vue +++ b/src/views/dashboard/related/topology/components/PodTopology.vue @@ -135,9 +135,9 @@ async function loadTopology(id: string) { }; height.value = dom.height - 70; width.value = dom.width - 5; - topologyStore.getLinkClientMetrics(settings.value.linkClientMetrics); - topologyStore.getLinkServerMetrics(settings.value.linkServerMetrics); - topologyStore.queryNodeMetrics(settings.value.nodeMetrics); + topologyStore.getLinkClientMetrics(settings.value.linkClientMetrics || []); + topologyStore.getLinkServerMetrics(settings.value.linkServerMetrics || []); + topologyStore.queryNodeMetrics(settings.value.nodeMetrics || []); } function inspect() {