gojs+dagre实现自动布局流程图效果代码

代码语言:html

所属分类:图表

代码描述:gojs+dagre实现自动布局流程图效果代码,设置了右键菜单,可以删除和克隆节点。

代码标签: gojs dagre 自动 布局 流程图

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
   
<meta charset="UTF-8">




</head>

<body onload="init()">
   
<div id="sample">
       
<button onclick="autolayout()">auto layout</button>
       
<button onclick="duplicateNode()">duplicateNode</button>
       
<p>right click for context menu</p>
       
<div id="myDiagram" style="background-color: whitesmoke; border: solid 1px black; width: 100%; height: 400px"></div>
   
</div>


   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/go.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dagre.min.js"></script>
   
<script>
        var nodes, links, myModel, $, myDiagram;
       
        function generateNodeDataArray() {
          var nodeDataArray = [];
          for (n in nodes) {
            var nodeData = { key: n, label: nodes[n].label };
       
            if (nodes[n].x && nodes[n].y) {
              nodeData.location = new go.Point(nodes[n].x, nodes[n].y);
            };
       
            nodeDataArray.push(nodeData);
          }
          return nodeDataArray;
        }
       
        function autolayout() {
       
          console.log(JSON.stringify(myModel));
       
          // Create a new dagre graph , note: this graph is only used for layout.
          var dagreGraph = new dagre.graphlib.Graph();
          dagreGraph.setGraph({
            rankdir: 'LR',
            nodesep: 100,
            ranksep: 20,
            edgesep: 20 });
       
       
          // Default to assigning a new object as a label for each new edge.
          dagreGraph.setDefaultEdgeLabel(function () {return { label: 'label' };});
       
          for (n in nodes) {
            dagreGraph.setNode(n, { width: nodes[n].width, height: nodes[n].height });
          };
       
          links.forEach(function (link) {
            dagreGraph.setEdge(link.from, link.to, { minlen: 2 });
          });
       
          dagre.layout(dagreGraph);
       
          dagreGraph.nodes().forEach(function (v) {
            var node = dagreGraph.node(v);
          .........完整代码请登录后点击上方下载按钮下载查看

网友评论0