diff --git a/src/store/modules/topology.ts b/src/store/modules/topology.ts index 7766b79a..dee037ae 100644 --- a/src/store/modules/topology.ts +++ b/src/store/modules/topology.ts @@ -599,7 +599,12 @@ export const topologyStore = defineStore({ const dashboardStore = useDashboardStore(); const { currentService } = useSelectorStore(); const id = this.node ? this.node.id : (currentService || {}).id; - const layer = this.node ? this.node.layer : dashboardStore.layerId; + let layer = dashboardStore.layerId; + if (this.node) { + layer = this.node.layers.includes(dashboardStore.layerId) + ? dashboardStore.layerId + : this.node.layers.filter((d: string) => d !== dashboardStore.layerId)[0]; + } if (!(id && layer)) { return new Promise((resolve) => resolve({})); } diff --git a/src/views/dashboard/related/topology/service/ServiceMap.vue b/src/views/dashboard/related/topology/service/ServiceMap.vue index a11f5f42..111f2380 100644 --- a/src/views/dashboard/related/topology/service/ServiceMap.vue +++ b/src/views/dashboard/related/topology/service/ServiceMap.vue @@ -128,7 +128,13 @@ limitations under the License. --> {{ item.title }} - + @@ -269,6 +275,20 @@ limitations under the License. --> currentNode.value = null; } + function getHierarchyTitle() { + if (!currentNode.value) { + return; + } + if (currentNode.value.layers.includes(dashboardStore.layerId)) { + return `${dashboardStore.layerId} --> ${currentNode.value.name}`; + } + const layer = currentNode.value.layers.filter((d: string) => d !== dashboardStore.layerId); + if (layer.length) { + return `${layer[0]} --> ${currentNode.value.name}`; + } + return ""; + } + async function initLegendMetrics() { if (!topologyStore.nodes.length) { return;