UNPKG

butterfly-dag

Version:

一个基于数据驱动的节点式编排组件库,让你有方便快捷定制可视化流程图表

65 lines (48 loc) 1.54 kB
'use strict'; /** * cc: https://github.com/antvis/G6/tree/master/src/layout */ const d3 = require('d3-force'); const _ = require('lodash'); import Layout from './circleLayout.js'; import fruchterman from './fruchterman.js'; import gridLayout from './gridLayout.js' import forceLayout from './forceLayout.js' import concentLayout from './concentLayout.js' import dagreLayout from './dagreLayout.js'; import radial from './radial/radial.js'; // 离散树形布局 function forceTreeLayout(param) { let opts = param.opts; let data = _.cloneDeep(param.data); var simulation = d3.forceSimulation(data.nodes) // d3.forceLink(links).distance(20).strength(1) .force('charge', d3.forceManyBody().strength(opts.chargeStrength)) .force('center', d3.forceCenter(opts.width / 2, opts.height / 2)) .force('link', d3.forceLink(data.edges).distance(opts.link.distance).strength(opts.link.strength)) .force('x', d3.forceX()) .force('y', d3.forceY()) .stop(); for (var i = 0, n = Math.ceil(Math.log(simulation.alphaMin()) / Math.log(1 - simulation.alphaDecay())); i < n; ++i) { simulation.tick(); } param.data.nodes.forEach((node, index) => { node.top = data.nodes[index].y; node.left = data.nodes[index].x; }); // 后续需要考虑group的布局 } // 后续拓展树形布局 function treeLayout(param) { } export default { forceLayout, forceTreeLayout, treeLayout, dagreLayout, concentLayout, gridLayout, fruchterman, circleLayout: Layout.circleLayout, radial, }