/** * @fileOverview 栅格布局 * @author huangtonger@aliyun.com */ const G6 = require('@antv/g6'); const Util = G6.Util; class Layout { constructor(options) { Util.mix(this, { row: 10, col: 10, marginx: 20, marginy: 20, width: null, height: null }, options); } // 执行布局 execute() { const graph = this.graph; const nodes = this.nodes; const width = this.width ? this.width : graph.getWidth(); const height = this.height ? this.height : graph.getHeight(); const center = this.center ? this.center : { x: width / 2, y: height / 2 }; const row = this.row; const col = this.col; this.sort && nodes.sort(this.sort); for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; node.x = (center.x - width / 2) + i % row / row * width + this.marginx; node.y = (center.y - height / 2) + parseInt(i / col) / col * height + this.marginy; } } } module.exports = Layout;