d3 力导向布局 表ER图 动态增加删除

1 篇文章 0 订阅

绘制表ER图 源码地址

在页面上使用JS画表关系。

难点

  • 表位置布局
  • 动态添加移除表

解决方案:

  • 力导向布局(源码使用的是d3v5版本)

目前结果:

  • 实现力导向布局
  • 动态添加表节点
  • 动态添加表中的字段
  • 字段悬浮高亮
  • 搜索定位
  • 删除关联节点
  • 生成数据用于下次直接打开之前的样子

如图:

在这里插入图片描述

用到d3属性

  1. d3.forceManyBody().strength()电荷力
  2. d3.forceCollide().radius()碰撞检测
  3. d3.forceLink().id(function(d){return d.id}) 链接,指定ID,默认是node节点的index
  4. d3.zoom()拖拽、缩放

参考文档

d3可以一起使用多个力,设定好参数,就是一个完美的力导向布局。

//初始化
let initObj = initData(svg);
initObj.svgAddNode()
window.setTimeout(initObj.changePort,100)

//添加字段 -- addCols
if(isOpen){
	initObj.delColsGs() //删除字段
}else{
	initObj.addExtColsGs(data) //添加字段
}
initObj.updateFoot() //更改字段后移动表脚

//添加node节点 --addNode
initObj.svgAddNode()

源码地址

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值