Skip to content

Commit

Permalink
feat(graphin-site):update docs for test
Browse files Browse the repository at this point in the history
  • Loading branch information
pomelo-nwu committed Nov 11, 2019
1 parent c3bbe73 commit adcbe56
Show file tree
Hide file tree
Showing 13 changed files with 885 additions and 62 deletions.
80 changes: 79 additions & 1 deletion packages/graphin-site/docs/manual/Contributing.zh.md
Expand Up @@ -4,4 +4,82 @@ order: 7
icon: none
---

## 贡献指南
> 本指南参考自 [Ant Design](https://ant.design/docs/react/contributing-cn)
这篇指南会指导你如何为 Graphin 贡献一份自己的力量,请在你要提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南。

## 行为准则

// TODO 行为准则 链接

我们有一份 行为准则,希望所有的贡献者都能遵守,请花时间阅读一遍全文以确保你能明白哪些是可以做的,哪些是不可以做的。

## 透明的开发

我们所有的工作都会放在 GitHub 上。不管是核心团队的成员还是外部贡献者的 pull request 都需要经过同样流程的 review。

## 分支管理

基于我们的 发布周期,我们长期维护两个分支 master 和 feature。如果你要修一个 bug,那么请发 pull request 到 master;如果你要提一个增加新功能的 pull request,那么请基于 feature 分支来做。

## Bugs

// issue 模板 和 重现 SandBox 链接

我们使用 GitHub Issues 来做 bug 追踪。 如果你想要你发现的 bug 被快速解决,最好的办法就是通过我们提供的 issue 模板 来提 issue。并且能使用这个 模板 来提供重现。

在你报告一个 bug 之前,请先确保已经搜索过已有的 issue 和阅读了我们的 常见问题。

## 新增功能

// issue 模板链接

如果你有改进我们的 API 或者新增功能的想法,我们同样推荐你使用我们提供的 issue 模板 来新建一个添加新功能的 issue。

## 第一次贡献

// good first issues 链接

如果你还不清楚怎么在 GitHub 上提 Pull Request ,可以阅读下面这篇文章来学习:

[如何优雅地在 GitHub 上贡献代码](https://segmentfault.com/a/1190000000736629)

为了能帮助你开始你的第一次尝试,我们用 good first issues 标记了一些比较比较容易修复的 bug 和小功能。这些 issue 可以很好地做为你的首次尝试。

如果你打算开始处理一个 issue,请先检查一下 issue 下面的留言以确保没有别人正在处理这个 issue。如果当前没有人在处理的话你可以留言告知其他人你将会处理这个 issue,以免别人重复劳动。

如果之前有人留言说会处理这个 issue 但是一两个星期都没有动静,那么你也可以接手处理这个 issue,当然还是需要留言告知其他人。

## Pull Request

Graphin 团队会关注所有的 pull request,我们会 review 以及合并你的代码,也有可能要求你做一些修改或者告诉你我们为什么不能接受这样的修改。

在你发送 Pull Request 之前,请确认你是按照下面的步骤来做的:

基于 [正确的分支](/zh/docs/manual/Contributing#分支管理) 做修改。

在项目根目录下运行了 npm install 和 npm run bootstrap。

如果你修复了一个 bug 或者新增了一个功能,请确保写了相应的测试,这很重要。

确认所有的测试都是通过 npm run test 来运行的。

运行 npm test -- -u 来更新 jest snapshot 并且把这些更新也提交上来(如果有的话)。

确保你的代码通过了 lint 检查 npm run lint. 小贴士: Lint 会在你 git commit 的时候自动运行(通过 Git Hooks)。

给 Graphin 发送 pull request:

### 开发流程

在你 clone 了 Graphin 的代码并且使用 npm install 和 npm run bootstrap 安装完依赖后,你还可以运行下面几个常用的命令:

npm run start 在本地运行 Graphin 和 Graphin Components 的构建

npm run dev 在本地运行 Graphin Studio 的网站。

npm run lint 检查代码风格。

npm run test 运行测试。

npm run build 编译 Graphin 和 Graphin Components 代码到 dist 目录。
Expand Up @@ -10,3 +10,5 @@ graphinRef.current.apis
## 02.G6 Graph 实例

graphinRef.current.graph

### 01.生命周期
186 changes: 186 additions & 0 deletions packages/graphin-site/docs/manual/apis.zh.md
@@ -0,0 +1,186 @@
---
title: API手册
order: 3
---

## Graphin

> Graphin 组件的 props 属性说明
|   属性 | 类型 | 是否必选 | 说明 |
| -------- | --------------------- | -------- | ------------- |
| data | [Data](#data) | **__** | 渲染数据 |
| layout | [Layout](#layout) || 布局信息 |
| options | [Options](#option) || 配置信息 |
| ref | [Ref](#ref) || Ref 实例 |
| extend | [Extend](#extend) || Extend 扩展 |
| register | [Register](#register) || Register 注册 |

## Data

> 数据驱动,1.可以实现节点和边的添加与删除,2.可以实现图的保存与渲染
|   属性 | 类型 | 是否必选 | 说明 |
| ------ | ---------------------- | -------- | ---------- |
| nodes | [`Array<Node>`](#node) || 节点的集合 |
| edges | [`Array<Edge>`](#edge) || 边的集合 |

### Node

|   属性 | 类型 | 是否必选 | 说明 |
| -------------- | ------------------------------------- | -------- | ------------------------------------------------- |
| id | `string` | **__** | 唯一标示 ID,必选 |
| data | [NodeData](#nodedata) | **__** | 节点源数据,必选,通常将后端数据存储在 data 字段中 |
| shape | `string` || 节点的图形类型(NodeShape) ,默认值为`CircleNode` |
| style | [NodeDefaultStyle](#nodedefaultstyle) || 和 NodeShape 相对应的样式信息 |
| x | `number` || 节点的位置信息:X 坐标 |
| y | `number` || 节点的位置信息:Y 坐标 |
| layout | Register || 图数据 |
| `[key:string]` | `any` || 其余用户自定义的属性,也是支持挂载的 |
| |

### NodeData

|   属性 | 类型 | 是否必选 | 说明 |
| -------------- | -------- | -------- | ----------------------- |
| id | `string` | **__** | 节点的唯一标示 ID,必选 |
| label | `string` || 节点的文本信息 |
| properties | `any` || 节点的属性 |
| `[key:string]` | `any` || 其余属性 |

### NodeDefaultStyle

|   属性 | 默认值 | 说明 |
| ------------ | --------- | -------------- |
| nodeSize | 20 | 节点的大小 |
| primaryColor | '#9900EF' | 节点的主要颜色 |
| fontSize | 12 | 文本的字体大小 |
| fontColor | '#3b3b3b' | 文本的字体颜色 |
| dark | '#eee' | dark 置灰 |

### Edge

|   属性 | 类型 | 是否必选 | 说明 |
| -------------- | -------- | -------- | ---------------------------- |
| data | `any` | **__** | 边的数据,必选 |
| source | `string` | **__** | 边的 源节点 ID,必选 |
| target | `string` | **__** | 边的 目标节点 ID,必选 |
| shape | `string` || 边的类型,默认值为`LineEdge` |
| label | `string` || 边的文本 |
| style | `any` || 节点的属性 |
| spring | `numbe` || 边的弹簧长度,力导时使用 |
| `[key:string]` | `any` || 其余边的属性,用户自行挂载 |

## Layout

> 布局
|   属性 | 类型 | 是否必选 | 含义 |
| ------- | --------------------------------------- | -------- | ------------------------- |
| name | `string` | **__** | 布局名称,必选 |
| options | `any` || 布局配置,可选, |
| | [CircleOptions](#circleoptions) || 圆形布局参数 circle |
| | [ConcentricOptions](#concentricoptions) || 同心圆布局参数 concentric |
| | [GridLOptions](#gridoptions) || 横纵布局参数 grid |
| | [RadialOptions]](#radialoptions) || 径向布局参数 radial |
| | [DagreOptions](#dagreoptions) || 有向分层布局参数 dagre |
| | [ForceOptions](#forceoptions) || 力导布局参数 force |

### CircleOptions

|   属性 | 类型 | 默认值 | 说明 |
| ------ | -------- | ------------------------ | ----------- |
| x | `number` | `CanvasWidth / 2` | 圆心 x 坐标 |
| y | `number` | `CanvasHeight / 2` | 圆心 y 坐标 |
| r | `number` | `data.nodes.length * 10` | 圆的半径 |
| scale | `number` | 0.8 | 缩放比率 |

### ConcentricOptions

|   属性 | 类型 | 默认值 | 说明 |
| -------------- | ---------- | ---------------------------------------- | ------------------------------------------ |
| boundingBox | `object` | `{x:0,y:0,w:CanvasWidth,y:CanvasHeight}` | 同心圆的布局范围,默认为当前画布的宽高范围 |
| minNodeSpacing | `number` | 60 | 节点间的距离,默认为 60 |
| levelWidth | `function` | `LevelWidthFunction` | 每层的节点度数范围 |

```tsx
const LevelWidthFunction = (nodes: Data['nodes'], maxDegree: number) => {
/** 同心圆层数 */
const levelNum = 8;
return maxDegree / levelNum;
};
```

### GridLOptions

|   属性 | 类型 | 默认值 | 说明 |
| -------- | -------- | -------------- | -------------------------------- |
| width | `number` | `CanvasWidth` | 布局范围的宽度 |
| height | `number` | `CanvasHeight` | 布局范围的高度 |
| nodeSep | `number` | 100 | 节点间的间距,上下左右均是一致的 |
| nodeSize | `number` | 50 | 节点的大小,单位 px |

### RadialOptions

|   属性 | 类型 | 默认值 | 说明 |
| -------------- | ----------------- | -------------------------------- | ---------- |
| center | `[number,number]` | `[CanvasWidth/2,CanvasHeight/2]` | 中心点坐标 |
| preventOverlap | `bolean` | `CanvasHeight` | 防止覆盖 |
| nodeSize | `number` | 100 | 节点大小 |
| unitRadius | `number` | 150 | 每层的半径 |

### DagreOptions

|   属性 | 类型 | 默认值 | 说明 |
| -------- | ----------------- | ------------------------- | ------------------ |
| center | `[number,number]` | `[width / 2, height / 2]` | 中心点坐标 |
| nodeSize | `number` | `CanvasHeight` | 节点大小 |
| nodesep | `number` | 12 | 节点水平间距(px) |
| ranksep | `number` | 50 | 每一层节点之间间距 |
| align | `string` | `UL` | 放置位置 |

### ForceOptions

|   属性 | 类型 | 默认值 | 说明 |
| ------------------ | -------- | ------------------------------ | -------------------------------------------------------------------------- |
| preset | `object` | `{ name: 'random',options:{}}` | 前置布局,主要用于布局切换。当前置布局为 force 时,内部启动 tweak 布局算法 |
| stiffness | `number` | 200 | 弹簧劲度系数 |
| defSpringLen | `number` | 200 | 默认的弹簧长度 |
| repulsion | `number` | 200.0 \* 5 | 斥力,这里指代 库伦常量 Ke |
| damping | `number` | 0.9 | 速度的减震因子,其实就是阻尼系数 |
| minEnergyThreshold | `number` | 0.1 | 最小能量阈值,粒子运动,有阻尼系数的存在,最终能量会消耗殆尽 |
| maxSpeed | `number` | 1000 | 最大的速度 [0,1000] |
| MaxIterations | `number` | 1000000 | 1000000 次/(1000/60) = 60000s = 1min |
| animation | `bolean` | true | 是否开启动画 |

```tsx
// 力导里的小细节

- edge.data.spring 可以指定设置边的弹簧长度
- node.layout.force.mass 可以设置力导节点的质量
```

## Options

|   属性 | 类型 | 是否必选 | 含义 |
| ------ | ----- | -------- | ---- |
| .. | `any` | **__** | .. |

## Extend

|   属性 | 类型 | 是否必选 | 含义 |
| ------ | ----- | -------- | ---- |
| .. | `any` | **__** | .. |

## Register

|   属性 | 类型 | 是否必选 | 含义 |
| ------ | ----- | -------- | ---- |
| .. | `any` | **__** | .. |

## Ref

|   属性 | 类型 | 是否必选 | 含义 |
| ------ | ----- | -------- | ----------- |
| graph | Graph || G6 的图实例 |
| apis | Apis || apis |

0 comments on commit adcbe56

Please sign in to comment.