orgchart 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.github/workflows/publish.yml +32 -0
  2. package/README.md +172 -93
  3. package/README.zh-cn.md +163 -74
  4. package/README.zh-tw.md +163 -74
  5. package/bower.json +6 -9
  6. package/demo/10000-nodes.html +139 -0
  7. package/demo/ajax-datasource.html +46 -45
  8. package/demo/bottom2top.html +12 -9
  9. package/demo/center-on-selected-node.html +21 -17
  10. package/demo/color-coded.html +12 -9
  11. package/demo/css/style.css +28 -0
  12. package/demo/custom-icons.html +12 -9
  13. package/demo/custom-template.html +12 -9
  14. package/demo/data-prop-compact.html +11 -8
  15. package/demo/data-prop-hybrid.html +79 -50
  16. package/demo/default-collapsed.html +12 -9
  17. package/demo/drag-drop-hybrid-chart.html +17 -14
  18. package/demo/drag-drop.html +21 -16
  19. package/demo/edit-chart.html +148 -94
  20. package/demo/edit-hybrid-chart.html +178 -135
  21. package/demo/expand-to-given-depth.html +30 -22
  22. package/demo/export-chart-pdf.html +12 -9
  23. package/demo/export-chart-with-pictures.html +19 -12
  24. package/demo/export-chart.html +12 -9
  25. package/demo/family-tree.html +14 -11
  26. package/demo/familytree-custom-properties.html +108 -0
  27. package/demo/filter-node.html +104 -57
  28. package/demo/get-hierarchy.html +17 -12
  29. package/demo/get-related-nodes.html +27 -17
  30. package/demo/index.html +5 -2
  31. package/demo/integrate-map.html +32 -27
  32. package/demo/left2right.html +12 -9
  33. package/demo/level-offset.html +16 -15
  34. package/demo/link-node.html +12 -9
  35. package/demo/local-datasource.html +11 -8
  36. package/demo/minimap.html +224 -0
  37. package/demo/nodes-of-different-widths.html +11 -8
  38. package/demo/ondemand-loading-data.html +88 -91
  39. package/demo/option-createNode.html +28 -17
  40. package/demo/pan-zoom.html +20 -11
  41. package/demo/reload-data.html +17 -14
  42. package/demo/report-path.html +59 -29
  43. package/demo/responsive-design.html +14 -11
  44. package/demo/right2left.html +12 -9
  45. package/demo/toggle-sibs-resp.html +12 -9
  46. package/demo/ul-datasource.html +11 -8
  47. package/demo/vertical-level.html +12 -9
  48. package/dist/css/{jquery.orgchart.css → orgchart.css} +143 -80
  49. package/dist/css/orgchart.min.css +1 -0
  50. package/dist/js/orgchart.js +4101 -0
  51. package/dist/js/orgchart.min.js +2 -0
  52. package/dist/js/orgchart.min.js.map +1 -0
  53. package/gulpfile.js +37 -26
  54. package/package.json +32 -32
  55. package/src/css/{jquery.orgchart.css → orgchart.css} +143 -80
  56. package/src/js/orgchart.js +4101 -0
  57. package/test/cypress/e2e/demo-interactions.cy.js +91 -0
  58. package/test/cypress/e2e/demo-rendering.cy.js +100 -0
  59. package/test/cypress/e2e/drag-drop-hybrid-chart.cy.js +22 -0
  60. package/test/cypress/e2e/edit-chart.cy.js +20 -0
  61. package/test/cypress/e2e/level-offset.cy.js +21 -0
  62. package/test/cypress/e2e/minimap.cy.js +66 -0
  63. package/test/cypress/e2e/pan-zoom.cy.js +165 -0
  64. package/test/cypress/e2e/report-path.cy.js +20 -0
  65. package/test/cypress/e2e/vertical-vevel.cy.js +5 -3
  66. package/test/e2e/local-datasource/test.js +1 -1
  67. package/test/integration/init-tests.js +168 -62
  68. package/test/integration/tests.js +1034 -56
  69. package/test/unit/lifecycle-builders-export.tests.js +1426 -0
  70. package/test/unit/minimap.tests.js +210 -0
  71. package/test/unit/tests.js +2372 -252
  72. package/dist/css/jquery.orgchart.min.css +0 -1
  73. package/dist/js/jquery.orgchart.js +0 -1741
  74. package/dist/js/jquery.orgchart.min.js +0 -5
  75. package/dist/js/jquery.orgchart.min.js.map +0 -1
  76. package/src/js/jquery.orgchart.js +0 -1741
package/README.zh-cn.md CHANGED
@@ -11,6 +11,9 @@
11
11
  ## 写在前面的话
12
12
  感谢[wesnolte](https://github.com/wesnolte)的非常棒的作品-- [jOrgChart](https://github.com/wesnolte/jOrgChart)。用嵌套的table来构造树状结构,用td的border来构造节点间的连线,非常有创意。天然地降低了前端程序员在构造树状结构时的工作量和难度,要知道,利用D3.js中的脑图去达到同样效果,开发周期就会长好多。哪怕你对svg,canvas等高级的制图API了然于胸,当你的树状结构图激发出HR大姐的各种天马行空的需求时,你会坦诚的承认svg或canvas这种重型武器拖累了你的快速解决一小戳敌人的能力。相比较而言,用单纯的**HTML5 + CSS3**的解决方案就像是 **“小米 + 步枪”的轻步兵**,天然地降低了你在实现树状结构图的难度,同时给予你更大的定制空间去面对基于这个结构图衍生出的种种琐碎需求。只要你的需求足够多,基于这个树状结构图,打造出一个完备的HR系统,也是可以期待的。实际上,网络上很多OrgChart商业软件就是围绕着一个树状结构核心模型展开的业务逻辑实现。
13
13
 
14
+ - 自 5.0 版本起,用户可以构建家谱树。
15
+ - 自 6.0 版本起,OrgChart 组件已回归原生实现,不再依赖 jQuery。
16
+
14
17
  ## 功能特性
15
18
  - 支持本地和远程的数据源。
16
19
  - 用户可以展开/折叠节点或子树,方便地浏览局部的结构图。
@@ -40,7 +43,9 @@ $ bower install orgchart
40
43
  # From version 1.0.4 on, users can install orgchart with npm
41
44
  $ npm install orgchart
42
45
  ```
43
- `require('orgchart')`会把orgchart插件追加到jQuery对象上。orgchart模块本身并不导出任何东西。
46
+ 在 CommonJS 环境中,`require('orgchart')`会直接导出 `OrgChart` 构造函数。
47
+
48
+ 可参考这个例子, [在React中使用jQuery Orchart](https://stackblitz.com/edit/vitejs-vite-hqv4nbdt)
44
49
 
45
50
  ## [gihtub pages实例集合](https://dabeng.github.io/OrgChart/)
46
51
  ## [基于嵌套ul的实例集合](https://codepen.io/collection/nWqvzY)
@@ -156,32 +161,32 @@ $ npm install orgchart
156
161
  ```
157
162
  var datascource = [
158
163
  [
159
- { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather', 'gender': 'male' },
164
+ { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather' },
160
165
  {
161
- 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'gender': 'female', 'outsider': true,
166
+ 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'outsider': true,
162
167
  'children': [
163
168
  [
164
- { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt', 'gender': 'female'}
169
+ { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt' }
165
170
  ],
166
171
  [
167
- { 'id': '3', 'name': 'Su Miao', 'title': 'Mother', 'gender': 'female',
172
+ { 'id': '3', 'name': 'Su Miao', 'title': 'Mother',
168
173
  'children': [
169
174
  [
170
175
 
171
- { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'gender': 'female', 'outsider': true,
176
+ { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'outsider': true,
172
177
  'children': [
173
- [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter', 'gender': 'female' }],
174
- [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter', 'gender': 'female' }],
178
+ [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter' }],
179
+ [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter' }],
175
180
  ]
176
181
  },
177
- { 'id': '5', 'name': 'Hei Hei', 'title': 'Me', 'gender': 'male' },
182
+ { 'id': '5', 'name': 'Hei Hei', 'title': 'Me' },
178
183
  ]
179
184
  ]
180
185
  },
181
- { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'gender': 'male', 'outsider': true }
186
+ { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'outsider': true }
182
187
  ],
183
188
  [
184
- { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt', 'gender': 'female'}
189
+ { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt' }
185
190
  ]
186
191
  ]
187
192
  }
@@ -189,6 +194,16 @@ var datascource = [
189
194
  ];
190
195
  ```
191
196
 
197
+ - [我想往族谱里追加一些自定义的标识](https://dabeng.github.io/OrgChart/familytree-custom-properties.html)
198
+
199
+ ![familytree-custom-properties](http://dabeng.github.io/OrgChart/img/familytree-custom-properties.png)
200
+
201
+ - [我想通过小地图导航组织结构图](https://dabeng.github.io/OrgChart/minimap.html)
202
+
203
+ ![minimap](http://dabeng.github.io/OrgChart/img/minimap.png)
204
+
205
+ 启用 `minimap` 选项即可显示概览导航器。拖动其中的视口可以移动组织结构图,在小地图上滚动鼠标滚轮可以缩放。
206
+
192
207
  ### 本地运行orgchart
193
208
 
194
209
  - 必须安装node.js v6+,因为我们的单元测试是基于jsdom v11。
@@ -202,7 +217,10 @@ var datascource = [
202
217
 
203
218
  ### 实例化组织结构图
204
219
  ```js
205
- var oc = $('#chartContainerId').orgchart(options);
220
+ var oc = new OrgChart({
221
+ chartContainer: '#chartContainerId',
222
+ data: datasource
223
+ });
206
224
  ```
207
225
 
208
226
  ### 数据源示例
@@ -251,7 +269,7 @@ var oc = $('#chartContainerId').orgchart(options);
251
269
  <tbody>
252
270
  <tr>
253
271
  <td>data</td>
254
- <td>json / jquery object</td>
272
+ <td>json / HTMLUListElement</td>
255
273
  <td>是</td>
256
274
  <td></td>
257
275
  <td>用于构造组织结构图的数据源。它的值可以是JSON或能提供数据的ul元素。</td>
@@ -352,7 +370,7 @@ var oc = $('#chartContainerId').orgchart(options);
352
370
  <td>function</td>
353
371
  <td>否</td>
354
372
  <td></td>
355
- <td>为该选项提供的函数,会在默认节点结构创建完毕后调用。利用传入的两个参数--"$node"和"data",可以帮助开发者定制或改动现有的节点结构。</td>
373
+ <td>为该选项提供的函数,会在默认节点结构创建完毕后调用。利用传入的两个参数--"node"和"data",可以帮助开发者定制或改动现有的节点结构。</td>
356
374
  </tr>
357
375
  <tr>
358
376
  <td>exportButton</td>
@@ -408,20 +426,54 @@ var oc = $('#chartContainerId').orgchart(options);
408
426
  <td>function</td>
409
427
  <td>否</td>
410
428
  <td></td>
411
- <td>组织结构图初始化完成后,该选项指定的回调函数被触发。该函数接受一个参数--"$chart", 即初始化后的组织结构图jquery对象。</td>
429
+ <td>组织结构图初始化完成后,该选项指定的回调函数被触发。该函数接受一个参数--"chart", 即初始化后的组织结构图元素。</td>
412
430
  </tr>
413
431
  </tbody>
414
432
  </table>
415
433
 
416
434
  ### 方法
417
- 我们相信当你研究了[edit orgchart](http://dabeng.github.io/OrgChart/edit-orgchart/)这个Demo后,会基本掌握orgchart插件的所有方法。
435
+ 使用 `new OrgChart(options)` 创建实例。`chartContainer` 和 `chart` 属性分别提供原生容器元素与已渲染的组织结构图元素。
418
436
 
419
- #### var oc = $container.orgchart(options)
420
- 在指定容器元素内嵌入一个组织结构图。该方法接受的options参数的细节可以到上面的“选项”一节中查看。这里的oc是OrgChart类的实例。
437
+ ```js
438
+ const oc = new OrgChart({ chartContainer: '#chartContainerId', data: datasource });
439
+ ```
440
+
441
+ 公开 API 包括:`init`、`setOptions`、`attachMinimap`、`detachMinimap`、`updateMinimap`、`addAncestors`、`addDescendants`、`addParent`、`addSiblings`、`addChildren`、`removeNodes`、`getHierarchy`、`getNodeState`、`getParent`、`getChildren`、`getSiblings`、`getRelatedNodes`、`hideParent`、`showParent`、`hideChildren`、`showChildren`、`hideSiblings`、`showSiblings`、`setChartScale`、`export`、`exportPNG` 和 `exportPDF`。其中节点和图表参数均为原生 `HTMLElement`。
442
+
443
+ #### API 参考
444
+ | 调用 | 参数 | 返回值与调用行为 |
445
+ | --- | --- | --- |
446
+ | `oc.init(options)` | 部分选项对象;传入 `data` 可替换数据源。 | 重新构建图表并返回 `oc`。 |
447
+ | `oc.setOptions(options)`<br>`oc.setOptions(name, value)` | 包含 `data`、`pan`、`zoom` 或 `minimap` 的对象;或受支持的选项名称及布尔值。 | `data` 会重建图表,其他选项切换相应功能;返回 `oc`。 |
448
+ | `oc.attachMinimap()`<br>`oc.detachMinimap()`<br>`oc.updateMinimap(forceRefresh)` | `forceRefresh` 可选;传入 `true` 会重绘节点预览。 | 创建、移除或刷新小地图。常规启用应使用 `setOptions('minimap', value)`。 |
449
+ | `oc.addAncestors(data, parentId)` | 祖先数据,以及接收原根节点的祖先节点 id。 | 插入祖先层级;无返回值。 |
450
+ | `oc.addDescendants(data, parent)` | 后代数据数组和已渲染的父 `.node`。 | 追加后代层级;无返回值。 |
451
+ | `oc.addParent(currentRoot, data)` | 已渲染的根 `.node` 和新父节点数据。 | 用新父节点包裹当前根;无返回值。 |
452
+ | `oc.addSiblings(node, data)`<br>`oc.addChildren(node, data)` | 已渲染的 `.node` 和兄弟节点或子节点数据数组。 | 增加渲染节点;无返回值。 |
453
+ | `oc.removeNodes(node)` | 要删除的已渲染 `.node`。 | 删除该节点及其后代;无返回值。 |
454
+ | `oc.getHierarchy(includeNodeData)` | 可选布尔值,默认 `false`。 | 返回层级对象;图表或必要节点 id 不可用时返回错误字符串。 |
455
+ | `oc.getNodeState(node, relation)` | 已渲染 `.node`;`relation` 为 `parent`、`children` 或 `siblings`。 | 返回 `{ exist, visible }`。 |
456
+ | `oc.getParent(node)` | 已渲染 `.node`。 | 返回父 `.node`,不存在时返回 `null`。 |
457
+ | `oc.getChildren(node)`<br>`oc.getSiblings(node)` | 已渲染 `.node`。 | 返回直接子节点或兄弟节点 `.node` 元素数组。 |
458
+ | `oc.getRelatedNodes(node, relation)` | 已渲染 `.node`;`relation` 为 `parent`、`children` 或 `siblings`。 | 通用关联查询;parent 返回节点或 `null`,其他关系返回数组。 |
459
+ | `oc.hideParent(node)` / `oc.showParent(node)`<br>`oc.hideChildren(node)` / `oc.showChildren(node)` | 已渲染 `.node`。 | 通过图表过渡隐藏或显示关联分支;无返回值。 |
460
+ | `oc.hideSiblings(node, direction)`<br>`oc.showSiblings(node, direction)` | 已渲染 `.node`;可选 `direction` 为 `left` 或 `right`。 | 隐藏或显示指定一侧的兄弟节点;省略方向时处理全部兄弟节点;无返回值。 |
461
+ | `oc.setChartScale(chart, multiplier, zoomAnchor)` | 通常传入 `oc.chart`;正数的相对缩放倍数;可选视口坐标 `{ x, y }`。 | 在配置的缩放范围内缩放,提供 `zoomAnchor` 时固定该点。 |
462
+ | `oc.export(filename, extension)` | 可选文件名和 `png` 或 `pdf` 扩展名。 | 按配置默认值开始导出;无法导出时返回 `false`。 |
463
+ | `oc.exportPNG(canvas, filename)`<br>`oc.exportPDF(canvas, filename, exportScale)` | 已准备的 canvas、文件名;PDF 缩放默认 `1`。 | 将传入 canvas 直接下载为 PNG 或 PDF;通常应调用 `export()`。 |
421
464
 
422
465
  #### init(newOptions)
423
466
  当你想基于新的options或数据源刷新组织结构图时,这个方法就派上用场了。
424
467
 
468
+ #### setOptions(options) / setOptions(name, value)
469
+ 无需重新构建图表即可更新 `pan`、`zoom` 或 `minimap`。可传入选项对象,或传入支持的选项名称和布尔值;传入包含 `data` 的对象时会重新构建图表。
470
+
471
+ #### attachMinimap() / detachMinimap()
472
+ 创建或移除当前图表的小地图覆盖层。通常应使用 `setOptions('minimap', true|false)`,以保证选项状态和覆盖层保持同步。
473
+
474
+ #### updateMinimap(forceRefresh)
475
+ 在修改图表变换或布局后重新计算小地图视口。传入 `true` 会重绘小地图中的节点预览。
476
+
425
477
  #### addAncestors(data, parentId)
426
478
  为当前的组织结构图增加祖先节点,可以不止一个层级。
427
479
  <table>
@@ -452,7 +504,7 @@ var oc = $('#chartContainerId').orgchart(options);
452
504
  </tbody>
453
505
  </table>
454
506
 
455
- #### addDescendants(data, $parent)
507
+ #### addDescendants(data, parent)
456
508
  为指定的父节点增加后代节点。
457
509
  <table>
458
510
  <thead>
@@ -473,8 +525,8 @@ var oc = $('#chartContainerId').orgchart(options);
473
525
  <td>用于构造后代节点的数据源</td>
474
526
  </tr>
475
527
  <tr>
476
- <td>$parent</td>
477
- <td>jquery object</td>
528
+ <td>parent</td>
529
+ <td>HTMLElement</td>
478
530
  <td>yes</td>
479
531
  <td></td>
480
532
  <td>后代节点要追加到的父节点对象</td>
@@ -482,7 +534,7 @@ var oc = $('#chartContainerId').orgchart(options);
482
534
  </tbody>
483
535
  </table>
484
536
 
485
- #### addParent(data)
537
+ #### addParent(currentRoot, data)
486
538
  为当前的组织结构图增加父节点。
487
539
  <table>
488
540
  <thead>
@@ -495,6 +547,13 @@ var oc = $('#chartContainerId').orgchart(options);
495
547
  </tr>
496
548
  </thead>
497
549
  <tbody>
550
+ <tr>
551
+ <td>currentRoot</td>
552
+ <td>HTMLElement</td>
553
+ <td>是</td>
554
+ <td></td>
555
+ <td>当前组织结构图的根节点,新父节点会包裹这个根节点</td>
556
+ </tr>
498
557
  <tr>
499
558
  <td>data</td>
500
559
  <td>json object</td>
@@ -505,7 +564,7 @@ var oc = $('#chartContainerId').orgchart(options);
505
564
  </tbody>
506
565
  </table>
507
566
 
508
- #### addSiblings($node, data)
567
+ #### addSiblings(node, data)
509
568
  为指定的节点增加兄弟节点。
510
569
  <table>
511
570
  <thead>
@@ -519,8 +578,8 @@ var oc = $('#chartContainerId').orgchart(options);
519
578
  </thead>
520
579
  <tbody>
521
580
  <tr>
522
- <td>$node</td>
523
- <td>jquery object</td>
581
+ <td>node</td>
582
+ <td>HTMLElement</td>
524
583
  <td>是</td>
525
584
  <td></td>
526
585
  <td>基于该节点增加其兄弟节点</td>
@@ -535,7 +594,7 @@ var oc = $('#chartContainerId').orgchart(options);
535
594
  </tbody>
536
595
  </table>
537
596
 
538
- #### addChildren($node, data)
597
+ #### addChildren(node, data)
539
598
  为指定的节点增加孩子节点。
540
599
  <table>
541
600
  <thead>
@@ -549,8 +608,8 @@ var oc = $('#chartContainerId').orgchart(options);
549
608
  </thead>
550
609
  <tbody>
551
610
  <tr>
552
- <td>$node</td>
553
- <td>jquery object</td>
611
+ <td>node</td>
612
+ <td>HTMLElement</td>
554
613
  <td>是</td>
555
614
  <td></td>
556
615
  <td>基于该节点增加其孩子节点</td>
@@ -565,7 +624,7 @@ var oc = $('#chartContainerId').orgchart(options);
565
624
  </tbody>
566
625
  </table>
567
626
 
568
- #### removeNodes($node)
627
+ #### removeNodes(node)
569
628
  删除指定的节点及其后代节点。
570
629
  <table>
571
630
  <thead>
@@ -579,8 +638,8 @@ var oc = $('#chartContainerId').orgchart(options);
579
638
  </thead>
580
639
  <tbody>
581
640
  <tr>
582
- <td>$node</td>
583
- <td>jquery object</td>
641
+ <td>node</td>
642
+ <td>HTMLElement</td>
584
643
  <td>是</td>
585
644
  <td></td>
586
645
  <td>待删除的节点。</td>
@@ -608,7 +667,7 @@ var oc = $('#chartContainerId').orgchart(options);
608
667
  </tr>
609
668
  </table>
610
669
 
611
- #### hideParent($node)
670
+ #### hideParent(node)
612
671
  隐藏指定节点的父节点。当然其兄弟节点及祖先节点也一并隐藏了。
613
672
  <table>
614
673
  <tr>
@@ -619,15 +678,15 @@ var oc = $('#chartContainerId').orgchart(options);
619
678
  <th>描述</th>
620
679
  </tr>
621
680
  <tr>
622
- <td>$node</td>
623
- <td>JQuery Object</td>
681
+ <td>node</td>
682
+ <td>HTMLElement</td>
624
683
  <td>Yes</td>
625
684
  <td>None</td>
626
- <td>指定节点的jquery对象。</td>
685
+ <td>指定节点元素。</td>
627
686
  </tr>
628
687
  </table>
629
688
 
630
- #### showParent($node)
689
+ #### showParent(node)
631
690
  显示指定节点的父节点。但不包括更上一层的祖先节点。
632
691
 
633
692
  <table>
@@ -639,15 +698,15 @@ var oc = $('#chartContainerId').orgchart(options);
639
698
  <th>描述</th>
640
699
  </tr>
641
700
  <tr>
642
- <td>$node</td>
643
- <td>JQuery Object</td>
701
+ <td>node</td>
702
+ <td>HTMLElement</td>
644
703
  <td>是</td>
645
704
  <td></td>
646
- <td>指定节点的jquery对象。</td>
705
+ <td>指定节点元素。</td>
647
706
  </tr>
648
707
  </table>
649
708
 
650
- #### hideChildren($node)
709
+ #### hideChildren(node)
651
710
  隐藏指定节点的孩子节点。当然这其中包含了所有的后代节点。
652
711
 
653
712
  <table>
@@ -659,15 +718,15 @@ var oc = $('#chartContainerId').orgchart(options);
659
718
  <th>描述</th>
660
719
  </tr>
661
720
  <tr>
662
- <td>$node</td>
663
- <td>JQuery Object</td>
721
+ <td>node</td>
722
+ <td>HTMLElement</td>
664
723
  <td>是</td>
665
724
  <td></td>
666
- <td>指定节点的jquery对象。</td>
725
+ <td>指定节点元素。</td>
667
726
  </tr>
668
727
  </table>
669
728
 
670
- #### showChildren($node)
729
+ #### showChildren(node)
671
730
  显示指定节点的孩子节点。默认只显示紧邻的下一个层级,并不包括所有的后代节点。
672
731
 
673
732
  <table>
@@ -679,15 +738,15 @@ var oc = $('#chartContainerId').orgchart(options);
679
738
  <th>描述</th>
680
739
  </tr>
681
740
  <tr>
682
- <td>$node</td>
683
- <td>JQuery Object</td>
741
+ <td>node</td>
742
+ <td>HTMLElement</td>
684
743
  <td>是</td>
685
744
  <td></td>
686
- <td>指定节点的jquery对象。</td>
745
+ <td>指定节点元素。</td>
687
746
  </tr>
688
747
  </table>
689
748
 
690
- #### hideSiblings($node, direction)
749
+ #### hideSiblings(node, direction)
691
750
  隐藏指定节点的兄弟节点。
692
751
 
693
752
  <table>
@@ -699,11 +758,11 @@ var oc = $('#chartContainerId').orgchart(options);
699
758
  <th>描述</th>
700
759
  </tr>
701
760
  <tr>
702
- <td>$node</td>
703
- <td>JQuery Object</td>
761
+ <td>node</td>
762
+ <td>HTMLElement</td>
704
763
  <td>是</td>
705
764
  <td></td>
706
- <td>指定节点的jquery对象。</td>
765
+ <td>指定节点元素。</td>
707
766
  </tr>
708
767
  <tr>
709
768
  <td>direction</td>
@@ -714,7 +773,7 @@ var oc = $('#chartContainerId').orgchart(options);
714
773
  </tr>
715
774
  </table>
716
775
 
717
- #### showSiblings($node, direction)
776
+ #### showSiblings(node, direction)
718
777
  显示指定节点的兄弟节点。
719
778
 
720
779
  <table>
@@ -726,11 +785,11 @@ var oc = $('#chartContainerId').orgchart(options);
726
785
  <th>描述</th>
727
786
  </tr>
728
787
  <tr>
729
- <td>$node</td>
730
- <td>JQuery Object</td>
788
+ <td>node</td>
789
+ <td>HTMLElement</td>
731
790
  <td>是</td>
732
791
  <td></td>
733
- <td>It's the desired JQuery Object to show its siblings nodes</td>
792
+ <td>指定节点元素。</td>
734
793
  </tr>
735
794
  <tr>
736
795
  <td>direction</td>
@@ -741,7 +800,7 @@ var oc = $('#chartContainerId').orgchart(options);
741
800
  </tr>
742
801
  </table>
743
802
 
744
- #### getNodeState($node, relation)
803
+ #### getNodeState(node, relation)
745
804
  该方法帮你了解指定节点的相关节点的显示状况。
746
805
 
747
806
  <table>
@@ -753,11 +812,11 @@ var oc = $('#chartContainerId').orgchart(options);
753
812
  <th>描述</th>
754
813
  </tr>
755
814
  <tr>
756
- <td>$node</td>
757
- <td>JQuery Object</td>
815
+ <td>node</td>
816
+ <td>HTMLElement</td>
758
817
  <td>是</td>
759
818
  <td></td>
760
- <td>指定节点的jquery对象。</td>
819
+ <td>指定节点元素。</td>
761
820
  </tr>
762
821
  <tr>
763
822
  <td>relation</td>
@@ -775,7 +834,7 @@ var oc = $('#chartContainerId').orgchart(options);
775
834
  "visible":true|false, // 标识相关节点当前是否可见
776
835
  }
777
836
  ```
778
- #### getRelatedNodes($node, relation)
837
+ #### getRelatedNodes(node, relation)
779
838
  获得指定节点的关联节点。
780
839
 
781
840
  <table>
@@ -787,11 +846,11 @@ var oc = $('#chartContainerId').orgchart(options);
787
846
  <th>描述</th>
788
847
  </tr>
789
848
  <tr>
790
- <td>$node</td>
791
- <td>JQuery Object</td>
849
+ <td>node</td>
850
+ <td>HTMLElement</td>
792
851
  <td>是</td>
793
852
  <td></td>
794
- <td>指定节点的jquery对象。</td>
853
+ <td>指定节点元素。</td>
795
854
  </tr>
796
855
  <tr>
797
856
  <td>relation</td>
@@ -802,9 +861,20 @@ var oc = $('#chartContainerId').orgchart(options);
802
861
  </tr>
803
862
  </table>
804
863
 
805
- #### setChartScale($chart, newScale)
864
+ #### getParent(node)
865
+ 返回指定节点的父节点;如果不存在父节点,则返回 `null`。
866
+
867
+ #### getChildren(node)
868
+ 返回指定节点的直接子节点数组。返回值中的每一项都是原生 `HTMLElement`。
869
+
870
+ #### getSiblings(node)
871
+ 返回指定节点的兄弟节点数组。返回值中的每一项都是原生 `HTMLElement`。
872
+
873
+ #### setChartScale(chart, newScale, zoomAnchor)
806
874
  用这个方法可以帮你为指定的组织结构图设置新的scale系数。
807
875
 
876
+ `zoomAnchor` 为可选参数,格式为视口坐标 `{ x, y }`。提供该参数后,缩放时会固定该坐标点。
877
+
808
878
  <table>
809
879
  <tr>
810
880
  <th>名称</th>
@@ -814,8 +884,8 @@ var oc = $('#chartContainerId').orgchart(options);
814
884
  <th>描述</th>
815
885
  </tr>
816
886
  <tr>
817
- <td>$chart</td>
818
- <td>JQuery Object</td>
887
+ <td>chart</td>
888
+ <td>HTMLElement</td>
819
889
  <td>是</td>
820
890
  <td>None</td>
821
891
  <td>组织结构图容器中的某一个图。</td>
@@ -856,8 +926,22 @@ var oc = $('#chartContainerId').orgchart(options);
856
926
  </tr>
857
927
  </table>
858
928
 
929
+ #### exportPNG(canvas, exportFilename)
930
+ 将准备好的 canvas 导出为 PNG 下载。当应用自行提供 canvas 时可直接调用;大多数场景应使用 `export()`。
931
+
932
+ #### exportPDF(canvas, exportFilename, exportScale)
933
+ 将准备好的 canvas 导出为 PDF 下载。`exportScale` 是 canvas 的渲染缩放比例,用于保持 PDF 的逻辑尺寸;大多数场景应使用 `export()`。
934
+
859
935
  ### 事件
860
936
 
937
+ OrgChart 会派发可冒泡的原生 `CustomEvent`。请使用 `addEventListener` 订阅,事件参数位于 `event.detail`。
938
+
939
+ ```js
940
+ oc.chart.addEventListener('nodedrop.orgchart', function (event) {
941
+ const { draggedNode, dragZone, dropZone } = event.detail;
942
+ });
943
+ ```
944
+
861
945
  <table>
862
946
  <thead>
863
947
  <tr>
@@ -869,23 +953,28 @@ var oc = $('#chartContainerId').orgchart(options);
869
953
  <tbody>
870
954
  <tr>
871
955
  <td>nodedrop.orgchart</td>
872
- <td>draggedNode, dragZone, dropZone</td>
873
- <td>当你拖拽一个节点,然后在目前区域松放时,该事件被触发。请参考实例 <a target="_blank" href="http://dabeng.github.io/OrgChart/drag-drop/">example drag & drop</a>。</td>
956
+ <td><code>event.detail</code>: draggedNode, dragZone, dropZone</td>
957
+ <td>在节点移动前于图表元素上触发。调用 <code>event.preventDefault()</code> 可取消本次拖放。</td>
958
+ </tr>
959
+ <tr>
960
+ <td>otherdropped.orgchart</td>
961
+ <td><code>event.detail</code>: draggedItem, dropZone</td>
962
+ <td>非 OrgChart 的可拖放项被放到节点上时,于图表元素上触发。</td>
874
963
  </tr>
875
964
  <tr>
876
965
  <td>init.orgchart</td>
877
- <td>chart</td>
878
- <td>当组织结构图初始化完成时,该事件触发。在响应事件处理器中,你可以访问到渲染出的任意节点。</td>
966
+ <td>无;<code>event.target</code> 为图表元素</td>
967
+ <td>图表渲染完成后触发。</td>
879
968
  </tr>
880
969
  <tr>
881
970
  <td>show-[relation].orgchart</td>
882
971
  <td></td>
883
- <td>在显示指定节点的关联节点时,触发该事件。</td>
972
+ <td>关联节点显示时在该节点上触发;<code>relation</code> 为 parent、children 或 siblings。</td>
884
973
  </tr>
885
974
  <tr>
886
975
  <td>hide-[relation].orgchart</td>
887
976
  <td></td>
888
- <td>在隐藏指定节点的关联节点时,触发该事件。</td>
977
+ <td>关联节点隐藏时在该节点上触发;<code>relation</code> 为 parent、children 或 siblings。</td>
889
978
  </tr>
890
979
  </tbody>
891
980
  </table>
@@ -896,9 +985,9 @@ var oc = $('#chartContainerId').orgchart(options);
896
985
 
897
986
  我们提供了一个CSS类"noncollapsable",可以方便地完成这件事。
898
987
  ```js
899
- $('.orgchart').addClass('noncollapsable'); // 禁掉展开/折叠
988
+ oc.chart.classList.add('noncollapsable'); // 禁掉展开/折叠
900
989
 
901
- $('.orgchart').removeClass('noncollapsable'); // 开启展开/折叠
990
+ oc.chart.classList.remove('noncollapsable'); // 开启展开/折叠
902
991
  ```
903
992
 
904
993
  #### 为啥根节点消失了,看不到了?