在vue中使用基于d3为基础的dagre-d3.js搞定一个流程图组件

项目中想搞定一个流程图,开始使用了阿里的G6,但是G6目前不支持手势,这样就很郁闷了,因为公司的领导都是使用iPad看的,你不支持手势是不行的,后来又想到了百度的echarts,试了试,感觉还不错,手机端也是没问题的,但是用起来不是很好用,每个节点的位置还要自己去设置计算有点麻烦,所以想找个在支持pc和wap并且使用方便的,结果找到了dagre-d3.js,完全满足我的需求啊,就是文档不全,还大多数都是英文。搞完之后觉得有必要记录一下,哈哈哈。
首先避免不了的就是下载,既然是基于d3的肯定是要连同d3一下下载的。

npm install d3
npm install dagre-d3

下载完毕就开始使用了,如果下载的时候报错了可以尝试cnpm下载。
下载完之后就要说说数据结构了,如下图:
在这里插入图片描述
从图中我们可以知道需要两个数据,第一个是节点信息,包含节点名称、ID、状态等等只要是节点信息都可以放在里边;第二个是节点之间的关系,可以简单的理解成管道,比如从节点1—>节点2。
所以我们的数据结构是这样的:

list: {
  nodeInfos: [
    {
      id: "node1",
      label: "节点1",
    },
    {
      id: "node2",
      label: "节点2",
    },
    {
      id: "node3",
      label: "节点3",
    },
    {
      id: "node4",
      label: "节点4",
    },
  ],
  edges: [
    {
      source: "node1",
      target: "node2",
    },
    {
      source: "node2",
      target: "node3",
    },
    {
      source: "node2",
      target: "node4",
    },
  ]
}

其中nodeInfos是节点信息,edges是节点之间的关系,当然节点的信息可以包含很多信息,比如节点的形状、大小、背景颜色,圆角等等,同时也可以在设置节点信息的时候添加或者根据你自己节点的状态判断显示什么样的样式。接下来就是绘制流程图了,首先呢需要先获取实例对象并且做一些简单的配置。我们直接使用默认的就可以。

var g = new dagreD3.graphlib.Graph().setGraph({}).setDefaultEdgeLabel(function() { return {}; });

接下来就是添加节点

this.list.nodeInfos.forEach((item, index) => {
    g.setNode(item.id, item);
});

然后在加上节点关系

this.list.edges.forEach(item => {
    g.setEdge(item.source, item.target, {});
});

最后就是绘制图形了

var svg = d3.select("svg"),
i    nner = svg.select("g");
    //缩放
    var zoom = d3.zoom().on("zoom", function () {
    inner.attr("transform", d3.event.transform);
});
    svg.call(zoom);
    var render = new dagreD3.render();
    render(inner, g);

这样简单的流程图就完成了,如果想加点击事件呢,可以这样

let code;
inner.selectAll("g.node").on("click", e => {
    //点击事件
    code = this.list.nodeInfos.filter(item => {
        return item.id == e;
    });
    console.log(code);
});

最最简单的一个流程图组件就完成了,当然了dagre-d3.js不仅仅是这点功能,还有许多可以设置的,大家多练一练就可以喽。
demo地址:https://gitee.com/webliusong/dagre-d3

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Vue dagre-d3.js一个用于在Vue.js框架实现DAG(有向无环图)可视化的库。它结合了vue.js、dagre和d3.js这三个库的功能。 DAG是一种图形结构,其节点表示任务或事件,边表示任务之间的依赖关系。DAG的可视化对于理解和分析任务之间的关系非常有帮助。 Vue dagre-d3.js库通过提供一组Vue组件,使DAG的可视化变得容易。它利用了dagre-d3d3.js库的功能来布局和渲染DAG图。 使用Vue dagre-d3.js库,我们可以将DAG图表示为一个Vue组件,该组件可以在Vue应用程序使用。我们可以定义节点和边,并指定它们之间的关系。然后,Vue dagre-d3.js库将负责将该图形布局为可视化的DAG图。 该库提供了一些自定义选项,可以定义节点的样式,边的样式和布局选项。通过这些选项,我们可以自定义DAG图的外观和布局以满足特定需求。 总之,Vue dagre-d3.js一个方便易用的库,可以在Vue.js应用程序实现DAG图的可视化。它简化了创建和布局DAG图的过程,并提供了许多定制选项来满足不同需求。无论是在项目管理、工作流程分析还是其他领域,Vue dagre-d3.js都是一个有价值的工具。 ### 回答2: Vue dagre-d3.js一个基于 Vue.js 的库,用于在 web 页面上绘制和可视化图形。它使用dagre-d3.js 库作为底层,使得在 Vue.js 使用 dagre-d3.js 变得更加简单。 dagre-d3.js一个使用 d3.js 的 JavaScript 库,用于在 web 页面上绘制有向无环图(DAG)。它提供了一套强大的布局算法,可以将节点和边按照一定的规则自动排列成一张美观的图形。 Vue dagre-d3.js 的主要功能包括创建图形,添加节点和边,设置节点和边的样式,以及支持交互操作。在 Vue.js 使用它,我们可以通过引入组件的方式来使用它,然后在组件通过配置选项来定义图形的结构和样式。 通过 Vue dagre-d3.js,我们可以轻松地绘制各种类型的图形,如组织结构图、流程图、依赖关系图等。它提供了丰富的配置选项,可以自定义节点和边的样式,包括颜色、大小、形状等。同时,它还支持拖拽、缩放等交互操作,使得用户可以灵活地操作图形。 总结来说,Vue dagre-d3.js一个方便在 Vue.js 使用 dagre-d3.js 库的工具,它能够帮助我们快速地实现图形的创建、布局和交互。无论是需要在网页上展示图形,还是进行图形数据的可视化分析,Vue dagre-d3.js 都是一个不错的选择。 ### 回答3: Vue Dagre-d3.js一个基于Vue框架和Dagre-d3.js库的图形可视化组件Dagre-d3.js一个用于绘制有向无环图(DAG)和树的JavaScript库。它基于Dagre图布局引擎和D3.js可视化库,提供了快速、灵活和可定制的图形布局和绘制功能。 Vue Dagre-d3.js利用了Vue框架的特性和Dagre-d3.js的强大功能,提供了一种更加便捷的方式来构建和渲染图形可视化组件使用Vue Dagre-d3.js,我们可以轻松地在Vue项目绘制各种类型的图形,如有向无环图(DAG)、树状图等。我们可以通过定义节点和边的数据模型,并使用Vue的数据驱动特性来动态更新图形的布局和内容。 Vue Dagre-d3.js还提供了丰富的配置选项和事件回调函数,使我们可以自定义图形的外观和交互行为。我们可以设置节点和边的样式、大小和位置,以及鼠标交互时的动画效果。 总而言之,Vue Dagre-d3.js一个功能强大、易于使用和可定制的图形可视化组件,它结合了Vue框架和Dagre-d3.js库的优势,为我们提供了一种简单而灵活的方式来构建和展示各种图形。无论是构建管理系统、数据分析仪表盘还是可视化数据结构,Vue Dagre-d3.js都是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值