From 41ad830ea84c95871d8ba35530c53d1f438165e3 Mon Sep 17 00:00:00 2001 From: Qiuxia Fan Date: Tue, 15 Feb 2022 11:32:09 +0800 Subject: [PATCH] feat: set conditions for different layers node --- src/components/Selector.vue | 3 +- src/store/modules/topology.ts | 21 ++++++++++++-- src/types/topology.d.ts | 18 ++---------- .../dashboard/related/topology/Graph.vue | 29 ++++++++++++------- 4 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/components/Selector.vue b/src/components/Selector.vue index 10823d67..37920ca6 100644 --- a/src/components/Selector.vue +++ b/src/components/Selector.vue @@ -43,7 +43,6 @@ interface Option { } /*global defineProps, defineEmits*/ - const emit = defineEmits(["change"]); const props = defineProps({ options: { @@ -54,7 +53,7 @@ const props = defineProps({ type: [Array, String] as PropType, default: () => [], }, - size: { type: [], default: "default" }, + size: { type: null, default: "default" }, placeholder: { type: String, default: "Select a option" }, borderRadius: { type: Number, default: 3 }, multiple: { type: Boolean, default: false }, diff --git a/src/store/modules/topology.ts b/src/store/modules/topology.ts index 2dbfbb00..d6dde5bc 100644 --- a/src/store/modules/topology.ts +++ b/src/store/modules/topology.ts @@ -56,8 +56,25 @@ export const topologyStore = defineStore({ this.call = link; }, setTopology(data: { nodes: Node[]; calls: Call[] }) { - this.nodes = data.nodes; - this.calls = data.calls; + this.nodes = data.nodes.map((n: Node) => { + const service = + useSelectorStore().services.filter( + (d: Service) => d.id === n.id + )[0] || {}; + n.layer = service.layers ? service.layers[0] : null; + return n; + }); + this.calls = data.calls.map((c: Call) => { + for (const s of useSelectorStore().services) { + if (c.source.id === s.id) { + c.source.layer = s.layers[0]; + } + if (c.target.id === s.id) { + c.target.layer = s.layers[0]; + } + } + return c; + }); }, setNodeMetrics(m: { id: string; value: unknown }[]) { this.nodeMetrics = m; diff --git a/src/types/topology.d.ts b/src/types/topology.d.ts index f30ceb95..c0e57d1b 100644 --- a/src/types/topology.d.ts +++ b/src/types/topology.d.ts @@ -15,31 +15,17 @@ * limitations under the License. */ export interface Call { - avgResponseTime: number; - cpm: number; - isAlert: boolean; source: string | any; target: string | any; id: string; detectPoints: string[]; type?: string; - sourceObj?: any; - isGroupActive?: boolean; - latency?: number; + layer?: string; } export interface Node { - apdex: number; - avgResponseTime: number; - cpm: number; id: string; - isAlarm: boolean; name: string; - numOfServer: number; - numOfServerAlarm: number; - numOfServiceAlarm: number; - sla: number; type: string; isReal: boolean; - isGroupActive?: boolean; - latency?: number; + layer?: string; } diff --git a/src/views/dashboard/related/topology/Graph.vue b/src/views/dashboard/related/topology/Graph.vue index 4b9267b9..80a127a6 100644 --- a/src/views/dashboard/related/topology/Graph.vue +++ b/src/views/dashboard/related/topology/Graph.vue @@ -36,7 +36,7 @@ limitations under the License. -->
{ window.removeEventListener("resize", resize); }); -// watch( -// () => [topologyStore.nodes, topologyStore.calls], -// () => { -// update(); -// } -// );