节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
2.07 KiB
Stardust
<script setup lang="ts">
/**
 * Monitors/Trace/Graph — 调用链关系图(自定义迁移页,Monitors Area 隐藏页兜底)
 *
 * 与 Trace/Graph 内容一致(复用同一个通用图解析组件 TraceGraph)。
 * 路由:#/Monitors/Trace/Graph?traceId=<id>
 * 复用通用组件 TraceGraph(props traceId,内部拉 SampleData + 解析 nodes/links/categories + ECharts)。
 *
 * 路由兜底:#/Monitors/Trace/Graph 为隐藏三级路由,须在 src/main.ts 中
 * addRoute('/Monitors/Trace/Graph', ...) 指向本页(import.meta.glob 只扫描各目录下的 index.vue,
 * 本页文件名为 graph.vue,不会被 catch-all 命中,必须手动 addRoute)。
 */
import { computed } from 'vue';
import { useRoute } from 'vue-router';
import TraceGraph from '../../../components/TraceGraph.vue';

const route = useRoute();

const traceId = computed<string>(() => {
  const q = (route.query.traceId as string) || '';
  const p = (route.params.id as string) || '';
  return (q || p || '').trim();
});
</script>

<template>
  <div class="monitors-trace-graph-page">
    <div class="mtgp-header">
      <h3 class="mtgp-title">
        调用链关系图 · {{ traceId || '未知 TraceId' }}
      </h3>
    </div>
    <div class="mtgp-card">
      <TraceGraph :trace-id="traceId" />
    </div>
  </div>
</template>

<style lang="scss" scoped>
.monitors-trace-graph-page {
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;

  .mtgp-header {
    display: flex;
    align-items: center;
    padding: var(--el-main-padding, 24px) var(--el-main-padding, 24px) 0;

    .mtgp-title {
      margin: 0;
      font-size: 18px;
      font-weight: 600;
      color: var(--el-text-color-primary);
      word-break: break-all;
    }
  }

  .mtgp-card {
    flex: 1;
    margin: var(--el-main-padding, 24px);
    background: var(--el-bg-color-overlay);
    border: 1px solid var(--el-border-color-light);
    border-radius: var(--el-border-radius-base);
    box-shadow: var(--el-box-shadow-light);
    overflow: hidden;
    display: flex;
    flex-direction: column;
  }
}
</style>