From 28945c560a32756093e092c2fb80e6970e5ca291 Mon Sep 17 00:00:00 2001 From: Fine Date: Tue, 25 Mar 2025 16:14:06 +0800 Subject: [PATCH] selected span nodes --- .../trace/components/D3Graph/Index.vue | 25 +++++++------------ .../related/trace/utils/d3-trace-list.ts | 16 +++++++++--- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/views/dashboard/related/trace/components/D3Graph/Index.vue b/src/views/dashboard/related/trace/components/D3Graph/Index.vue index ea0d602a..2039836b 100644 --- a/src/views/dashboard/related/trace/components/D3Graph/Index.vue +++ b/src/views/dashboard/related/trace/components/D3Graph/Index.vue @@ -15,7 +15,7 @@ limitations under the License. -->
- + @@ -42,7 +42,7 @@ limitations under the License. --> const showDetail = ref(false); const fixSpansSize = ref(0); const segmentId = ref([]); - const currentSpan = ref>([]); + const currentSpan = ref>(null); const refSpans = ref>([]); const tree = ref>(null); const traceGraph = ref>(null); @@ -361,7 +361,7 @@ limitations under the License. --> }, ); - diff --git a/src/views/dashboard/related/trace/utils/d3-trace-list.ts b/src/views/dashboard/related/trace/utils/d3-trace-list.ts index 363914b4..4d2cbbfa 100644 --- a/src/views/dashboard/related/trace/utils/d3-trace-list.ts +++ b/src/views/dashboard/related/trace/utils/d3-trace-list.ts @@ -42,6 +42,7 @@ export default class ListGraph { private xAxis: any = null; private sequentialScale: any = null; private root: any = null; + private selectedNode: any = null; constructor(el: HTMLDivElement, handleSelectSpan: (i: Trace) => void) { this.handleSelectSpan = handleSelectSpan; this.el = el; @@ -144,16 +145,23 @@ export default class ListGraph { .attr("transform", `translate(${source.y0},${source.x0})`) .attr("class", "trace-node") .attr("style", "cursor: pointer") - .style("opacity", 0) .on("mouseover", function (event: MouseEvent, d: Trace) { t.tip.show(d, this); }) .on("mouseout", function (event: MouseEvent, d: Trace) { t.tip.hide(d, this); }) - .on("click", (event: MouseEvent, d: Trace) => { - if (this.handleSelectSpan) { - this.handleSelectSpan(d); + .on("click", function (event: MouseEvent, d: Trace & { id: string }) { + event.stopPropagation(); + if (t.selectedNode) { + t.selectedNode.classed("highlighted", false); + } + if (t.selectedNode?.datum().id !== d.id) { + d3.select(this).classed("highlighted", true); + } + t.selectedNode = d3.select(this); + if (t.handleSelectSpan) { + t.handleSelectSpan(d); } }); nodeEnter