@worktile/gantt 11.0.2 → 12.0.1

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 (232) hide show
  1. package/.all-contributorsrc +53 -0
  2. package/.angulardoc.json +4 -0
  3. package/.circleci/config.yml +17 -0
  4. package/.coveralls.yml +1 -0
  5. package/.docgenirc.js +64 -0
  6. package/.editorconfig +22 -0
  7. package/.prettierrc +24 -0
  8. package/.travis.yml +23 -0
  9. package/CHANGELOG.md +564 -0
  10. package/Dockerfile +4 -0
  11. package/LICENSE +21 -0
  12. package/README.md +116 -13
  13. package/angular.json +136 -0
  14. package/docs/guides/basic/components.md +54 -0
  15. package/docs/guides/basic/event.md +70 -0
  16. package/docs/guides/basic/index.md +4 -0
  17. package/docs/guides/basic/style.md +68 -0
  18. package/docs/guides/basic/type.md +70 -0
  19. package/docs/guides/basic/usage.md +189 -0
  20. package/docs/guides/index.md +5 -0
  21. package/docs/guides/intro/getting-started.md +79 -0
  22. package/docs/guides/intro/index.md +51 -0
  23. package/docs/index.md +0 -0
  24. package/example/browserslist +12 -0
  25. package/example/src/app/app-routing.module.ts +26 -0
  26. package/example/src/app/app.component.html +2 -0
  27. package/example/src/app/app.component.ts +11 -0
  28. package/example/src/app/app.module.ts +57 -0
  29. package/example/src/app/components/components.component.html +6 -0
  30. package/example/src/app/components/components.component.ts +33 -0
  31. package/example/src/app/configuration/parameters/api/zh-cn.js +350 -0
  32. package/example/src/app/configuration/parameters/doc/zh-cn.md +5 -0
  33. package/example/src/app/gantt/gantt.component.html +51 -0
  34. package/example/src/app/gantt/gantt.component.ts +119 -0
  35. package/example/src/app/gantt-advanced/component/flat.component.html +30 -0
  36. package/example/src/app/gantt-advanced/component/flat.component.ts +72 -0
  37. package/example/src/app/gantt-advanced/component/flat.scss +31 -0
  38. package/example/src/app/gantt-advanced/gantt-advanced.component.html +32 -0
  39. package/example/src/app/gantt-advanced/gantt-advanced.component.ts +34 -0
  40. package/example/src/app/gantt-advanced/mocks.ts +158 -0
  41. package/example/src/app/gantt-groups/gantt-groups.component.html +42 -0
  42. package/example/src/app/gantt-groups/gantt-groups.component.ts +62 -0
  43. package/example/src/app/gantt-range/gantt-range.component.html +66 -0
  44. package/example/src/app/gantt-range/gantt-range.component.ts +67 -0
  45. package/example/src/app/gantt-range/mocks.ts +150 -0
  46. package/example/src/app/helper.ts +38 -0
  47. package/example/src/assets/.gitkeep +0 -0
  48. package/example/src/environments/environment.prod.ts +3 -0
  49. package/example/src/environments/environment.ts +16 -0
  50. package/example/src/favicon.ico +0 -0
  51. package/example/src/index.html +13 -0
  52. package/example/src/main.ts +12 -0
  53. package/example/src/polyfills.ts +63 -0
  54. package/example/src/styles.scss +56 -0
  55. package/example/tsconfig.app.json +18 -0
  56. package/nginx.conf +17 -0
  57. package/package.json +113 -17
  58. package/packages/gantt/README.md +24 -0
  59. package/packages/gantt/karma.conf.js +46 -0
  60. package/packages/gantt/ng-package.json +7 -0
  61. package/packages/gantt/ng-package.prod.json +7 -0
  62. package/packages/gantt/package.json +16 -0
  63. package/packages/gantt/src/class/date-point.ts +14 -0
  64. package/{class/event.d.ts → packages/gantt/src/class/event.ts} +12 -6
  65. package/packages/gantt/src/class/group.ts +36 -0
  66. package/{class/index.d.ts → packages/gantt/src/class/index.ts} +0 -0
  67. package/packages/gantt/src/class/item.ts +129 -0
  68. package/packages/gantt/src/class/test/group.spec.ts +21 -0
  69. package/packages/gantt/src/class/test/item.spec.ts +102 -0
  70. package/packages/gantt/src/class/view-type.ts +7 -0
  71. package/packages/gantt/src/components/bar/bar-drag.ts +298 -0
  72. package/packages/gantt/src/components/bar/bar.component.html +17 -0
  73. package/packages/gantt/src/components/bar/bar.component.scss +169 -0
  74. package/packages/gantt/src/components/bar/bar.component.ts +109 -0
  75. package/packages/gantt/src/components/bar/test/bar.component.spec.ts +54 -0
  76. package/packages/gantt/src/components/bar/test/bar.drag.spec.ts +196 -0
  77. package/packages/gantt/src/components/calendar/calendar.component.html +52 -0
  78. package/packages/gantt/src/components/calendar/calendar.component.scss +77 -0
  79. package/packages/gantt/src/components/calendar/calendar.component.ts +100 -0
  80. package/packages/gantt/src/components/drag-backdrop/drag-backdrop.component.html +6 -0
  81. package/packages/gantt/src/components/drag-backdrop/drag-backdrop.component.scss +48 -0
  82. package/packages/gantt/src/components/drag-backdrop/drag-backdrop.component.ts +13 -0
  83. package/packages/gantt/src/components/icon/icon.component.scss +13 -0
  84. package/packages/gantt/src/components/icon/icon.component.ts +28 -0
  85. package/packages/gantt/src/components/icon/icons.ts +86 -0
  86. package/packages/gantt/src/components/links/links.component.html +19 -0
  87. package/packages/gantt/src/components/links/links.component.scss +27 -0
  88. package/packages/gantt/src/components/links/links.component.ts +263 -0
  89. package/packages/gantt/src/components/main/gantt-main.component.html +35 -0
  90. package/packages/gantt/src/components/main/gantt-main.component.ts +35 -0
  91. package/packages/gantt/src/components/range/range.component.html +8 -0
  92. package/packages/gantt/src/components/range/range.component.scss +35 -0
  93. package/packages/gantt/src/components/range/range.component.ts +27 -0
  94. package/packages/gantt/src/components/range/test/range.component.spec.ts +80 -0
  95. package/packages/gantt/src/components/table/gantt-table.component.html +105 -0
  96. package/packages/gantt/src/components/table/gantt-table.component.scss +144 -0
  97. package/packages/gantt/src/components/table/gantt-table.component.ts +166 -0
  98. package/packages/gantt/src/components/table/test/table.spec.ts +129 -0
  99. package/packages/gantt/src/gantt-abstract.ts +14 -0
  100. package/packages/gantt/src/gantt-dom.service.ts +134 -0
  101. package/packages/gantt/src/gantt-drag-container.ts +73 -0
  102. package/packages/gantt/src/gantt-item-upper.ts +50 -0
  103. package/packages/gantt/src/gantt-print.service.ts +104 -0
  104. package/packages/gantt/src/gantt-upper.ts +289 -0
  105. package/packages/gantt/src/gantt.component.html +18 -0
  106. package/packages/gantt/src/gantt.component.scss +77 -0
  107. package/packages/gantt/src/gantt.component.ts +134 -0
  108. package/packages/gantt/src/gantt.module.ts +47 -0
  109. package/packages/gantt/src/gantt.pipe.ts +31 -0
  110. package/packages/gantt/src/gantt.styles.ts +28 -0
  111. package/{public-api.d.ts → packages/gantt/src/public-api.ts} +6 -0
  112. package/packages/gantt/src/root.component.html +12 -0
  113. package/packages/gantt/src/root.component.ts +121 -0
  114. package/packages/gantt/src/styles/index.scss +9 -0
  115. package/packages/gantt/src/styles/variables.scss +46 -0
  116. package/packages/gantt/src/table/gantt-column.component.ts +25 -0
  117. package/packages/gantt/src/table/gantt-table.component.ts +14 -0
  118. package/packages/gantt/src/table/test/table.spec.ts +56 -0
  119. package/packages/gantt/src/test/gantt.component.spec.ts +404 -0
  120. package/packages/gantt/src/test/mocks/data.ts +303 -0
  121. package/packages/gantt/src/test.ts +21 -0
  122. package/packages/gantt/src/utils/date.ts +276 -0
  123. package/packages/gantt/src/utils/helpers.ts +66 -0
  124. package/packages/gantt/src/utils/test/date.spec.ts +105 -0
  125. package/packages/gantt/src/utils/test/helpers.spec.ts +73 -0
  126. package/packages/gantt/src/utils/testing.ts +64 -0
  127. package/packages/gantt/src/views/day.ts +74 -0
  128. package/packages/gantt/src/views/factory.ts +25 -0
  129. package/packages/gantt/src/views/month.ts +66 -0
  130. package/packages/gantt/src/views/quarter.ts +68 -0
  131. package/packages/gantt/src/views/test/day.spec.ts +45 -0
  132. package/packages/gantt/src/views/test/factory.spec.ts +41 -0
  133. package/packages/gantt/src/views/test/mock.ts +14 -0
  134. package/packages/gantt/src/views/test/month.spec.ts +45 -0
  135. package/packages/gantt/src/views/test/quarter.spec.ts +45 -0
  136. package/packages/gantt/src/views/test/view.spec.ts +144 -0
  137. package/packages/gantt/src/views/test/week.spec.ts +45 -0
  138. package/packages/gantt/src/views/test/year.spec.ts +45 -0
  139. package/packages/gantt/src/views/view.ts +186 -0
  140. package/packages/gantt/src/views/week.ts +66 -0
  141. package/packages/gantt/src/views/year.ts +62 -0
  142. package/packages/gantt/tsconfig.lib.json +20 -0
  143. package/packages/gantt/tsconfig.lib.prod.json +9 -0
  144. package/packages/gantt/tsconfig.schematics.json +25 -0
  145. package/packages/gantt/tsconfig.spec.json +17 -0
  146. package/packages/gantt/tslint.json +18 -0
  147. package/scss-bundle.config.json +7 -0
  148. package/tsconfig.json +26 -0
  149. package/tslint.json +51 -0
  150. package/bundles/worktile-gantt.umd.js +0 -3129
  151. package/bundles/worktile-gantt.umd.js.map +0 -1
  152. package/bundles/worktile-gantt.umd.min.js +0 -16
  153. package/bundles/worktile-gantt.umd.min.js.map +0 -1
  154. package/class/date-point.d.ts +0 -15
  155. package/class/group.d.ts +0 -22
  156. package/class/item.d.ts +0 -70
  157. package/class/view-type.d.ts +0 -7
  158. package/components/bar/bar-drag.d.ts +0 -34
  159. package/components/bar/bar.component.d.ts +0 -23
  160. package/components/calendar/calendar.component.d.ts +0 -25
  161. package/components/drag-backdrop/drag-backdrop.component.d.ts +0 -6
  162. package/components/icon/icon.component.d.ts +0 -10
  163. package/components/icon/icons.d.ts +0 -8
  164. package/components/links/links.component.d.ts +0 -44
  165. package/components/main/gantt-main.component.d.ts +0 -18
  166. package/components/range/range.component.d.ts +0 -10
  167. package/components/table/gantt-table.component.d.ts +0 -31
  168. package/esm2015/class/date-point.js +0 -10
  169. package/esm2015/class/event.js +0 -13
  170. package/esm2015/class/group.js +0 -17
  171. package/esm2015/class/index.js +0 -6
  172. package/esm2015/class/item.js +0 -78
  173. package/esm2015/class/view-type.js +0 -9
  174. package/esm2015/components/bar/bar-drag.js +0 -266
  175. package/esm2015/components/bar/bar.component.js +0 -91
  176. package/esm2015/components/calendar/calendar.component.js +0 -82
  177. package/esm2015/components/drag-backdrop/drag-backdrop.component.js +0 -18
  178. package/esm2015/components/icon/icon.component.js +0 -36
  179. package/esm2015/components/icon/icons.js +0 -87
  180. package/esm2015/components/links/links.component.js +0 -207
  181. package/esm2015/components/main/gantt-main.component.js +0 -35
  182. package/esm2015/components/range/range.component.js +0 -32
  183. package/esm2015/components/table/gantt-table.component.js +0 -128
  184. package/esm2015/gantt-dom.service.js +0 -101
  185. package/esm2015/gantt-drag-container.js +0 -57
  186. package/esm2015/gantt-item-upper.js +0 -55
  187. package/esm2015/gantt-print.service.js +0 -92
  188. package/esm2015/gantt-upper.js +0 -231
  189. package/esm2015/gantt.component.js +0 -105
  190. package/esm2015/gantt.module.js +0 -43
  191. package/esm2015/gantt.pipe.js +0 -33
  192. package/esm2015/gantt.styles.js +0 -15
  193. package/esm2015/public-api.js +0 -16
  194. package/esm2015/root.component.js +0 -111
  195. package/esm2015/table/gantt-column.component.js +0 -28
  196. package/esm2015/table/gantt-table.component.js +0 -18
  197. package/esm2015/utils/date.js +0 -160
  198. package/esm2015/utils/helpers.js +0 -45
  199. package/esm2015/views/day.js +0 -54
  200. package/esm2015/views/factory.js +0 -23
  201. package/esm2015/views/month.js +0 -48
  202. package/esm2015/views/quarter.js +0 -51
  203. package/esm2015/views/view.js +0 -121
  204. package/esm2015/views/week.js +0 -49
  205. package/esm2015/views/year.js +0 -50
  206. package/esm2015/worktile-gantt.js +0 -16
  207. package/fesm2015/worktile-gantt.js +0 -2491
  208. package/fesm2015/worktile-gantt.js.map +0 -1
  209. package/gantt-dom.service.d.ts +0 -29
  210. package/gantt-drag-container.d.ts +0 -20
  211. package/gantt-item-upper.d.ts +0 -17
  212. package/gantt-print.service.d.ts +0 -10
  213. package/gantt-upper.d.ts +0 -62
  214. package/gantt.component.d.ts +0 -28
  215. package/gantt.module.d.ts +0 -2
  216. package/gantt.pipe.d.ts +0 -11
  217. package/gantt.styles.d.ts +0 -15
  218. package/root.component.d.ts +0 -25
  219. package/style.scss +0 -645
  220. package/table/gantt-column.component.d.ts +0 -12
  221. package/table/gantt-table.component.d.ts +0 -7
  222. package/utils/date.d.ts +0 -59
  223. package/utils/helpers.d.ts +0 -11
  224. package/views/day.d.ts +0 -14
  225. package/views/factory.d.ts +0 -8
  226. package/views/month.d.ts +0 -12
  227. package/views/quarter.d.ts +0 -12
  228. package/views/view.d.ts +0 -56
  229. package/views/week.d.ts +0 -12
  230. package/views/year.d.ts +0 -12
  231. package/worktile-gantt.d.ts +0 -15
  232. package/worktile-gantt.metadata.json +0 -1
@@ -1,266 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { DragDrop } from '@angular/cdk/drag-drop';
3
- import { GanttDomService } from '../../gantt-dom.service';
4
- import { GanttDragContainer } from '../../gantt-drag-container';
5
- import { differenceInCalendarDays } from '../../utils/date';
6
- import { fromEvent, Subject } from 'rxjs';
7
- import { takeUntil } from 'rxjs/operators';
8
- const dragMinWidth = 10;
9
- const activeClass = 'gantt-bar-active';
10
- const linkDropClass = 'gantt-bar-link-drop';
11
- function createSvgElement(qualifiedName, className) {
12
- const element = document.createElementNS('http://www.w3.org/2000/svg', qualifiedName);
13
- element.classList.add(className);
14
- return element;
15
- }
16
- export class GanttBarDrag {
17
- constructor(dragDrop, dom, dragContainer) {
18
- this.dragDrop = dragDrop;
19
- this.dom = dom;
20
- this.dragContainer = dragContainer;
21
- this.dragRefs = [];
22
- this.destroy$ = new Subject();
23
- }
24
- get dragDisabled() {
25
- return !this.item.draggable || !this.ganttUpper.draggable;
26
- }
27
- get linkDragDisabled() {
28
- return !this.item.linkable || !this.ganttUpper.linkable;
29
- }
30
- createMouseEvents() {
31
- fromEvent(this.barElement, 'mouseenter')
32
- .pipe(takeUntil(this.destroy$))
33
- .subscribe(() => {
34
- if (this.dragContainer.linkDraggingId && this.dragContainer.linkDraggingId !== this.item.id) {
35
- if (this.item.linkable) {
36
- this.barElement.classList.add(linkDropClass);
37
- this.dragContainer.emitLinkDragEntered(this.item);
38
- }
39
- }
40
- else {
41
- this.barElement.classList.add(activeClass);
42
- }
43
- });
44
- fromEvent(this.barElement, 'mouseleave')
45
- .pipe(takeUntil(this.destroy$))
46
- .subscribe(() => {
47
- if (!this.dragContainer.linkDraggingId) {
48
- this.barElement.classList.remove(activeClass);
49
- }
50
- else {
51
- this.dragContainer.emitLinkDragLeaved();
52
- }
53
- this.barElement.classList.remove(linkDropClass);
54
- });
55
- }
56
- createBarDrag() {
57
- const dragRef = this.dragDrop.createDrag(this.barElement);
58
- dragRef.lockAxis = 'x';
59
- dragRef.started.subscribe(() => {
60
- this.setDraggingStyles();
61
- this.dragContainer.dragStarted.emit({ item: this.item.origin });
62
- });
63
- dragRef.moved.subscribe((event) => {
64
- const x = this.item.refs.x + event.distance.x;
65
- const days = differenceInCalendarDays(this.item.end.value, this.item.start.value);
66
- const start = this.ganttUpper.view.getDateByXPoint(x);
67
- const end = start.addDays(days);
68
- this.openDragBackdrop(this.barElement, this.ganttUpper.view.getDateByXPoint(x), end);
69
- });
70
- dragRef.ended.subscribe((event) => {
71
- const days = differenceInCalendarDays(this.item.end.value, this.item.start.value);
72
- const start = this.ganttUpper.view.getDateByXPoint(this.item.refs.x + event.distance.x);
73
- const end = start.addDays(days);
74
- this.item.updateDate(start, end);
75
- this.clearDraggingStyles();
76
- this.closeDragBackdrop();
77
- event.source.reset();
78
- this.dragContainer.dragEnded.emit({ item: this.item.origin });
79
- });
80
- this.barDragRef = dragRef;
81
- return dragRef;
82
- }
83
- createBarHandleDrags() {
84
- const dragRefs = [];
85
- const handles = this.barElement.querySelectorAll('.drag-handles .handle');
86
- handles.forEach((handle, index) => {
87
- const isBefore = index === 0;
88
- const dragRef = this.dragDrop.createDrag(handle);
89
- dragRef.lockAxis = 'x';
90
- dragRef.withBoundaryElement(this.dom.root);
91
- dragRef.started.subscribe(() => {
92
- this.setDraggingStyles();
93
- this.dragContainer.dragStarted.emit({ item: this.item.origin });
94
- });
95
- dragRef.moved.subscribe((event) => {
96
- if (isBefore) {
97
- const x = this.item.refs.x + event.distance.x;
98
- const width = this.item.refs.width + event.distance.x * -1;
99
- if (width > dragMinWidth) {
100
- this.barElement.style.width = width + 'px';
101
- this.barElement.style.left = x + 'px';
102
- this.openDragBackdrop(this.barElement, this.ganttUpper.view.getDateByXPoint(x), this.ganttUpper.view.getDateByXPoint(x + width));
103
- }
104
- }
105
- else {
106
- const width = this.item.refs.width + event.distance.x;
107
- if (width > dragMinWidth) {
108
- this.barElement.style.width = width + 'px';
109
- this.openDragBackdrop(this.barElement, this.ganttUpper.view.getDateByXPoint(this.item.refs.x), this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width));
110
- }
111
- }
112
- event.source.reset();
113
- });
114
- dragRef.ended.subscribe((event) => {
115
- if (isBefore) {
116
- const width = this.item.refs.width + event.distance.x * -1;
117
- if (width > dragMinWidth) {
118
- this.item.updateDate(this.ganttUpper.view.getDateByXPoint(this.item.refs.x + event.distance.x), this.item.end);
119
- }
120
- else {
121
- this.item.updateDate(this.item.end.startOfDay(), this.item.end);
122
- }
123
- }
124
- else {
125
- const width = this.item.refs.width + event.distance.x;
126
- if (width > dragMinWidth) {
127
- this.item.updateDate(this.item.start, this.ganttUpper.view.getDateByXPoint(this.item.refs.x + this.item.refs.width + event.distance.x));
128
- }
129
- else {
130
- this.item.updateDate(this.item.start, this.item.start.endOfDay());
131
- }
132
- }
133
- this.clearDraggingStyles();
134
- this.closeDragBackdrop();
135
- this.dragContainer.dragEnded.emit({ item: this.item.origin });
136
- });
137
- dragRefs.push(dragRef);
138
- });
139
- return dragRefs;
140
- }
141
- createLinkHandleDrags() {
142
- const dragRefs = [];
143
- const handles = this.barElement.querySelectorAll('.link-handles .handle');
144
- handles.forEach((handle, index) => {
145
- const isBefore = index === 0;
146
- const dragRef = this.dragDrop.createDrag(handle);
147
- dragRef.withBoundaryElement(this.dom.root);
148
- dragRef.beforeStarted.subscribe(() => {
149
- handle.style.pointerEvents = 'none';
150
- if (this.barDragRef) {
151
- this.barDragRef.disabled = true;
152
- }
153
- this.createLinkDraggingLine();
154
- this.dragContainer.emitLinkDragStarted(isBefore ? 'target' : 'source', this.item);
155
- });
156
- dragRef.moved.subscribe(() => {
157
- const positions = this.calcLinkLinePositions(handle, isBefore);
158
- this.linkDraggingLine.setAttribute('x1', positions.x1.toString());
159
- this.linkDraggingLine.setAttribute('y1', positions.y1.toString());
160
- this.linkDraggingLine.setAttribute('x2', positions.x2.toString());
161
- this.linkDraggingLine.setAttribute('y2', positions.y2.toString());
162
- });
163
- dragRef.ended.subscribe((event) => {
164
- event.source.reset();
165
- handle.style.pointerEvents = '';
166
- if (this.barDragRef) {
167
- this.barDragRef.disabled = false;
168
- }
169
- this.barElement.classList.remove(activeClass);
170
- this.destroyLinkDraggingLine();
171
- this.dragContainer.emitLinkDragEnded();
172
- });
173
- dragRefs.push(dragRef);
174
- });
175
- return dragRefs;
176
- }
177
- openDragBackdrop(dragElement, start, end) {
178
- const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask');
179
- const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop');
180
- const rootRect = this.dom.root.getBoundingClientRect();
181
- const dragRect = dragElement.getBoundingClientRect();
182
- const left = dragRect.left - rootRect.left - this.dom.side.clientWidth;
183
- const width = dragRect.right - dragRect.left;
184
- dragMaskElement.style.left = left + 'px';
185
- dragMaskElement.style.width = width + 'px';
186
- dragMaskElement.querySelector('.start').innerHTML = start.format('MM-dd');
187
- dragMaskElement.querySelector('.end').innerHTML = end.format('MM-dd');
188
- dragMaskElement.style.display = 'block';
189
- dragBackdropElement.style.display = 'block';
190
- }
191
- closeDragBackdrop() {
192
- const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask');
193
- const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop');
194
- dragMaskElement.style.display = 'none';
195
- dragBackdropElement.style.display = 'none';
196
- }
197
- setDraggingStyles() {
198
- this.barElement.style.pointerEvents = 'none';
199
- this.barElement.classList.add('gantt-bar-draggable-drag');
200
- }
201
- clearDraggingStyles() {
202
- this.barElement.style.pointerEvents = '';
203
- this.barElement.classList.remove('gantt-bar-draggable-drag');
204
- }
205
- calcLinkLinePositions(target, isBefore) {
206
- const rootRect = this.dom.root.getBoundingClientRect();
207
- const targetRect = target.getBoundingClientRect();
208
- const layerRect = target.parentElement.parentElement.getBoundingClientRect();
209
- return {
210
- x1: layerRect.left + (isBefore ? 0 : layerRect.width) - rootRect.left,
211
- y1: layerRect.top + layerRect.height / 2 - rootRect.top,
212
- x2: targetRect.left - rootRect.left + targetRect.width / 2,
213
- y2: targetRect.top - rootRect.top + targetRect.height / 2
214
- };
215
- }
216
- createLinkDraggingLine() {
217
- if (!this.linkDraggingLine) {
218
- const svgElement = createSvgElement('svg', 'gantt-link-drag-container');
219
- const linElement = createSvgElement('line', 'link-dragging-line');
220
- svgElement.appendChild(linElement);
221
- this.dom.root.appendChild(svgElement);
222
- this.linkDraggingLine = linElement;
223
- }
224
- }
225
- destroyLinkDraggingLine() {
226
- if (this.linkDraggingLine) {
227
- this.linkDraggingLine.parentElement.remove();
228
- this.linkDraggingLine = null;
229
- }
230
- }
231
- createDrags(elementRef, item, ganttUpper) {
232
- this.item = item;
233
- this.barElement = elementRef.nativeElement;
234
- this.ganttUpper = ganttUpper;
235
- if (!item.draggable || (this.dragDisabled && this.linkDragDisabled)) {
236
- return;
237
- }
238
- else {
239
- this.createMouseEvents();
240
- if (!this.dragDisabled) {
241
- const dragRef = this.createBarDrag();
242
- const dragHandlesRefs = this.createBarHandleDrags();
243
- this.dragRefs.push(dragRef, ...dragHandlesRefs);
244
- }
245
- if (!this.linkDragDisabled) {
246
- const linkDragRefs = this.createLinkHandleDrags();
247
- this.dragRefs.push(...linkDragRefs);
248
- }
249
- }
250
- }
251
- ngOnDestroy() {
252
- this.closeDragBackdrop();
253
- this.dragRefs.forEach((dragRef) => dragRef.dispose());
254
- this.destroy$.next();
255
- this.destroy$.complete();
256
- }
257
- }
258
- GanttBarDrag.decorators = [
259
- { type: Injectable }
260
- ];
261
- GanttBarDrag.ctorParameters = () => [
262
- { type: DragDrop },
263
- { type: GanttDomService },
264
- { type: GanttDragContainer }
265
- ];
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWRyYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9iYXIvYmFyLWRyYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFXLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQWEsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO0FBQ3ZDLE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDO0FBRTVDLFNBQVMsZ0JBQWdCLENBQUMsYUFBcUIsRUFBRSxTQUFpQjtJQUM5RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFHRCxNQUFNLE9BQU8sWUFBWTtJQXVCckIsWUFBb0IsUUFBa0IsRUFBVSxHQUFvQixFQUFVLGFBQWlDO1FBQTNGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFpQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQUp2RyxhQUFRLEdB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LElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7O1lBcFJKLFVBQVU7OztZQW5CTyxRQUFRO1lBQ2pCLGVBQWU7WUFDZixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJhZ1JlZiwgRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEdhbnR0RG9tU2VydmljZSB9IGZyb20gJy4uLy4uL2dhbnR0LWRvbS5zZXJ2aWNlJztcbmltcG9ydCB7IEdhbnR0RHJhZ0NvbnRhaW5lciB9IGZyb20gJy4uLy4uL2dhbnR0LWRyYWctY29udGFpbmVyJztcbmltcG9ydCB7IEdhbnR0SXRlbUludGVybmFsIH0gZnJvbSAnLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dERhdGUsIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuXG5jb25zdCBkcmFnTWluV2lkdGggPSAxMDtcbmNvbnN0IGFjdGl2ZUNsYXNzID0gJ2dhbnR0LWJhci1hY3RpdmUnO1xuY29uc3QgbGlua0Ryb3BDbGFzcyA9ICdnYW50dC1iYXItbGluay1kcm9wJztcblxuZnVuY3Rpb24gY3JlYXRlU3ZnRWxlbWVudChxdWFsaWZpZWROYW1lOiBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCBxdWFsaWZpZWROYW1lKTtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gZWxlbWVudDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdhbnR0QmFyRHJhZyBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBnYW50dFVwcGVyOiBHYW50dFVwcGVyO1xuXG4gICAgcHJpdmF0ZSBiYXJFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIHByaXZhdGUgaXRlbTogR2FudHRJdGVtSW50ZXJuYWw7XG5cbiAgICBwcml2YXRlIGdldCBkcmFnRGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pdGVtLmRyYWdnYWJsZSB8fCAhdGhpcy5nYW50dFVwcGVyLmRyYWdnYWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBsaW5rRHJhZ0Rpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXRlbS5saW5rYWJsZSB8fCAhdGhpcy5nYW50dFVwcGVyLmxpbmthYmxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGlua0RyYWdnaW5nTGluZTogU1ZHRWxlbWVudDtcblxuICAgIHByaXZhdGUgYmFyRHJhZ1JlZjogRHJhZ1JlZjtcblxuICAgIHByaXZhdGUgZHJhZ1JlZnM6IERyYWdSZWZbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRyYWdEcm9wOiBEcmFnRHJvcCwgcHJpdmF0ZSBkb206IEdhbnR0RG9tU2VydmljZSwgcHJpdmF0ZSBkcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXIpIHt9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1vdXNlRXZlbnRzKCkge1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5iYXJFbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnZ2luZ0lkICYmIHRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ2dpbmdJZCAhPT0gdGhpcy5pdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ubGlua2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKGxpbmtEcm9wQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmVtaXRMaW5rRHJhZ0VudGVyZWQodGhpcy5pdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKGFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQodGhpcy5iYXJFbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ2dpbmdJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmVtaXRMaW5rRHJhZ0xlYXZlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShsaW5rRHJvcENsYXNzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmFyRHJhZygpIHtcbiAgICAgICAgY29uc3QgZHJhZ1JlZiA9IHRoaXMuZHJhZ0Ryb3AuY3JlYXRlRHJhZyh0aGlzLmJhckVsZW1lbnQpO1xuICAgICAgICBkcmFnUmVmLmxvY2tBeGlzID0gJ3gnO1xuICAgICAgICBkcmFnUmVmLnN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJhZ2dpbmdTdHlsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnU3RhcnRlZC5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRyYWdSZWYubW92ZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuaXRlbS5yZWZzLnggKyBldmVudC5kaXN0YW5jZS54O1xuICAgICAgICAgICAgY29uc3QgZGF5cyA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyh0aGlzLml0ZW0uZW5kLnZhbHVlLCB0aGlzLml0ZW0uc3RhcnQudmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlQnlYUG9pbnQoeCk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBzdGFydC5hZGREYXlzKGRheXMpO1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJhZ0JhY2tkcm9wKHRoaXMuYmFyRWxlbWVudCwgdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KHgpLCBlbmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgZHJhZ1JlZi5lbmRlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXlzID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKHRoaXMuaXRlbS5lbmQudmFsdWUsIHRoaXMuaXRlbS5zdGFydC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVCeVhQb2ludCh0aGlzLml0ZW0ucmVmcy54ICsgZXZlbnQuZGlzdGFuY2UueCk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBzdGFydC5hZGREYXlzKGRheXMpO1xuICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZURhdGUoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRHJhZ2dpbmdTdHlsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcmFnQmFja2Ryb3AoKTtcbiAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdFbmRlZC5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYmFyRHJhZ1JlZiA9IGRyYWdSZWY7XG4gICAgICAgIHJldHVybiBkcmFnUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmFySGFuZGxlRHJhZ3MoKSB7XG4gICAgICAgIGNvbnN0IGRyYWdSZWZzID0gW107XG4gICAgICAgIGNvbnN0IGhhbmRsZXMgPSB0aGlzLmJhckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5kcmFnLWhhbmRsZXMgLmhhbmRsZScpO1xuICAgICAgICBoYW5kbGVzLmZvckVhY2goKGhhbmRsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVmb3JlID0gaW5kZXggPT09IDA7XG4gICAgICAgICAgICBjb25zdCBkcmFnUmVmID0gdGhpcy5kcmFnRHJvcC5jcmVhdGVEcmFnKGhhbmRsZSk7XG4gICAgICAgICAgICBkcmFnUmVmLmxvY2tBeGlzID0gJ3gnO1xuICAgICAgICAgICAgZHJhZ1JlZi53aXRoQm91bmRhcnlFbGVtZW50KHRoaXMuZG9tLnJvb3QgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgICAgICBkcmFnUmVmLnN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyYWdnaW5nU3R5bGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRyYWdSZWYubW92ZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0JlZm9yZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gdGhpcy5pdGVtLnJlZnMueCArIGV2ZW50LmRpc3RhbmNlLng7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5pdGVtLnJlZnMud2lkdGggKyBldmVudC5kaXN0YW5jZS54ICogLTE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGRyYWdNaW5XaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLmxlZnQgPSB4ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkRyYWdCYWNrZHJvcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KHgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVCeVhQb2ludCh4ICsgd2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLml0ZW0ucmVmcy53aWR0aCArIGV2ZW50LmRpc3RhbmNlLng7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGRyYWdNaW5XaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRHJhZ0JhY2tkcm9wKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlQnlYUG9pbnQodGhpcy5pdGVtLnJlZnMueCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KHRoaXMuaXRlbS5yZWZzLnggKyB3aWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZHJhZ1JlZi5lbmRlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5pdGVtLnJlZnMud2lkdGggKyBldmVudC5kaXN0YW5jZS54ICogLTE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGRyYWdNaW5XaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZURhdGUodGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KHRoaXMuaXRlbS5yZWZzLnggKyBldmVudC5kaXN0YW5jZS54KSwgdGhpcy5pdGVtLmVuZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZSh0aGlzLml0ZW0uZW5kLnN0YXJ0T2ZEYXkoKSwgdGhpcy5pdGVtLmVuZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuaXRlbS5yZWZzLndpZHRoICsgZXZlbnQuZGlzdGFuY2UueDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gZHJhZ01pbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0uc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KHRoaXMuaXRlbS5yZWZzLnggKyB0aGlzLml0ZW0ucmVmcy53aWR0aCArIGV2ZW50LmRpc3RhbmNlLngpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZURhdGUodGhpcy5pdGVtLnN0YXJ0LCB0aGlzLml0ZW0uc3RhcnQuZW5kT2ZEYXkoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRyYWdnaW5nU3R5bGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyYWdCYWNrZHJvcCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnRW5kZWQuZW1pdCh7IGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRyYWdSZWZzLnB1c2goZHJhZ1JlZik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZHJhZ1JlZnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMaW5rSGFuZGxlRHJhZ3MoKSB7XG4gICAgICAgIGNvbnN0IGRyYWdSZWZzID0gW107XG4gICAgICAgIGNvbnN0IGhhbmRsZXMgPSB0aGlzLmJhckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5saW5rLWhhbmRsZXMgLmhhbmRsZScpO1xuICAgICAgICBoYW5kbGVzLmZvckVhY2goKGhhbmRsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVmb3JlID0gaW5kZXggPT09IDA7XG4gICAgICAgICAgICBjb25zdCBkcmFnUmVmID0gdGhpcy5kcmFnRHJvcC5jcmVhdGVEcmFnKGhhbmRsZSk7XG4gICAgICAgICAgICBkcmFnUmVmLndpdGhCb3VuZGFyeUVsZW1lbnQodGhpcy5kb20ucm9vdCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICBkcmFnUmVmLmJlZm9yZVN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGUuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJEcmFnUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRHJhZ1JlZi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlua0RyYWdnaW5nTGluZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdTdGFydGVkKGlzQmVmb3JlID8gJ3RhcmdldCcgOiAnc291cmNlJywgdGhpcy5pdGVtKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkcmFnUmVmLm1vdmVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5jYWxjTGlua0xpbmVQb3NpdGlvbnMoaGFuZGxlLCBpc0JlZm9yZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneDEnLCBwb3NpdGlvbnMueDEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneTEnLCBwb3NpdGlvbnMueTEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneDInLCBwb3NpdGlvbnMueDIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneTInLCBwb3NpdGlvbnMueTIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZHJhZ1JlZi5lbmRlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJEcmFnUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRHJhZ1JlZi5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TGlua0RyYWdnaW5nTGluZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdFbmRlZCgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRyYWdSZWZzLnB1c2goZHJhZ1JlZik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZHJhZ1JlZnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRHJhZ0JhY2tkcm9wKGRyYWdFbGVtZW50OiBIVE1MRWxlbWVudCwgc3RhcnQ6IEdhbnR0RGF0ZSwgZW5kOiBHYW50dERhdGUpIHtcbiAgICAgICAgY29uc3QgZHJhZ01hc2tFbGVtZW50ID0gdGhpcy5kb20ucm9vdC5xdWVyeVNlbGVjdG9yKCcuZ2FudHQtZHJhZy1tYXNrJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRyYWdCYWNrZHJvcEVsZW1lbnQgPSB0aGlzLmRvbS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1kcmFnLWJhY2tkcm9wJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJvb3RSZWN0ID0gdGhpcy5kb20ucm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgZHJhZ1JlY3QgPSBkcmFnRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbGVmdCA9IGRyYWdSZWN0LmxlZnQgLSByb290UmVjdC5sZWZ0IC0gdGhpcy5kb20uc2lkZS5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBkcmFnUmVjdC5yaWdodCAtIGRyYWdSZWN0LmxlZnQ7XG4gICAgICAgIGRyYWdNYXNrRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7XG4gICAgICAgIGRyYWdNYXNrRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zdGFydCcpLmlubmVySFRNTCA9IHN0YXJ0LmZvcm1hdCgnTU0tZGQnKTtcbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbmQnKS5pbm5lckhUTUwgPSBlbmQuZm9ybWF0KCdNTS1kZCcpO1xuICAgICAgICBkcmFnTWFza0VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgIGRyYWdCYWNrZHJvcEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZURyYWdCYWNrZHJvcCgpIHtcbiAgICAgICAgY29uc3QgZHJhZ01hc2tFbGVtZW50ID0gdGhpcy5kb20ucm9vdC5xdWVyeVNlbGVjdG9yKCcuZ2FudHQtZHJhZy1tYXNrJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRyYWdCYWNrZHJvcEVsZW1lbnQgPSB0aGlzLmRvbS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1kcmFnLWJhY2tkcm9wJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGRyYWdNYXNrRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBkcmFnQmFja2Ryb3BFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREcmFnZ2luZ1N0eWxlcygpIHtcbiAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdnYW50dC1iYXItZHJhZ2dhYmxlLWRyYWcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyRHJhZ2dpbmdTdHlsZXMoKSB7XG4gICAgICAgIHRoaXMuYmFyRWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdnYW50dC1iYXItZHJhZ2dhYmxlLWRyYWcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGNMaW5rTGluZVBvc2l0aW9ucyh0YXJnZXQ6IEhUTUxFbGVtZW50LCBpc0JlZm9yZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCByb290UmVjdCA9IHRoaXMuZG9tLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGxheWVyUmVjdCA9IHRhcmdldC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4MTogbGF5ZXJSZWN0LmxlZnQgKyAoaXNCZWZvcmUgPyAwIDogbGF5ZXJSZWN0LndpZHRoKSAtIHJvb3RSZWN0LmxlZnQsXG4gICAgICAgICAgICB5MTogbGF5ZXJSZWN0LnRvcCArIGxheWVyUmVjdC5oZWlnaHQgLyAyIC0gcm9vdFJlY3QudG9wLFxuICAgICAgICAgICAgeDI6IHRhcmdldFJlY3QubGVmdCAtIHJvb3RSZWN0LmxlZnQgKyB0YXJnZXRSZWN0LndpZHRoIC8gMixcbiAgICAgICAgICAgIHkyOiB0YXJnZXRSZWN0LnRvcCAtIHJvb3RSZWN0LnRvcCArIHRhcmdldFJlY3QuaGVpZ2h0IC8gMlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGlua0RyYWdnaW5nTGluZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtEcmFnZ2luZ0xpbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN2Z0VsZW1lbnQgPSBjcmVhdGVTdmdFbGVtZW50KCdzdmcnLCAnZ2FudHQtbGluay1kcmFnLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgY29uc3QgbGluRWxlbWVudCA9IGNyZWF0ZVN2Z0VsZW1lbnQoJ2xpbmUnLCAnbGluay1kcmFnZ2luZy1saW5lJyk7XG4gICAgICAgICAgICBzdmdFbGVtZW50LmFwcGVuZENoaWxkKGxpbkVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5kb20ucm9vdC5hcHBlbmRDaGlsZChzdmdFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZSA9IGxpbkVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lMaW5rRHJhZ2dpbmdMaW5lKCkge1xuICAgICAgICBpZiAodGhpcy5saW5rRHJhZ2dpbmdMaW5lKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtEcmFnZ2luZ0xpbmUucGFyZW50RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVEcmFncyhlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCwgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLmJhckVsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZ2FudHRVcHBlciA9IGdhbnR0VXBwZXI7XG5cbiAgICAgICAgaWYgKCFpdGVtLmRyYWdnYWJsZSB8fCAodGhpcy5kcmFnRGlzYWJsZWQgJiYgdGhpcy5saW5rRHJhZ0Rpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVNb3VzZUV2ZW50cygpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdSZWYgPSB0aGlzLmNyZWF0ZUJhckRyYWcoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnSGFuZGxlc1JlZnMgPSB0aGlzLmNyZWF0ZUJhckhhbmRsZURyYWdzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnUmVmcy5wdXNoKGRyYWdSZWYsIC4uLmRyYWdIYW5kbGVzUmVmcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMubGlua0RyYWdEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtEcmFnUmVmcyA9IHRoaXMuY3JlYXRlTGlua0hhbmRsZURyYWdzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnUmVmcy5wdXNoKC4uLmxpbmtEcmFnUmVmcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZURyYWdCYWNrZHJvcCgpO1xuICAgICAgICB0aGlzLmRyYWdSZWZzLmZvckVhY2goKGRyYWdSZWYpID0+IGRyYWdSZWYuZGlzcG9zZSgpKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,91 +0,0 @@
1
- import { Component, HostBinding, ElementRef, Inject, ViewChild, Output, EventEmitter } from '@angular/core';
2
- import { takeUntil } from 'rxjs/operators';
3
- import { GanttBarDrag } from './bar-drag';
4
- import { hexToRgb } from '../../utils/helpers';
5
- import { GanttDragContainer } from '../../gantt-drag-container';
6
- import { barBackground } from '../../gantt.styles';
7
- import { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';
8
- import { GanttItemUpper } from '../../gantt-item-upper';
9
- function linearGradient(sideOrCorner, color, stop) {
10
- return `linear-gradient(${sideOrCorner},${color} 0%,${stop} 40%)`;
11
- }
12
- export class NgxGanttBarComponent extends GanttItemUpper {
13
- constructor(dragContainer, drag, elementRef, ganttUpper) {
14
- super(elementRef, ganttUpper);
15
- this.dragContainer = dragContainer;
16
- this.drag = drag;
17
- this.ganttUpper = ganttUpper;
18
- this.barClick = new EventEmitter();
19
- this.ganttItemClass = true;
20
- this.color = 'red';
21
- }
22
- ngOnInit() {
23
- super.onInit();
24
- this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
25
- this.setContentBackground();
26
- });
27
- }
28
- ngAfterViewInit() {
29
- this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);
30
- this.setContentBackground();
31
- }
32
- ngOnChanges() {
33
- super.onChanges();
34
- }
35
- onBarClick(event) {
36
- this.barClick.emit({ event, item: this.item.origin });
37
- }
38
- setContentBackground() {
39
- const contentElement = this.contentElementRef.nativeElement;
40
- const color = this.item.color || barBackground;
41
- const style = this.item.barStyle || {};
42
- if (this.item.origin.start && this.item.origin.end) {
43
- style.background = color;
44
- style.borderRadius = '';
45
- }
46
- if (this.item.origin.start && !this.item.origin.end) {
47
- style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));
48
- style.borderRadius = '4px 12.5px 12.5px 4px';
49
- }
50
- if (!this.item.origin.start && this.item.origin.end) {
51
- style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));
52
- style.borderRadius = '12.5px 4px 4px 12.5px';
53
- }
54
- if (this.item.progress >= 0) {
55
- const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress');
56
- style.background = hexToRgb(color, 0.3);
57
- style.borderRadius = '';
58
- contentProgressElement.style.background = color;
59
- }
60
- for (const key in style) {
61
- if (style.hasOwnProperty(key)) {
62
- contentElement.style[key] = style[key];
63
- }
64
- }
65
- }
66
- stopPropagation(event) {
67
- event.stopPropagation();
68
- }
69
- ngOnDestroy() {
70
- super.onDestroy();
71
- }
72
- }
73
- NgxGanttBarComponent.decorators = [
74
- { type: Component, args: [{
75
- selector: 'ngx-gantt-bar,gantt-bar',
76
- template: "<div class=\"gantt-bar-layer\">\n <div *ngIf=\"item.draggable && ganttUpper.draggable\" class=\"drag-handles\">\n <ng-container>\n <span class=\"handle\" (mousedown)=\"stopPropagation($event)\"></span>\n <span class=\"handle\" (mousedown)=\"stopPropagation($event)\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n",
77
- providers: [GanttBarDrag]
78
- },] }
79
- ];
80
- NgxGanttBarComponent.ctorParameters = () => [
81
- { type: GanttDragContainer },
82
- { type: GanttBarDrag },
83
- { type: ElementRef },
84
- { type: GanttUpper, decorators: [{ type: Inject, args: [GANTT_UPPER_TOKEN,] }] }
85
- ];
86
- NgxGanttBarComponent.propDecorators = {
87
- barClick: [{ type: Output }],
88
- contentElementRef: [{ type: ViewChild, args: ['content',] }],
89
- ganttItemClass: [{ type: HostBinding, args: ['class.gantt-bar',] }]
90
- };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsV0FBVyxFQUNYLFVBQVUsRUFHVixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRWYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELFNBQVMsY0FBYyxDQUFDLFlBQW9CLEVBQUUsS0FBYSxFQUFFLElBQVk7SUFDckUsT0FBTyxtQkFBbUIsWUFBWSxJQUFJLEtBQUssT0FBTyxJQUFJLE9BQU8sQ0FBQztBQUN0RSxDQUFDO0FBT0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGNBQWM7SUFTcEQsWUFDWSxhQUFpQyxFQUNqQyxJQUFrQixFQUMxQixVQUFzQyxFQUNKLFVBQXNCO1FBRXhELEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFMdEIsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQWM7UUFFUSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBWmxELGFBQVEsR0FB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LEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMxQztTQUNKO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFZO1FBQ3hCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7WUEvRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLHk2QkFBbUM7Z0JBQ25DLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUM1Qjs7O1lBZFEsa0JBQWtCO1lBRmxCLFlBQVk7WUFWakIsVUFBVTtZQWVjLFVBQVUsdUJBeUI3QixNQUFNLFNBQUMsaUJBQWlCOzs7dUJBWjVCLE1BQU07Z0NBRU4sU0FBUyxTQUFDLFNBQVM7NkJBRW5CLFdBQVcsU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIEluamVjdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2FudHRCYXJEcmFnIH0gZnJvbSAnLi9iYXItZHJhZyc7XG5pbXBvcnQgeyBoZXhUb1JnYiB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgYmFyQmFja2dyb3VuZCB9IGZyb20gJy4uLy4uL2dhbnR0LnN0eWxlcyc7XG5pbXBvcnQgeyBHYW50dEJhckNsaWNrRXZlbnQgfSBmcm9tICcuLi8uLi9jbGFzcyc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IEdhbnR0SXRlbVVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtaXRlbS11cHBlcic7XG5cbmZ1bmN0aW9uIGxpbmVhckdyYWRpZW50KHNpZGVPckNvcm5lcjogc3RyaW5nLCBjb2xvcjogc3RyaW5nLCBzdG9wOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYGxpbmVhci1ncmFkaWVudCgke3NpZGVPckNvcm5lcn0sJHtjb2xvcn0gMCUsJHtzdG9wfSA0MCUpYDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtZ2FudHQtYmFyLGdhbnR0LWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jhci5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbR2FudHRCYXJEcmFnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hHYW50dEJhckNvbXBvbmVudCBleHRlbmRzIEdhbnR0SXRlbVVwcGVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQE91dHB1dCgpIGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dEJhckNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50JykgY29udGVudEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1iYXInKSBnYW50dEl0ZW1DbGFzcyA9IHRydWU7XG5cbiAgICBjb2xvciA9ICdyZWQnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZHJhZ0NvbnRhaW5lcjogR2FudHREcmFnQ29udGFpbmVyLFxuICAgICAgICBwcml2YXRlIGRyYWc6IEdhbnR0QmFyRHJhZyxcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBnYW50dFVwcGVyOiBHYW50dFVwcGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGdhbnR0VXBwZXIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5vbkluaXQoKTtcbiAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdFbmRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldENvbnRlbnRCYWNrZ3JvdW5kKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kcmFnLmNyZWF0ZURyYWdzKHRoaXMuZWxlbWVudFJlZiwgdGhpcy5pdGVtLCB0aGlzLmdhbnR0VXBwZXIpO1xuICAgICAgICB0aGlzLnNldENvbnRlbnRCYWNrZ3JvdW5kKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm9uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uQmFyQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuYmFyQ2xpY2suZW1pdCh7IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29udGVudEJhY2tncm91bmQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMuaXRlbS5jb2xvciB8fCBiYXJCYWNrZ3JvdW5kO1xuICAgICAgICBjb25zdCBzdHlsZTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPiA9IHRoaXMuaXRlbS5iYXJTdHlsZSB8fCB7fTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5vcmlnaW4uc3RhcnQgJiYgdGhpcy5pdGVtLm9yaWdpbi5lbmQpIHtcbiAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBjb2xvcjtcbiAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLml0ZW0ub3JpZ2luLnN0YXJ0ICYmICF0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGxpbmVhckdyYWRpZW50KCd0byBsZWZ0JywgaGV4VG9SZ2IoY29sb3IsIDAuNTUpLCBoZXhUb1JnYihjb2xvciwgMSkpO1xuICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJzRweCAxMi41cHggMTIuNXB4IDRweCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLml0ZW0ub3JpZ2luLnN0YXJ0ICYmIHRoaXMuaXRlbS5vcmlnaW4uZW5kKSB7XG4gICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gbGluZWFyR3JhZGllbnQoJ3RvIHJpZ2h0JywgaGV4VG9SZ2IoY29sb3IsIDAuNTUpLCBoZXhUb1JnYihjb2xvciwgMSkpO1xuICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJzEyLjVweCA0cHggNHB4IDEyLjVweCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXRlbS5wcm9ncmVzcyA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UHJvZ3Jlc3NFbGVtZW50ID0gY29udGVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmdhbnR0LWJhci1jb250ZW50LXByb2dyZXNzJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gaGV4VG9SZ2IoY29sb3IsIDAuMyk7XG4gICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnJztcbiAgICAgICAgICAgIGNvbnRlbnRQcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9IGNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgIGlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29udGVudEVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wUHJvcGFnYXRpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5vbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -1,82 +0,0 @@
1
- import { Component, HostBinding, NgZone, Inject, ElementRef } from '@angular/core';
2
- import { Subject, merge } from 'rxjs';
3
- import { take, takeUntil } from 'rxjs/operators';
4
- import { headerHeight, todayHeight, todayWidth, todayBorderRadius } from '../../gantt.styles';
5
- import { isNumber } from '../../utils/helpers';
6
- import { GanttDate } from '../../utils/date';
7
- import { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';
8
- import { GanttViewType } from './../../class/view-type';
9
- const mainHeight = 5000;
10
- export class GanttCalendarComponent {
11
- constructor(ganttUpper, ngZone, elementRef) {
12
- this.ganttUpper = ganttUpper;
13
- this.ngZone = ngZone;
14
- this.elementRef = elementRef;
15
- this.unsubscribe$ = new Subject();
16
- this.headerHeight = headerHeight;
17
- this.mainHeight = mainHeight;
18
- this.todayHeight = todayHeight;
19
- this.todayWidth = todayWidth;
20
- this.todayBorderRadius = todayBorderRadius;
21
- this.viewTypes = GanttViewType;
22
- this.className = true;
23
- }
24
- get view() {
25
- return this.ganttUpper.view;
26
- }
27
- setTodayPoint() {
28
- const x = this.view.getTodayXPoint();
29
- const today = new GanttDate().getDate();
30
- const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0];
31
- const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0];
32
- const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0];
33
- if (isNumber(x)) {
34
- if (rect) {
35
- rect.style.left = `${x - todayWidth / 2}px`;
36
- rect.style.top = `${headerHeight - todayHeight}px`;
37
- rect.innerHTML = today.toString();
38
- }
39
- if (line) {
40
- line.style.left = `${x}px`;
41
- line.style.top = `${headerHeight}px`;
42
- line.style.bottom = `${-mainHeight}px`;
43
- }
44
- }
45
- else {
46
- todayEle.style.display = 'none';
47
- }
48
- }
49
- ngOnInit() {
50
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
51
- merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)
52
- .pipe(takeUntil(this.unsubscribe$))
53
- .subscribe(() => {
54
- this.setTodayPoint();
55
- });
56
- });
57
- }
58
- ngAfterViewInit() { }
59
- ngOnChanges(changes) { }
60
- trackBy(point, index) {
61
- return point.text || index;
62
- }
63
- ngOnDestroy() {
64
- this.unsubscribe$.next();
65
- this.unsubscribe$.complete();
66
- }
67
- }
68
- GanttCalendarComponent.decorators = [
69
- { type: Component, args: [{
70
- selector: 'gantt-calendar-overlay',
71
- template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n"
72
- },] }
73
- ];
74
- GanttCalendarComponent.ctorParameters = () => [
75
- { type: GanttUpper, decorators: [{ type: Inject, args: [GANTT_UPPER_TOKEN,] }] },
76
- { type: NgZone },
77
- { type: ElementRef }
78
- ];
79
- GanttCalendarComponent.propDecorators = {
80
- className: [{ type: HostBinding, args: ['class.gantt-calendar-overlay',] }]
81
- };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsV0FBVyxFQUlYLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztBQU14QixNQUFNLE9BQU8sc0JBQXNCO0lBcUIvQixZQUNzQyxVQUFzQixFQUNoRCxNQUFjLEVBQ2QsVUFBbUM7UUFGVCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQW5CdkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBRTVCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFFeEIsZ0JBQVcsR0FBRyxXQUFX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TUFBTSxTQUFDLGlCQUFpQjtZQTFDN0IsTUFBTTtZQUVOLFVBQVU7Ozt3QkFxQ1QsV0FBVyxTQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgTmdab25lLFxuICAgIEluamVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dERhdGVQb2ludCB9IGZyb20gJy4uLy4uL2NsYXNzL2RhdGUtcG9pbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGhlYWRlckhlaWdodCwgdG9kYXlIZWlnaHQsIHRvZGF5V2lkdGgsIHRvZGF5Qm9yZGVyUmFkaXVzIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERhdGUgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4vLi4vLi4vY2xhc3Mvdmlldy10eXBlJztcblxuY29uc3QgbWFpbkhlaWdodCA9IDUwMDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtY2FsZW5kYXItb3ZlcmxheScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgZ2V0IHZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbnR0VXBwZXIudmlldztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBoZWFkZXJIZWlnaHQgPSBoZWFkZXJIZWlnaHQ7XG5cbiAgICBtYWluSGVpZ2h0ID0gbWFpbkhlaWdodDtcblxuICAgIHRvZGF5SGVpZ2h0ID0gdG9kYXlIZWlnaHQ7XG5cbiAgICB0b2RheVdpZHRoID0gdG9kYXlXaWR0aDtcblxuICAgIHRvZGF5Qm9yZGVyUmFkaXVzID0gdG9kYXlCb3JkZXJSYWRpdXM7XG5cbiAgICB2aWV3VHlwZXMgPSBHYW50dFZpZXdUeXBlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1jYWxlbmRhci1vdmVybGF5JykgY2xhc3NOYW1lID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge31cblxuICAgIHNldFRvZGF5UG9pbnQoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnZpZXcuZ2V0VG9kYXlYUG9pbnQoKTtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgR2FudHREYXRlKCkuZ2V0RGF0ZSgpO1xuICAgICAgICBjb25zdCB0b2RheUVsZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNhbGVuZGFyLXRvZGF5LW92ZXJsYXknKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RvZGF5LXJlY3QnKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RvZGF5LWxpbmUnKVswXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNOdW1iZXIoeCkpIHtcbiAgICAgICAgICAgIGlmIChyZWN0KSB7XG4gICAgICAgICAgICAgICAgcmVjdC5zdHlsZS5sZWZ0ID0gYCR7eCAtIHRvZGF5V2lkdGggLyAyfXB4YDtcbiAgICAgICAgICAgICAgICByZWN0LnN0eWxlLnRvcCA9IGAke2hlYWRlckhlaWdodCAtIHRvZGF5SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICByZWN0LmlubmVySFRNTCA9IHRvZGF5LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgICAgICAgIGxpbmUuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xuICAgICAgICAgICAgICAgIGxpbmUuc3R5bGUudG9wID0gYCR7aGVhZGVySGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLmJvdHRvbSA9IGAkey1tYWluSGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZGF5RWxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgbWVyZ2UodGhpcy5nYW50dFVwcGVyLnZpZXdDaGFuZ2UsIHRoaXMuZ2FudHRVcHBlci52aWV3LnN0YXJ0JClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRvZGF5UG9pbnQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHt9XG5cbiAgICB0cmFja0J5KHBvaW50OiBHYW50dERhdGVQb2ludCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gcG9pbnQudGV4dCB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,18 +0,0 @@
1
- import { Component, HostBinding } from '@angular/core';
2
- export class GanttDragBackdropComponent {
3
- constructor() {
4
- this.backdropClass = true;
5
- }
6
- ngOnInit() { }
7
- }
8
- GanttDragBackdropComponent.decorators = [
9
- { type: Component, args: [{
10
- selector: 'gantt-drag-backdrop',
11
- template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n"
12
- },] }
13
- ];
14
- GanttDragBackdropComponent.ctorParameters = () => [];
15
- GanttDragBackdropComponent.propDecorators = {
16
- backdropClass: [{ type: HostBinding, args: ['class.gantt-drag-backdrop',] }]
17
- };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1iYWNrZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9kcmFnLWJhY2tkcm9wL2RyYWctYmFja2Ryb3AuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9ELE1BQU0sT0FBTywwQkFBMEI7SUFHbkM7UUFGMEMsa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFFaEQsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQzs7O1lBVGhCLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixpS0FBNkM7YUFDaEQ7Ozs7NEJBRUksV0FBVyxTQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LWRyYWctYmFja2Ryb3AnLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9kcmFnLWJhY2tkcm9wLmNvbXBvbmVudC5odG1sYFxufSlcbmV4cG9ydCBjbGFzcyBHYW50dERyYWdCYWNrZHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1kcmFnLWJhY2tkcm9wJykgYmFja2Ryb3BDbGFzcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG59XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { Component, Input, ElementRef, HostBinding } from '@angular/core';
2
- import { icons } from './icons';
3
- export class GanttIconComponent {
4
- constructor(elementRef) {
5
- this.elementRef = elementRef;
6
- this.isIcon = true;
7
- }
8
- set iconName(name) {
9
- this.setSvg(name);
10
- }
11
- ngOnInit() { }
12
- ngAfterViewInit() { }
13
- setSvg(name) {
14
- const iconSvg = icons[name];
15
- if (iconSvg) {
16
- this.elementRef.nativeElement.innerHTML = iconSvg;
17
- }
18
- else {
19
- this.elementRef.nativeElement.innerHTML = '';
20
- }
21
- }
22
- }
23
- GanttIconComponent.decorators = [
24
- { type: Component, args: [{
25
- selector: 'gantt-icon',
26
- template: ''
27
- },] }
28
- ];
29
- GanttIconComponent.ctorParameters = () => [
30
- { type: ElementRef }
31
- ];
32
- GanttIconComponent.propDecorators = {
33
- isIcon: [{ type: HostBinding, args: ['class.gantt-icon',] }],
34
- iconName: [{ type: Input }]
35
- };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFpQixVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFLaEMsTUFBTSxPQUFPLGtCQUFrQjtJQU8zQixZQUFvQixVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQU50QixXQUFNLEdBQUcsSUFBSSxDQUFDO0lBTVcsQ0FBQztJQUozRCxJQUFhLFFBQVEsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUlELFFBQVEsS0FBVSxDQUFDO0lBRW5CLGVBQWUsS0FBSSxDQUFDO0lBRXBCLE1BQU0sQ0FBQyxJQUFZO1FBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztTQUNyRDthQUFNO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUNoRDtJQUNMLENBQUM7OztZQXhCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLFFBQVEsRUFBRSxFQUFFO2FBQ2Y7OztZQUxpRCxVQUFVOzs7cUJBT3ZELFdBQVcsU0FBQyxrQkFBa0I7dUJBRTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpY29ucyB9IGZyb20gJy4vaWNvbnMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1pY29uJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWljb24nKSBpc0ljb24gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2V0IGljb25OYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldFN2ZyhuYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge31cblxuICAgIHNldFN2ZyhuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaWNvblN2ZyA9IGljb25zW25hbWVdO1xuICAgICAgICBpZiAoaWNvblN2Zykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaWNvblN2ZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19