diff --git a/src/views/components/common/trace-detail-chart-table.vue b/src/views/components/common/trace-detail-chart-table.vue index ae0088a643a121a9600330ebc5b191e9f74d131d..62de9188bd7344e49940a8dccc3e44ab2188de4e 100644 --- a/src/views/components/common/trace-detail-chart-table.vue +++ b/src/views/components/common/trace-detail-chart-table.vue @@ -137,7 +137,7 @@ limitations under the License. --> return arr; }, traverseTree(node, spanId, segmentId, data) { - if (!node) { + if (!node || node.isBroken) { return; } if (node.spanId === spanId && node.segmentId === segmentId) { diff --git a/src/views/components/trace/d3-trace.js b/src/views/components/trace/d3-trace.js index 3ded882502ac15aade12a2ba8687d92afd5f6939..5a8f91739a5b6d3bd233d18794fe6ab5656e4267 100644 --- a/src/views/components/trace/d3-trace.js +++ b/src/views/components/trace/d3-trace.js @@ -69,7 +69,7 @@ export default class Trace { L${d.target.y} ${d.target.x - 20} L${d.target.y} ${d.target.x - 5}`; } - init(data, row) { + init(data, row, fixSpansSize) { d3.select('.trace-xaxis').remove(); this.row = row; this.data = data; @@ -85,7 +85,7 @@ export default class Trace { if (d >= 1000) return d / 1000 + 's'; return d; }); - this.svg.attr('height', (this.row.length + 1) * this.barHeight); + this.svg.attr('height', (this.row.length + fixSpansSize + 1) * this.barHeight); this.svg .append('g') .attr('class', 'trace-xaxis') diff --git a/src/views/components/trace/trace-detail-chart-list.vue b/src/views/components/trace/trace-detail-chart-list.vue index 5ceea20195496a0ede750895a842f048eee3a7c1..16479995c31fcc8f81c13e25a7d861bad4c606cd 100644 --- a/src/views/components/trace/trace-detail-chart-list.vue +++ b/src/views/components/trace/trace-detail-chart-list.vue @@ -101,6 +101,7 @@ limitations under the License. --> list: [], currentSpan: [], loading: true, + fixSpansSize: 0, }; }, watch: { @@ -108,7 +109,7 @@ limitations under the License. --> if (!this.data.length) { return; } this.loading = true; this.changeTree(); - this.tree.init({label: 'TRACE_ROOT', children: this.segmentId}, this.data); + this.tree.init({label: 'TRACE_ROOT', children: this.segmentId}, this.data, this.fixSpansSize); this.tree.draw(() => { setTimeout(() => { this.loading = false; @@ -124,7 +125,7 @@ limitations under the License. --> // this.loading = true; this.changeTree(); this.tree = new Trace(this.$refs.traceList, this); - this.tree.init({label: 'TRACE_ROOT', children: this.segmentId}, this.data); + this.tree.init({label: 'TRACE_ROOT', children: this.segmentId}, this.data, this.fixSpansSize); this.tree.draw(); this.loading = false; // this.computedScale(); @@ -136,7 +137,7 @@ limitations under the License. --> this.showDetail = true; }, traverseTree(node, spanId, segmentId, data) { - if (!node) { return; } + if (!node || node.isBroken) { return; } if (node.spanId === spanId && node.segmentId === segmentId) { node.children.push(data); return; @@ -263,6 +264,7 @@ limitations under the License. --> segmentGroup[i.segmentId].push(i); } }); + this.fixSpansSize = fixSpans.length; segmentIdGroup.forEach((id) => { const currentSegment = segmentGroup[id].sort((a, b) => b.parentSpanId - a.parentSpanId); currentSegment.forEach((s) => { diff --git a/src/views/components/trace/trace-detail-chart-tree.vue b/src/views/components/trace/trace-detail-chart-tree.vue index 9caa4608239d5ffc285f62f53caa3cde010d2fa2..9f0d20934bde239301d0cec1d7a907e7dcf693e9 100644 --- a/src/views/components/trace/trace-detail-chart-tree.vue +++ b/src/views/components/trace/trace-detail-chart-tree.vue @@ -127,7 +127,7 @@ limitations under the License. --> this.showDetail = true; }, traverseTree(node, spanId, segmentId, data){ - if (!node) return; + if (!node || node.isBroken) return; if(node.spanId == spanId && node.segmentId == segmentId) {node.children.push(data);return;} if (node.children && node.children.length > 0) { for (let i = 0; i < node.children.length; i++) {