vue 动态生成拓扑图的示例


Posted in Vue.js onJanuary 03, 2021

横向拓扑

在 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 生成拓扑图的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 #Vue.js
vue中activated的用法
Jan 03 #Vue.js
vue实现登录功能
Dec 31 #Vue.js
vue 实现图片懒加载功能
Dec 31 #Vue.js
vue 动态创建组件的两种方法
Dec 31 #Vue.js
Vue 修改网站图标的方法
Dec 31 #Vue.js
Vue中inheritAttrs的使用实例详解
Dec 31 #Vue.js
You might like
php动态函数调用方法
2015/05/21 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
python变量命名的7条建议
2019/07/04 Python
python getpass实现密文实例详解
2019/09/24 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
python 将Excel转Word的示例
2021/03/02 Python
Java基础知识面试要点
2016/07/29 面试题
幼儿园教师岗位职责
2014/03/17 职场文书
cf战队宣传语
2015/07/13 职场文书
学雷锋活动简报
2015/07/20 职场文书
2016国培研修心得体会
2016/01/08 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS