特别说明 esm 及 commonjs 构建产物不支持 webworker 布局。
**
关于 Util
- 不再在 G6 中import @antv/util 后,又 export 一次,直接使用 @antv/util 相关方法;
- 移除了 util/layout 文件;
- 将 layout 中的 scaleMatrix、floydWarshall、getAdjMatrix 方法移到了 math 文件中;
- layout 中的 getEDistance 方法与math中的 distance 重复,统一使用 math 中的 distance 方法;
- 删除了 layout 中的 mix、augment、isString 三个方法,统一使用@antv/util 中相关方法;
- groupData 改名为 group;
- group 中删除了 flatToTree 和 addNodesToParentNode 两个方法;
- base 文件中删除了对@antv/util 的依赖。
Tree-Graph 兼容问题
Graph 新增了布局 相关方法,TreeGraph 中布局相关的需要和 Graph 统一。
- changeLayout 修改为 updateLayout;
- refreshLayout 修改为 layout。
Group
不在支持 findByClassName 方法,可以通过以下方式替换:
// G6 3.2const group = node.get('group')const label = group.findByClassName('node-label')// G6 3.3const group = node.get('group')const label = group.find(element => element.get('className') === `node-label`);
动画
G6 3.2.x 及以下版本中动画的使用方式:
G6.registerEdge('loop-growth', {afterDraw(cfg, group) {const shape = group.get('children')[0];const length = shape.getTotalLength();shape.animate({onFrame(ratio) {const startLen = ratio * length;// 计算线的lineDashconst cfg = {lineDash: [startLen, length - startLen]};return cfg;},repeat: true}, 2000);}}, 'loop');
G6 3.3 版本中动画:
- 删除了 onFrame 方法;
两种使用 animate 的方式:
方式一:animate(toAttrs, animateCfg)。其中 toAttrs 为动画的目标参数,animateCfg 为动画的配置。例如:
G6.registerEdge('widen-line', {afterDraw(cfg, group) {const shape = group.get('children')[0];const length = shape.getTotalLength();shape.animate({lineWidth: 10},{repeat: false,duration: 500});}}, 'single-edge');
方式二:animate(onFrame, animateCfg)。其中 onFrame 为每一帧的回调函数,animateCfg 为动画的配置。例如:
G6.registerEdge('loop-growth', {afterDraw(cfg, group) {const shape = group.get('children')[0];const length = shape.getTotalLength();shape.animate((ratio) => {const startLen = ratio * length;// 计算线的lineDashconst cfg = {lineDash: [startLen, length - startLen]};return cfg;},{repeat: true,duration: 2000});}}, 'loop');
矩阵变换函数
- _移除了 Element 上只适用于 3_3 矩阵的变换函数:
- 🗑 平移函数
translate - 🗑 移动函数
move - 🗑 缩放函数
scale - 🗑 旋转函数
rotate - 🗑 以 (0, 0) 点为中心的旋转函数
rotateAtStart
- 🗑 平移函数
- 如果想要应用矩阵变换的效果,需要手动设置矩阵的值:
- 设置矩阵
setMatrix(matrix) - 重置矩阵
resetMatrix - 设置矩阵
attr('matrix', matrix)
- 设置矩阵
- 为了方面上层使用,也提供了矩阵变换的工具方法:
import { transform } from '@antv/matrix-util';// 3*3 矩阵变换,用于二维渲染trasform(m, [['t', x, y], // translate['r', Math.PI], // rotate['s', 2, 2], // scale]);
元素类型指定
G6 3.2.x 及以下版本中指定节点或边的图形类型时,可以通过在数据中单个配置、实例化图时全局配置、更新时动态配置等。例如:
// 在数据中单个配置const data = {nodes: [{id: 'node0',shape: 'circle'}, {id: 'node1',shape: 'rect'}],edges: [{id: 'edge0',source: 'node0',target: 'node1',shape: 'polyline'}]}// 或在实例化图时全局配置
G6 3.3 将会使用 type 字段替代 shape 字段(同时兼容 shape,但 shape 在以后的版本中将会被舍弃)。
自定义节点/边时增加图形
G6 3.2 及之前的版本中,自定义节点/边时增加图形可以通过下面代码,不需要指定 name 及 draggable
G6 3.2 及之前的版本中,自定义节点/边时增加图形可以通过下面代码,不需要指定 name 及 draggable 属性,这可能导致节点/边上的非 keyShape 图形不能响应部分事件。
自定义节点/边
继承内置节点/边
G6 3.3 中,自定义节点/边时若不希望继承任何节点/边,则不需要为 registerNode 或 registerEdge 函数的第三个参数传递任何值。且必须重写 draw 方法。
G6.registerEdge('customNode', {draw(cfg, group) {// ...return keyShape;}});
希望继承时,节点的基类为 ‘single-node’,边的基类为 ‘single-edge’,而在 G6 3.2 及之前的版本中节点和边的基类统一为 ‘single-shape’。除了继承基类外,还可以继承其他内置节点或边。
增加图形
G6 3.2 及之前的版本中,自定义节点/边时增加图形可以通过下面代码,不需要指定 name 及 draggable 属性,这可能导致节点/边上的非 keyShape 图形不能响应部分事件。
G6.registerEdge('customNode', {draw(cfg, group) {const keyShape = group.addShape('rect', {attrs: {// ... 图形属性}});const circle = group.addShape('circle', {attrs: {// ... 图形属性}});return keyShape;}});
G6 3.3 中,新增图形时建议指定 name 与 draggable:
G6.registerEdge('customNode', {draw(cfg, group) {const keyShape = group.addShape('rect', {attrs: {// ... 图形属性},draggable: true,name: 'key-shape'});const circle = group.addShape('circle', {attrs: {// ... 图形属性},draggable: true,name: 'circle-shape'});return keyShape;}});
pixelRatio
在 G6 3.2 及之前的版本中,需要用户根据当前分辨率在实例化图时配置 pixelRatio。
G6 3.3 中,pixelRatio 将被自动计算,不需要再由用户传递。
click-select 与 brush-select 时机事件
G6 3.2 中 brush-select 与 click-select 每次选取发生变化时,将会触发 nodeselectchange,brush-select 的 nodeselectchange 事件的回调参数含有两个字段:
- targets:当前被选中的所有节点与边。{nodes: […], edges: […]}
- select:当前操作是选中还是取消。true | false
click-select 的 nodeselectchange 事件的回调参数含有两个字段:
- target:当前被操作的一个节点,可能是被选中,或取消选中
- select:当前操作是选中还是取消。true | false
G6 3.3 统一了这两个 behavior 的 nodeselectchange 事件。使用 selectedItems 替代 targets 字段,表示当前被选中的所有元素。防止 targets 的含义与 target (当前被操作的节点,可能是被选中或被取消选中)混淆。
brush-select 有两个字段:
- selectedItems:当前被选中的所有节点与边。{nodes: […], edges: […]}
- select:当前操作是选中还是取消。true | false
click-select 有两个字段:
- target:当前被操作的一个节点,可能是被选中,或取消选中
- selectedItems:当前被选中的所有节点与边。{nodes: […], edges: […]}
- select:当前操作是选中还是取消。true | false
