@syncfusion/ej2-gantt 19.4.56 → 20.1.47-1460716

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 (211) hide show
  1. package/CHANGELOG.md +1072 -1060
  2. package/README.md +75 -75
  3. package/dist/ej2-gantt.umd.min.js +1 -10
  4. package/dist/ej2-gantt.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-gantt.es2015.js +274 -176
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +642 -534
  8. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  9. package/dist/global/ej2-gantt.min.js +1 -10
  10. package/dist/global/ej2-gantt.min.js.map +1 -1
  11. package/dist/global/index.d.ts +0 -9
  12. package/dist/ts/components.ts +4 -0
  13. package/dist/ts/gantt/actions/actions.ts +18 -0
  14. package/dist/ts/gantt/actions/cell-edit.ts +606 -0
  15. package/dist/ts/gantt/actions/chart-scroll.ts +167 -0
  16. package/dist/ts/gantt/actions/column-menu.ts +35 -0
  17. package/dist/ts/gantt/actions/column-reorder.ts +52 -0
  18. package/dist/ts/gantt/actions/column-resize.ts +52 -0
  19. package/dist/ts/gantt/actions/connector-line-edit.ts +829 -0
  20. package/dist/ts/gantt/actions/context-menu.ts +754 -0
  21. package/dist/ts/gantt/actions/day-markers.ts +80 -0
  22. package/dist/ts/gantt/actions/dependency.ts +692 -0
  23. package/dist/ts/gantt/actions/dialog-edit.ts +2208 -0
  24. package/dist/ts/gantt/actions/edit.ts +3499 -0
  25. package/dist/ts/gantt/actions/excel-export.ts +61 -0
  26. package/dist/ts/gantt/actions/filter.ts +302 -0
  27. package/dist/ts/gantt/actions/keyboard.ts +306 -0
  28. package/dist/ts/gantt/actions/pdf-export.ts +214 -0
  29. package/dist/ts/gantt/actions/rowdragdrop.ts +839 -0
  30. package/dist/ts/gantt/actions/selection.ts +536 -0
  31. package/dist/ts/gantt/actions/sort.ts +98 -0
  32. package/dist/ts/gantt/actions/taskbar-edit.ts +1940 -0
  33. package/dist/ts/gantt/actions/toolbar.ts +489 -0
  34. package/dist/ts/gantt/actions/virtual-scroll.ts +60 -0
  35. package/dist/ts/gantt/base/common.ts +9 -0
  36. package/dist/ts/gantt/base/constant.ts +13 -0
  37. package/dist/ts/gantt/base/css-constants.ts +148 -0
  38. package/dist/ts/gantt/base/date-processor.ts +1257 -0
  39. package/dist/ts/gantt/base/enum.ts +372 -0
  40. package/dist/ts/gantt/base/gantt-chart.ts +1248 -0
  41. package/dist/ts/gantt/base/gantt.ts +4069 -0
  42. package/dist/ts/gantt/base/interface.ts +955 -0
  43. package/dist/ts/gantt/base/splitter.ts +174 -0
  44. package/dist/ts/gantt/base/task-processor.ts +2217 -0
  45. package/dist/ts/gantt/base/tree-grid.ts +694 -0
  46. package/dist/ts/gantt/base/utils.ts +208 -0
  47. package/dist/ts/gantt/export/export-helper.ts +552 -0
  48. package/dist/ts/gantt/export/pdf-base/dictionary.ts +152 -0
  49. package/dist/ts/gantt/export/pdf-base/pdf-borders.ts +277 -0
  50. package/dist/ts/gantt/export/pdf-base/pdf-grid-table.ts +901 -0
  51. package/dist/ts/gantt/export/pdf-base/pdf-style/gantt-theme.ts +131 -0
  52. package/dist/ts/gantt/export/pdf-base/pdf-style/style.ts +91 -0
  53. package/dist/ts/gantt/export/pdf-base/treegrid-layouter.ts +414 -0
  54. package/dist/ts/gantt/export/pdf-connector-line.ts +422 -0
  55. package/dist/ts/gantt/export/pdf-gantt.ts +282 -0
  56. package/dist/ts/gantt/export/pdf-taskbar.ts +395 -0
  57. package/dist/ts/gantt/export/pdf-timeline.ts +202 -0
  58. package/dist/ts/gantt/export/pdf-treegrid.ts +406 -0
  59. package/dist/ts/gantt/models/add-dialog-field-settings.ts +33 -0
  60. package/dist/ts/gantt/models/column.ts +464 -0
  61. package/dist/ts/gantt/models/day-working-time.ts +22 -0
  62. package/dist/ts/gantt/models/edit-dialog-field-settings.ts +33 -0
  63. package/dist/ts/gantt/models/edit-settings.ts +79 -0
  64. package/dist/ts/gantt/models/event-marker.ts +27 -0
  65. package/dist/ts/gantt/models/filter-settings.ts +53 -0
  66. package/dist/ts/gantt/models/holiday.ts +34 -0
  67. package/dist/ts/gantt/models/label-settings.ts +30 -0
  68. package/dist/ts/gantt/models/models.ts +36 -0
  69. package/dist/ts/gantt/models/resource-fields.ts +38 -0
  70. package/dist/ts/gantt/models/search-settings.ts +77 -0
  71. package/dist/ts/gantt/models/selection-settings.ts +56 -0
  72. package/dist/ts/gantt/models/sort-settings.ts +50 -0
  73. package/dist/ts/gantt/models/splitter-settings.ts +47 -0
  74. package/dist/ts/gantt/models/task-fields.ts +171 -0
  75. package/dist/ts/gantt/models/timeline-settings.ts +112 -0
  76. package/dist/ts/gantt/models/tooltip-settings.ts +46 -0
  77. package/dist/ts/gantt/renderer/chart-rows.ts +1838 -0
  78. package/dist/ts/gantt/renderer/connector-line.ts +1025 -0
  79. package/dist/ts/gantt/renderer/edit-tooltip.ts +228 -0
  80. package/dist/ts/gantt/renderer/event-marker.ts +96 -0
  81. package/dist/ts/gantt/renderer/nonworking-day.ts +205 -0
  82. package/dist/ts/gantt/renderer/render.ts +5 -0
  83. package/dist/ts/gantt/renderer/timeline.ts +1397 -0
  84. package/dist/ts/gantt/renderer/tooltip.ts +450 -0
  85. package/dist/ts/gantt/renderer/virtual-content-render.ts +50 -0
  86. package/license +9 -9
  87. package/package.json +80 -80
  88. package/src/gantt/actions/cell-edit.js +2 -1
  89. package/src/gantt/actions/dialog-edit.js +2 -1
  90. package/src/gantt/actions/edit.js +11 -2
  91. package/src/gantt/actions/rowdragdrop.js +37 -15
  92. package/src/gantt/actions/taskbar-edit.js +24 -24
  93. package/src/gantt/base/date-processor.js +0 -1
  94. package/src/gantt/base/gantt-chart.js +9 -4
  95. package/src/gantt/base/gantt-model.d.ts +779 -779
  96. package/src/gantt/base/gantt.d.ts +27 -27
  97. package/src/gantt/base/gantt.js +22 -22
  98. package/src/gantt/base/splitter.js +1 -0
  99. package/src/gantt/base/task-processor.js +13 -13
  100. package/src/gantt/base/tree-grid.js +3 -1
  101. package/src/gantt/export/pdf-base/treegrid-layouter.js +13 -13
  102. package/src/gantt/export/pdf-connector-line.js +11 -11
  103. package/src/gantt/export/pdf-gantt.js +24 -24
  104. package/src/gantt/export/pdf-taskbar.js +11 -11
  105. package/src/gantt/export/pdf-treegrid.js +13 -13
  106. package/src/gantt/models/add-dialog-field-settings-model.d.ts +21 -21
  107. package/src/gantt/models/add-dialog-field-settings.js +19 -19
  108. package/src/gantt/models/day-working-time-model.d.ts +11 -11
  109. package/src/gantt/models/day-working-time.js +19 -19
  110. package/src/gantt/models/edit-dialog-field-settings-model.d.ts +21 -21
  111. package/src/gantt/models/edit-dialog-field-settings.js +19 -19
  112. package/src/gantt/models/edit-settings-model.d.ts +50 -50
  113. package/src/gantt/models/edit-settings.js +19 -19
  114. package/src/gantt/models/event-marker-model.d.ts +16 -16
  115. package/src/gantt/models/event-marker.js +19 -19
  116. package/src/gantt/models/filter-settings-model.d.ts +34 -34
  117. package/src/gantt/models/filter-settings.js +19 -19
  118. package/src/gantt/models/holiday-model.d.ts +21 -21
  119. package/src/gantt/models/holiday.js +19 -19
  120. package/src/gantt/models/label-settings-model.d.ts +16 -16
  121. package/src/gantt/models/label-settings.js +19 -19
  122. package/src/gantt/models/resource-fields-model.d.ts +21 -21
  123. package/src/gantt/models/resource-fields.js +19 -19
  124. package/src/gantt/models/search-settings-model.d.ts +56 -56
  125. package/src/gantt/models/search-settings.js +19 -19
  126. package/src/gantt/models/selection-settings-model.d.ts +35 -35
  127. package/src/gantt/models/selection-settings.js +19 -19
  128. package/src/gantt/models/sort-settings-model.d.ts +24 -24
  129. package/src/gantt/models/sort-settings.js +19 -19
  130. package/src/gantt/models/splitter-settings-model.d.ts +30 -30
  131. package/src/gantt/models/splitter-settings.js +19 -19
  132. package/src/gantt/models/task-fields-model.d.ts +110 -110
  133. package/src/gantt/models/task-fields.js +19 -19
  134. package/src/gantt/models/timeline-settings-model.d.ts +71 -71
  135. package/src/gantt/models/timeline-settings.js +19 -19
  136. package/src/gantt/models/tooltip-settings-model.d.ts +26 -26
  137. package/src/gantt/models/tooltip-settings.js +19 -19
  138. package/src/gantt/renderer/chart-rows.js +49 -37
  139. package/src/gantt/renderer/connector-line.js +22 -18
  140. package/src/gantt/renderer/event-marker.js +1 -0
  141. package/src/gantt/renderer/nonworking-day.js +13 -6
  142. package/src/gantt/renderer/timeline.d.ts +1 -0
  143. package/src/gantt/renderer/timeline.js +48 -12
  144. package/src/gantt/renderer/tooltip.js +11 -3
  145. package/styles/bootstrap-dark.css +442 -427
  146. package/styles/bootstrap.css +442 -433
  147. package/styles/bootstrap4.css +454 -479
  148. package/styles/bootstrap5-dark.css +457 -433
  149. package/styles/bootstrap5.css +457 -433
  150. package/styles/fabric-dark.css +438 -421
  151. package/styles/fabric.css +445 -428
  152. package/styles/fluent-dark.css +1938 -0
  153. package/styles/fluent-dark.scss +1 -0
  154. package/styles/fluent.css +1938 -0
  155. package/styles/fluent.scss +1 -0
  156. package/styles/gantt/_all.scss +2 -2
  157. package/styles/gantt/_bootstrap-dark-definition.scss +210 -156
  158. package/styles/gantt/_bootstrap-definition.scss +211 -157
  159. package/styles/gantt/_bootstrap4-definition.scss +213 -158
  160. package/styles/gantt/_bootstrap5-definition.scss +215 -162
  161. package/styles/gantt/_fabric-dark-definition.scss +211 -157
  162. package/styles/gantt/_fabric-definition.scss +211 -157
  163. package/styles/gantt/_fluent-dark-definition.scss +1 -0
  164. package/styles/gantt/_fluent-definition.scss +215 -162
  165. package/styles/gantt/_fusionnew-definition.scss +214 -0
  166. package/styles/gantt/_highcontrast-definition.scss +211 -157
  167. package/styles/gantt/_highcontrast-light-definition.scss +211 -157
  168. package/styles/gantt/_layout.scss +1446 -1027
  169. package/styles/gantt/_material-dark-definition.scss +212 -157
  170. package/styles/gantt/_material-definition.scss +212 -157
  171. package/styles/gantt/_material3-definition.scss +215 -0
  172. package/styles/gantt/_tailwind-definition.scss +215 -161
  173. package/styles/gantt/_theme.scss +702 -668
  174. package/styles/gantt/bootstrap-dark.css +442 -427
  175. package/styles/gantt/bootstrap.css +442 -433
  176. package/styles/gantt/bootstrap4.css +454 -479
  177. package/styles/gantt/bootstrap5-dark.css +457 -433
  178. package/styles/gantt/bootstrap5.css +457 -433
  179. package/styles/gantt/fabric-dark.css +438 -421
  180. package/styles/gantt/fabric.css +445 -428
  181. package/styles/gantt/fluent-dark.css +1938 -0
  182. package/styles/gantt/fluent-dark.scss +22 -0
  183. package/styles/gantt/fluent.css +1938 -0
  184. package/styles/gantt/fluent.scss +22 -0
  185. package/styles/gantt/highcontrast-light.css +405 -405
  186. package/styles/gantt/highcontrast.css +444 -456
  187. package/styles/gantt/icons/_bootstrap-dark.scss +124 -113
  188. package/styles/gantt/icons/_bootstrap.scss +124 -113
  189. package/styles/gantt/icons/_bootstrap4.scss +124 -113
  190. package/styles/gantt/icons/_bootstrap5.scss +124 -112
  191. package/styles/gantt/icons/_fabric-dark.scss +124 -112
  192. package/styles/gantt/icons/_fabric.scss +124 -112
  193. package/styles/gantt/icons/_fluent-dark.scss +1 -0
  194. package/styles/gantt/icons/_fluent.scss +124 -112
  195. package/styles/gantt/icons/_fusionnew.scss +120 -0
  196. package/styles/gantt/icons/_highcontrast.scss +124 -112
  197. package/styles/gantt/icons/_material-dark.scss +124 -112
  198. package/styles/gantt/icons/_material.scss +124 -112
  199. package/styles/gantt/icons/_material3.scss +124 -0
  200. package/styles/gantt/icons/_tailwind-dark.scss +124 -113
  201. package/styles/gantt/icons/_tailwind.scss +124 -113
  202. package/styles/gantt/material-dark.css +446 -417
  203. package/styles/gantt/material.css +445 -419
  204. package/styles/gantt/tailwind-dark.css +452 -482
  205. package/styles/gantt/tailwind.css +449 -479
  206. package/styles/highcontrast-light.css +405 -405
  207. package/styles/highcontrast.css +444 -456
  208. package/styles/material-dark.css +446 -417
  209. package/styles/material.css +445 -419
  210. package/styles/tailwind-dark.css +452 -482
  211. package/styles/tailwind.css +449 -479
@@ -0,0 +1,174 @@
1
+ import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';
2
+ import { Gantt } from '../base/gantt';
3
+ import * as cls from '../base/css-constants';
4
+ import { Splitter as SplitterLayout, ResizeEventArgs, ResizingEventArgs } from '@syncfusion/ej2-layouts';
5
+ import { SplitterSettingsModel } from '../models/models';
6
+ import { ISplitterResizedEventArgs } from '../base/interface';
7
+ import { Deferred } from '@syncfusion/ej2-data';
8
+ /**
9
+ * Splitter module is used to define the splitter position in Gantt layout.
10
+ */
11
+ export class Splitter {
12
+ private parent: Gantt;
13
+ public splitterObject: SplitterLayout;
14
+ public splitterPreviousPositionGrid: string;
15
+ public splitterPreviousPositionChart: string;
16
+ constructor(ganttObj?: Gantt) {
17
+ this.parent = ganttObj;
18
+ this.parent.on('destroy', this.destroy, this);
19
+ }
20
+ /**
21
+ * @returns {void} .
22
+ * @private
23
+ */
24
+ public renderSplitter(): void {
25
+ const splitterPosition: string = this.calculateSplitterPosition(this.parent.splitterSettings);
26
+ this.parent.splitterElement = createElement('div', { className: cls.splitter });
27
+ this.parent.treeGridPane = createElement('div', { className: cls.treeGridPane });
28
+ this.parent.chartPane = createElement('div', { className: cls.ganttChartPane });
29
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
30
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
31
+
32
+ this.splitterObject = new SplitterLayout({
33
+ height: null,
34
+ width: this.parent.ganttWidth.toString(),
35
+ separatorSize: this.parent.splitterSettings.separatorSize,
36
+ paneSettings: [
37
+ {
38
+ resizable: true,
39
+ size: splitterPosition,
40
+ min: this.getSpliterPositionInPercentage(this.parent.splitterSettings.minimum)
41
+ },
42
+ {
43
+ resizable: true
44
+ }
45
+ ],
46
+ orientation: 'Horizontal',
47
+ resizeStart: (args: ResizeEventArgs) => {
48
+ const leftPane: HTMLElement = args.pane[0];
49
+ const rightPane: HTMLElement = args.pane[1];
50
+ this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';
51
+ this.splitterPreviousPositionChart = rightPane.scrollWidth + 1 + 'px';
52
+ const callBackPromise: Deferred = new Deferred();
53
+ this.parent.trigger('splitterResizeStart', args, (resizeStartArgs: ResizeEventArgs) => {
54
+ callBackPromise.resolve(resizeStartArgs);
55
+ });
56
+ return callBackPromise;
57
+ },
58
+ resizing: (args: ResizingEventArgs) => {
59
+ this.parent.trigger('splitterResizing', args);
60
+ },
61
+ resizeStop: (args: ISplitterResizedEventArgs) => {
62
+ const callBackPromise: Deferred = new Deferred();
63
+ this.parent.trigger('splitterResized', args, (splitterResizedArgs: ISplitterResizedEventArgs) => {
64
+ if (splitterResizedArgs.cancel === true) {
65
+ this.splitterObject.paneSettings[0].size = null;
66
+ this.splitterObject.paneSettings[0].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionGrid);
67
+ this.splitterObject.paneSettings[1].size = null;
68
+ this.splitterObject.paneSettings[1].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionChart);
69
+ }
70
+ this.parent.timelineModule.updateTimelineAfterZooming(this.parent.timelineModule.timelineEndDate, true);
71
+ callBackPromise.resolve(splitterResizedArgs);
72
+ });
73
+ return callBackPromise;
74
+ }
75
+ });
76
+ this.parent.element.appendChild(this.parent.splitterElement);
77
+ this.splitterObject.appendTo(this.parent.splitterElement);
78
+ }
79
+ /**
80
+ * @param {SplitterSettingsModel} splitter .
81
+ * @param {boolean} isDynamic .
82
+ * @returns {string} .
83
+ * @private
84
+ */
85
+ public calculateSplitterPosition(splitter: SplitterSettingsModel, isDynamic?: boolean): string {
86
+ if (splitter.view === 'Grid') {
87
+ return '100%';
88
+ } else if (splitter.view === 'Chart') {
89
+ return '0%';
90
+ } else {
91
+ if (!isNullOrUndefined(splitter.position) && splitter.position !== '') {
92
+ return this.getSpliterPositionInPercentage(splitter.position);
93
+ } else if (!isNullOrUndefined(splitter.columnIndex) && splitter.columnIndex >= 0) {
94
+ if ((splitter.columnIndex * 150) < this.parent.ganttWidth || !this.parent.element.classList.contains('e-device')) {
95
+ return isDynamic ? this.getSpliterPositionInPercentage(
96
+ this.getTotalColumnWidthByIndex(splitter.columnIndex).toString() + 'px') :
97
+ this.getSpliterPositionInPercentage((splitter.columnIndex * 150) + 'px');
98
+ } else {
99
+ return this.getSpliterPositionInPercentage((splitter.columnIndex * 130) + 'px');
100
+ }
101
+ } else {
102
+ return this.getSpliterPositionInPercentage('250px');
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * @param {string} position .
108
+ * @returns {string} .
109
+ */
110
+ private getSpliterPositionInPercentage(position: string): string {
111
+ let value: string = !isNullOrUndefined(position) && position !== '' ? position : null;
112
+ if (!isNullOrUndefined(value)) {
113
+ if (position.indexOf('px') !== -1) {
114
+ const intValue: number = parseInt(position, 10);
115
+ value = (((intValue / this.parent.ganttWidth) * 100) <= 100 ? ((intValue / this.parent.ganttWidth) * 100) + '%' :
116
+ '25%');
117
+ } else {
118
+ value = position.indexOf('%') === -1 ?
119
+ position + '%' : position;
120
+ }
121
+ }
122
+ return value;
123
+ }
124
+ /**
125
+ * @param {number} index .
126
+ * @returns {number} .
127
+ */
128
+ private getTotalColumnWidthByIndex(index: number): number {
129
+ let width: number = 0;
130
+ const tr: NodeList = this.parent.treeGrid.element.querySelectorAll('.e-headercell');
131
+ index = tr.length > index ? index : tr.length;
132
+ for (let column: number = 0; column < index; column++) {
133
+ width = width + (tr[column] as HTMLElement).offsetWidth;
134
+ }
135
+ return width;
136
+ }
137
+ /**
138
+ * @returns {void} .
139
+ * @private
140
+ */
141
+ public updateSplitterPosition(): void {
142
+ this.splitterObject.separatorSize = this.parent.splitterSettings.separatorSize >= 4 ?
143
+ this.parent.splitterSettings.separatorSize : 4;
144
+ const splitterPosition: string = this.calculateSplitterPosition(this.parent.splitterSettings, true);
145
+ this.splitterObject.paneSettings[0].min = this.getSpliterPositionInPercentage(this.parent.splitterSettings.minimum);
146
+ this.splitterObject.dataBind();
147
+ this.splitterObject.paneSettings[0].size = splitterPosition;
148
+ }
149
+ /**
150
+ * @returns {void} .
151
+ * @private
152
+ */
153
+ public triggerCustomResizedEvent(): void {
154
+ const pane1: HTMLElement = this.splitterObject.element.querySelectorAll('.e-pane')[0] as HTMLElement;
155
+ const pane2: HTMLElement = this.splitterObject.element.querySelectorAll('.e-pane')[1] as HTMLElement;
156
+ const eventArgs: ISplitterResizedEventArgs = {
157
+ event: null,
158
+ element: this.splitterObject.element,
159
+ pane: [pane1, pane2],
160
+ index: [0, 1],
161
+ separator: this.splitterObject.element.querySelector('.e-split-bar'),
162
+ paneSize: [pane1.offsetWidth, pane2.offsetWidth]
163
+ };
164
+ this.parent.trigger('splitterResized', eventArgs);
165
+ if (eventArgs.cancel === true) {
166
+ this.splitterObject.paneSettings[0].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionGrid);
167
+ this.splitterObject.paneSettings[1].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionChart);
168
+ }
169
+ }
170
+ private destroy(): void {
171
+ this.splitterObject.destroy();
172
+ this.parent.off('destroy', this.destroy);
173
+ }
174
+ }