vue 动态生成拓扑图的示例

横向拓扑

在 index.html 文件中引入文件。

 <link href=\"https://magicbox.bk.tencent.com/static_api/v3/assets/bootstrap-3.3.4/css/bootstrap.min.css\" rel=\"external nofollow\" rel=\"stylesheet\">
 <link href=\"https://magicbox.bk.tencent.com/static_api/v3/assets/bkTopology-1.1/css/bkTopology.css\" rel=\"external nofollow\" rel=\"stylesheet\">
 <script src=\"https://magicbox.bk.tencent.com/static_api/v3/assets/js/jquery-1.10.2.min.js\"></script>
 <script src=\"https://magicbox.bk.tencent.com/static_api/v3/assets/bootstrap-3.3.4/js/bootstrap.min.js\"></script>
 <script src=\"https://magicbox.bk.tencent.com/static_api/v3/assets/bkTopology-1.2/js/bkTopology.js\"></script>

在需要绘制拓扑图的组件进行编程。

<template>
 <div>
  <span>S型拓扑图</span>
  <div class=\"bktopo-container\">
   <div class=\"bktopo_demo\" id=\"bktopo_demo2\">
    <div class=\"none node\" id=\"node-templates\" data-container=\"body\" data-placement=\"top\" data-html=\"true\"
     data-trigger=\"hover\">
     <div class=\"node-container\"><span class=\"node-text\"></span></div>
    </div>
    <div class=\"bktopo_box\" style=\"height:350px;\"></div>
   </div>
  </div>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    data: {
     \"nodes\": [
      { \"id\": \"root\", \"x\": 10, \"y\": 152, \"height\": 50, \"width\": 120, \"text\": \"卡机健康度\", \"className\": \"info\" },
      { \"id\": \"child1\", \"x\": 200, \"y\": 30, \"height\": 50, \"width\": 120, \"text\": \"进程CPU监控\", \"className\": \"info\" },
      { \"id\": \"child2\", \"x\": 200, \"y\": 90, \"height\": 50, \"width\": 120, \"text\": \"网管网络故障监控\", \"className\": \"info\" },
      { \"id\": \"child3\", \"x\": 200, \"y\": 150, \"height\": 50, \"width\": 120, \"text\": \"进程内在泄露监控\", \"className\": \"info\" },
      { \"id\": \"child4\", \"x\": 200, \"y\": 210, \"height\": 50, \"width\": 120, \"text\": \"进程存活监控\", \"className\": \"info\" },
      { \"id\": \"child5\", \"x\": 200, \"y\": 270, \"height\": 50, \"width\": 120, \"text\": \"用户内在使用监控\", \"className\": \"info\" },
      { \"id\": \"child1_1\", \"x\": 380, \"y\": 30, \"height\": 50, \"width\": 120, \"text\": \"监控正常无触发自愈\", \"className\": \"success\" },
      { \"id\": \"child2_1\", \"x\": 380, \"y\": 90, \"height\": 50, \"width\": 120, \"text\": \"监控正常无触发自愈\", \"className\": \"success\" },
      { \"id\": \"child3_1\", \"x\": 380, \"y\": 150, \"height\": 50, \"width\": 120, \"text\": \"发现异常触发自愈\", \"className\": \"danger\" },
      { \"id\": \"child3_2\", \"x\": 560, \"y\": 150, \"height\": 50, \"width\": 120, \"text\": \"重启进程正常\", \"className\": \"success\" },
      { \"id\": \"child4_1\", \"x\": 380, \"y\": 210, \"height\": 50, \"width\": 120, \"text\": \"发现异常触发自愈\", \"className\": \"danger\" },
      { \"id\": \"child4_2\", \"x\": 560, \"y\": 210, \"height\": 50, \"width\": 120, \"text\": \"重启进程正常\", \"className\": \"success\" },
      { \"id\": \"child5_1\", \"x\": 380, \"y\": 270, \"height\": 50, \"width\": 120, \"text\": \"发现异常触发自愈\", \"className\": \"success\" },
     ],
     \"edges\": [
      { \"source\": \"root\", \"sDirection\": \'right\', \"target\": \"child1\", \"tDirection\": \'left\', \"edgesType\": \"info\" },
      { \"source\": \"root\", \"sDirection\": \'right\', \"target\": \"child2\", \"tDirection\": \'left\', \"edgesType\": \"info\" },
      { \"source\": \"root\", \"sDirection\": \'right\', \"target\": \"child3\", \"tDirection\": \'left\', \"edgesType\": \"info\" },
      { \"source\": \"root\", \"sDirection\": \'right\', \"target\": \"child4\", \"tDirection\": \'left\', \"edgesType\": \"info\" },
      { \"source\": \"root\", \"sDirection\": \'right\', \"target\": \"child5\", \"tDirection\": \'left\', \"edgesType\": \"info\" },
      { \"source\": \"child1\", \"sDirection\": \'right\', \"target\": \"child1_1\", \"tDirection\": \'left\', \"edgesType\": \"success\" },
      { \"source\": \"child2\", \"sDirection\": \'right\', \"target\": \"child2_1\", \"tDirection\": \'left\', \"edgesType\": \"success\" },
      { \"source\": \"child3\", \"sDirection\": \'right\', \"target\": \"child3_1\", \"tDirection\": \'left\', \"edgesType\": \"danger\" },
      { \"source\": \"child3_1\", \"sDirection\": \'right\', \"target\": \"child3_2\", \"tDirection\": \'left\', \"edgesType\": \"success\" },
      { \"source\": \"child4\", \"sDirection\": \'right\', \"target\": \"child4_1\", \"tDirection\": \'left\', \"edgesType\": \"danger\" },
      { \"source\": \"child4_1\", \"sDirection\": \'right\', \"target\": \"child4_2\", \"tDirection\": \'left\', \"edgesType\": \"success\" },
      { \"source\": \"child5\", \"sDirection\": \'right\', \"target\": \"child5_1\", \"tDirection\": \'left\', \"edgesType\": \"success\" }
     ]
    }
   }
  },
  mounted() {
   this.init()
  },
  methods: {
   init() {
    $(\'#bktopo_demo2 .bktopo_box\').bkTopology({
     data: this.data, //配置数据源
     lineType: [ //配置线条的类型
      { type: \'success\', lineColor: \'#46C37B\' },
      { type: \'info\', lineColor: \'#4A9BFF\' },
      { type: \'warning\', lineColor: \'#f0a63a\' },
      { type: \'danger\', lineColor: \'#c94d3c\' },
      { type: \'default\', lineColor: \'#aaa\' }
     ]
    });
   }
  },
 }
</script>
<style scoped>

</style>

S型拓扑

和上面横向一样,需要在 index.html 文件中引用 js 文件。

<template>
 <div>
  <span>横向拓扑图</span>
  <div class=\"bktopo-container\">
   <div class=\"bktopo_demo\" id=\"bktopo_demo2\">
    <div class=\"none node\" id=\"node-templates\" data-container=\"body\" data-placement=\"top\" data-html=\"true\"
     data-trigger=\"hover\">
     <div class=\"node-container\"><span class=\"node-text\"></span></div>
    </div>
    <div class=\"bktopo_box\" style=\"height:350px;\"></div>
   </div>
  </div>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    data: {
     \"nodes\": [
      {
       \"id\": \"demo3_node1\", \"x\": 100, \"y\": 50, \"height\": 50,
       \"width\": 100, \"text\": \"发起\", \"className\": \"node success\"
      },
      {
       \"id\": \"demo3_node2\", \"x\": 250, \"y\": 50, \"height\": 50,
       \"width\": 100, \"text\": \"过程1\", \"className\": \"node success\"
      },
      {
       \"id\": \"demo3_node3\", \"x\": 400, \"y\": 50, \"height\": 50,
       \"width\": 100, \"text\": \"过程2\", \"className\": \"node danger\"
      },
      {
       \"id\": \"demo3_node4\", \"x\": 550, \"y\": 50, \"height\": 50,
       \"width\": 100, \"text\": \"过程3\", \"className\": \"node success\"
      },
      {
       \"id\": \"demo3_node5\", \"x\": 550, \"y\": 150, \"height\": 50,
       \"width\": 100, \"text\": \"过程4\", \"className\": \"node success\"
      },
      {
       \"id\": \"demo3_node6\", \"x\": 400, \"y\": 150, \"height\": 50,
       \"width\": 100, \"text\": \"过程5\", \"className\": \"node warning\"
      },
      {
       \"id\": \"demo3_node7\", \"x\": 250, \"y\": 150, \"height\": 50,
       \"width\": 100, \"text\": \"过程6\", \"className\": \"node success\"
      },
      {
       \"id\": \"demo3_node8\", \"x\": 100, \"y\": 150, \"height\": 50,
       \"width\": 100, \"text\": \"过程7\", \"className\": \"node success\"
      },
     ],
     \"edges\": [
      {
       \"source\": \"demo3_node1\", \"sDirection\": \'right\',
       \"target\": \"demo3_node2\", \"tDirection\": \'left\', \"edgesType\": \"success\"
      },
      {
       \"source\": \"demo3_node2\", \"sDirection\": \'right\',
       \"target\": \"demo3_node3\", \"tDirection\": \'left\', \"edgesType\": \"danger\"
      },
      {
       \"source\": \"demo3_node3\", \"sDirection\": \'right\',
       \"target\": \"demo3_node4\", \"tDirection\": \'left\', \"edgesType\": \"success\"
      },
      {
       \"source\": \"demo3_node4\", \"sDirection\": \'right\',
       \"target\": \"demo3_node5\", \"tDirection\": \'right\', \"edgesType\": \"success\"
      },
      {
       \"source\": \"demo3_node5\", \"sDirection\": \'right\',
       \"target\": \"demo3_node6\", \"tDirection\": \'right\', \"edgesType\": \"warning\"
      },
      {
       \"source\": \"demo3_node6\", \"sDirection\": \'right\',
       \"target\": \"demo3_node7\", \"tDirection\": \'right\', \"edgesType\": \"success\"
      },
      {
       \"source\": \"demo3_node7\", \"sDirection\": \'right\',
       \"target\": \"demo3_node8\", \"tDirection\": \'right\', \"edgesType\": \"success\"
      },
     ]
    }
   }
  },
  mounted() {
   this.init()
  },
  methods: {
   init() {
    $(\'#bktopo_demo2 .bktopo_box\').bkTopology({
     data: this.data, //配置数据源
     lineType: [ //配置线条的类型
      { type: \'success\', lineColor: \'#46C37B\' },
      { type: \'info\', lineColor: \'#4A9BFF\' },
      { type: \'warning\', lineColor: \'#f0a63a\' },
      { type: \'danger\', lineColor: \'#c94d3c\' },
      { type: \'default\', lineColor: \'#aaa\' }
     ]
    });
   }
  },
 }
</script>
<style scoped>

</style>

纵向拓扑

和上面横向一样,需要在 index.html 文件中引用 js 文件。

<template>
 <div>
  <span>纵向拓扑图</span>
  <div class=\"bktopo-container\">
   <div class=\"bktopo_demo\" id=\"bktopo_demo2\">
    <div class=\"none node\" id=\"node-templates\" data-container=\"body\" data-placement=\"top\" data-html=\"true\"
     data-trigger=\"hover\">
     <div class=\"node-container\"><span class=\"node-text\"></span></div>
    </div>
    <div class=\"bktopo_box\" style=\"height:350px;\"></div>
   </div>
  </div>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    data: {
     \"nodes\": [
      {
       \"id\": \"node1\", \"x\": 361, \"y\": 20, \"height\": 50, \"width\": 180,
       \"text\": \"浏览器发起\'www.qq.com\'请求\", \"className\": \"node success\"
      },
      {
       \"id\": \"node2\",
       \"x\": 391, \"y\": 100, \"height\": 50, \"width\": 120, \"text\": \"本地hosts文件解析\",
       \"className\": \"node success\"
      },
      {
       \"id\": \"node3\", \"x\": 301, \"y\": 200, \"height\": 50, \"width\": 100, \"text\": \"客户接入联通网\", \"className\": \"node\"
      },
      {
       \"id\": \"node4\", \"x\": 400, \"y\": 200, \"height\": 50, \"width\": 100, \"text\": \"客户接入移动网\", \"className\": \"node\"
      },
      {
       \"id\": \"node5\", \"x\": 499, \"y\": 200, \"height\": 50, \"width\": 100, \"text\": \"客户接入电信网\",
       \"className\": \"node success\", \"title\": \"如果hosts匹配成功则不经过DNS服务器解析。直接使用IP访问\"
      },
      {
       \"id\": \"node6\", \"x\": 233, \"y\": 300, \"height\": 50, \"width\": 140, \"text\": \"联通DNS服务器\", \"className\": \"node\"
      },
      {
       \"id\": \"node7\", \"x\": 372, \"y\": 300, \"height\": 50, \"width\": 140, \"text\": \"移动DNS服务器\", \"className\": \"node\"
      },
      {
       \"id\": \"node8\", \"x\": 511, \"y\": 300, \"height\": 50, \"width\": 140, \"text\": \"电信DNS服务器\",
       \"className\": \"node success\"
      },
      {
       \"id\": \"node9\", \"x\": 233, \"y\": 400, \"height\": 50, \"width\": 370,
       \"text\": \"核心骨干交换网集群\", \"className\": \"node success\"
      },
      {
       \"id\": \"node19\", \"x\": 343, \"y\": 500, \"height\": 50, \"width\": 150,
       \"text\": \"WEb服务器\", \"className\": \"node success\"
      },
     ],
     \"edges\": [
      { \"source\": \"node1\", \"sDirection\": \'bottom\', \"target\": \"node2\", \"tDirection\": \'top\', \"edgesType\": \"success\" },
      { \"source\": \"node2\", \"sDirection\": \'bottom\', \"target\": \"node5\", \"tDirection\": \'top\', \"edgesType\": \"success\" },
      { \"source\": \"node3\", \"sDirection\": \'bottom\', \"target\": \"node6\", \"tDirection\": \'top\', \"edgesType\": \"danger\" },
      { \"source\": \"node6\", \"sDirection\": \'bottom\', \"target\": \"node9\", \"tDirection\": \'left\', \"edgesType\": \"danger\" },
      { \"source\": \"node4\", \"sDirection\": \'bottom\', \"target\": \"node7\", \"tDirection\": \'top\', \"edgesType\": \"danger\" },
      { \"source\": \"node5\", \"sDirection\": \'bottom\', \"target\": \"node8\", \"tDirection\": \'top\', \"edgesType\": \"success\" },
      { \"source\": \"node7\", \"sDirection\": \'bottom\', \"target\": \"node9\", \"tDirection\": \'top\', \"edgesType\": \"danger\" },
      { \"source\": \"node8\", \"sDirection\": \'bottom\', \"target\": \"node9\", \"tDirection\": \'right\', \"edgesType\": \"danger\" },
      { \"source\": \"node9\", \"sDirection\": \'bottom\', \"target\": \"node19\", \"tDirection\": \'top\', \"edgesType\": \"success\" }
     ]
    }
   }
  },
  mounted() {
   this.init()
  },
  methods: {
   init() {
    $(\'#bktopo_demo2 .bktopo_box\').bkTopology({
     data: this.data, //配置数据源
     lineType: [ //配置线条的类型
      { type: \'success\', lineColor: \'#46C37B\' },
      { type: \'info\', lineColor: \'#4A9BFF\' },
      { type: \'warning\', lineColor: \'#f0a63a\' },
      { type: \'danger\', lineColor: \'#c94d3c\' },
      { type: \'default\', lineColor: \'#aaa\' }
     ]
    });
   }
  },
 }
</script>
<style scoped>

</style>

vue 动态生成拓扑图的示例

以上就是vue 动态生成拓扑图的示例的详细内容,更多关于vue 生成拓扑图的资料请关注其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容