orgchart 4.0.1 → 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 (77) hide show
  1. package/.github/workflows/publish.yml +32 -0
  2. package/README.md +205 -89
  3. package/README.zh-cn.md +221 -68
  4. package/README.zh-tw.md +221 -68
  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 +100 -0
  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 +7 -4
  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 +31 -20
  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} +210 -78
  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} +210 -78
  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/demo/multiple-layers.html +0 -128
  73. package/dist/css/jquery.orgchart.min.css +0 -1
  74. package/dist/js/jquery.orgchart.js +0 -1686
  75. package/dist/js/jquery.orgchart.min.js +0 -5
  76. package/dist/js/jquery.orgchart.min.js.map +0 -1
  77. package/src/js/jquery.orgchart.js +0 -1686
package/README.zh-tw.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)
@@ -105,10 +110,6 @@ $ npm install orgchart
105
110
 
106
111
  我們只需要把css的樣式與數據源中的id字段或css類字段關聯起來就好。
107
112
 
108
- - [我想實現一個多層級(而非深度)的組織結構圖](https://dabeng.github.io/OrgChart/multiple-layers.html)
109
-
110
- 如果你的組織層級很多,二每個層級下的節點也很多,那麽上面的方案可以采納嘗試。
111
-
112
113
  - [我想構造一個混合布局的(水平方向 + 垂直方向)組織結構圖](https://dabeng.github.io/OrgChart/vertical-level.html)
113
114
 
114
115
  這個特性的靈感來源于這兩個話題的討論--[Aligning Children Vertical](https://github.com/dabeng/OrgChart/issues/46), [Hybrid(horizontal + vertical) OrgChart](https://github.com/dabeng/OrgChart/issues/61)。感謝[mfahadi](https://github.com/mfahadi)和[Destructrix](https://github.com/Destructrix)建設性的討論:blush:尤其感謝[tedliang](https://github.com/tedliang)提供了非常棒的混合布局的解決方案。
@@ -125,6 +126,84 @@ $ npm install orgchart
125
126
 
126
127
  沒問題,我們推薦使用ES6的模版字符串。
127
128
 
129
+ - [我想將節點安置在特定的層級。 咋做 ?](https://dabeng.github.io/OrgChart/level-offset.html)
130
+
131
+ ![level-offset](http://dabeng.github.io/OrgChart/img/level-offset.png)
132
+
133
+ 你需要的是一個復合的解決方案: **levelOffset data prop** + callback createNode() + CSS custom properties(variables)
134
+
135
+ - [我想構造一個組織結構圖,每個節點寬度都可以不同的](https://dabeng.github.io/OrgChart/nodes-of-different-widths.html)
136
+
137
+ ![nodes-of-different-widths](http://dabeng.github.io/OrgChart/img/nodes-of-different-widths.png)
138
+
139
+ - [我想在混合布局中實現拖/放功能](https://dabeng.github.io/OrgChart/drag-drop-hybrid-chart.html)
140
+
141
+ - [我想指定從某一分支開始,其下所有子節點都以垂直樣式顯示](https://dabeng.github.io/OrgChart/data-prop-hybrid.html)
142
+
143
+ ![data-prop-hybrid](http://dabeng.github.io/OrgChart/img/data-prop-hybrid.png)
144
+
145
+ **hybrid data property** 就派上用場了。 在數據源的某個節點中提供"hybrid"屬性,那麽它的所有後代節點都會垂直布局。
146
+
147
+ - [我想用Font Awesome圖標代替內置的圖標](https://dabeng.github.io/OrgChart/custom-icons.html)
148
+
149
+ - [子節點眾多的時候,我想以一種壓縮起來的展示方式盡可能節省空間](https://dabeng.github.io/OrgChart/data-prop-compact.html)
150
+
151
+ ![data-prop-compact](http://dabeng.github.io/OrgChart/img/data-prop-compact.png)
152
+
153
+ **compact data property** 就派上用場了。在數據源的某個節點裏提供了"compact"屬性,並賦為真值,那麽它和它的子節點就會展示為壓縮模式。
154
+
155
+ - [我想構造族譜,家譜,宗譜的關系圖](https://dabeng.github.io/OrgChart/family-tree.html)
156
+
157
+ ![family-tree](http://dabeng.github.io/OrgChart/img/family-tree.png)
158
+
159
+ 我們使用如下的二維數組數據源來構建家譜。“outsider”代表外姓人。
160
+
161
+ ```
162
+ var datascource = [
163
+ [
164
+ { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather' },
165
+ {
166
+ 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'outsider': true,
167
+ 'children': [
168
+ [
169
+ { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt' }
170
+ ],
171
+ [
172
+ { 'id': '3', 'name': 'Su Miao', 'title': 'Mother',
173
+ 'children': [
174
+ [
175
+
176
+ { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'outsider': true,
177
+ 'children': [
178
+ [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter' }],
179
+ [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter' }],
180
+ ]
181
+ },
182
+ { 'id': '5', 'name': 'Hei Hei', 'title': 'Me' },
183
+ ]
184
+ ]
185
+ },
186
+ { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'outsider': true }
187
+ ],
188
+ [
189
+ { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt' }
190
+ ]
191
+ ]
192
+ }
193
+ ]
194
+ ];
195
+ ```
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
+
128
207
  ### 本地運行orgchart
129
208
 
130
209
  - 必須安裝node.js v6+,因爲我們的單元測試是基于jsdom v11。
@@ -138,7 +217,10 @@ $ npm install orgchart
138
217
 
139
218
  ### 實例化組織結構圖
140
219
  ```js
141
- var oc = $('#chartContainerId').orgchart(options);
220
+ var oc = new OrgChart({
221
+ chartContainer: '#chartContainerId',
222
+ data: datasource
223
+ });
142
224
  ```
143
225
 
144
226
  ### 數據源示例
@@ -187,7 +269,7 @@ var oc = $('#chartContainerId').orgchart(options);
187
269
  <tbody>
188
270
  <tr>
189
271
  <td>data</td>
190
- <td>json / jquery object</td>
272
+ <td>json / HTMLUListElement</td>
191
273
  <td>是</td>
192
274
  <td></td>
193
275
  <td>用于構造組織結構圖的數據源。它的值可以是JSON或能提供數據的ul元素。</td>
@@ -288,7 +370,7 @@ var oc = $('#chartContainerId').orgchart(options);
288
370
  <td>function</td>
289
371
  <td>否</td>
290
372
  <td></td>
291
- <td>爲該選項提供的函數,會在默認節點結構創建完畢後調用。利用傳入的兩個參數--"$node"和"data",可以幫助開發者定制或改動現有的節點結構。</td>
373
+ <td>爲該選項提供的函數,會在默認節點結構創建完畢後調用。利用傳入的兩個參數--"node"和"data",可以幫助開發者定制或改動現有的節點結構。</td>
292
374
  </tr>
293
375
  <tr>
294
376
  <td>exportButton</td>
@@ -344,20 +426,54 @@ var oc = $('#chartContainerId').orgchart(options);
344
426
  <td>function</td>
345
427
  <td>否</td>
346
428
  <td></td>
347
- <td>組織結構圖初始化完成後,該選項指定的回調函數被觸發。該函數接受一個參數--"$chart", 即初始化後的組織結構圖jquery對象。</td>
429
+ <td>組織結構圖初始化完成後,該選項指定的回調函數被觸發。該函數接受一個參數--"chart", 即初始化後的組織結構圖元素。</td>
348
430
  </tr>
349
431
  </tbody>
350
432
  </table>
351
433
 
352
434
  ### 方法
353
- 我們相信當你研究了[edit orgchart](http://dabeng.github.io/OrgChart/edit-orgchart/)這個Demo後,會基本掌握orgchart插件的所有方法。
435
+ 使用 `new OrgChart(options)` 建立實例。`chartContainer` 和 `chart` 屬性分別提供原生容器元素與已渲染的組織結構圖元素。
436
+
437
+ ```js
438
+ const oc = new OrgChart({ chartContainer: '#chartContainerId', data: datasource });
439
+ ```
354
440
 
355
- #### var oc = $container.orgchart(options)
356
- 在指定容器元素內嵌入一個組織結構圖。該方法接受的options參數的細節可以到上面的“選項”一節中查看。這裏的oc是OrgChart類的實例。
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()`。 |
357
464
 
358
465
  #### init(newOptions)
359
466
  當你想基于新的options或數據源刷新組織結構圖時,這個方法就派上用場了。
360
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
+
361
477
  #### addAncestors(data, parentId)
362
478
  爲當前的組織結構圖增加祖先節點,可以不止壹個層級。
363
479
  <table>
@@ -388,7 +504,7 @@ var oc = $('#chartContainerId').orgchart(options);
388
504
  </tbody>
389
505
  </table>
390
506
 
391
- #### addDescendants(data, $parent)
507
+ #### addDescendants(data, parent)
392
508
  爲指定的父節點增加後代節點。
393
509
  <table>
394
510
  <thead>
@@ -409,8 +525,8 @@ var oc = $('#chartContainerId').orgchart(options);
409
525
  <td>用于構造後代節點的數據源</td>
410
526
  </tr>
411
527
  <tr>
412
- <td>$parent</td>
413
- <td>jquery object</td>
528
+ <td>parent</td>
529
+ <td>HTMLElement</td>
414
530
  <td>yes</td>
415
531
  <td></td>
416
532
  <td>後代節點要追加到的父節點對象</td>
@@ -418,7 +534,7 @@ var oc = $('#chartContainerId').orgchart(options);
418
534
  </tbody>
419
535
  </table>
420
536
 
421
- #### addParent(data)
537
+ #### addParent(currentRoot, data)
422
538
  爲當前的組織結構圖增加父節點。
423
539
  <table>
424
540
  <thead>
@@ -431,6 +547,13 @@ var oc = $('#chartContainerId').orgchart(options);
431
547
  </tr>
432
548
  </thead>
433
549
  <tbody>
550
+ <tr>
551
+ <td>currentRoot</td>
552
+ <td>HTMLElement</td>
553
+ <td>是</td>
554
+ <td></td>
555
+ <td>當前組織結構圖的根節點,新父節點會包裹這個根節點</td>
556
+ </tr>
434
557
  <tr>
435
558
  <td>data</td>
436
559
  <td>json object</td>
@@ -441,7 +564,7 @@ var oc = $('#chartContainerId').orgchart(options);
441
564
  </tbody>
442
565
  </table>
443
566
 
444
- #### addSiblings($node, data)
567
+ #### addSiblings(node, data)
445
568
  爲指定的節點增加兄弟節點。
446
569
  <table>
447
570
  <thead>
@@ -455,8 +578,8 @@ var oc = $('#chartContainerId').orgchart(options);
455
578
  </thead>
456
579
  <tbody>
457
580
  <tr>
458
- <td>$node</td>
459
- <td>jquery object</td>
581
+ <td>node</td>
582
+ <td>HTMLElement</td>
460
583
  <td>是</td>
461
584
  <td></td>
462
585
  <td>基于該節點增加其兄弟節點</td>
@@ -471,7 +594,7 @@ var oc = $('#chartContainerId').orgchart(options);
471
594
  </tbody>
472
595
  </table>
473
596
 
474
- #### addChildren($node, data)
597
+ #### addChildren(node, data)
475
598
  爲指定的節點增加孩子節點。
476
599
  <table>
477
600
  <thead>
@@ -485,8 +608,8 @@ var oc = $('#chartContainerId').orgchart(options);
485
608
  </thead>
486
609
  <tbody>
487
610
  <tr>
488
- <td>$node</td>
489
- <td>jquery object</td>
611
+ <td>node</td>
612
+ <td>HTMLElement</td>
490
613
  <td>是</td>
491
614
  <td></td>
492
615
  <td>基于該節點增加其孩子節點</td>
@@ -501,7 +624,7 @@ var oc = $('#chartContainerId').orgchart(options);
501
624
  </tbody>
502
625
  </table>
503
626
 
504
- #### removeNodes($node)
627
+ #### removeNodes(node)
505
628
  刪除指定的節點及其後代節點。
506
629
  <table>
507
630
  <thead>
@@ -515,8 +638,8 @@ var oc = $('#chartContainerId').orgchart(options);
515
638
  </thead>
516
639
  <tbody>
517
640
  <tr>
518
- <td>$node</td>
519
- <td>jquery object</td>
641
+ <td>node</td>
642
+ <td>HTMLElement</td>
520
643
  <td>是</td>
521
644
  <td></td>
522
645
  <td>待刪除的節點。</td>
@@ -544,7 +667,7 @@ var oc = $('#chartContainerId').orgchart(options);
544
667
  </tr>
545
668
  </table>
546
669
 
547
- #### hideParent($node)
670
+ #### hideParent(node)
548
671
  隱藏指定節點的父節點。當然其兄弟節點及祖先節點也一並隱藏了。
549
672
  <table>
550
673
  <tr>
@@ -555,15 +678,15 @@ var oc = $('#chartContainerId').orgchart(options);
555
678
  <th>描述</th>
556
679
  </tr>
557
680
  <tr>
558
- <td>$node</td>
559
- <td>JQuery Object</td>
681
+ <td>node</td>
682
+ <td>HTMLElement</td>
560
683
  <td>Yes</td>
561
684
  <td>None</td>
562
- <td>指定節點的jquery對象。</td>
685
+ <td>指定節點元素。</td>
563
686
  </tr>
564
687
  </table>
565
688
 
566
- #### showParent($node)
689
+ #### showParent(node)
567
690
  顯示指定節點的父節點。但不包括更上一層的祖先節點。
568
691
 
569
692
  <table>
@@ -575,15 +698,15 @@ var oc = $('#chartContainerId').orgchart(options);
575
698
  <th>描述</th>
576
699
  </tr>
577
700
  <tr>
578
- <td>$node</td>
579
- <td>JQuery Object</td>
701
+ <td>node</td>
702
+ <td>HTMLElement</td>
580
703
  <td>是</td>
581
704
  <td></td>
582
- <td>指定節點的jquery對象。</td>
705
+ <td>指定節點元素。</td>
583
706
  </tr>
584
707
  </table>
585
708
 
586
- #### hideChildren($node)
709
+ #### hideChildren(node)
587
710
  隱藏指定節點的孩子節點。當然這其中包含了所有的後代節點。
588
711
 
589
712
  <table>
@@ -595,15 +718,15 @@ var oc = $('#chartContainerId').orgchart(options);
595
718
  <th>描述</th>
596
719
  </tr>
597
720
  <tr>
598
- <td>$node</td>
599
- <td>JQuery Object</td>
721
+ <td>node</td>
722
+ <td>HTMLElement</td>
600
723
  <td>是</td>
601
724
  <td></td>
602
- <td>指定節點的jquery對象。</td>
725
+ <td>指定節點元素。</td>
603
726
  </tr>
604
727
  </table>
605
728
 
606
- #### showChildren($node)
729
+ #### showChildren(node)
607
730
  顯示指定節點的孩子節點。默認只顯示緊鄰的下一個層級,並不包括所有的後代節點。
608
731
 
609
732
  <table>
@@ -615,15 +738,15 @@ var oc = $('#chartContainerId').orgchart(options);
615
738
  <th>描述</th>
616
739
  </tr>
617
740
  <tr>
618
- <td>$node</td>
619
- <td>JQuery Object</td>
741
+ <td>node</td>
742
+ <td>HTMLElement</td>
620
743
  <td>是</td>
621
744
  <td></td>
622
- <td>指定節點的jquery對象。</td>
745
+ <td>指定節點元素。</td>
623
746
  </tr>
624
747
  </table>
625
748
 
626
- #### hideSiblings($node, direction)
749
+ #### hideSiblings(node, direction)
627
750
  隱藏指定節點的兄弟節點。
628
751
 
629
752
  <table>
@@ -635,11 +758,11 @@ var oc = $('#chartContainerId').orgchart(options);
635
758
  <th>描述</th>
636
759
  </tr>
637
760
  <tr>
638
- <td>$node</td>
639
- <td>JQuery Object</td>
761
+ <td>node</td>
762
+ <td>HTMLElement</td>
640
763
  <td>是</td>
641
764
  <td></td>
642
- <td>指定節點的jquery對象。</td>
765
+ <td>指定節點元素。</td>
643
766
  </tr>
644
767
  <tr>
645
768
  <td>direction</td>
@@ -650,7 +773,7 @@ var oc = $('#chartContainerId').orgchart(options);
650
773
  </tr>
651
774
  </table>
652
775
 
653
- #### showSiblings($node, direction)
776
+ #### showSiblings(node, direction)
654
777
  顯示指定節點的兄弟節點。
655
778
 
656
779
  <table>
@@ -662,11 +785,11 @@ var oc = $('#chartContainerId').orgchart(options);
662
785
  <th>描述</th>
663
786
  </tr>
664
787
  <tr>
665
- <td>$node</td>
666
- <td>JQuery Object</td>
788
+ <td>node</td>
789
+ <td>HTMLElement</td>
667
790
  <td>是</td>
668
791
  <td></td>
669
- <td>It's the desired JQuery Object to show its siblings nodes</td>
792
+ <td>指定節點元素。</td>
670
793
  </tr>
671
794
  <tr>
672
795
  <td>direction</td>
@@ -677,7 +800,7 @@ var oc = $('#chartContainerId').orgchart(options);
677
800
  </tr>
678
801
  </table>
679
802
 
680
- #### getNodeState($node, relation)
803
+ #### getNodeState(node, relation)
681
804
  該方法幫你了解指定節點的相關節點的顯示狀況。
682
805
 
683
806
  <table>
@@ -689,11 +812,11 @@ var oc = $('#chartContainerId').orgchart(options);
689
812
  <th>描述</th>
690
813
  </tr>
691
814
  <tr>
692
- <td>$node</td>
693
- <td>JQuery Object</td>
815
+ <td>node</td>
816
+ <td>HTMLElement</td>
694
817
  <td>是</td>
695
818
  <td></td>
696
- <td>指定節點的jquery對象。</td>
819
+ <td>指定節點元素。</td>
697
820
  </tr>
698
821
  <tr>
699
822
  <td>relation</td>
@@ -711,7 +834,7 @@ var oc = $('#chartContainerId').orgchart(options);
711
834
  "visible":true|false, // 標識相關節點當前是否可見
712
835
  }
713
836
  ```
714
- #### getRelatedNodes($node, relation)
837
+ #### getRelatedNodes(node, relation)
715
838
  獲得指定節點的關聯節點。
716
839
 
717
840
  <table>
@@ -723,11 +846,11 @@ var oc = $('#chartContainerId').orgchart(options);
723
846
  <th>描述</th>
724
847
  </tr>
725
848
  <tr>
726
- <td>$node</td>
727
- <td>JQuery Object</td>
849
+ <td>node</td>
850
+ <td>HTMLElement</td>
728
851
  <td>是</td>
729
852
  <td></td>
730
- <td>指定節點的jquery對象。</td>
853
+ <td>指定節點元素。</td>
731
854
  </tr>
732
855
  <tr>
733
856
  <td>relation</td>
@@ -738,9 +861,20 @@ var oc = $('#chartContainerId').orgchart(options);
738
861
  </tr>
739
862
  </table>
740
863
 
741
- #### 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)
742
874
  用這個方法可以幫你爲指定的組織結構圖設置新的scale系數。
743
875
 
876
+ `zoomAnchor` 為可選參數,格式為視口座標 `{ x, y }`。提供該參數後,縮放時會固定該座標點。
877
+
744
878
  <table>
745
879
  <tr>
746
880
  <th>名稱</th>
@@ -750,8 +884,8 @@ var oc = $('#chartContainerId').orgchart(options);
750
884
  <th>描述</th>
751
885
  </tr>
752
886
  <tr>
753
- <td>$chart</td>
754
- <td>JQuery Object</td>
887
+ <td>chart</td>
888
+ <td>HTMLElement</td>
755
889
  <td>是</td>
756
890
  <td>None</td>
757
891
  <td>組織結構圖容器中的某一個圖。</td>
@@ -792,8 +926,22 @@ var oc = $('#chartContainerId').orgchart(options);
792
926
  </tr>
793
927
  </table>
794
928
 
929
+ #### exportPNG(canvas, exportFilename)
930
+ 將準備好的 canvas 匯出為 PNG 下載。當應用程式自行提供 canvas 時可直接呼叫;大多數情境應使用 `export()`。
931
+
932
+ #### exportPDF(canvas, exportFilename, exportScale)
933
+ 將準備好的 canvas 匯出為 PDF 下載。`exportScale` 是 canvas 的渲染縮放比例,用於保持 PDF 的邏輯尺寸;大多數情境應使用 `export()`。
934
+
795
935
  ### 事件
796
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
+
797
945
  <table>
798
946
  <thead>
799
947
  <tr>
@@ -805,23 +953,28 @@ var oc = $('#chartContainerId').orgchart(options);
805
953
  <tbody>
806
954
  <tr>
807
955
  <td>nodedrop.orgchart</td>
808
- <td>draggedNode, dragZone, dropZone</td>
809
- <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>
810
963
  </tr>
811
964
  <tr>
812
965
  <td>init.orgchart</td>
813
- <td>chart</td>
814
- <td>當組織結構圖初始化完成時,該事件觸發。在響應事件處理器中,你可以訪問到渲染出的任意節點。</td>
966
+ <td>無;<code>event.target</code> 為圖表元素</td>
967
+ <td>圖表渲染完成後觸發。</td>
815
968
  </tr>
816
969
  <tr>
817
970
  <td>show-[relation].orgchart</td>
818
971
  <td></td>
819
- <td>在顯示指定節點的關聯節點時,觸發該事件。</td>
972
+ <td>關聯節點顯示時在該節點上觸發;<code>relation</code> 為 parent、children 或 siblings。</td>
820
973
  </tr>
821
974
  <tr>
822
975
  <td>hide-[relation].orgchart</td>
823
976
  <td></td>
824
- <td>在隱藏指定節點的關聯節點時,觸發該事件。</td>
977
+ <td>關聯節點隱藏時在該節點上觸發;<code>relation</code> 為 parent、children 或 siblings。</td>
825
978
  </tr>
826
979
  </tbody>
827
980
  </table>
@@ -832,9 +985,9 @@ var oc = $('#chartContainerId').orgchart(options);
832
985
 
833
986
  我們提供了一個CSS類"noncollapsable",可以方便地完成這件事。
834
987
  ```js
835
- $('.orgchart').addClass('noncollapsable'); // 禁掉展開/折疊
988
+ oc.chart.classList.add('noncollapsable'); // 禁掉展開/折疊
836
989
 
837
- $('.orgchart').removeClass('noncollapsable'); // 開啓展開/折疊
990
+ oc.chart.classList.remove('noncollapsable'); // 開啓展開/折疊
838
991
  ```
839
992
 
840
993
  #### 爲啥根節點消失了,看不到了?
package/bower.json CHANGED
@@ -1,18 +1,16 @@
1
1
  {
2
2
  "name": "orgchart",
3
- "version": "3.2.0",
3
+ "version": "6.0.0",
4
4
  "homepage": "https://github.com/dabeng/OrgChart",
5
5
  "authors": [
6
6
  "dabeng <dabeng413@gmail.com>"
7
7
  ],
8
8
  "description": "Simple and direct organization chart(tree-like hierarchy) plugin based on pure DOM and jQuery.",
9
9
  "main": [
10
- "dist/js/jquery.orgchart.min.js",
11
- "dist/css/jquery.orgchart.min.css"
10
+ "dist/js/orgchart.min.js",
11
+ "dist/css/orgchart.min.css"
12
12
  ],
13
13
  "keywords": [
14
- "jquery",
15
- "plugin",
16
14
  "organization",
17
15
  "chart",
18
16
  "orgchart",
@@ -29,9 +27,8 @@
29
27
  "tests"
30
28
  ],
31
29
  "dependencies": {
32
- "jquery": "^3.6.2",
33
- "jquery-mockjax": "^2.6.0",
34
- "jspdf": "^2.5.1",
35
- "html2canvas": "^1.4.1"
30
+ "html2canvas": "^1.4.1",
31
+ "json-digger": "^2.0.2",
32
+ "jspdf": "^3.0.1"
36
33
  }
37
34
  }