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 生成拓扑图的资料请关注我们其它相关文章!

(0)

相关推荐

  • vue 集成 vis-network 实现网络拓扑图的方法

    vis.js  网站 https://visjs.org/ vs  code 下安装命令 npm install vis-network 在vue  下引入 vis-network组件 const vis = require("vis-network/dist/vis-network.min.js"); require("vis-network/dist/vis-network.min.css"); 例子代码使用 let DIR = "/jtopo/&qu

  • VUE和Antv G6实现在线拓扑图编辑操作

    效果图如下: 我使用的是G6 2.0,也可以使用 G6 3.0,3.0的拓扑图单独作为一个编辑器使用,使用更加方便.不过2.0的比较简单,容易上手. 1.首先在Antv官网上找到蚂蚁Antv G6插件,引入插件. 也可以npm 方式引入. 2.写组件 export default { name: "index", components: {}, mounted() { this.initG6(); }, data() { return { action: '', name: '', f

  • 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.tencen

  • 使用Vue动态生成form表单的实例代码

    具有数据收集.校验和提交功能的表单生成器,包含复选框.单选框.输入框.下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展. 欢迎大家star学习交流:github地址 示例 https://raw.githubusercontent.com/xaboy/form-create/dev/images/sample110.jpg 安装 npm install form-create OR git clone https://github.com/xa

  • VUE动态生成word的实现

    不废话,直接上代码. 前端代码: <template> <Form ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="110"> <FormItem label="项目(全称):" prop="orgName"> <Input v-model=

  • JavaScript动态生成表格的示例

    要求: HTML标签只写一行表头 通过JS来写动态的表格(有多少组数据,就自动创建多少行表格) 为学习和演示,采用固定的数据,不涉及调用后台数据 代码实现: HTML内容: <table cellspacing="0"> <thead> <tr> <th>姓名</th> <th>科目</th> <th>成绩</th> <th>操作</th> </tr

  • vue动态生成dom并且自动绑定事件

    用jquery的时候你会发现,页面渲染后动态生成的dom,在生成之前的代码是没办法取到相应对象的,必须重新获取.但是vue基于数据绑定的特性让它能生成的时候直接绑定数据. html: <div id="app"> <table v-for="table in tables"> <tr v-for="row in table.row"> <td style="width:80px;float:le

  • Vue动态生成el-checkbox点击无法赋值的解决方法

    前言 最近遇到一个问题,在一个页面需要动态渲染页面内的表单,其中包括 checkbox 表单类型,并且使用 Element 组件 UI 时,此时 v-model 绑定的数据也是动态生成的 例如: 定义的 data 的 form 里面是空对象,需要动态生成里面的 key export default { data() { return { form: {} } }, } 从后端接口得到 checkList,这个就是动态生成的表单数据 v-for 循环 checkList,得到 key,然后直接 v

  • jQuery ajax动态生成table功能示例

    本文实例讲述了jQuery ajax动态生成table的方法.分享给大家供大家参考,具体如下: $(function(){ ajaxT(); }); function ajaxT(){ $.ajax({ type:"POST", dataType: "json", url:"<%=basePath%>UserInfoServlet", data:"doaction=userList", success:functi

  • Vue 动态生成数据字段的实例

    目录 动态生成数据字段实例 1.父组件定义data里面的数据字段 2.子组件接收数据 3.因为获取数据是异步操作 4.计算属性计算两个变量是否均完成 5.子组件完整代码 表单动态生成字段 动态生成数据字段实例 1.父组件定义data里面的数据字段 异步请求获取数据(一种配置数据,一种实际数据) data () {   return {     config: [],     list: []   }; } 2.子组件接收数据 props: {   config: Array,   list: A

  • Vue动态生成表格的行和列

    当在开发项目的时候,固定的页面表格标题及内容不能满足需求,需要根据不同的需求动态加载不同的表格表头和表格的内容,具体的实现代码如下: <template> <div class="boxShadow"> <div style="margin-top: 20px"> <el-table :data="tables" ref="multipleTable" tooltip-effect=&

  • jQuery获取动态生成的元素示例

    需求描述:页面上可以动态添加数据,比如table,点击按钮可以动态添加行.又或页面 加载时table数据是通过ajax从后台获取的.而这时我们想要获取其中的某个值,又该如何获取呢? 如果是要通过某个事件来获取的比如click,mouseover等等,则可以使用live()方法 复制代码 代码如下: $(".button").live("click",function(){ console.info($("#mytd").html()); }) 而

随机推荐