2019.11-2020.03 开发计划
官网升级
- 文档迁移;
- Demo迁移:
定义Shape
自定义节点和边时考虑支持使用类似 JSON Schema 的 DSL 来定义。
功能优化
- state 机制改造;
- 节点分组改造。
工程化升级
- 升级底层渲染引擎至 G4.0;
- 使用 TS 重构。
2019.10-2019.11 开发计划
优化及封装交互
- done默认提供的 Behavior 支持交互方式配置;
- done拖动画布与框选互斥;
- done框选默认使用shift+拖动的方式,支持用户配置,可配置Ctrl、Alt、Shift及drag,drag表示直接拖动;
- done拖动节点时 delegate 可选,用户可以通过enableDelegate参数配置是否启用delegate;
- done选中节点时,支持用户配置多选方式,如通过按住shift、Ctrl、Alt等键多选,参数直接使用字符串;
- done高亮相邻节点时,如果有选中的节点,则默认不处理选中状态,用户可以通过配置项配置;
- 梳理真正有用的Behavior,像Tooltip这种是否应该放Behavior中?
- modes是否应该默认就提供以下Behavior:drag-node、drag-canvas等最常用的交互;
节点拖动、框选和选中之间的关系:
- 节点拖动完不应该触发选中;
- 节点框选交互不应该与拖动画布和拖动节点冲突;
- 拖动节点支持配置是否启用delegate。
节点分组
- done节点分组支持自定义标题;
收起分组后支持配置是否显示标题,收起时,如果有标题则显示;- 性能优化。
节点优化
内置节点的 linkPoints 与 anchorPoint 相关联,用户在使用时,只需要设置 linkPoints,自动添加对应的anchorPoints 。
布局完善及优化
- 节点分组布局;
组件
主要包括与图分析相关的组件,如Minimap、Filter Data、Legend、Layout切换等。其中Filter Data及Legend具有数据过滤的功能,Legend为简单的过滤、Filter Data为复杂过滤。
Legend:只按节点类型过滤;
Filter Data:节点及边的类型、属性字段、指定值的范围等。
能力上面参考:https://cambridge-intelligence.com/filtering/
Demo
三个综合应用Demo。
丰富Demo
负责人 @十吾(shiwu-5wap2) @聚则(moyee-bzn) @长哲(changzhe) @山果(shanguo) @镜曦(jingxi-g5ldr)
时间点
9.30之前 35+,11.22之前 50+。
案例分类
- 自定义Shape:
- done自定义卡片节点;
- done自定义pie节点;
- done自定义折线;
- 自定义箭头;
- done自定义列表及列表详情的Shape;
- done 共5个自定义chart节点;
- 交互:
- done点击替换节点图片;
- 响应shape中某部分;
- 右键菜单;
- hover或select时,给节点添加背景效果;
- 文本:
- done文本太长换行;
- done文本太长显示省略号;
- shape宽度自动适应文本长度。
- group:
- done渲染单层及嵌套的group;
- done拖动group;
- done收起/展开group;
- done拖动group中的节点到其他group。
- 流程图:
- done基于dagre的自定义流程图;
- 关系图:
- done边绑定;
- done布局:10+;
- 其他:
- doneArc Diagram;
- doneCicular Arc Diagram;
- donedoneBubbles;
- done树图边上显示label;
- done树图点击没有children的节点时,动态请求数据添加到图中;
- 设置边的层级,让边可以显示到节点上,该操作同时需要体现到文档中;
- 复杂案例:
- done American Migration Graph;
- done Cluster Simplify Case;
- done Beijing Metro Animation Graph;
- donedone 资金流转图。
文档优化
负责人 @聚则(moyee-bzn) @十吾(shiwu-5wap2);
G6文档计划包括教程、API文档及Demo三部分。
- Tutorial 第一版已经完成,正在优化中;
- 进阶教程:
- 中阶教程;
- 高阶教程;
- API 写入到代码中(注释)。
问题
文档方面目前存在的问题,主要可以归结为以下三个:
- 用户不知道用哪个图;
- 不知道某个图有哪些API,找不到所需要的API及配置项;
- 不知道具体的API怎么使用。
方案
G6的用户,一般期望按照以下流程使用文档:找Demo —-> 看源码 —-> 查API。
- 找Demo:拿到视觉稿以后,根据视觉稿去找对应的Demo;
- 找到类似的Demo后,查看源码,看该Demo是如何实现的;
- 查看Demo源码中使用到的API的作用及使用方式。
所以 Demo 页面中透出相关教程链接?
G6的文档可以分为两大部分:语雀上的教程、类似 antd风格的Demo介绍+源码 和 API文档(涉及到的所有API链接)。
Demo
Demo介绍+源码,按Demo类别分类:
- 树图;
- 一般图(包括一般图各种布局用法);
- 其他表达形式(桑基图、弧线图、环形弧线图、气泡图等);
- 元素(内置边和节点、自定义边和节点、文本,各种样式);
- 交互(内置交互、自定义交互、状态相关);
- 动画;
- 辅助工具(tooltip、minimap、grid、bundling、context menu);
- 复杂案例。
API
API文档,关键api提供具体的使用说明及可执行的demo源码,类似Demo介绍:
- 全局API;
- Graph;
- Item;
- TreeGraph;
- Node;
- Edge:
- Behavior;
- Event;
- Shape
教程
G6教程目录结构如下:
- G6 3.x 教程
- 快速上手;
- 20 minues Tutorial
- 进阶教程
- 中级教程
- G6中的关键概念
- KeyShape;
- Mode;
- Behavior;
- Group:非节点分组的group。
- 节点
- 内置的节点;
- 修改节点样式;
- 修改节点文本样式;
- 边
- 内置的边;
- 修改边的样式;
- 修改边上文本的样式;
- 交互
- 内置交互;
- Canvas 交互;
- 节点的交互;
- 边的交互;
- 布局
- G6中的关键概念
- 高级教程
- 自定义节点;
- 自定义边;
- 自定义交互;
- 自定义布局;
- 动画(全局,边,节点);
- 节点分组;
- 结合框架使用:
- 如何在 React 中使用 G6;
- 如何在 Vue 中使用 G6。
- 中级教程
Layout
负责人 @十吾(shiwu-5wap2);
时间点
11.22之前。
目标
- 提供布局扩展机制:注册、复写;
- 子图布局的管理;
- 内置5+常见布局:
- Force
- Dagre
- MDS
- Fruchterman
- Circular
- Radial
- ……
Group
负责人 @聚则(moyee-bzn);
时间点
9月30日之前。
目标
能力对齐KeyLines的Combining And Grouping Nodes。
功能点
- done渲染单层和嵌套Group;
- done拖动Group:Group中的节点跟随拖动,父Group高亮;
- doneGroup拖出父Group,进入到的Group高亮;
- done节点拖出/拖入Group;
- done节点拖动时父Group高亮;
- done节点拖入到的Group高亮;
- 双击收起/展开Group:支持配置交互方式;
- 将拖出的Group拖进 到其他Group中。
单测
- doneCustomGroupController中各个方法单测;
- donedrag-group Behavior单测;
- donecollapse-expand-group Behavior单测;
- donedrag-node-with-group单测。
丰富内置节点
详细内容参考内置节点文档。
G6内置了以下节点类型:
- donecircle;
- donerect;
- doneellipse;
- donediamond;
- donetriangle;
- donemodelRect;
- donestar。
丰富内置边
功能优化
- done状态管理:select、hover及normal状态自动切换;
数据中设置属性,支持节点不可拖动;优化为在Node中提供一个locked方法,通过调用node.locked()锁定该节点,不允许拖动;- 增加一个配置项,让边的label跟随边的颜色改变;
- 可配置边的label旋转中心;
BugFix
- doneTreeGraph快速点击可收起节点,JS报错;
- 容器设置背景色后,网格线无法显示;
- 点击不灵敏及有时无法触发drag事件;
- doneTreeGraph收起后root节点显示到右上角:可通过fixedRoot配置项设置,具体参考配置文档;
- drag-canvas和drag-node,可以一直drag,好像画布无穷大似的;
- updateItem时,merge默认配置的属性值;
- lightdark 颜色覆盖,没有使用用户指定的颜色,使用的是内置节点的默认颜色;