使用org-chart插件实现组织架构树

1、使用到的插件

org-chart的github地址

注意:我们同时需要安装下d3这个插件库,不然很多子方法都没法用

npm install d3-org-chart
npm install d3

2、效果

1、1个根节点

2、多个根节点

原理:创建1个虚拟的根节点,然后在nodeUpdate和linkUpdate方法中将该根节点、与根节点的连接线隐藏,从而实现多个根节点的视觉效果。

3、数据源格式

可以是一维数组格式,也可以是嵌套类对象格式

一维数组格式数据示例如下:

chartDataL: [
        {
          "name": "Ian Devling",
          "positionName": "company",
          "id": "O-6066",
          "imageUrl": "https://raw.githubusercontent.com/bumbeishvili/Assets/master/Projects/D3/Organization%20Chart/general.jpg",
        },
        {
          "name": "Davolio Nancy",
          "imageUrl": "https://raw.githubusercontent.com/bumbeishvili/Assets/master/Projects/D3/Organization%20Chart/general.jpg",
          "positionName": "CTO",
          "id": "O-6067",
          "parentId": "O-6066",
        },
        {
          "name": "Leverling Janet",
          "imageUrl": "https://raw.githubusercontent.com/bumbeishvili/Assets/master/Projects/D3/Organization%20Chart/female.jpg",
          "positionName": "CTO",
          "id": "O-6068",
          "parentId": "O-6066",
        },
        {
          "name": "Leverling Janet",
          "imageUrl": "https://raw.githubusercontent.com/bumbeishvili/Assets/master/Projects/D3/Organization%20Chart/female.jpg",
          "positionName": "CTO",
          "id": "O-6068-1",
          "parentId": "O-6068",
      }]

嵌套类对象格式如下:

可以调用以下方法getFlattenedData将对象转换成一维数组:

getFlattenedData(dataHierarchy) {
      const descendants = d3.hierarchy(dataHierarchy).descendants();
      descendants.forEach((d, i) => {
        d.id = d.id || 'id' + i;
      });
      return descendants
        .map((d, i) => [d.parent?.data?.id, d.data])
        .map(([parentId, data]) => {
          const copy = { ...data };
          delete copy.children;
          return { ...copy, ...{ parentId } };
        });
    }

使用方式如下:
const flattenedData = this.getFlattenedData(th

相关推荐

  1. python架构介绍

    2024-05-10 11:00:02       32 阅读
  2. teleport内置组件和plugins基本使用

    2024-05-10 11:00:02       15 阅读
  3. 使用 MyBatis 日志实现日志记录

    2024-05-10 11:00:02       8 阅读
  4. Eclipse 绘制架构图的

    2024-05-10 11:00:02       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 11:00:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 11:00:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 11:00:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 11:00:02       18 阅读

热门阅读

  1. 替换掉Springboot框架中的Tomcat,使用undertow

    2024-05-10 11:00:02       16 阅读
  2. https忽略ssl证书校验

    2024-05-10 11:00:02       9 阅读
  3. STM32 定时器最佳分频

    2024-05-10 11:00:02       9 阅读
  4. npm i 与npm install的区别,接上回的npm ERR! code 128

    2024-05-10 11:00:02       12 阅读
  5. 木钻:muzuan.cn

    2024-05-10 11:00:02       11 阅读
  6. PELCO-D相机云台控制协议

    2024-05-10 11:00:02       11 阅读