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
@@ -1,71 +1,100 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
+
3
4
  <head>
4
5
  <meta charset="utf-8">
5
- <title>Organization Chart Plugin</title>
6
+ <title>OrgChart Hybrid Layout Demo</title>
6
7
  <link rel="icon" href="img/logo.png">
7
- <link rel="stylesheet" href="css/jquery.orgchart.css">
8
+ <link rel="stylesheet" href="css/orgchart.css">
8
9
  <link rel="stylesheet" href="css/style.css">
9
10
  <style type="text/css">
10
- #chart-container { height: 620px; }
11
- .orgchart { padding-bottom: 20px; }
11
+ #chart-container {
12
+ height: 620px;
13
+ }
14
+
15
+ .orgchart {
16
+ padding-bottom: 20px;
17
+ }
12
18
  </style>
13
19
  </head>
20
+
14
21
  <body>
22
+ <section class="demo-notes">
23
+ <h1>Hybrid Layout Demo</h1>
24
+ <p>This demo uses the hybrid data property to mix horizontal and vertical descendant layouts in the same chart.</p>
25
+ </section>
15
26
  <div id="chart-container"></div>
16
-
17
- <script type="text/javascript" src="js/jquery.min.js"></script>
18
- <script type="text/javascript" src="js/jquery.orgchart.js"></script>
27
+ <script type="text/javascript" src="js/orgchart.js"></script>
19
28
  <script type="text/javascript">
20
- $(function() {
29
+ document.addEventListener('DOMContentLoaded', () => {
21
30
 
22
- var datascource = {
23
- 'id': '1',
24
- 'name': 'Lao Lao',
25
- 'title': 'general manager',
26
- 'children': [
27
- { 'id': '2', 'name': 'Bo Miao', 'title': 'department manager' },
28
- { 'id': '3', 'name': 'Su Miao', 'title': 'department manager',
29
- 'children': [
30
- { 'id': '4', 'name': 'Tie Hua', 'title': 'senior engineer' },
31
- { 'id': '5', 'name': 'Hei Hei', 'title': 'senior engineer',
32
- 'children': [
33
- { 'id': '6', 'name': 'Pang Pang', 'title': 'engineer' },
34
- { 'id': '7', 'name': 'Dan Dan', 'title': 'UE engineer' ,
31
+ const datasource = {
32
+ 'id': '1',
33
+ 'name': 'Lao Lao',
34
+ 'title': 'general manager',
35
+ 'children': [
36
+ { 'id': '2', 'name': 'Bo Miao', 'title': 'department manager' },
37
+ {
38
+ 'id': '3', 'name': 'Su Miao', 'title': 'department manager',
39
+ 'children': [
40
+ { 'id': '4', 'name': 'Tie Hua', 'title': 'senior engineer' },
41
+ {
42
+ 'id': '5', 'name': 'Hei Hei', 'title': 'senior engineer',
35
43
  'children': [
36
- { 'id': '8', 'name': 'Er Dan', 'title': 'engineer' },
37
- { 'id': '9', 'name': 'San Dan', 'title': 'engineer',
44
+ {
45
+ 'id': '6', 'name': 'Pang Pang', 'title': 'engineer',
46
+ 'children': [
47
+ {
48
+ 'id': '18', 'name': 'Er Pang', 'title': 'engineer',
49
+ 'children': [
50
+ { 'id': '19', 'name': 'San Pang', 'title': 'intern' }
51
+ ]
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ 'id': '7', 'name': 'Dan Dan', 'title': 'UE engineer',
38
57
  'children': [
39
- { 'id': '10', 'name': 'Si Dan', 'title': 'intern' },
40
- { 'id': '11', 'name': 'Wu Dan', 'title': 'intern' }
58
+ { 'id': '8', 'name': 'Er Dan', 'title': 'engineer' },
59
+ {
60
+ 'id': '9', 'name': 'San Dan', 'title': 'engineer',
61
+ 'children': [
62
+ { 'id': '10', 'name': 'Si Dan', 'title': 'intern' },
63
+ { 'id': '11', 'name': 'Wu Dan', 'title': 'intern' }
64
+ ]
65
+ },
66
+ { 'id': '12', 'name': 'Liu Dan', 'title': 'engineer' },
41
67
  ]
42
68
  }
43
- ]}
44
- ]
45
- }
46
- ]
47
- },
48
- { 'id': '13', 'name': 'Chun Miao', 'title': 'department manager', 'hybrid': true,
49
- 'children': [
50
- { 'id': '14', 'name': 'Bing Qin', 'title': 'senior engineer' },
51
- { 'id': '15', 'name': 'Yue Yue', 'title': 'senior engineer',
52
- 'children': [
53
- { 'id': '16', 'name': 'Er Yue', 'title': 'engineer' },
54
- { 'id': '17', 'name': 'San Yue', 'title': 'UE engineer' }
55
- ]
56
- }
57
- ]
58
- }
59
- ]
60
- };
69
+ ]
70
+ }
71
+ ]
72
+ },
73
+ {
74
+ 'id': '13', 'name': 'Chun Miao', 'title': 'department manager', 'hybrid': true,
75
+ 'children': [
76
+ { 'id': '14', 'name': 'Bing Qin', 'title': 'senior engineer' },
77
+ {
78
+ 'id': '15', 'name': 'Yue Yue', 'title': 'senior engineer',
79
+ 'children': [
80
+ { 'id': '16', 'name': 'Er Yue', 'title': 'engineer' },
81
+ { 'id': '17', 'name': 'San Yue', 'title': 'UE engineer' }
82
+ ]
83
+ }
84
+ ]
85
+ }
86
+ ]
87
+ };
61
88
 
62
- $('#chart-container').orgchart({
63
- 'data' : datascource,
64
- 'nodeContent': 'title',
65
- 'verticalLevel': 5
66
- });
89
+ const oc = new OrgChart({
90
+ chartContainer: '#chart-container',
91
+ 'data': datasource,
92
+ 'nodeContent': 'title',
93
+ 'verticalLevel': 5
94
+ });
67
95
 
68
- });
96
+ });
69
97
  </script>
70
- </body>
98
+ </body>
99
+
71
100
  </html>
@@ -2,20 +2,22 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <title>Organization Chart Plugin</title>
5
+ <title>OrgChart Default Collapsed Demo</title>
6
6
  <link rel="icon" href="img/logo.png">
7
- <link rel="stylesheet" href="css/jquery.orgchart.css">
7
+ <link rel="stylesheet" href="css/orgchart.css">
8
8
  <link rel="stylesheet" href="css/style.css">
9
9
  </head>
10
10
  <body>
11
+ <section class="demo-notes">
12
+ <h1>Default Collapsed Demo</h1>
13
+ <p>This demo starts selected branches in a collapsed state so users expand them only when needed.</p>
14
+ </section>
11
15
  <div id="chart-container"></div>
12
-
13
- <script type="text/javascript" src="js/jquery.min.js"></script>
14
- <script type="text/javascript" src="js/jquery.orgchart.js"></script>
16
+ <script type="text/javascript" src="js/orgchart.js"></script>
15
17
  <script type="text/javascript">
16
- $(function() {
18
+ document.addEventListener('DOMContentLoaded', () => {
17
19
 
18
- var datascource = {
20
+ const datasource = {
19
21
  'name': 'Lao Lao',
20
22
  'title': 'general manager',
21
23
  'children': [
@@ -46,8 +48,9 @@
46
48
  ]
47
49
  };
48
50
 
49
- $('#chart-container').orgchart({
50
- 'data' : datascource,
51
+ const oc = new OrgChart({
52
+ chartContainer: '#chart-container',
53
+ 'data' : datasource,
51
54
  'nodeContent': 'title'
52
55
  });
53
56
 
@@ -2,9 +2,9 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <title>Organization Chart Plugin</title>
5
+ <title>OrgChart Hybrid Drag and Drop Demo</title>
6
6
  <link rel="icon" href="img/logo.png">
7
- <link rel="stylesheet" href="css/jquery.orgchart.css">
7
+ <link rel="stylesheet" href="css/orgchart.css">
8
8
  <link rel="stylesheet" href="css/style.css">
9
9
  <style type="text/css">
10
10
  #chart-container { height: 600px; }
@@ -12,15 +12,17 @@
12
12
  </style>
13
13
  </head>
14
14
  <body>
15
+ <section class="demo-notes">
16
+ <h1>Hybrid Drag and Drop Demo</h1>
17
+ <p>This demo applies drag and drop to a hybrid chart that mixes horizontal and vertical descendant branches.</p>
18
+ </section>
15
19
  <div id="chart-container"></div>
16
-
17
- <script type="text/javascript" src="js/jquery.min.js"></script>
18
- <script type="text/javascript" src="js/jquery.orgchart.js"></script>
20
+ <script type="text/javascript" src="js/orgchart.js"></script>
19
21
  <script type="text/javascript" src="js/json-digger.js"></script>
20
22
  <script type="text/javascript">
21
- $(function() {
23
+ document.addEventListener('DOMContentLoaded', () => {
22
24
 
23
- var datascource = {
25
+ const datasource = {
24
26
  'id': '1',
25
27
  'name': 'Lao Lao',
26
28
  'title': 'general manager',
@@ -61,18 +63,19 @@
61
63
  ]
62
64
  };
63
65
 
64
- var oc = $('#chart-container').orgchart({
65
- 'data' : datascource,
66
+ const oc = new OrgChart({
67
+ chartContainer: '#chart-container',
68
+ 'data' : datasource,
66
69
  'nodeContent': 'title',
67
70
  'draggable': true,
68
71
  'verticalLevel': 3
69
72
  });
70
73
 
71
- oc.$chart.on('nodedrop.orgchart', function(event, extraParams) {
72
- console.log('draggedNode:' + extraParams.draggedNode.children('.title').text()
73
- + ', dragZone:' + extraParams.dragZone.children('.title').text()
74
- + ', dropZone:' + extraParams.dropZone.children('.title').text()
75
- );
74
+ oc.chart.addEventListener('nodedrop.orgchart', (event) => {
75
+ const extraParams = event.detail;
76
+ console.log('draggedNode:' + extraParams.draggedNode.querySelector('.title').textContent
77
+ + ', dragZone:' + extraParams.dragZone.querySelector('.title').textContent
78
+ + ', dropZone:' + extraParams.dropZone.querySelector('.title').textContent);
76
79
  });
77
80
 
78
81
  });
@@ -2,9 +2,9 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <title>Organization Chart Plugin</title>
5
+ <title>OrgChart Drag and Drop Demo</title>
6
6
  <link rel="icon" href="img/logo.png">
7
- <link rel="stylesheet" href="css/jquery.orgchart.css">
7
+ <link rel="stylesheet" href="css/orgchart.css">
8
8
  <link rel="stylesheet" href="css/style.css">
9
9
  <style type="text/css">
10
10
  #chart-container { height: 600px; }
@@ -12,15 +12,17 @@
12
12
  </style>
13
13
  </head>
14
14
  <body>
15
+ <section class="demo-notes">
16
+ <h1>Drag and Drop Demo</h1>
17
+ <p>This demo enables node drag and drop and uses dropCriteria to reject invalid moves between branches.</p>
18
+ </section>
15
19
  <div id="chart-container"></div>
16
-
17
- <script type="text/javascript" src="js/jquery.min.js"></script>
18
- <script type="text/javascript" src="js/jquery.orgchart.js"></script>
20
+ <script type="text/javascript" src="js/orgchart.js"></script>
19
21
  <script type="text/javascript" src="js/json-digger.js"></script>
20
22
  <script type="text/javascript">
21
- $(function() {
23
+ document.addEventListener('DOMContentLoaded', () => {
22
24
 
23
- var datascource = {
25
+ const datasource = {
24
26
  'name': 'Lao Lao',
25
27
  'title': 'general manager',
26
28
  'children': [
@@ -42,23 +44,26 @@
42
44
  ]
43
45
  };
44
46
 
45
- var oc = $('#chart-container').orgchart({
46
- 'data' : datascource,
47
+ const oc = new OrgChart({
48
+ chartContainer: '#chart-container',
49
+ 'data' : datasource,
47
50
  'nodeContent': 'title',
48
51
  'draggable': true,
49
- 'dropCriteria': function($draggedNode, $dragZone, $dropZone) {
50
- if($draggedNode.find('.content').text().indexOf('manager') > -1 && $dropZone.find('.content').text().indexOf('engineer') > -1) {
52
+ 'dropCriteria': function(draggedNode, dragZone, dropZone) {
53
+ const draggedContent = draggedNode.querySelector('.content')?.textContent || '';
54
+ const dropContent = dropZone.querySelector('.content')?.textContent || '';
55
+ if (draggedContent.indexOf('manager') > -1 && dropContent.indexOf('engineer') > -1) {
51
56
  return false;
52
57
  }
53
58
  return true;
54
59
  }
55
60
  });
56
61
 
57
- oc.$chart.on('nodedrop.orgchart', function(event, extraParams) {
58
- console.log('draggedNode:' + extraParams.draggedNode.children('.title').text()
59
- + ', dragZone:' + extraParams.dragZone.children('.title').text()
60
- + ', dropZone:' + extraParams.dropZone.children('.title').text()
61
- );
62
+ oc.chart.addEventListener('nodedrop.orgchart', (event) => {
63
+ const extraParams = event.detail;
64
+ console.log('draggedNode:' + extraParams.draggedNode.querySelector('.title').textContent
65
+ + ', dragZone:' + extraParams.dragZone.querySelector('.title').textContent
66
+ + ', dropZone:' + extraParams.dropZone.querySelector('.title').textContent);
62
67
  });
63
68
 
64
69
  });