@progress/kendo-angular-gantt 0.2.1-dev.202112101349 → 0.3.0-dev.202201190830
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.
- package/dist/cdn/js/kendo-angular-gantt.js +2 -2
- package/dist/cdn/main.js +4 -4
- package/dist/es/common/touch-enabled.js +9 -0
- package/dist/es/dependencies/utils.js +40 -5
- package/dist/es/dragging/dependency-drag-create.directive.js +347 -0
- package/dist/es/dragging/drag-validation-tooltip.component.js +27 -0
- package/dist/es/editing/add-task.component.js +94 -0
- package/dist/es/editing/dependencies-table.component.js +131 -0
- package/dist/es/editing/edit-dialog.component.js +39 -8
- package/dist/es/editing/edit.service.js +92 -8
- package/dist/es/editing/task-fields.component.js +43 -0
- package/dist/es/editing/{util.js → utils.js} +0 -0
- package/dist/es/gantt.component.js +408 -56
- package/dist/es/gantt.module.js +37 -9
- package/dist/es/index.js +9 -0
- package/dist/es/localization/gantt-localization.service.js +26 -0
- package/dist/es/localization/messages.js +45 -1
- package/dist/es/main.js +1 -0
- package/dist/es/models/dependency-type.enum.js +16 -0
- package/dist/es/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
- package/dist/es/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/es/models/events/{remove-event.interface.js → task-delete-event.interface.js} +0 -0
- package/dist/es/models/models.js +1 -0
- package/dist/es/models/{toolbar-position.js → toolbar-settings.js} +0 -0
- package/dist/{es2015/models/events/add-event.interface.js → es/models/view-item.interface.js} +0 -0
- package/dist/{es2015/models/events/edit-event.interface.js → es/navigation/navigation-models.js} +0 -0
- package/dist/es/navigation/navigation.service.js +390 -0
- package/dist/es/navigation/utils.js +77 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/rendering/gantt-milestone-task.component.js +12 -6
- package/dist/es/rendering/gantt-summary-task.component.js +27 -6
- package/dist/es/rendering/gantt-task-base.js +84 -22
- package/dist/es/rendering/gantt-task.component.js +13 -8
- package/dist/es/rendering/gantt-tasks-table-body.component.js +13 -5
- package/dist/es/scrolling/drag-scroll-settings.js +20 -0
- package/dist/es/scrolling/timeline-scroll.directive.js +89 -0
- package/dist/es/scrolling/timeline-scroll.service.js +39 -0
- package/dist/es/scrolling/utils.js +80 -0
- package/dist/es/timeline/gantt-timeline.component.js +50 -4
- package/dist/es/toolbar/toolbar.component.js +20 -13
- package/dist/es/toolbar/view-selector.component.js +1 -1
- package/dist/es/utils.js +153 -12
- package/dist/es2015/common/touch-enabled.d.ts +9 -0
- package/dist/es2015/common/touch-enabled.js +9 -0
- package/dist/es2015/dependencies/utils.d.ts +15 -0
- package/dist/es2015/dependencies/utils.js +40 -5
- package/dist/es2015/dragging/dependency-drag-create.directive.d.ts +72 -0
- package/dist/es2015/dragging/dependency-drag-create.directive.js +324 -0
- package/dist/es2015/dragging/drag-validation-tooltip.component.d.ts +29 -0
- package/dist/es2015/dragging/drag-validation-tooltip.component.js +76 -0
- package/dist/es2015/editing/add-task.component.d.ts +45 -0
- package/dist/es2015/editing/add-task.component.js +102 -0
- package/dist/es2015/editing/dependencies-table.component.d.ts +39 -0
- package/dist/es2015/editing/dependencies-table.component.js +160 -0
- package/dist/es2015/editing/edit-dialog.component.d.ts +11 -4
- package/dist/es2015/editing/edit-dialog.component.js +66 -36
- package/dist/es2015/editing/edit.service.d.ts +24 -4
- package/dist/es2015/editing/edit.service.js +81 -11
- package/dist/es2015/editing/task-fields.component.d.ts +22 -0
- package/dist/es2015/editing/task-fields.component.js +67 -0
- package/dist/es2015/editing/{util.d.ts → utils.d.ts} +2 -2
- package/dist/es2015/editing/{util.js → utils.js} +0 -0
- package/dist/es2015/gantt.component.d.ts +134 -31
- package/dist/es2015/gantt.component.js +419 -61
- package/dist/es2015/gantt.module.js +37 -9
- package/dist/es2015/index.d.ts +9 -0
- package/dist/es2015/index.js +9 -0
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/{models/events/edit-event.interface.d.ts → localization/gantt-localization.service.d.ts} +6 -10
- package/dist/es2015/localization/gantt-localization.service.js +25 -0
- package/dist/es2015/localization/messages.d.ts +46 -2
- package/dist/es2015/localization/messages.js +45 -1
- package/dist/es2015/main.d.ts +1 -0
- package/dist/es2015/main.js +1 -0
- package/dist/es2015/models/dependency-type.enum.d.ts +1 -1
- package/dist/es2015/models/dependency-type.enum.js +16 -0
- package/dist/es2015/models/events/dependency-add-event.interface.d.ts +26 -0
- package/dist/es2015/models/events/{remove-event.interface.js → dependency-add-event.interface.js} +0 -0
- package/dist/es2015/models/events/task-add-event.interface.d.ts +31 -0
- package/dist/es2015/models/{toolbar-position.js → events/task-add-event.interface.js} +0 -0
- package/dist/es2015/models/events/task-click-event.interface.d.ts +3 -3
- package/dist/es2015/models/events/task-delete-event.interface.d.ts +21 -0
- package/dist/es2015/models/events/task-delete-event.interface.js +4 -0
- package/dist/es2015/models/events/task-edit-event.interface.d.ts +36 -6
- package/dist/es2015/models/models.d.ts +6 -3
- package/dist/es2015/models/models.js +1 -0
- package/dist/es2015/models/toolbar-settings.d.ts +29 -0
- package/dist/es2015/models/toolbar-settings.js +4 -0
- package/dist/es2015/models/view-item.interface.d.ts +35 -0
- package/dist/es2015/models/view-item.interface.js +4 -0
- package/dist/es2015/navigation/navigation-models.d.ts +34 -0
- package/dist/es2015/navigation/navigation-models.js +4 -0
- package/dist/es2015/navigation/navigation.service.d.ts +126 -0
- package/dist/es2015/navigation/navigation.service.js +355 -0
- package/dist/es2015/navigation/utils.d.ts +26 -0
- package/dist/es2015/navigation/utils.js +69 -0
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.d.ts +3 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.js +35 -8
- package/dist/es2015/rendering/gantt-summary-task.component.d.ts +5 -1
- package/dist/es2015/rendering/gantt-summary-task.component.js +47 -8
- package/dist/es2015/rendering/gantt-task-base.d.ts +20 -6
- package/dist/es2015/rendering/gantt-task-base.js +75 -22
- package/dist/es2015/rendering/gantt-task.component.d.ts +4 -2
- package/dist/es2015/rendering/gantt-task.component.js +47 -13
- package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +6 -3
- package/dist/es2015/rendering/gantt-tasks-table-body.component.js +27 -9
- package/dist/es2015/scrolling/drag-scroll-settings.d.ts +47 -0
- package/dist/es2015/scrolling/drag-scroll-settings.js +20 -0
- package/dist/es2015/scrolling/scroll-sync.service.d.ts +1 -1
- package/dist/es2015/scrolling/timeline-scroll.directive.d.ts +24 -0
- package/dist/es2015/scrolling/timeline-scroll.directive.js +78 -0
- package/dist/es2015/scrolling/timeline-scroll.service.d.ts +20 -0
- package/dist/es2015/scrolling/timeline-scroll.service.js +44 -0
- package/dist/es2015/scrolling/utils.d.ts +29 -0
- package/dist/es2015/scrolling/utils.js +80 -0
- package/dist/es2015/timeline/gantt-timeline.component.d.ts +29 -4
- package/dist/es2015/timeline/gantt-timeline.component.js +67 -5
- package/dist/es2015/toolbar/toolbar-template.directive.d.ts +1 -1
- package/dist/es2015/toolbar/toolbar.component.d.ts +6 -5
- package/dist/es2015/toolbar/toolbar.component.js +22 -13
- package/dist/es2015/toolbar/view-selector.component.js +3 -1
- package/dist/es2015/utils.d.ts +77 -8
- package/dist/es2015/utils.js +153 -12
- package/dist/fesm2015/index.js +5258 -3012
- package/dist/fesm5/index.js +2862 -733
- package/dist/npm/common/touch-enabled.js +11 -0
- package/dist/npm/dependencies/utils.js +40 -5
- package/dist/npm/dragging/dependency-drag-create.directive.js +349 -0
- package/dist/npm/dragging/drag-validation-tooltip.component.js +29 -0
- package/dist/npm/editing/add-task.component.js +96 -0
- package/dist/npm/editing/dependencies-table.component.js +133 -0
- package/dist/npm/editing/edit-dialog.component.js +38 -7
- package/dist/npm/editing/edit.service.js +91 -7
- package/dist/npm/editing/task-fields.component.js +45 -0
- package/dist/npm/editing/{util.js → utils.js} +0 -0
- package/dist/npm/gantt.component.js +409 -57
- package/dist/npm/gantt.module.js +35 -7
- package/dist/npm/index.js +18 -0
- package/dist/npm/localization/gantt-localization.service.js +28 -0
- package/dist/npm/localization/messages.js +45 -1
- package/dist/npm/main.js +2 -0
- package/dist/npm/models/dependency-type.enum.js +16 -0
- package/dist/npm/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
- package/dist/npm/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/npm/models/events/{remove-event.interface.js → task-delete-event.interface.js} +0 -0
- package/dist/npm/models/models.js +2 -0
- package/dist/npm/models/{toolbar-position.js → toolbar-settings.js} +0 -0
- package/dist/npm/models/view-item.interface.js +6 -0
- package/dist/npm/navigation/navigation-models.js +6 -0
- package/dist/npm/navigation/navigation.service.js +392 -0
- package/dist/npm/navigation/utils.js +79 -0
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/rendering/gantt-milestone-task.component.js +11 -5
- package/dist/npm/rendering/gantt-summary-task.component.js +26 -5
- package/dist/npm/rendering/gantt-task-base.js +84 -22
- package/dist/npm/rendering/gantt-task.component.js +12 -7
- package/dist/npm/rendering/gantt-tasks-table-body.component.js +13 -5
- package/dist/npm/scrolling/drag-scroll-settings.js +22 -0
- package/dist/npm/scrolling/timeline-scroll.directive.js +91 -0
- package/dist/npm/scrolling/timeline-scroll.service.js +41 -0
- package/dist/npm/scrolling/utils.js +83 -0
- package/dist/npm/timeline/gantt-timeline.component.js +49 -3
- package/dist/npm/toolbar/toolbar.component.js +18 -11
- package/dist/npm/toolbar/view-selector.component.js +1 -1
- package/dist/npm/utils.js +153 -12
- package/dist/systemjs/kendo-angular-gantt.js +1 -1
- package/package.json +7 -4
- package/dist/es2015/models/events/add-event.interface.d.ts +0 -16
- package/dist/es2015/models/events/remove-event.interface.d.ts +0 -16
- package/dist/es2015/models/toolbar-position.d.ts +0 -9
|
@@ -10,8 +10,11 @@ import { Subscription } from 'rxjs';
|
|
|
10
10
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
11
11
|
import { packageMetadata } from './package-metadata';
|
|
12
12
|
import { anyChanged, hasObservers } from '@progress/kendo-angular-common';
|
|
13
|
+
import { GanttTimelineComponent } from './timeline/gantt-timeline.component';
|
|
13
14
|
import { GanttColumnBase } from './columns/columns';
|
|
14
15
|
import { fetchChildren, hasChildren, isSelected, rowClassCallback, taskClassCallback } from './common/default-callbacks';
|
|
16
|
+
import { DependencyType } from './models/models';
|
|
17
|
+
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
15
18
|
import { TimelineViewService } from './timeline/timeline-view.service';
|
|
16
19
|
import { TimelineDayViewService } from './timeline/timeline-day-view.service';
|
|
17
20
|
import { TimelineWeekViewService } from './timeline/timeline-week-view.service';
|
|
@@ -21,17 +24,25 @@ import { DependencyDomService } from './dependencies/dependency-dom.service';
|
|
|
21
24
|
import { MappingService } from './common/mapping.service';
|
|
22
25
|
import { OptionChangesService } from './common/option-changes.service';
|
|
23
26
|
import { EditService } from './editing/edit.service';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
27
|
+
import { TimelineScrollService } from './scrolling/timeline-scroll.service';
|
|
28
|
+
import { GanttLocalizationService } from './localization/gantt-localization.service';
|
|
29
|
+
import { NavigationService } from './navigation/navigation.service';
|
|
30
|
+
import { areParentChild, getClosestTaskIndex, isClearButton, isColumnGroup, isPresent, isTask, normalizeGanttData, scrollbarWidth } from './utils';
|
|
26
31
|
import { DEFAULT_TIMELINE_PANE_SETTINGS, DEFAULT_TREELIST_PANE_SETTINGS } from './models/splitter-pane-options.interface';
|
|
27
32
|
import { GanttTaskTemplateDirective } from './template-directives/task-template.directive';
|
|
28
33
|
import { GanttSummaryTaskTemplateDirective } from './template-directives/summary-task-template.directive';
|
|
29
34
|
import { GanttTaskContentTemplateDirective } from './template-directives/task-content-template.directive';
|
|
30
35
|
import { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive';
|
|
31
36
|
import { ViewBase } from './timeline/view-base';
|
|
32
|
-
import { getEditItem } from './editing/
|
|
37
|
+
import { getEditItem } from './editing/utils';
|
|
33
38
|
var TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
|
|
34
39
|
var DEFAULT_VIEW = 'week';
|
|
40
|
+
var DEFAULT_DRAG_SCROLL_SETTINGS = {
|
|
41
|
+
enabled: true,
|
|
42
|
+
step: 3,
|
|
43
|
+
interval: 1,
|
|
44
|
+
threshold: 10
|
|
45
|
+
};
|
|
35
46
|
/**
|
|
36
47
|
* Represents the Kendo UI Gantt component for Angular.
|
|
37
48
|
*
|
|
@@ -104,7 +115,7 @@ var DEFAULT_VIEW = 'week';
|
|
|
104
115
|
* ```
|
|
105
116
|
*/
|
|
106
117
|
var GanttComponent = /** @class */ (function () {
|
|
107
|
-
function GanttComponent(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone) {
|
|
118
|
+
function GanttComponent(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone, navigationService) {
|
|
108
119
|
var _this = this;
|
|
109
120
|
this.timelineViewService = timelineViewService;
|
|
110
121
|
this.scrollSyncService = scrollSyncService;
|
|
@@ -116,13 +127,33 @@ var GanttComponent = /** @class */ (function () {
|
|
|
116
127
|
this.localizationService = localizationService;
|
|
117
128
|
this.hostElement = hostElement;
|
|
118
129
|
this.zone = zone;
|
|
130
|
+
this.navigationService = navigationService;
|
|
131
|
+
/**
|
|
132
|
+
* @hidden
|
|
133
|
+
*/
|
|
134
|
+
this.roleDescription = 'Gantt Chart';
|
|
135
|
+
/**
|
|
136
|
+
* @hidden
|
|
137
|
+
*/
|
|
138
|
+
this.role = 'application';
|
|
119
139
|
this.hostClasses = true;
|
|
120
140
|
/**
|
|
121
|
-
*
|
|
141
|
+
* Specifies a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection)).
|
|
122
142
|
*
|
|
123
143
|
* > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
|
|
124
144
|
*/
|
|
125
145
|
this.isSelected = isSelected;
|
|
146
|
+
/**
|
|
147
|
+
* Specifies a callback that determines if a new dependency is valid.
|
|
148
|
+
* Used when evaluating if an attempt to create a new dependency will result in a valid link between the two tasks
|
|
149
|
+
* [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-validation).
|
|
150
|
+
*
|
|
151
|
+
* By defalut, dependencies are deemed invalid when:
|
|
152
|
+
* - The two tasks are in a parent-child relationship.
|
|
153
|
+
* - The two tasks are already dependent on one another. Only one dependency is allowed per pair.
|
|
154
|
+
* - The start or end times of the two tasks are incompatible with the attempted dependency type.
|
|
155
|
+
*/
|
|
156
|
+
this.validateNewDependency = this.defaultValidateNewDependencyCallback.bind(this);
|
|
126
157
|
/**
|
|
127
158
|
* Fires when the Gantt selection is changed through user interaction.
|
|
128
159
|
*
|
|
@@ -138,25 +169,6 @@ var GanttComponent = /** @class */ (function () {
|
|
|
138
169
|
* > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
|
|
139
170
|
*/
|
|
140
171
|
this.selectable = false;
|
|
141
|
-
/**
|
|
142
|
-
* The position of the toolbar.
|
|
143
|
-
*
|
|
144
|
-
* The possible values are:
|
|
145
|
-
* - `top`—Positions the toolbar above the Gantt panes.
|
|
146
|
-
* - `bottom`—Positions the toolbar below the Gantt panes.
|
|
147
|
-
* - `both`—Displays two toolbar instances. Positions the first one above,
|
|
148
|
-
* and the second one - below the Gantt panes.
|
|
149
|
-
* - `none`—No toolbar is rendered.
|
|
150
|
-
*/
|
|
151
|
-
this.toolbarPosition = 'top';
|
|
152
|
-
/**
|
|
153
|
-
* Gets or sets the callback function that retrieves the child items for a particular item.
|
|
154
|
-
*/
|
|
155
|
-
this.fetchChildren = fetchChildren;
|
|
156
|
-
/**
|
|
157
|
-
* Gets or sets the callback function that indicates if a particular item has child items.
|
|
158
|
-
*/
|
|
159
|
-
this.hasChildren = hasChildren;
|
|
160
172
|
/**
|
|
161
173
|
* Defines the dependencies that will be drawn between the rendered tasks.
|
|
162
174
|
*
|
|
@@ -195,6 +207,12 @@ var GanttComponent = /** @class */ (function () {
|
|
|
195
207
|
* The end of the work week (index based).
|
|
196
208
|
*/
|
|
197
209
|
this.workWeekEnd = 5;
|
|
210
|
+
/**
|
|
211
|
+
* If set to `true`, the user can use dedicated shortcuts to interact with the Gantt.
|
|
212
|
+
* By default, navigation is disabled for the TreeList and Timeline parts of the component,
|
|
213
|
+
* ([see example]({% slug keyboard_navigation_gantt %})).
|
|
214
|
+
*/
|
|
215
|
+
this.navigable = false;
|
|
198
216
|
/**
|
|
199
217
|
* Indicates whether the Gantt columns will be resized during initialization so that they fit their headers and row content.
|
|
200
218
|
* Columns with autoSize set to false are excluded.
|
|
@@ -238,7 +256,8 @@ var GanttComponent = /** @class */ (function () {
|
|
|
238
256
|
*/
|
|
239
257
|
this.cellClose = new EventEmitter();
|
|
240
258
|
/**
|
|
241
|
-
* Fires when the end user clicks the `Delete` button in the task editing dialog
|
|
259
|
+
* Fires when the end user clicks the `Delete` button in the task editing dialog,
|
|
260
|
+
* the task delete icon, or presses the `Delete` key on the keyboard when a task in the timeline is focused.
|
|
242
261
|
* Use the event handler to open a confirmation dialog when necessary.
|
|
243
262
|
*/
|
|
244
263
|
this.taskDelete = new EventEmitter();
|
|
@@ -258,6 +277,15 @@ var GanttComponent = /** @class */ (function () {
|
|
|
258
277
|
* Fires when the user saves an edited task.
|
|
259
278
|
*/
|
|
260
279
|
this.save = new EventEmitter();
|
|
280
|
+
/**
|
|
281
|
+
* Fires when the user adds a task.
|
|
282
|
+
*/
|
|
283
|
+
this.taskAdd = new EventEmitter();
|
|
284
|
+
/**
|
|
285
|
+
* Fires when the user adds a dependency via dragging
|
|
286
|
+
* [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-basic-concepts).
|
|
287
|
+
*/
|
|
288
|
+
this.dependencyAdd = new EventEmitter();
|
|
261
289
|
/**
|
|
262
290
|
* Fires when the sorting of the Gantt is changed.
|
|
263
291
|
* You have to handle the event yourself and sort the data.
|
|
@@ -314,6 +342,15 @@ var GanttComponent = /** @class */ (function () {
|
|
|
314
342
|
* Fires when a task is clicked.
|
|
315
343
|
*/
|
|
316
344
|
this.taskClick = new EventEmitter();
|
|
345
|
+
/**
|
|
346
|
+
* @hidden
|
|
347
|
+
*
|
|
348
|
+
* Specifies whether the dependency drag clues will be rendered.
|
|
349
|
+
* Set internally by the dependency-drag-create directive.
|
|
350
|
+
*
|
|
351
|
+
* @default false
|
|
352
|
+
*/
|
|
353
|
+
this.renderDependencyDragClues = false;
|
|
317
354
|
/**
|
|
318
355
|
* @hidden
|
|
319
356
|
*
|
|
@@ -330,11 +367,19 @@ var GanttComponent = /** @class */ (function () {
|
|
|
330
367
|
this.showConfirmationDialog = false;
|
|
331
368
|
this._columns = new QueryList();
|
|
332
369
|
this._data = [];
|
|
370
|
+
this._dragScrollSettings = tslib_1.__assign({}, DEFAULT_DRAG_SCROLL_SETTINGS);
|
|
333
371
|
this._timelinePaneOptions = tslib_1.__assign({}, DEFAULT_TIMELINE_PANE_SETTINGS);
|
|
334
372
|
this._treeListPaneOptions = tslib_1.__assign({}, DEFAULT_TREELIST_PANE_SETTINGS);
|
|
335
373
|
this._rowClass = rowClassCallback;
|
|
336
374
|
this._taskClass = taskClassCallback;
|
|
337
375
|
this._activeView = DEFAULT_VIEW;
|
|
376
|
+
this._toolbarSettings = {
|
|
377
|
+
position: 'top',
|
|
378
|
+
addTaskTool: 'none',
|
|
379
|
+
viewSelectorTool: 'top'
|
|
380
|
+
};
|
|
381
|
+
this._fetchChildren = fetchChildren;
|
|
382
|
+
this._hasChildren = hasChildren;
|
|
338
383
|
this.rtl = false;
|
|
339
384
|
this.optionChangesSubscriptions = new Subscription();
|
|
340
385
|
this.editServiceSubscription = new Subscription();
|
|
@@ -345,16 +390,35 @@ var GanttComponent = /** @class */ (function () {
|
|
|
345
390
|
this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(function () {
|
|
346
391
|
_this.treeList.columns.notifyOnChanges();
|
|
347
392
|
}));
|
|
393
|
+
this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
|
|
348
394
|
this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(function (show) { return _this.showEditingDialog = show; }));
|
|
349
|
-
this.editServiceSubscription.add(this.editService.
|
|
395
|
+
this.editServiceSubscription.add(this.editService.taskDelete.subscribe(function (task) {
|
|
396
|
+
if (hasObservers(_this.taskDelete)) {
|
|
397
|
+
_this.zone.run(function () {
|
|
398
|
+
return _this.notifyTaskDelete(task);
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
}));
|
|
350
402
|
this.editServiceSubscription.add(this.editService.editEvent.subscribe(function (args) {
|
|
351
403
|
_this[args.editResultType].emit({
|
|
352
|
-
|
|
404
|
+
taskFormGroup: args.taskFormGroup,
|
|
353
405
|
item: getEditItem(args.dataItem, _this.treeList.view.data, _this.mapper),
|
|
406
|
+
dependencies: args.dependencies,
|
|
354
407
|
sender: _this
|
|
355
408
|
});
|
|
356
409
|
_this.showConfirmationDialog = _this.showEditingDialog = false;
|
|
357
|
-
_this.editService.dataItem = _this.editService.
|
|
410
|
+
_this.editService.dataItem = _this.editService.taskFormGroup = null;
|
|
411
|
+
_this.updateView();
|
|
412
|
+
if (_this.navigable) {
|
|
413
|
+
_this.focus();
|
|
414
|
+
}
|
|
415
|
+
}));
|
|
416
|
+
this.editServiceSubscription.add(this.editService.addEvent.subscribe(function (args) {
|
|
417
|
+
var selectedItem = _this.getFirstSelectedItem();
|
|
418
|
+
_this.taskAdd.emit({
|
|
419
|
+
actionType: args.actionType,
|
|
420
|
+
selectedItem: selectedItem ? getEditItem(selectedItem, _this.treeList.view.data, _this.mapper) : null
|
|
421
|
+
});
|
|
358
422
|
_this.updateView();
|
|
359
423
|
}));
|
|
360
424
|
this.localizationSubscription = this.localizationService.changes.subscribe(function (_a) {
|
|
@@ -377,6 +441,20 @@ var GanttComponent = /** @class */ (function () {
|
|
|
377
441
|
enumerable: true,
|
|
378
442
|
configurable: true
|
|
379
443
|
});
|
|
444
|
+
Object.defineProperty(GanttComponent.prototype, "hostRoleDescriptionAttr", {
|
|
445
|
+
get: function () {
|
|
446
|
+
return this.roleDescription;
|
|
447
|
+
},
|
|
448
|
+
enumerable: true,
|
|
449
|
+
configurable: true
|
|
450
|
+
});
|
|
451
|
+
Object.defineProperty(GanttComponent.prototype, "hostRoleAttr", {
|
|
452
|
+
get: function () {
|
|
453
|
+
return this.role;
|
|
454
|
+
},
|
|
455
|
+
enumerable: true,
|
|
456
|
+
configurable: true
|
|
457
|
+
});
|
|
380
458
|
Object.defineProperty(GanttComponent.prototype, "dir", {
|
|
381
459
|
get: function () {
|
|
382
460
|
return this.direction;
|
|
@@ -461,6 +539,61 @@ var GanttComponent = /** @class */ (function () {
|
|
|
461
539
|
enumerable: true,
|
|
462
540
|
configurable: true
|
|
463
541
|
});
|
|
542
|
+
Object.defineProperty(GanttComponent.prototype, "toolbarSettings", {
|
|
543
|
+
get: function () {
|
|
544
|
+
return this._toolbarSettings;
|
|
545
|
+
},
|
|
546
|
+
/**
|
|
547
|
+
* The toolbar configuration. Defines the position and content of the toolbar(s).
|
|
548
|
+
* The available properties are `position`, `addTaskTool`, and `viewSelectorTool`.
|
|
549
|
+
* All are optional and default to `top`.
|
|
550
|
+
*
|
|
551
|
+
* The possible values for each option are:
|
|
552
|
+
* - `top`—Positions the toolbar above the Gantt panes. Renders the respective tool in the top toolbar.
|
|
553
|
+
* - `bottom`—Positions the toolbar below the Gantt panes. Renders the respective tool in the bottom toolbar.
|
|
554
|
+
* - `both`—Displays two toolbar instances. Positions the first one above,
|
|
555
|
+
* and the second one - below the Gantt panes. Renders the respective tool in the both toolbars.
|
|
556
|
+
* - `none`—No toolbar is rendered when used for setting `position`.
|
|
557
|
+
* No add task or view selector tool is rendered when used for setting `addTaskTool` or `viewSelectorTool`.
|
|
558
|
+
*/
|
|
559
|
+
set: function (value) {
|
|
560
|
+
this._toolbarSettings = {
|
|
561
|
+
position: value.position || 'top',
|
|
562
|
+
addTaskTool: value.addTaskTool || 'none',
|
|
563
|
+
viewSelectorTool: value.viewSelectorTool || 'top'
|
|
564
|
+
};
|
|
565
|
+
},
|
|
566
|
+
enumerable: true,
|
|
567
|
+
configurable: true
|
|
568
|
+
});
|
|
569
|
+
Object.defineProperty(GanttComponent.prototype, "fetchChildren", {
|
|
570
|
+
get: function () {
|
|
571
|
+
return this._fetchChildren;
|
|
572
|
+
},
|
|
573
|
+
/**
|
|
574
|
+
* Gets or sets the callback function that retrieves the child items for a particular item.
|
|
575
|
+
*/
|
|
576
|
+
set: function (fn) {
|
|
577
|
+
this._fetchChildren = fn;
|
|
578
|
+
this.editService.fetchChildren = fn;
|
|
579
|
+
},
|
|
580
|
+
enumerable: true,
|
|
581
|
+
configurable: true
|
|
582
|
+
});
|
|
583
|
+
Object.defineProperty(GanttComponent.prototype, "hasChildren", {
|
|
584
|
+
get: function () {
|
|
585
|
+
return this._hasChildren;
|
|
586
|
+
},
|
|
587
|
+
/**
|
|
588
|
+
* Gets or sets the callback function that indicates if a particular item has child items.
|
|
589
|
+
*/
|
|
590
|
+
set: function (fn) {
|
|
591
|
+
this._hasChildren = fn;
|
|
592
|
+
this.editService.hasChildren = fn;
|
|
593
|
+
},
|
|
594
|
+
enumerable: true,
|
|
595
|
+
configurable: true
|
|
596
|
+
});
|
|
464
597
|
Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
|
|
465
598
|
get: function () {
|
|
466
599
|
return tslib_1.__assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
|
|
@@ -536,6 +669,21 @@ var GanttComponent = /** @class */ (function () {
|
|
|
536
669
|
enumerable: true,
|
|
537
670
|
configurable: true
|
|
538
671
|
});
|
|
672
|
+
Object.defineProperty(GanttComponent.prototype, "dragScrollSettings", {
|
|
673
|
+
get: function () {
|
|
674
|
+
return this._dragScrollSettings;
|
|
675
|
+
},
|
|
676
|
+
/**
|
|
677
|
+
* Specifies the settings for auto-scrolling during dragging
|
|
678
|
+
* when the pointer moves outside of the container bounderies
|
|
679
|
+
* [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-auto-scrolling).
|
|
680
|
+
*/
|
|
681
|
+
set: function (settings) {
|
|
682
|
+
this._dragScrollSettings = tslib_1.__assign({}, DEFAULT_DRAG_SCROLL_SETTINGS, settings);
|
|
683
|
+
},
|
|
684
|
+
enumerable: true,
|
|
685
|
+
configurable: true
|
|
686
|
+
});
|
|
539
687
|
Object.defineProperty(GanttComponent.prototype, "renderedTreeListItems", {
|
|
540
688
|
/**
|
|
541
689
|
* @hidden
|
|
@@ -549,6 +697,19 @@ var GanttComponent = /** @class */ (function () {
|
|
|
549
697
|
enumerable: true,
|
|
550
698
|
configurable: true
|
|
551
699
|
});
|
|
700
|
+
Object.defineProperty(GanttComponent.prototype, "viewItems", {
|
|
701
|
+
/**
|
|
702
|
+
* @hidden
|
|
703
|
+
*/
|
|
704
|
+
get: function () {
|
|
705
|
+
if (!isPresent(this.treeList)) {
|
|
706
|
+
return [];
|
|
707
|
+
}
|
|
708
|
+
return this.treeList.view.data;
|
|
709
|
+
},
|
|
710
|
+
enumerable: true,
|
|
711
|
+
configurable: true
|
|
712
|
+
});
|
|
552
713
|
Object.defineProperty(GanttComponent.prototype, "filterMenu", {
|
|
553
714
|
/**
|
|
554
715
|
* @hidden
|
|
@@ -612,12 +773,12 @@ var GanttComponent = /** @class */ (function () {
|
|
|
612
773
|
enumerable: true,
|
|
613
774
|
configurable: true
|
|
614
775
|
});
|
|
615
|
-
Object.defineProperty(GanttComponent.prototype, "
|
|
776
|
+
Object.defineProperty(GanttComponent.prototype, "isInEditMode", {
|
|
616
777
|
/**
|
|
617
778
|
* @hidden
|
|
618
779
|
*/
|
|
619
780
|
get: function () {
|
|
620
|
-
return this.
|
|
781
|
+
return this.showEditingDialog || this.showConfirmationDialog || this.treeList.isEditing();
|
|
621
782
|
},
|
|
622
783
|
enumerable: true,
|
|
623
784
|
configurable: true
|
|
@@ -629,6 +790,14 @@ var GanttComponent = /** @class */ (function () {
|
|
|
629
790
|
};
|
|
630
791
|
GanttComponent.prototype.ngAfterViewInit = function () {
|
|
631
792
|
this.updateTreeListMargin();
|
|
793
|
+
if (this.navigable) {
|
|
794
|
+
this.navigationService.initialize({
|
|
795
|
+
gantt: this,
|
|
796
|
+
host: this.hostElement.nativeElement,
|
|
797
|
+
treeListElement: this.treeList.wrapper.nativeElement,
|
|
798
|
+
timelineElement: this.timeline.timelineContent.nativeElement
|
|
799
|
+
});
|
|
800
|
+
}
|
|
632
801
|
var leftContainer = this.treeList.wrapper.nativeElement.querySelector('kendo-treelist-list > div');
|
|
633
802
|
this.scrollSyncService.registerElement(leftContainer, 'treelist');
|
|
634
803
|
};
|
|
@@ -646,6 +815,34 @@ var GanttComponent = /** @class */ (function () {
|
|
|
646
815
|
this.localizationSubscription.unsubscribe();
|
|
647
816
|
}
|
|
648
817
|
};
|
|
818
|
+
/**
|
|
819
|
+
* Focuses the last active cell or task in the Gantt.
|
|
820
|
+
* If no item has previously been focused, the first cell of the TreeList part will receive focus,
|
|
821
|
+
* ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
|
|
822
|
+
*/
|
|
823
|
+
GanttComponent.prototype.focus = function () {
|
|
824
|
+
if (this.navigable) {
|
|
825
|
+
this.navigationService.focusLastActiveItem();
|
|
826
|
+
}
|
|
827
|
+
};
|
|
828
|
+
/**
|
|
829
|
+
* Focuses the targeted cell in the TreeList part of the component,
|
|
830
|
+
* ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
|
|
831
|
+
*/
|
|
832
|
+
GanttComponent.prototype.focusCell = function (rowIndex, colIndex) {
|
|
833
|
+
if (this.navigable) {
|
|
834
|
+
this.navigationService.focusCell(rowIndex, colIndex);
|
|
835
|
+
}
|
|
836
|
+
};
|
|
837
|
+
/**
|
|
838
|
+
* Focuses the targeted task in the Timeline part of the component,
|
|
839
|
+
* ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
|
|
840
|
+
*/
|
|
841
|
+
GanttComponent.prototype.focusTask = function (taskIndex) {
|
|
842
|
+
if (this.navigable) {
|
|
843
|
+
this.navigationService.focusTask(taskIndex);
|
|
844
|
+
}
|
|
845
|
+
};
|
|
649
846
|
/**
|
|
650
847
|
* Applies the minimum possible width for the specified column,
|
|
651
848
|
* so that the whole text fits without wrapping. This method expects the Gantt
|
|
@@ -711,8 +908,14 @@ var GanttComponent = /** @class */ (function () {
|
|
|
711
908
|
* Opens the task editing dialog.
|
|
712
909
|
*/
|
|
713
910
|
GanttComponent.prototype.editTask = function (dataItem, formGroup) {
|
|
911
|
+
var _this = this;
|
|
714
912
|
if (!this.showEditingDialog) {
|
|
715
|
-
this.
|
|
913
|
+
var taskId_1 = this.mapper.extractFromTask(dataItem, 'id');
|
|
914
|
+
var dependencies = this.dependencies.filter(function (item) {
|
|
915
|
+
return _this.mapper.extractFromDependency(item, 'toId') === taskId_1
|
|
916
|
+
|| _this.mapper.extractFromDependency(item, 'fromId') === taskId_1;
|
|
917
|
+
});
|
|
918
|
+
this.editService.createEditDialog(dataItem, formGroup, dependencies);
|
|
716
919
|
}
|
|
717
920
|
};
|
|
718
921
|
/**
|
|
@@ -729,6 +932,15 @@ var GanttComponent = /** @class */ (function () {
|
|
|
729
932
|
GanttComponent.prototype.openConfirmationDialog = function () {
|
|
730
933
|
this.showConfirmationDialog = true;
|
|
731
934
|
};
|
|
935
|
+
/**
|
|
936
|
+
* @hidden
|
|
937
|
+
*/
|
|
938
|
+
GanttComponent.prototype.handleConfirmationDialogClose = function () {
|
|
939
|
+
this.showConfirmationDialog = false;
|
|
940
|
+
if (this.navigable) {
|
|
941
|
+
this.focus();
|
|
942
|
+
}
|
|
943
|
+
};
|
|
732
944
|
/**
|
|
733
945
|
* Opens a cell for editing.
|
|
734
946
|
*/
|
|
@@ -785,7 +997,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
785
997
|
* @hidden
|
|
786
998
|
*/
|
|
787
999
|
GanttComponent.prototype.showToolbar = function (position) {
|
|
788
|
-
return this.
|
|
1000
|
+
return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
|
|
789
1001
|
};
|
|
790
1002
|
/**
|
|
791
1003
|
* @hidden
|
|
@@ -814,7 +1026,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
814
1026
|
if (hasObservers(this.taskClick)) {
|
|
815
1027
|
var taskIndex_1 = getClosestTaskIndex(target, gantt);
|
|
816
1028
|
var task_1 = this.renderedTreeListItems[taskIndex_1];
|
|
817
|
-
this.zone.run(function () { return _this.
|
|
1029
|
+
this.zone.run(function () { return _this.notifyTaskClick(event, task_1, taskIndex_1); });
|
|
818
1030
|
}
|
|
819
1031
|
};
|
|
820
1032
|
/**
|
|
@@ -833,8 +1045,8 @@ var GanttComponent = /** @class */ (function () {
|
|
|
833
1045
|
if ((hasObservers(this.selectionChange) && !this.isSameSelection(selectionAction, task)) ||
|
|
834
1046
|
hasObservers(this.taskClick)) {
|
|
835
1047
|
this.zone.run(function () {
|
|
836
|
-
_this.
|
|
837
|
-
_this.
|
|
1048
|
+
_this.notifySelectionChange(task, selectionAction);
|
|
1049
|
+
_this.notifyTaskClick(event, task, taskIndex);
|
|
838
1050
|
});
|
|
839
1051
|
}
|
|
840
1052
|
};
|
|
@@ -872,7 +1084,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
872
1084
|
}
|
|
873
1085
|
var task = event.items.map(function (item) { return item.dataItem; })[0]; // single selection only currently available
|
|
874
1086
|
var action = event.action;
|
|
875
|
-
this.
|
|
1087
|
+
this.notifySelectionChange(task, action);
|
|
876
1088
|
};
|
|
877
1089
|
/**
|
|
878
1090
|
* @hidden
|
|
@@ -924,7 +1136,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
924
1136
|
dataItem: task_2,
|
|
925
1137
|
originalEvent: event,
|
|
926
1138
|
sender: _this,
|
|
927
|
-
|
|
1139
|
+
index: taskIndex_2,
|
|
928
1140
|
type: 'dblclick'
|
|
929
1141
|
}); });
|
|
930
1142
|
}
|
|
@@ -935,16 +1147,35 @@ var GanttComponent = /** @class */ (function () {
|
|
|
935
1147
|
GanttComponent.prototype.getText = function (token) {
|
|
936
1148
|
return this.localizationService.get(token);
|
|
937
1149
|
};
|
|
938
|
-
|
|
1150
|
+
/**
|
|
1151
|
+
* @hidden
|
|
1152
|
+
*/
|
|
1153
|
+
GanttComponent.prototype.changeActiveView = function (view) {
|
|
1154
|
+
if (view !== this.activeView) {
|
|
1155
|
+
this.activeView = view;
|
|
1156
|
+
this.loadTimelineData();
|
|
1157
|
+
this.scrollSyncService.resetTimelineScrollLeft();
|
|
1158
|
+
this.activeViewChange.emit(view);
|
|
1159
|
+
}
|
|
1160
|
+
};
|
|
1161
|
+
/**
|
|
1162
|
+
* @hidden
|
|
1163
|
+
*/
|
|
1164
|
+
GanttComponent.prototype.notifyTaskClick = function (event, dataItem, itemIndex) {
|
|
1165
|
+
// simulates the TreeList `cellClick` event triggered by enter press (type: 'click')
|
|
1166
|
+
var type = event instanceof KeyboardEvent ? 'click' : event.type;
|
|
939
1167
|
this.taskClick.emit({
|
|
940
1168
|
originalEvent: event,
|
|
941
1169
|
dataItem: dataItem,
|
|
942
|
-
|
|
943
|
-
type:
|
|
1170
|
+
index: itemIndex,
|
|
1171
|
+
type: type,
|
|
944
1172
|
sender: this
|
|
945
1173
|
});
|
|
946
1174
|
};
|
|
947
|
-
|
|
1175
|
+
/**
|
|
1176
|
+
* @hidden
|
|
1177
|
+
*/
|
|
1178
|
+
GanttComponent.prototype.notifySelectionChange = function (dataItem, action) {
|
|
948
1179
|
if (this.isSameSelection(action, dataItem)) {
|
|
949
1180
|
return;
|
|
950
1181
|
}
|
|
@@ -955,6 +1186,30 @@ var GanttComponent = /** @class */ (function () {
|
|
|
955
1186
|
});
|
|
956
1187
|
this.treeList.updateView();
|
|
957
1188
|
};
|
|
1189
|
+
/**
|
|
1190
|
+
* @hidden
|
|
1191
|
+
*/
|
|
1192
|
+
GanttComponent.prototype.notifyTaskDelete = function (task) {
|
|
1193
|
+
this.editService.dataItem = task;
|
|
1194
|
+
this.taskDelete.emit({
|
|
1195
|
+
item: getEditItem(task, this.treeList.view.data, this.mapper),
|
|
1196
|
+
sender: this
|
|
1197
|
+
});
|
|
1198
|
+
};
|
|
1199
|
+
/**
|
|
1200
|
+
* @hidden
|
|
1201
|
+
*/
|
|
1202
|
+
GanttComponent.prototype.isSameSelection = function (action, dataItem) {
|
|
1203
|
+
return action === 'select' && this.isSelected(dataItem);
|
|
1204
|
+
};
|
|
1205
|
+
/**
|
|
1206
|
+
* @hidden
|
|
1207
|
+
*/
|
|
1208
|
+
GanttComponent.prototype.getSelectionAction = function (_a, dataItem) {
|
|
1209
|
+
var ctrlKey = _a.ctrlKey, metaKey = _a.metaKey;
|
|
1210
|
+
var shouldToggleSelection = ctrlKey || metaKey;
|
|
1211
|
+
return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
|
|
1212
|
+
};
|
|
958
1213
|
GanttComponent.prototype.updateTreeListGroupClass = function (columns) {
|
|
959
1214
|
if (columns === void 0) { columns = this.columns; }
|
|
960
1215
|
if (!isPresent(this.treeList)) {
|
|
@@ -985,19 +1240,70 @@ var GanttComponent = /** @class */ (function () {
|
|
|
985
1240
|
}
|
|
986
1241
|
return this.views.find(function (view) { return view.type === _this.activeView; });
|
|
987
1242
|
};
|
|
988
|
-
GanttComponent.prototype.
|
|
989
|
-
|
|
1243
|
+
GanttComponent.prototype.getFirstSelectedItem = function () {
|
|
1244
|
+
var isSelectedCallback = this.isSelected || isSelected;
|
|
1245
|
+
var loadedItems = this.renderedTreeListItems || [];
|
|
1246
|
+
return loadedItems.find(isSelectedCallback);
|
|
990
1247
|
};
|
|
991
|
-
GanttComponent.prototype.
|
|
992
|
-
var
|
|
993
|
-
var
|
|
994
|
-
|
|
1248
|
+
GanttComponent.prototype.defaultValidateNewDependencyCallback = function (dependency) {
|
|
1249
|
+
var _this = this;
|
|
1250
|
+
var fromTaskId = this.mapper.extractFromDependency(dependency, 'fromId');
|
|
1251
|
+
var toTaskId = this.mapper.extractFromDependency(dependency, 'toId');
|
|
1252
|
+
var fromTask = this.treeList.view.data.find(function (task) {
|
|
1253
|
+
return _this.mapper.extractFromTask(task.data, 'id') === fromTaskId;
|
|
1254
|
+
});
|
|
1255
|
+
var toTask = this.treeList.view.data.find(function (task) {
|
|
1256
|
+
return _this.mapper.extractFromTask(task.data, 'id') === toTaskId;
|
|
1257
|
+
});
|
|
1258
|
+
// mark as invalid if the attempted dependency is lacking valid from- and to-tasks
|
|
1259
|
+
// or when the from- and to-tasks are actually the same task
|
|
1260
|
+
if (!isPresent(fromTask) || !isPresent(fromTask.data) ||
|
|
1261
|
+
!isPresent(toTask) || !isPresent(toTask.data) ||
|
|
1262
|
+
fromTask.data === toTask.data) {
|
|
1263
|
+
return false;
|
|
1264
|
+
}
|
|
1265
|
+
var tasksDependentOnOneAnother = this.dependencies.some(function (current) {
|
|
1266
|
+
var currentFromId = _this.mapper.extractFromDependency(current, 'fromId');
|
|
1267
|
+
var currentToId = _this.mapper.extractFromDependency(current, 'toId');
|
|
1268
|
+
return (fromTaskId === currentFromId && toTaskId === currentToId) ||
|
|
1269
|
+
(toTaskId === currentFromId && fromTaskId === currentToId);
|
|
1270
|
+
});
|
|
1271
|
+
// mark as invalid if the attempted dependency is trying to connect already dependent tasks
|
|
1272
|
+
// mark as invalid if the two tasks are in parent-child relationship
|
|
1273
|
+
if (tasksDependentOnOneAnother || areParentChild(fromTask, toTask)) {
|
|
1274
|
+
return false;
|
|
1275
|
+
}
|
|
1276
|
+
var fromTaskStart = this.mapper.extractFromTask(fromTask.data, 'start');
|
|
1277
|
+
var fromTaskEnd = this.mapper.extractFromTask(fromTask.data, 'end');
|
|
1278
|
+
var toTaskStart = this.mapper.extractFromTask(toTask.data, 'start');
|
|
1279
|
+
var toTaskEnd = this.mapper.extractFromTask(toTask.data, 'end');
|
|
1280
|
+
// if the two tasks are available to be connected via a dependency,
|
|
1281
|
+
// check if their start and end time allow for the attempted dependency type
|
|
1282
|
+
switch (this.mapper.extractFromDependency(dependency, 'type')) {
|
|
1283
|
+
// finish to finish (FF) — the from-task ends before the to-task can end
|
|
1284
|
+
case DependencyType.FF:
|
|
1285
|
+
return fromTaskEnd <= toTaskEnd;
|
|
1286
|
+
// finish to start (FS) — the from-task ends before the to-task can begin
|
|
1287
|
+
case DependencyType.FS:
|
|
1288
|
+
return fromTaskEnd <= toTaskStart;
|
|
1289
|
+
// start to finish (SF) — the from-task begins before the to-task can end
|
|
1290
|
+
case DependencyType.SF:
|
|
1291
|
+
return fromTaskStart <= toTaskEnd;
|
|
1292
|
+
// start to start (SS) — the from-task begins before the to-task can begin
|
|
1293
|
+
case DependencyType.SS:
|
|
1294
|
+
return fromTaskStart <= toTaskStart;
|
|
1295
|
+
default: return false;
|
|
1296
|
+
}
|
|
995
1297
|
};
|
|
996
1298
|
var GanttComponent_1;
|
|
997
1299
|
tslib_1.__decorate([
|
|
998
1300
|
ViewChild(TreeListComponent, { static: true }),
|
|
999
1301
|
tslib_1.__metadata("design:type", TreeListComponent)
|
|
1000
1302
|
], GanttComponent.prototype, "treeList", void 0);
|
|
1303
|
+
tslib_1.__decorate([
|
|
1304
|
+
ViewChild(GanttTimelineComponent, { static: false }),
|
|
1305
|
+
tslib_1.__metadata("design:type", GanttTimelineComponent)
|
|
1306
|
+
], GanttComponent.prototype, "timeline", void 0);
|
|
1001
1307
|
tslib_1.__decorate([
|
|
1002
1308
|
ContentChild(GanttTaskContentTemplateDirective, { static: true }),
|
|
1003
1309
|
tslib_1.__metadata("design:type", GanttTaskContentTemplateDirective)
|
|
@@ -1014,6 +1320,24 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1014
1320
|
ContentChildren(ToolbarTemplateDirective),
|
|
1015
1321
|
tslib_1.__metadata("design:type", QueryList)
|
|
1016
1322
|
], GanttComponent.prototype, "toolbarTemplateChildren", void 0);
|
|
1323
|
+
tslib_1.__decorate([
|
|
1324
|
+
Input('aria-roledescription'),
|
|
1325
|
+
tslib_1.__metadata("design:type", String)
|
|
1326
|
+
], GanttComponent.prototype, "roleDescription", void 0);
|
|
1327
|
+
tslib_1.__decorate([
|
|
1328
|
+
HostBinding('attr.aria-roledescription'),
|
|
1329
|
+
tslib_1.__metadata("design:type", String),
|
|
1330
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
1331
|
+
], GanttComponent.prototype, "hostRoleDescriptionAttr", null);
|
|
1332
|
+
tslib_1.__decorate([
|
|
1333
|
+
Input('role'),
|
|
1334
|
+
tslib_1.__metadata("design:type", String)
|
|
1335
|
+
], GanttComponent.prototype, "role", void 0);
|
|
1336
|
+
tslib_1.__decorate([
|
|
1337
|
+
HostBinding('attr.role'),
|
|
1338
|
+
tslib_1.__metadata("design:type", String),
|
|
1339
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
1340
|
+
], GanttComponent.prototype, "hostRoleAttr", null);
|
|
1017
1341
|
tslib_1.__decorate([
|
|
1018
1342
|
HostBinding('class.k-gantt'),
|
|
1019
1343
|
tslib_1.__metadata("design:type", Boolean)
|
|
@@ -1056,6 +1380,10 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1056
1380
|
Input(),
|
|
1057
1381
|
tslib_1.__metadata("design:type", Function)
|
|
1058
1382
|
], GanttComponent.prototype, "isSelected", void 0);
|
|
1383
|
+
tslib_1.__decorate([
|
|
1384
|
+
Input(),
|
|
1385
|
+
tslib_1.__metadata("design:type", Function)
|
|
1386
|
+
], GanttComponent.prototype, "validateNewDependency", void 0);
|
|
1059
1387
|
tslib_1.__decorate([
|
|
1060
1388
|
Output(),
|
|
1061
1389
|
tslib_1.__metadata("design:type", EventEmitter)
|
|
@@ -1066,16 +1394,19 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1066
1394
|
], GanttComponent.prototype, "selectable", void 0);
|
|
1067
1395
|
tslib_1.__decorate([
|
|
1068
1396
|
Input(),
|
|
1069
|
-
tslib_1.__metadata("design:type",
|
|
1070
|
-
|
|
1397
|
+
tslib_1.__metadata("design:type", Object),
|
|
1398
|
+
tslib_1.__metadata("design:paramtypes", [Object])
|
|
1399
|
+
], GanttComponent.prototype, "toolbarSettings", null);
|
|
1071
1400
|
tslib_1.__decorate([
|
|
1072
1401
|
Input(),
|
|
1073
|
-
tslib_1.__metadata("design:type", Function)
|
|
1074
|
-
|
|
1402
|
+
tslib_1.__metadata("design:type", Function),
|
|
1403
|
+
tslib_1.__metadata("design:paramtypes", [Function])
|
|
1404
|
+
], GanttComponent.prototype, "fetchChildren", null);
|
|
1075
1405
|
tslib_1.__decorate([
|
|
1076
1406
|
Input(),
|
|
1077
|
-
tslib_1.__metadata("design:type", Function)
|
|
1078
|
-
|
|
1407
|
+
tslib_1.__metadata("design:type", Function),
|
|
1408
|
+
tslib_1.__metadata("design:paramtypes", [Function])
|
|
1409
|
+
], GanttComponent.prototype, "hasChildren", null);
|
|
1079
1410
|
tslib_1.__decorate([
|
|
1080
1411
|
Input(),
|
|
1081
1412
|
tslib_1.__metadata("design:type", Array)
|
|
@@ -1112,6 +1443,10 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1112
1443
|
Input(),
|
|
1113
1444
|
tslib_1.__metadata("design:type", Number)
|
|
1114
1445
|
], GanttComponent.prototype, "workWeekEnd", void 0);
|
|
1446
|
+
tslib_1.__decorate([
|
|
1447
|
+
Input(),
|
|
1448
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
1449
|
+
], GanttComponent.prototype, "navigable", void 0);
|
|
1115
1450
|
tslib_1.__decorate([
|
|
1116
1451
|
Input(),
|
|
1117
1452
|
tslib_1.__metadata("design:type", Object),
|
|
@@ -1152,6 +1487,11 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1152
1487
|
Input(),
|
|
1153
1488
|
tslib_1.__metadata("design:type", Boolean)
|
|
1154
1489
|
], GanttComponent.prototype, "columnsResizable", void 0);
|
|
1490
|
+
tslib_1.__decorate([
|
|
1491
|
+
Input(),
|
|
1492
|
+
tslib_1.__metadata("design:type", Object),
|
|
1493
|
+
tslib_1.__metadata("design:paramtypes", [Object])
|
|
1494
|
+
], GanttComponent.prototype, "dragScrollSettings", null);
|
|
1155
1495
|
tslib_1.__decorate([
|
|
1156
1496
|
Output(),
|
|
1157
1497
|
tslib_1.__metadata("design:type", EventEmitter)
|
|
@@ -1188,6 +1528,14 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1188
1528
|
Output(),
|
|
1189
1529
|
tslib_1.__metadata("design:type", EventEmitter)
|
|
1190
1530
|
], GanttComponent.prototype, "save", void 0);
|
|
1531
|
+
tslib_1.__decorate([
|
|
1532
|
+
Output(),
|
|
1533
|
+
tslib_1.__metadata("design:type", EventEmitter)
|
|
1534
|
+
], GanttComponent.prototype, "taskAdd", void 0);
|
|
1535
|
+
tslib_1.__decorate([
|
|
1536
|
+
Output(),
|
|
1537
|
+
tslib_1.__metadata("design:type", EventEmitter)
|
|
1538
|
+
], GanttComponent.prototype, "dependencyAdd", void 0);
|
|
1191
1539
|
tslib_1.__decorate([
|
|
1192
1540
|
Output(),
|
|
1193
1541
|
tslib_1.__metadata("design:type", EventEmitter)
|
|
@@ -1245,6 +1593,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1245
1593
|
selector: 'kendo-gantt',
|
|
1246
1594
|
exportAs: 'kendoGantt',
|
|
1247
1595
|
providers: [
|
|
1596
|
+
GanttLocalizationService,
|
|
1248
1597
|
LocalizationService,
|
|
1249
1598
|
{
|
|
1250
1599
|
provide: DataBoundTreeComponent,
|
|
@@ -1262,9 +1611,11 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1262
1611
|
DependencyDomService,
|
|
1263
1612
|
MappingService,
|
|
1264
1613
|
OptionChangesService,
|
|
1265
|
-
EditService
|
|
1614
|
+
EditService,
|
|
1615
|
+
TimelineScrollService,
|
|
1616
|
+
NavigationService
|
|
1266
1617
|
],
|
|
1267
|
-
template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages\n [noRecords]=\"getText('noRecords')\"\n [filter]=\"getText('filter')\"\n [filterEqOperator]=\"getText('filterEqOperator')\"\n [filterNotEqOperator]=\"getText('filterNotEqOperator')\"\n [filterIsNullOperator]=\"getText('filterIsNullOperator')\"\n [filterIsNotNullOperator]=\"getText('filterIsNotNullOperator')\"\n [filterIsEmptyOperator]=\"getText('filterIsEmptyOperator')\"\n [filterIsNotEmptyOperator]=\"getText('filterIsNotEmptyOperator')\"\n [filterStartsWithOperator]=\"getText('filterStartsWithOperator')\"\n [filterContainsOperator]=\"getText('filterContainsOperator')\"\n [filterNotContainsOperator]=\"getText('filterNotContainsOperator')\"\n [filterEndsWithOperator]=\"getText('filterEndsWithOperator')\"\n [filterGteOperator]=\"getText('filterGteOperator')\"\n [filterGtOperator]=\"getText('filterGtOperator')\"\n [filterLteOperator]=\"getText('filterLteOperator')\"\n [filterLtOperator]=\"getText('filterLtOperator')\"\n [filterIsTrue]=\"getText('filterIsTrue')\"\n [filterIsFalse]=\"getText('filterIsFalse')\"\n [filterBooleanAll]=\"getText('filterBooleanAll')\"\n [filterAfterOrEqualOperator]=\"getText('filterAfterOrEqualOperator')\"\n [filterAfterOperator]=\"getText('filterAfterOperator')\"\n [filterBeforeOperator]=\"getText('filterBeforeOperator')\"\n [filterBeforeOrEqualOperator]=\"getText('filterBeforeOrEqualOperator')\"\n [filterFilterButton]=\"getText('filterFilterButton')\"\n [filterClearButton]=\"getText('filterClearButton')\"\n [filterAndLogic]=\"getText('filterAndLogic')\"\n [filterOrLogic]=\"getText('filterOrLogic')\"\n [loading]=\"getText('loading')\"\n [columnMenu]=\"getText('columnMenu')\"\n [columns]=\"getText('columns')\"\n [sortable]=\"getText('sortable')\"\n [sortAscending]=\"getText('sortAscending')\"\n [sortDescending]=\"getText('sortDescending')\"\n [sortedAscending]=\"getText('sortedAscending')\"\n [sortedDescending]=\"getText('sortedDescending')\"\n [sortedDefault]=\"getText('sortedDefault')\"\n [columnsApply]=\"getText('columnsApply')\"\n [columnsReset]=\"getText('columnsReset')\"\n >\n </kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [rows]=\"renderedTreeListItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [hasChildren]=\"hasChildren\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog *ngIf=\"showEditingDialog\" [formGroup]=\"editDialogFormGroup\"></kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"showConfirmationDialog = false;\">\n <span>{{getText('confirmationDialogContent')}}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"showConfirmationDialog = false;\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
|
|
1618
|
+
template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskEditingGeneralTabTitle=\"kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip\"\n taskEditingGeneralTabTitle=\"General\"\n\n i18n-taskEditingPredecessorsTabTitle=\"kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip\"\n taskEditingPredecessorsTabTitle=\"Predecessors\"\n\n i18n-taskEditingSuccessorsTabTitle=\"kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip\"\n taskEditingSuccessorsTabTitle=\"Successors\"\n\n i18n-taskEditingDependenciesAddButtonText=\"kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesAddButtonText=\"Add\"\n\n i18n-taskEditingDependenciesRemoveButtonText=\"kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesRemoveButtonText=\"Remove\"\n\n i18n-taskEditingDependenciesGridNameColumnTitle=\"kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridNameColumnTitle=\"Task Title\"\n\n i18n-taskEditingDependenciesGridTypeColumnTitle=\"kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridTypeColumnTitle=\"Type\"\n\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-addTaskText=\"kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component\"\n addTaskText=\"Add Task\"\n\n i18n-addChildText=\"kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component\"\n addChildText=\"Add Child\"\n\n i18n-addAboveText=\"kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component\"\n addAboveText=\"Add Above\"\n\n i18n-addBelowText=\"kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component\"\n addBelowText=\"Add Below\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [navigable]=\"navigable\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages\n [noRecords]=\"getText('noRecords')\"\n [filter]=\"getText('filter')\"\n [filterEqOperator]=\"getText('filterEqOperator')\"\n [filterNotEqOperator]=\"getText('filterNotEqOperator')\"\n [filterIsNullOperator]=\"getText('filterIsNullOperator')\"\n [filterIsNotNullOperator]=\"getText('filterIsNotNullOperator')\"\n [filterIsEmptyOperator]=\"getText('filterIsEmptyOperator')\"\n [filterIsNotEmptyOperator]=\"getText('filterIsNotEmptyOperator')\"\n [filterStartsWithOperator]=\"getText('filterStartsWithOperator')\"\n [filterContainsOperator]=\"getText('filterContainsOperator')\"\n [filterNotContainsOperator]=\"getText('filterNotContainsOperator')\"\n [filterEndsWithOperator]=\"getText('filterEndsWithOperator')\"\n [filterGteOperator]=\"getText('filterGteOperator')\"\n [filterGtOperator]=\"getText('filterGtOperator')\"\n [filterLteOperator]=\"getText('filterLteOperator')\"\n [filterLtOperator]=\"getText('filterLtOperator')\"\n [filterIsTrue]=\"getText('filterIsTrue')\"\n [filterIsFalse]=\"getText('filterIsFalse')\"\n [filterBooleanAll]=\"getText('filterBooleanAll')\"\n [filterAfterOrEqualOperator]=\"getText('filterAfterOrEqualOperator')\"\n [filterAfterOperator]=\"getText('filterAfterOperator')\"\n [filterBeforeOperator]=\"getText('filterBeforeOperator')\"\n [filterBeforeOrEqualOperator]=\"getText('filterBeforeOrEqualOperator')\"\n [filterFilterButton]=\"getText('filterFilterButton')\"\n [filterClearButton]=\"getText('filterClearButton')\"\n [filterAndLogic]=\"getText('filterAndLogic')\"\n [filterOrLogic]=\"getText('filterOrLogic')\"\n [loading]=\"getText('loading')\"\n [columnMenu]=\"getText('columnMenu')\"\n [columns]=\"getText('columns')\"\n [sortable]=\"getText('sortable')\"\n [sortAscending]=\"getText('sortAscending')\"\n [sortDescending]=\"getText('sortDescending')\"\n [sortedAscending]=\"getText('sortedAscending')\"\n [sortedDescending]=\"getText('sortedDescending')\"\n [sortedDefault]=\"getText('sortedDefault')\"\n [columnsApply]=\"getText('columnsApply')\"\n [columnsReset]=\"getText('columnsReset')\"\n >\n </kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n [dragScrollSettings]=\"dragScrollSettings\"\n [rows]=\"viewItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [isExpanded]=\"isExpanded\"\n [selectable]=\"selectable\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog\n *ngIf=\"showEditingDialog\"\n [data]=\"data\">\n </kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"handleConfirmationDialogClose()\">\n <span>{{ getText('confirmationDialogContent') }}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"handleConfirmationDialogClose()\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
|
|
1268
1619
|
}),
|
|
1269
1620
|
tslib_1.__metadata("design:paramtypes", [TimelineViewService,
|
|
1270
1621
|
ScrollSyncService,
|
|
@@ -1275,7 +1626,8 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1275
1626
|
EditService,
|
|
1276
1627
|
LocalizationService,
|
|
1277
1628
|
ElementRef,
|
|
1278
|
-
NgZone
|
|
1629
|
+
NgZone,
|
|
1630
|
+
NavigationService])
|
|
1279
1631
|
], GanttComponent);
|
|
1280
1632
|
return GanttComponent;
|
|
1281
1633
|
}());
|