vue2中使用antvG6可视化图形工具创建树图

vue2中使用antvG6可视化图形工具创建可展开折叠的树图

1. 官网地址

AntV G6 图可视化引擎

2. 安装antvG6
npm install --save @antv/g6

引入插件:

import G6 from '@antv/g6'

这里采用的是自定义节点样式:使用官方api G6.registerNode

G6.registerNode('card-node', {
   
    draw: function drawShape(cfg, group) {
   
      const r = 2
      const [ w, h ] = cfg.size

      // 绘制主体
      const shape = group.addShape('rect', {
   
        attrs: {
   
          x: -w / 2, 
          y: -h / 2,
          width: w, // 宽度
          height: h + 10, // 高度
          stroke: getStatusColor(cfg.status), // 线条颜色
          radius: r,
          fill: cfg.id === userNodeId ? '#b8c9ff' : '#fff', // 填充颜色
        },
        name: 'main-box',
        draggable: true
      })

      // 绘制顶部标题框
      group.addShape('rect', {
   
        attrs: {
   
          x: -w / 2,
          y: -h / 2,
          width: w,
          height: h / 2,
          fill: getStatusColor(cfg.status),
          radius: [r, r, 0, 0],
        },
        name: 'title-box',
        draggable: true
      })

      // 标题
      group.addShape('text', {
   
        attrs: {
   
          textBaseline: 'top',
          x: -w / 2 + 8,
          y: -h / 2 + 5,
          lineHeight: 20,
          text: getStatus(cfg.status),
          fill: '#fff',
        },
        name: 'title'
      })
      // 这一步判断如果节点有子节点,就添加上展开或折叠的图标
      cfg.children &&
        group.addShape('marker', {
   
          attrs: {
   
            x: - w / 2,
            y: 5,
            r: 6,
            cursor: 'pointer',
            symbol: cfg.collapsed ? G6.Marker.expand : G6.Marker.collapse,
            stroke: '#666',
            lineWidth: 1,
            fill: '#fff',
          },
          name: 'collapse-icon'
        })
      
      // 绘制内容
      group.addShape('text', {
   
        attrs: {
   
          textBaseline: 'top',
          x: -w / 2 + 8,
          y: -h / 2 + 29,
          lineHeight: 20,
          text: handleLabel(cfg.name),
          fill: '#444',
        },
        name: `description`
      })
      return shape
    },
    setState(name, value, item) {
   
      if (name === 'collapsed') {
   
        const marker = item.get('group').find((ele) => ele.get('name') === 'collapse-icon')
        const icon = value ? G6.Marker.expand : G6.Marker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值