@progress/kendo-angular-gantt 0.1.4 → 0.2.0-dev.202111241002
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 -76
- package/dist/cdn/main.js +23 -1
- package/dist/es/columns/column.component.js +5 -0
- package/dist/es/columns/columns.js +1 -0
- package/dist/es/columns/edit-template.directive.js +34 -0
- package/dist/es/columns/span-column.component.js +6 -0
- package/dist/es/common/default-callbacks.js +4 -0
- package/dist/es/editing/edit-dialog.component.js +44 -0
- package/dist/es/editing/edit.service.js +39 -0
- package/dist/es/editing/util.js +17 -0
- package/dist/es/gantt.component.js +478 -22
- package/dist/es/gantt.module.js +62 -5
- package/dist/es/index.js +6 -0
- package/dist/es/localization/custom-messages.component.js +44 -0
- package/dist/es/localization/localized-messages.directive.js +35 -0
- package/dist/es/localization/messages.js +246 -0
- package/dist/es/localization/treelist-messages.directive.js +31 -0
- package/dist/es/main.js +1 -0
- package/dist/es/models/events/cell-click-event.interface.js +4 -0
- package/dist/es/models/events/cell-close-event.interface.js +19 -0
- package/dist/es/models/events/preventable-event.js +32 -0
- package/dist/es/models/events/task-click-event.interface.js +4 -0
- package/dist/es/models/events/task-edit-event.interface.js +4 -0
- package/dist/es/models/gantt-task-model-fields.interface.js +2 -1
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/rendering/gantt-milestone-task.component.js +1 -1
- package/dist/es/rendering/gantt-summary-task.component.js +1 -1
- package/dist/es/rendering/gantt-task-base.js +8 -0
- package/dist/es/rendering/gantt-task.component.js +12 -4
- package/dist/es/rendering/gantt-tasks-table-body.component.js +5 -1
- package/dist/es/selection/selectable.directive.js +141 -0
- package/dist/es/selection/selection-change-event.js +4 -0
- package/dist/es/timeline/gantt-timeline.component.js +5 -1
- package/dist/es/toolbar/view-selector.component.js +7 -4
- package/dist/es/utils.js +48 -1
- package/dist/es2015/columns/column.component.d.ts +2 -0
- package/dist/es2015/columns/column.component.js +5 -0
- package/dist/es2015/columns/columns.d.ts +1 -0
- package/dist/es2015/columns/columns.js +1 -0
- package/dist/es2015/columns/edit-template.directive.d.ts +23 -0
- package/dist/es2015/columns/edit-template.directive.js +33 -0
- package/dist/es2015/columns/span-column.component.d.ts +2 -0
- package/dist/es2015/columns/span-column.component.js +6 -0
- package/dist/es2015/common/default-callbacks.d.ts +4 -0
- package/dist/es2015/common/default-callbacks.js +4 -0
- package/dist/es2015/editing/edit-dialog.component.d.ts +21 -0
- package/dist/es2015/editing/edit-dialog.component.js +86 -0
- package/dist/es2015/editing/edit.service.d.ts +20 -0
- package/dist/es2015/editing/edit.service.js +41 -0
- package/dist/es2015/editing/util.d.ts +10 -0
- package/dist/es2015/editing/util.js +17 -0
- package/dist/es2015/gantt.component.d.ts +236 -12
- package/dist/es2015/gantt.component.js +662 -21
- package/dist/es2015/gantt.module.d.ts +29 -1
- package/dist/es2015/gantt.module.js +62 -5
- package/dist/es2015/index.d.ts +6 -0
- package/dist/es2015/index.js +6 -0
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/localization/custom-messages.component.d.ts +15 -0
- package/dist/es2015/localization/custom-messages.component.js +36 -0
- package/dist/es2015/localization/localized-messages.directive.d.ts +13 -0
- package/dist/es2015/localization/localized-messages.directive.js +31 -0
- package/dist/es2015/localization/messages.d.ts +246 -0
- package/dist/es2015/localization/messages.js +240 -0
- package/dist/es2015/localization/treelist-messages.directive.d.ts +14 -0
- package/dist/es2015/localization/treelist-messages.directive.js +29 -0
- package/dist/es2015/main.d.ts +2 -0
- package/dist/es2015/main.js +1 -0
- package/dist/es2015/models/events/cell-click-event.interface.d.ts +43 -0
- package/dist/es2015/models/events/cell-click-event.interface.js +4 -0
- package/dist/es2015/models/events/cell-close-event.interface.d.ts +48 -0
- package/dist/es2015/models/events/cell-close-event.interface.js +14 -0
- package/dist/es2015/models/events/preventable-event.d.ts +24 -0
- package/dist/es2015/models/events/preventable-event.js +30 -0
- package/dist/es2015/models/events/task-click-event.interface.d.ts +30 -0
- package/dist/es2015/models/events/task-click-event.interface.js +4 -0
- package/dist/es2015/models/events/task-edit-event.interface.d.ts +46 -0
- package/dist/es2015/models/events/task-edit-event.interface.js +4 -0
- package/dist/es2015/models/gantt-task-model-fields.interface.d.ts +1 -0
- package/dist/es2015/models/gantt-task-model-fields.interface.js +2 -1
- package/dist/es2015/models/models.d.ts +2 -0
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.js +2 -0
- package/dist/es2015/rendering/gantt-summary-task.component.js +2 -0
- package/dist/es2015/rendering/gantt-task-base.d.ts +2 -0
- package/dist/es2015/rendering/gantt-task-base.js +8 -0
- package/dist/es2015/rendering/gantt-task.component.d.ts +4 -1
- package/dist/es2015/rendering/gantt-task.component.js +18 -2
- package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +1 -0
- package/dist/es2015/rendering/gantt-tasks-table-body.component.js +11 -1
- package/dist/es2015/selection/selectable.directive.d.ts +42 -0
- package/dist/es2015/selection/selectable.directive.js +122 -0
- package/dist/es2015/selection/selection-change-event.d.ts +25 -0
- package/dist/es2015/selection/selection-change-event.js +4 -0
- package/dist/es2015/timeline/gantt-timeline.component.d.ts +1 -0
- package/dist/es2015/timeline/gantt-timeline.component.js +5 -0
- package/dist/es2015/toolbar/view-selector.component.d.ts +3 -0
- package/dist/es2015/toolbar/view-selector.component.js +7 -7
- package/dist/es2015/utils.d.ts +39 -0
- package/dist/es2015/utils.js +48 -1
- package/dist/fesm2015/index.js +1387 -35
- package/dist/fesm5/index.js +1191 -45
- package/dist/npm/columns/column.component.js +5 -0
- package/dist/npm/columns/columns.js +2 -0
- package/dist/npm/columns/edit-template.directive.js +36 -0
- package/dist/npm/columns/span-column.component.js +6 -0
- package/dist/npm/common/default-callbacks.js +4 -0
- package/dist/npm/editing/edit-dialog.component.js +46 -0
- package/dist/npm/editing/edit.service.js +41 -0
- package/dist/npm/editing/util.js +19 -0
- package/dist/npm/gantt.component.js +475 -19
- package/dist/npm/gantt.module.js +61 -4
- package/dist/npm/index.js +12 -0
- package/dist/npm/localization/custom-messages.component.js +46 -0
- package/dist/npm/localization/localized-messages.directive.js +37 -0
- package/dist/npm/localization/messages.js +248 -0
- package/dist/npm/localization/treelist-messages.directive.js +33 -0
- package/dist/npm/main.js +2 -0
- package/dist/npm/models/events/cell-click-event.interface.js +6 -0
- package/dist/npm/models/events/cell-close-event.interface.js +21 -0
- package/dist/npm/models/events/preventable-event.js +34 -0
- package/dist/npm/models/events/task-click-event.interface.js +6 -0
- package/dist/npm/models/events/task-edit-event.interface.js +6 -0
- package/dist/npm/models/gantt-task-model-fields.interface.js +2 -1
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/rendering/gantt-milestone-task.component.js +1 -1
- package/dist/npm/rendering/gantt-summary-task.component.js +1 -1
- package/dist/npm/rendering/gantt-task-base.js +8 -0
- package/dist/npm/rendering/gantt-task.component.js +12 -4
- package/dist/npm/rendering/gantt-tasks-table-body.component.js +5 -1
- package/dist/npm/selection/selectable.directive.js +143 -0
- package/dist/npm/selection/selection-change-event.js +6 -0
- package/dist/npm/timeline/gantt-timeline.component.js +5 -1
- package/dist/npm/toolbar/view-selector.component.js +7 -4
- package/dist/npm/utils.js +47 -0
- package/dist/systemjs/kendo-angular-gantt.js +1 -1
- package/package.json +15 -10
package/dist/fesm2015/index.js
CHANGED
|
@@ -5,17 +5,23 @@
|
|
|
5
5
|
import { __decorate, __metadata, __param } from 'tslib';
|
|
6
6
|
import { Input, EventEmitter, Injectable, Directive, Optional, TemplateRef, QueryList, ContentChildren, ContentChild, Component, forwardRef, SkipSelf, Host, Injector, NgZone, isDevMode, ViewChild, HostBinding, Output, Renderer2, ElementRef, ChangeDetectorRef, NgModule } from '@angular/core';
|
|
7
7
|
import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent, TreeListComponent, DataBoundTreeComponent, ExpandableTreeComponent, FlatBindingDirective, HierarchyBindingDirective, ExpandableDirective, TreeListModule } from '@progress/kendo-angular-treelist';
|
|
8
|
+
import { cloneDate, addWeeks, firstDayInWeek, addDays, getDate, lastDayOfMonth, firstDayOfMonth, addMonths, isEqualDate, MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
|
|
8
9
|
import { of, Subject, Subscription, fromEvent } from 'rxjs';
|
|
9
10
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
10
|
-
import { isDocumentAvailable, anyChanged } from '@progress/kendo-angular-common';
|
|
11
|
+
import { isDocumentAvailable, closestInScope, matchesClasses, anyChanged, hasObservers, EventsModule } from '@progress/kendo-angular-common';
|
|
11
12
|
import { IntlService } from '@progress/kendo-angular-intl';
|
|
12
13
|
import { orderBy } from '@progress/kendo-data-query';
|
|
13
|
-
import { cloneDate, addWeeks, firstDayInWeek, addDays, getDate, lastDayOfMonth, firstDayOfMonth, addMonths, isEqualDate, MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
|
|
14
14
|
import { getter } from '@progress/kendo-common';
|
|
15
15
|
import { map, distinctUntilChanged, take, filter, switchMap } from 'rxjs/operators';
|
|
16
|
+
import { LocalizationService, ComponentMessages, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
16
17
|
import { CommonModule } from '@angular/common';
|
|
17
18
|
import { SplitterModule } from '@progress/kendo-angular-layout';
|
|
18
19
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
20
|
+
import { DialogModule } from '@progress/kendo-angular-dialog';
|
|
21
|
+
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
22
|
+
import { LabelModule } from '@progress/kendo-angular-label';
|
|
23
|
+
import { InputsModule } from '@progress/kendo-angular-inputs';
|
|
24
|
+
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
|
|
19
25
|
|
|
20
26
|
/**
|
|
21
27
|
* @hidden
|
|
@@ -24,7 +30,7 @@ const packageMetadata = {
|
|
|
24
30
|
name: '@progress/kendo-angular-gantt',
|
|
25
31
|
productName: 'Kendo UI for Angular',
|
|
26
32
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
27
|
-
publishDate:
|
|
33
|
+
publishDate: 1637747718,
|
|
28
34
|
version: '',
|
|
29
35
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
30
36
|
};
|
|
@@ -250,6 +256,33 @@ HeaderTemplateDirective = __decorate([
|
|
|
250
256
|
__metadata("design:paramtypes", [TemplateRef])
|
|
251
257
|
], HeaderTemplateDirective);
|
|
252
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Represents the column edit-cell template of the Gantt.
|
|
261
|
+
* Helps to customize the content of the edited cells. To define the cell template, nest an `<ng-template>`
|
|
262
|
+
* tag with the `kendoGanttEditTemplate` directive inside a `<kendo-gantt-column>` tag.
|
|
263
|
+
*
|
|
264
|
+
* The template context contains the following fields:
|
|
265
|
+
* - `column`—The current column instance.
|
|
266
|
+
* - `dataItem`—The current data item.
|
|
267
|
+
* - `cellContext`—An object used to pass context information to built-in directives.
|
|
268
|
+
* - `formGroup`—The current [`FormGroup`]({{ site.data.urls.angular['formgroupapi'] }}).
|
|
269
|
+
* If you use the Gantt inside [Template-Driven Forms]({{ site.data.urls.angular['forms'] }}), it will be `undefined`.
|
|
270
|
+
* - `isNew`—The state of the current item.
|
|
271
|
+
* - `rowIndex`—The current row index. If inside a new item row, `rowIndex` is `-1`.
|
|
272
|
+
*/
|
|
273
|
+
let EditTemplateDirective = class EditTemplateDirective {
|
|
274
|
+
constructor(templateRef) {
|
|
275
|
+
this.templateRef = templateRef;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
EditTemplateDirective = __decorate([
|
|
279
|
+
Directive({
|
|
280
|
+
selector: '[kendoGanttEditTemplate]'
|
|
281
|
+
}),
|
|
282
|
+
__param(0, Optional()),
|
|
283
|
+
__metadata("design:paramtypes", [TemplateRef])
|
|
284
|
+
], EditTemplateDirective);
|
|
285
|
+
|
|
253
286
|
var GanttColumnComponent_1;
|
|
254
287
|
let GanttColumnComponent = GanttColumnComponent_1 = class GanttColumnComponent extends ColumnComponent {
|
|
255
288
|
constructor(options, parent) {
|
|
@@ -305,6 +338,10 @@ __decorate([
|
|
|
305
338
|
ContentChild(CellTemplateDirective, { static: false }),
|
|
306
339
|
__metadata("design:type", CellTemplateDirective)
|
|
307
340
|
], GanttColumnComponent.prototype, "template", void 0);
|
|
341
|
+
__decorate([
|
|
342
|
+
ContentChild(EditTemplateDirective, { static: false }),
|
|
343
|
+
__metadata("design:type", EditTemplateDirective)
|
|
344
|
+
], GanttColumnComponent.prototype, "editTemplate", void 0);
|
|
308
345
|
__decorate([
|
|
309
346
|
ContentChild(FilterCellTemplateDirective, { static: false }),
|
|
310
347
|
__metadata("design:type", FilterCellTemplateDirective)
|
|
@@ -496,6 +533,7 @@ let GanttSpanColumnComponent = GanttSpanColumnComponent_1 = class GanttSpanColum
|
|
|
496
533
|
*/
|
|
497
534
|
this.childColumns = new QueryList();
|
|
498
535
|
this.template = new QueryList();
|
|
536
|
+
this.editTemplate = new QueryList();
|
|
499
537
|
}
|
|
500
538
|
ngOnChanges() {
|
|
501
539
|
this.options.notifyColumnChanges();
|
|
@@ -509,6 +547,10 @@ __decorate([
|
|
|
509
547
|
ContentChildren(CellTemplateDirective, { descendants: false }),
|
|
510
548
|
__metadata("design:type", QueryList)
|
|
511
549
|
], GanttSpanColumnComponent.prototype, "template", void 0);
|
|
550
|
+
__decorate([
|
|
551
|
+
ContentChildren(EditTemplateDirective, { descendants: false }),
|
|
552
|
+
__metadata("design:type", QueryList)
|
|
553
|
+
], GanttSpanColumnComponent.prototype, "editTemplate", void 0);
|
|
512
554
|
__decorate([
|
|
513
555
|
Input(),
|
|
514
556
|
__metadata("design:type", Boolean)
|
|
@@ -585,6 +627,10 @@ const rowClassCallback = () => null;
|
|
|
585
627
|
* @hidden
|
|
586
628
|
*/
|
|
587
629
|
const taskClassCallback = () => null;
|
|
630
|
+
/**
|
|
631
|
+
* @hidden
|
|
632
|
+
*/
|
|
633
|
+
const isSelected = () => false;
|
|
588
634
|
|
|
589
635
|
/**
|
|
590
636
|
* @hidden
|
|
@@ -681,6 +727,44 @@ const isColumnGroup = (column) => column.isColumnGroup;
|
|
|
681
727
|
* @hidden
|
|
682
728
|
*/
|
|
683
729
|
const isNumber = (contender) => typeof contender === 'number' && !isNaN(contender);
|
|
730
|
+
/**
|
|
731
|
+
* @hidden
|
|
732
|
+
*/
|
|
733
|
+
const isString = (contender) => typeof contender === 'string';
|
|
734
|
+
/**
|
|
735
|
+
* @hidden
|
|
736
|
+
*
|
|
737
|
+
* Gets the closest timeline task element index from an event target.
|
|
738
|
+
* Uses the `data-task-index` attribute assigned to each task.
|
|
739
|
+
* Restricts the search up to the provided gantt element from the second param.
|
|
740
|
+
*/
|
|
741
|
+
const getClosestTaskIndex = (element, gantt) => {
|
|
742
|
+
const task = closestInScope(element, matchesClasses('k-task'), gantt);
|
|
743
|
+
if (!isPresent(task)) {
|
|
744
|
+
return null;
|
|
745
|
+
}
|
|
746
|
+
return Number(task.getAttribute('data-task-index'));
|
|
747
|
+
};
|
|
748
|
+
/**
|
|
749
|
+
* @hidden
|
|
750
|
+
*
|
|
751
|
+
* Checks whether the queried item or its parent items has a `k-task` selector.
|
|
752
|
+
* Restricts the search up to the provided gantt element from the second param.
|
|
753
|
+
*/
|
|
754
|
+
const isTask = (contender, gantt) => {
|
|
755
|
+
const task = closestInScope(contender, matchesClasses('k-task'), gantt);
|
|
756
|
+
return isPresent(task);
|
|
757
|
+
};
|
|
758
|
+
/**
|
|
759
|
+
* @hidden
|
|
760
|
+
*
|
|
761
|
+
* Checks whether the queried item or its parent items has a `k-task-actions` selector - used for the clear button.
|
|
762
|
+
* Restricts the search up to the provided gantt element from the second param.
|
|
763
|
+
*/
|
|
764
|
+
const isClearButton = (contender, gantt) => {
|
|
765
|
+
const clearButtonContainer = closestInScope(contender, matchesClasses('k-task-actions'), gantt);
|
|
766
|
+
return isPresent(clearButtonContainer);
|
|
767
|
+
};
|
|
684
768
|
|
|
685
769
|
const DAY_FORMAT = 'E d/MM';
|
|
686
770
|
const HOUR_FORMAT = 'HH:mm aa';
|
|
@@ -845,7 +929,8 @@ const DEFAULT_TASK_MODEL_FIELDS = Object.freeze({
|
|
|
845
929
|
start: 'start',
|
|
846
930
|
end: 'end',
|
|
847
931
|
title: 'title',
|
|
848
|
-
completionRatio: 'completionRatio'
|
|
932
|
+
completionRatio: 'completionRatio',
|
|
933
|
+
children: 'children'
|
|
849
934
|
});
|
|
850
935
|
|
|
851
936
|
/**
|
|
@@ -1224,6 +1309,40 @@ DependencyDomService = __decorate([
|
|
|
1224
1309
|
__metadata("design:paramtypes", [MappingService])
|
|
1225
1310
|
], DependencyDomService);
|
|
1226
1311
|
|
|
1312
|
+
/**
|
|
1313
|
+
* @hidden
|
|
1314
|
+
*/
|
|
1315
|
+
let EditService = class EditService {
|
|
1316
|
+
/**
|
|
1317
|
+
* @hidden
|
|
1318
|
+
*/
|
|
1319
|
+
constructor() {
|
|
1320
|
+
this.showEditingDialog = new Subject();
|
|
1321
|
+
this.showConfirmationDialog = new Subject();
|
|
1322
|
+
this.editEvent = new Subject();
|
|
1323
|
+
}
|
|
1324
|
+
createEditDialog(dataItem, formGroup) {
|
|
1325
|
+
this.dataItem = dataItem;
|
|
1326
|
+
this.formGroup = formGroup;
|
|
1327
|
+
this.showEditingDialog.next(true);
|
|
1328
|
+
}
|
|
1329
|
+
closeEditDialog() {
|
|
1330
|
+
this.showEditingDialog.next(false);
|
|
1331
|
+
this.dataItem = undefined;
|
|
1332
|
+
this.formGroup = undefined;
|
|
1333
|
+
}
|
|
1334
|
+
triggerEditEvent(editResultType) {
|
|
1335
|
+
this.editEvent.next({
|
|
1336
|
+
formGroup: this.formGroup,
|
|
1337
|
+
dataItem: this.dataItem,
|
|
1338
|
+
editResultType
|
|
1339
|
+
});
|
|
1340
|
+
}
|
|
1341
|
+
};
|
|
1342
|
+
EditService = __decorate([
|
|
1343
|
+
Injectable()
|
|
1344
|
+
], EditService);
|
|
1345
|
+
|
|
1227
1346
|
/**
|
|
1228
1347
|
* @hidden
|
|
1229
1348
|
*/
|
|
@@ -1511,21 +1630,126 @@ __decorate([
|
|
|
1511
1630
|
__metadata("design:type", Number)
|
|
1512
1631
|
], ViewBase.prototype, "slotWidth", void 0);
|
|
1513
1632
|
|
|
1633
|
+
/**
|
|
1634
|
+
* @hidden
|
|
1635
|
+
*/
|
|
1636
|
+
const getEditItem = (dataItem, data, mapper) => {
|
|
1637
|
+
const treeListDataItem = data.find(item => mapper.extractFromTask(item.data, 'id') === mapper.extractFromTask(dataItem, 'id'));
|
|
1638
|
+
return mapPath(treeListDataItem);
|
|
1639
|
+
};
|
|
1640
|
+
const mapPath = (item) => ({
|
|
1641
|
+
dataItem: item.data,
|
|
1642
|
+
parent: item.parent.data ? mapPath(item.parent) : null
|
|
1643
|
+
});
|
|
1644
|
+
|
|
1514
1645
|
var GanttComponent_1;
|
|
1515
1646
|
const TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
|
|
1516
1647
|
const DEFAULT_VIEW = 'week';
|
|
1517
1648
|
/**
|
|
1518
|
-
*
|
|
1649
|
+
* Represents the Kendo UI Gantt component for Angular.
|
|
1650
|
+
*
|
|
1651
|
+
* @example
|
|
1652
|
+
* ```ts-preview
|
|
1653
|
+
* _@Component({
|
|
1654
|
+
* selector: 'my-app',
|
|
1655
|
+
* template: `
|
|
1656
|
+
* <kendo-gantt
|
|
1657
|
+
* [style.height.px]="500"
|
|
1658
|
+
* [kendoGanttHierarchyBinding]="data"
|
|
1659
|
+
* childrenField="subtasks"
|
|
1660
|
+
* [dependencies]="dependencies">
|
|
1661
|
+
* <kendo-gantt-column
|
|
1662
|
+
* field="title"
|
|
1663
|
+
* title="Task"
|
|
1664
|
+
* [width]="200"
|
|
1665
|
+
* [expandable]="true"></kendo-gantt-column>
|
|
1666
|
+
* <kendo-gantt-column
|
|
1667
|
+
* field="start"
|
|
1668
|
+
* title="Start"
|
|
1669
|
+
* format="dd-MMM-yyyy"
|
|
1670
|
+
* [width]="120"></kendo-gantt-column>
|
|
1671
|
+
* <kendo-gantt-column
|
|
1672
|
+
* field="end"
|
|
1673
|
+
* title="End"
|
|
1674
|
+
* format="dd-MMM-yyyy"
|
|
1675
|
+
* [width]="120"></kendo-gantt-column>
|
|
1676
|
+
* <kendo-gantt-timeline-day-view></kendo-gantt-timeline-day-view>
|
|
1677
|
+
* <kendo-gantt-timeline-week-view></kendo-gantt-timeline-week-view>
|
|
1678
|
+
* <kendo-gantt-timeline-month-view></kendo-gantt-timeline-month-view>
|
|
1679
|
+
* </kendo-gantt>
|
|
1680
|
+
* `
|
|
1681
|
+
* })
|
|
1682
|
+
* class AppComponent {
|
|
1683
|
+
* public data: Task[] = [{
|
|
1684
|
+
* id: 7, title: 'Validation and R&D', start: new Date('2014-06-02T00:00:00.000Z'),
|
|
1685
|
+
* end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0.45708333333333334,
|
|
1686
|
+
* subtasks: [
|
|
1687
|
+
* { id: 18, title: 'Project Kickoff', start: new Date('2014-06-02T00:00:00.000Z'),
|
|
1688
|
+
* end: new Date('2014-06-02T00:00:00.000Z'), completionRatio: 0.23 },
|
|
1689
|
+
* { id: 11, title: 'Research', start: new Date('2014-06-02T00:00:00.000Z'),
|
|
1690
|
+
* end: new Date('2014-06-07T00:00:00.000Z'), completionRatio: 0.5766666666666667,
|
|
1691
|
+
* subtasks: [
|
|
1692
|
+
* { id: 19, title: 'Validation', start: new Date('2014-06-02T00:00:00.000Z'),
|
|
1693
|
+
* end: new Date('2014-06-04T00:00:00.000Z'), completionRatio: 0.25 },
|
|
1694
|
+
* { id: 39, title: 'Specification', start: new Date('2014-06-04T00:00:00.000Z'),
|
|
1695
|
+
* end: new Date('2014-06-07T00:00:00.000Z'), completionRatio: 0.66 }]
|
|
1696
|
+
* }, { id: 13, title: 'Implementation', start: new Date('2014-06-08T00:00:00.000Z'),
|
|
1697
|
+
* end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0.77,
|
|
1698
|
+
* subtasks: [
|
|
1699
|
+
* { id: 24, title: 'Prototype', start: new Date('2014-06-08T00:00:00.000Z'),
|
|
1700
|
+
* end: new Date('2014-06-14T00:00:00.000Z'), completionRatio: 0.77 },
|
|
1701
|
+
* { id: 29, title: 'UI and Interaction', start: new Date('2014-06-14T00:00:00.000Z'),
|
|
1702
|
+
* end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0.6 }]
|
|
1703
|
+
* }, { id: 17, title: 'Release', start: new Date('2014-06-19T00:00:00.000Z'),
|
|
1704
|
+
* end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0 }]
|
|
1705
|
+
* }];
|
|
1706
|
+
*
|
|
1707
|
+
* public dependencies: GanttDependency[] = [
|
|
1708
|
+
* { id: 528, fromId: 18, toId: 19, type: DependencyType.FS },
|
|
1709
|
+
* { id: 529, fromId: 19, toId: 39, type: DependencyType.FS },
|
|
1710
|
+
* { id: 535, fromId: 24, toId: 29, type: DependencyType.FS },
|
|
1711
|
+
* { id: 551, fromId: 13, toId: 29, type: DependencyType.FF },
|
|
1712
|
+
* { id: 777, fromId: 7, toId: 11, type: DependencyType.SF },
|
|
1713
|
+
* { id: 556, fromId: 39, toId: 24, type: DependencyType.FS },
|
|
1714
|
+
* { id: 546, fromId: 29, toId: 17, type: DependencyType.FS },
|
|
1715
|
+
* ];
|
|
1716
|
+
* }
|
|
1717
|
+
* ```
|
|
1519
1718
|
*/
|
|
1520
1719
|
let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
1521
|
-
constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService) {
|
|
1720
|
+
constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone) {
|
|
1522
1721
|
this.timelineViewService = timelineViewService;
|
|
1523
1722
|
this.scrollSyncService = scrollSyncService;
|
|
1524
1723
|
this.renderer = renderer;
|
|
1525
1724
|
this.mapper = mapper;
|
|
1526
1725
|
this.optionChangesService = optionChangesService;
|
|
1527
1726
|
this.dependencyDomService = dependencyDomService;
|
|
1727
|
+
this.editService = editService;
|
|
1728
|
+
this.localizationService = localizationService;
|
|
1729
|
+
this.hostElement = hostElement;
|
|
1730
|
+
this.zone = zone;
|
|
1528
1731
|
this.hostClasses = true;
|
|
1732
|
+
/**
|
|
1733
|
+
* Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
|
|
1734
|
+
*
|
|
1735
|
+
* > The [`selectable`]({% slug gantt_api_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
|
|
1736
|
+
*/
|
|
1737
|
+
this.isSelected = isSelected;
|
|
1738
|
+
/**
|
|
1739
|
+
* Fires when the Gantt selection is changed through user interaction.
|
|
1740
|
+
*
|
|
1741
|
+
* Holds data about the affected [`items`]({% slug api_gantt_selectionchangeevent %}#toc-items) and the attempted [`action`]({% slug api_gantt_selectionchangeevent %}#toc-action):
|
|
1742
|
+
* - `select` - Triggered on `click` or `ctrl + click` on deselected items.
|
|
1743
|
+
* - `remove` - Triggered on `ctrl + click` on selected items.
|
|
1744
|
+
*/
|
|
1745
|
+
this.selectionChange = new EventEmitter();
|
|
1746
|
+
/**
|
|
1747
|
+
* Enables or disables the Gantt selection mechanism ([see example]({% slug selection_gantt %}#toc-custom-selection)).
|
|
1748
|
+
*
|
|
1749
|
+
* > When set to `true`, the [`isSelected`]({% slug gantt_api_ganttcomponent %}#toc-isselected) callback has to be provided.
|
|
1750
|
+
* > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
|
|
1751
|
+
*/
|
|
1752
|
+
this.selectable = false;
|
|
1529
1753
|
/**
|
|
1530
1754
|
* The position of the toolbar.
|
|
1531
1755
|
*
|
|
@@ -1612,10 +1836,40 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1612
1836
|
* Fires when an item is expanded.
|
|
1613
1837
|
*/
|
|
1614
1838
|
this.rowExpand = new EventEmitter();
|
|
1839
|
+
/**
|
|
1840
|
+
* Fires when a Gantt task in the timeline pane is double-clicked. The data item, associated with the clicked task,
|
|
1841
|
+
* is available in the event data. Use the event handler to open a task editing dialog as necessary.
|
|
1842
|
+
*/
|
|
1843
|
+
this.taskDblClick = new EventEmitter();
|
|
1844
|
+
/**
|
|
1845
|
+
* Fires when the user double clicks a cell.
|
|
1846
|
+
*/
|
|
1847
|
+
this.cellDblClick = new EventEmitter();
|
|
1848
|
+
/**
|
|
1849
|
+
* Fires when the user leaves an edited cell.
|
|
1850
|
+
*/
|
|
1851
|
+
this.cellClose = new EventEmitter();
|
|
1852
|
+
/**
|
|
1853
|
+
* Fires when the end user clicks the `Delete` button in the task editing dialog or the task delete icon.
|
|
1854
|
+
* Use the event handler to open a confirmation dialog when necessary.
|
|
1855
|
+
*/
|
|
1856
|
+
this.taskDelete = new EventEmitter();
|
|
1615
1857
|
/**
|
|
1616
1858
|
* Fires when an item is collapsed.
|
|
1617
1859
|
*/
|
|
1618
1860
|
this.rowCollapse = new EventEmitter();
|
|
1861
|
+
/**
|
|
1862
|
+
* Fires when the user confirms deleting a task.
|
|
1863
|
+
*/
|
|
1864
|
+
this.remove = new EventEmitter();
|
|
1865
|
+
/**
|
|
1866
|
+
* Fires when the user cancels editing a task.
|
|
1867
|
+
*/
|
|
1868
|
+
this.cancel = new EventEmitter();
|
|
1869
|
+
/**
|
|
1870
|
+
* Fires when the user saves an edited task.
|
|
1871
|
+
*/
|
|
1872
|
+
this.save = new EventEmitter();
|
|
1619
1873
|
/**
|
|
1620
1874
|
* Fires when the sorting of the Gantt is changed.
|
|
1621
1875
|
* You have to handle the event yourself and sort the data.
|
|
@@ -1664,12 +1918,28 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1664
1918
|
* Fires when the user changes the locked state of the columns from the column menu or by reordering the columns.
|
|
1665
1919
|
*/
|
|
1666
1920
|
this.columnLockedChange = new EventEmitter();
|
|
1921
|
+
/**
|
|
1922
|
+
* Fires when a cell is clicked.
|
|
1923
|
+
*/
|
|
1924
|
+
this.cellClick = new EventEmitter();
|
|
1925
|
+
/**
|
|
1926
|
+
* Fires when a task is clicked.
|
|
1927
|
+
*/
|
|
1928
|
+
this.taskClick = new EventEmitter();
|
|
1667
1929
|
/**
|
|
1668
1930
|
* @hidden
|
|
1669
1931
|
*
|
|
1670
1932
|
* Used by the GanttExpandableDirective.
|
|
1671
1933
|
*/
|
|
1672
1934
|
this.expandStateChange = new EventEmitter();
|
|
1935
|
+
/**
|
|
1936
|
+
* @hidden
|
|
1937
|
+
*/
|
|
1938
|
+
this.showEditingDialog = false;
|
|
1939
|
+
/**
|
|
1940
|
+
* @hidden
|
|
1941
|
+
*/
|
|
1942
|
+
this.showConfirmationDialog = false;
|
|
1673
1943
|
this._columns = new QueryList();
|
|
1674
1944
|
this._data = [];
|
|
1675
1945
|
this._timelinePaneOptions = Object.assign({}, DEFAULT_TIMELINE_PANE_SETTINGS);
|
|
@@ -1677,7 +1947,9 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1677
1947
|
this._rowClass = rowClassCallback;
|
|
1678
1948
|
this._taskClass = taskClassCallback;
|
|
1679
1949
|
this._activeView = DEFAULT_VIEW;
|
|
1950
|
+
this.rtl = false;
|
|
1680
1951
|
this.optionChangesSubscriptions = new Subscription();
|
|
1952
|
+
this.editServiceSubscription = new Subscription();
|
|
1681
1953
|
validatePackage(packageMetadata);
|
|
1682
1954
|
this.optionChangesSubscriptions.add(this.optionChangesService.viewChanges.subscribe(() => {
|
|
1683
1955
|
this.loadTimelineData();
|
|
@@ -1685,6 +1957,23 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1685
1957
|
this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(() => {
|
|
1686
1958
|
this.treeList.columns.notifyOnChanges();
|
|
1687
1959
|
}));
|
|
1960
|
+
this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(show => this.showEditingDialog = show));
|
|
1961
|
+
this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(() => this.taskDelete.emit()));
|
|
1962
|
+
this.editServiceSubscription.add(this.editService.editEvent.subscribe(args => {
|
|
1963
|
+
this[args.editResultType].emit({
|
|
1964
|
+
formGroup: args.formGroup,
|
|
1965
|
+
item: getEditItem(args.dataItem, this.treeList.view.data, this.mapper),
|
|
1966
|
+
sender: this
|
|
1967
|
+
});
|
|
1968
|
+
this.showConfirmationDialog = this.showEditingDialog = false;
|
|
1969
|
+
this.editService.dataItem = this.editService.formGroup = null;
|
|
1970
|
+
this.updateView();
|
|
1971
|
+
this.dependencyDomService.notifyChanges();
|
|
1972
|
+
}));
|
|
1973
|
+
this.localizationSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
|
|
1974
|
+
this.rtl = rtl;
|
|
1975
|
+
this.direction = this.rtl ? 'rtl' : 'ltr';
|
|
1976
|
+
});
|
|
1688
1977
|
}
|
|
1689
1978
|
get toolbarTemplate() {
|
|
1690
1979
|
if (this._customToolbarTemplate) {
|
|
@@ -1695,6 +1984,9 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1695
1984
|
set toolbarTemplate(customToolbarTemplate) {
|
|
1696
1985
|
this._customToolbarTemplate = customToolbarTemplate;
|
|
1697
1986
|
}
|
|
1987
|
+
get dir() {
|
|
1988
|
+
return this.direction;
|
|
1989
|
+
}
|
|
1698
1990
|
/**
|
|
1699
1991
|
* A query list of all declared columns.
|
|
1700
1992
|
*/
|
|
@@ -1831,6 +2123,15 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1831
2123
|
// TODO: review if this is a performance concern?
|
|
1832
2124
|
return this.timelineViewService.service(this.activeView);
|
|
1833
2125
|
}
|
|
2126
|
+
/**
|
|
2127
|
+
* @hidden
|
|
2128
|
+
*
|
|
2129
|
+
* Retrieves the `isSelected` callback if `selectable` is set to `true`
|
|
2130
|
+
* Otherwise returns the default callback, which always returns `false`.
|
|
2131
|
+
*/
|
|
2132
|
+
get isTaskSelected() {
|
|
2133
|
+
return this.selectable ? this.isSelected : isSelected;
|
|
2134
|
+
}
|
|
1834
2135
|
/**
|
|
1835
2136
|
* @hidden
|
|
1836
2137
|
*
|
|
@@ -1849,6 +2150,12 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1849
2150
|
get viewTypes() {
|
|
1850
2151
|
return this.views.map(view => view.type);
|
|
1851
2152
|
}
|
|
2153
|
+
/**
|
|
2154
|
+
* @hidden
|
|
2155
|
+
*/
|
|
2156
|
+
get editDialogFormGroup() {
|
|
2157
|
+
return this.editService.formGroup;
|
|
2158
|
+
}
|
|
1852
2159
|
ngOnChanges(changes) {
|
|
1853
2160
|
if (anyChanged(['data', 'activeView', 'workWeekStart', 'workWeekEnd', 'workDayStart', 'workDayEnd'], changes)) {
|
|
1854
2161
|
this.loadTimelineData();
|
|
@@ -1868,6 +2175,10 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1868
2175
|
}
|
|
1869
2176
|
ngOnDestroy() {
|
|
1870
2177
|
this.optionChangesSubscriptions.unsubscribe();
|
|
2178
|
+
this.editServiceSubscription.unsubscribe();
|
|
2179
|
+
if (this.localizationSubscription) {
|
|
2180
|
+
this.localizationSubscription.unsubscribe();
|
|
2181
|
+
}
|
|
1871
2182
|
}
|
|
1872
2183
|
/**
|
|
1873
2184
|
* Applies the minimum possible width for the specified column,
|
|
@@ -1915,6 +2226,55 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1915
2226
|
this.treeList.reorderColumn(source, destIndex, options);
|
|
1916
2227
|
}
|
|
1917
2228
|
}
|
|
2229
|
+
/**
|
|
2230
|
+
* Updates the data of the Gantt and forces row-related callbacks to be called anew.
|
|
2231
|
+
*/
|
|
2232
|
+
updateView() {
|
|
2233
|
+
if (isPresent(this.treeList)) {
|
|
2234
|
+
this.treeList.updateView();
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2237
|
+
/**
|
|
2238
|
+
* Opens the task editing dialog.
|
|
2239
|
+
*/
|
|
2240
|
+
editTask(dataItem, formGroup) {
|
|
2241
|
+
if (!this.showEditingDialog) {
|
|
2242
|
+
this.editService.createEditDialog(dataItem, formGroup);
|
|
2243
|
+
}
|
|
2244
|
+
}
|
|
2245
|
+
/**
|
|
2246
|
+
* Closes the task editing dialog.
|
|
2247
|
+
*/
|
|
2248
|
+
closeTaskDialog() {
|
|
2249
|
+
if (this.showEditingDialog) {
|
|
2250
|
+
this.editService.closeEditDialog();
|
|
2251
|
+
}
|
|
2252
|
+
}
|
|
2253
|
+
/**
|
|
2254
|
+
* Opens the delete task confirmation dialog.
|
|
2255
|
+
*/
|
|
2256
|
+
openConfirmationDialog() {
|
|
2257
|
+
this.showConfirmationDialog = true;
|
|
2258
|
+
}
|
|
2259
|
+
/**
|
|
2260
|
+
* Opens a cell for editing.
|
|
2261
|
+
*/
|
|
2262
|
+
editCell(dataItem, column, formGroup) {
|
|
2263
|
+
this.treeList.editCell(dataItem, column, formGroup);
|
|
2264
|
+
}
|
|
2265
|
+
/**
|
|
2266
|
+
* Closes an edited cell.
|
|
2267
|
+
*/
|
|
2268
|
+
closeCell() {
|
|
2269
|
+
this.treeList.closeCell();
|
|
2270
|
+
}
|
|
2271
|
+
/**
|
|
2272
|
+
* @hidden
|
|
2273
|
+
*/
|
|
2274
|
+
handleCellClose(e) {
|
|
2275
|
+
this.cellClose.emit(Object.assign(e, { item: this.editItem, sender: this }));
|
|
2276
|
+
this.dependencyDomService.notifyChanges();
|
|
2277
|
+
}
|
|
1918
2278
|
/**
|
|
1919
2279
|
* @hidden
|
|
1920
2280
|
*/
|
|
@@ -1934,16 +2294,6 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1934
2294
|
this.dependencyDomService.notifyChanges();
|
|
1935
2295
|
}
|
|
1936
2296
|
}
|
|
1937
|
-
/**
|
|
1938
|
-
* @hidden
|
|
1939
|
-
*
|
|
1940
|
-
* Used by the GanttExpandableDirective.
|
|
1941
|
-
*/
|
|
1942
|
-
updateView() {
|
|
1943
|
-
if (isPresent(this.treeList)) {
|
|
1944
|
-
this.treeList.updateView();
|
|
1945
|
-
}
|
|
1946
|
-
}
|
|
1947
2297
|
/**
|
|
1948
2298
|
* @hidden
|
|
1949
2299
|
*/
|
|
@@ -1978,6 +2328,156 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
1978
2328
|
this._timelinePaneOptions.size = e;
|
|
1979
2329
|
this.timelinePaneSizeChange.emit(e);
|
|
1980
2330
|
}
|
|
2331
|
+
/**
|
|
2332
|
+
* @hidden
|
|
2333
|
+
*/
|
|
2334
|
+
handleTimelineRightClick(event) {
|
|
2335
|
+
const target = event.target;
|
|
2336
|
+
const gantt = this.hostElement.nativeElement;
|
|
2337
|
+
if (!isTask(target, gantt) || isClearButton(target, gantt)) {
|
|
2338
|
+
return;
|
|
2339
|
+
}
|
|
2340
|
+
if (hasObservers(this.taskClick)) {
|
|
2341
|
+
const taskIndex = getClosestTaskIndex(target, gantt);
|
|
2342
|
+
const task = this.renderedTreeListItems[taskIndex];
|
|
2343
|
+
this.zone.run(() => this.emitTaskClick(event, task, taskIndex));
|
|
2344
|
+
}
|
|
2345
|
+
}
|
|
2346
|
+
/**
|
|
2347
|
+
* @hidden
|
|
2348
|
+
*/
|
|
2349
|
+
handleTimelineClick(event) {
|
|
2350
|
+
const target = event.target;
|
|
2351
|
+
const gantt = this.hostElement.nativeElement;
|
|
2352
|
+
if (!isTask(target, gantt) || isClearButton(target, gantt)) {
|
|
2353
|
+
return;
|
|
2354
|
+
}
|
|
2355
|
+
const taskIndex = getClosestTaskIndex(target, gantt);
|
|
2356
|
+
const task = this.renderedTreeListItems[taskIndex];
|
|
2357
|
+
const selectionAction = this.getSelectionAction(event, task);
|
|
2358
|
+
if ((hasObservers(this.selectionChange) && !this.isSameSelection(selectionAction, task)) ||
|
|
2359
|
+
hasObservers(this.taskClick)) {
|
|
2360
|
+
this.zone.run(() => {
|
|
2361
|
+
this.emitSelectionChange(task, selectionAction);
|
|
2362
|
+
this.emitTaskClick(event, task, taskIndex);
|
|
2363
|
+
});
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
/**
|
|
2367
|
+
* @hidden
|
|
2368
|
+
*/
|
|
2369
|
+
handleTreeListDoubleClick(event) {
|
|
2370
|
+
if (!isPresent(this.lastTreeListCellClick) || event.target !== this.lastTreeListCellClick.originalEvent.target) {
|
|
2371
|
+
return;
|
|
2372
|
+
}
|
|
2373
|
+
this.editItem = getEditItem(this.lastTreeListCellClick.dataItem, this.treeList.view.data, this.mapper);
|
|
2374
|
+
if (hasObservers(this.cellDblClick)) {
|
|
2375
|
+
this.zone.run(() => {
|
|
2376
|
+
this.cellDblClick.emit({
|
|
2377
|
+
column: this.lastTreeListCellClick.column,
|
|
2378
|
+
columnIndex: this.lastTreeListCellClick.columnIndex,
|
|
2379
|
+
dataItem: this.lastTreeListCellClick.dataItem,
|
|
2380
|
+
isEdited: this.lastTreeListCellClick.isEdited,
|
|
2381
|
+
originalEvent: this.lastTreeListCellClick.originalEvent,
|
|
2382
|
+
rowIndex: this.lastTreeListCellClick.rowIndex,
|
|
2383
|
+
type: 'dblclick',
|
|
2384
|
+
sender: this
|
|
2385
|
+
});
|
|
2386
|
+
});
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
/**
|
|
2390
|
+
* @hidden
|
|
2391
|
+
*/
|
|
2392
|
+
handleTreeListSelectionChange(event) {
|
|
2393
|
+
// prevent selection change from right-click
|
|
2394
|
+
if (isPresent(this.lastTreeListCellClick) && this.lastTreeListCellClick.type === 'contextmenu') {
|
|
2395
|
+
return;
|
|
2396
|
+
}
|
|
2397
|
+
const task = event.items.map(item => item.dataItem)[0]; // single selection only currently available
|
|
2398
|
+
const action = event.action;
|
|
2399
|
+
this.emitSelectionChange(task, action);
|
|
2400
|
+
}
|
|
2401
|
+
/**
|
|
2402
|
+
* @hidden
|
|
2403
|
+
*/
|
|
2404
|
+
handleTreeListCellClick(event) {
|
|
2405
|
+
this.lastTreeListCellClick = event;
|
|
2406
|
+
this.cellClick.emit({
|
|
2407
|
+
column: event.column,
|
|
2408
|
+
columnIndex: event.columnIndex,
|
|
2409
|
+
dataItem: event.dataItem,
|
|
2410
|
+
isEdited: event.isEdited,
|
|
2411
|
+
originalEvent: event.originalEvent,
|
|
2412
|
+
rowIndex: event.rowIndex,
|
|
2413
|
+
type: event.type,
|
|
2414
|
+
sender: this
|
|
2415
|
+
});
|
|
2416
|
+
}
|
|
2417
|
+
/**
|
|
2418
|
+
* @hidden
|
|
2419
|
+
*/
|
|
2420
|
+
handleDeleteConfirmation() {
|
|
2421
|
+
this.editService.triggerEditEvent('remove');
|
|
2422
|
+
}
|
|
2423
|
+
/**
|
|
2424
|
+
* @hidden
|
|
2425
|
+
*/
|
|
2426
|
+
handleTimelineMouseDown(event) {
|
|
2427
|
+
const target = event.target;
|
|
2428
|
+
const gantt = this.hostElement.nativeElement;
|
|
2429
|
+
if (!isTask(target, gantt) || isClearButton(target, gantt)) {
|
|
2430
|
+
return;
|
|
2431
|
+
}
|
|
2432
|
+
event.preventDefault();
|
|
2433
|
+
}
|
|
2434
|
+
/**
|
|
2435
|
+
* @hidden
|
|
2436
|
+
*/
|
|
2437
|
+
handleTimelineDblClick(event) {
|
|
2438
|
+
const target = event.target;
|
|
2439
|
+
const gantt = this.hostElement.nativeElement;
|
|
2440
|
+
if (!isTask(target, gantt) || isClearButton(target, gantt)) {
|
|
2441
|
+
return;
|
|
2442
|
+
}
|
|
2443
|
+
if (hasObservers(this.taskDblClick)) {
|
|
2444
|
+
const taskIndex = getClosestTaskIndex(target, gantt);
|
|
2445
|
+
const task = this.renderedTreeListItems[taskIndex];
|
|
2446
|
+
this.zone.run(() => this.taskDblClick.emit({
|
|
2447
|
+
dataItem: task,
|
|
2448
|
+
originalEvent: event,
|
|
2449
|
+
sender: this,
|
|
2450
|
+
rowIndex: taskIndex,
|
|
2451
|
+
type: 'dblclick'
|
|
2452
|
+
}));
|
|
2453
|
+
}
|
|
2454
|
+
}
|
|
2455
|
+
/**
|
|
2456
|
+
* @hidden
|
|
2457
|
+
*/
|
|
2458
|
+
getText(token) {
|
|
2459
|
+
return this.localizationService.get(token);
|
|
2460
|
+
}
|
|
2461
|
+
emitTaskClick(event, dataItem, itemIndex) {
|
|
2462
|
+
this.taskClick.emit({
|
|
2463
|
+
originalEvent: event,
|
|
2464
|
+
dataItem: dataItem,
|
|
2465
|
+
rowIndex: itemIndex,
|
|
2466
|
+
type: event.type,
|
|
2467
|
+
sender: this
|
|
2468
|
+
});
|
|
2469
|
+
}
|
|
2470
|
+
emitSelectionChange(dataItem, action) {
|
|
2471
|
+
if (this.isSameSelection(action, dataItem)) {
|
|
2472
|
+
return;
|
|
2473
|
+
}
|
|
2474
|
+
this.selectionChange.emit({
|
|
2475
|
+
action: action,
|
|
2476
|
+
items: [dataItem],
|
|
2477
|
+
sender: this
|
|
2478
|
+
});
|
|
2479
|
+
this.updateView();
|
|
2480
|
+
}
|
|
1981
2481
|
updateTreeListGroupClass(columns = this.columns) {
|
|
1982
2482
|
if (!isPresent(this.treeList)) {
|
|
1983
2483
|
return;
|
|
@@ -2004,6 +2504,13 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
|
|
|
2004
2504
|
}
|
|
2005
2505
|
return this.views.find(view => view.type === this.activeView);
|
|
2006
2506
|
}
|
|
2507
|
+
isSameSelection(action, dataItem) {
|
|
2508
|
+
return action === 'select' && this.isSelected(dataItem);
|
|
2509
|
+
}
|
|
2510
|
+
getSelectionAction({ ctrlKey, metaKey }, dataItem) {
|
|
2511
|
+
const shouldToggleSelection = ctrlKey || metaKey;
|
|
2512
|
+
return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
|
|
2513
|
+
}
|
|
2007
2514
|
};
|
|
2008
2515
|
__decorate([
|
|
2009
2516
|
ViewChild(TreeListComponent, { static: true }),
|
|
@@ -2029,6 +2536,11 @@ __decorate([
|
|
|
2029
2536
|
HostBinding('class.k-gantt'),
|
|
2030
2537
|
__metadata("design:type", Boolean)
|
|
2031
2538
|
], GanttComponent.prototype, "hostClasses", void 0);
|
|
2539
|
+
__decorate([
|
|
2540
|
+
HostBinding('attr.dir'),
|
|
2541
|
+
__metadata("design:type", String),
|
|
2542
|
+
__metadata("design:paramtypes", [])
|
|
2543
|
+
], GanttComponent.prototype, "dir", null);
|
|
2032
2544
|
__decorate([
|
|
2033
2545
|
ContentChildren(GanttColumnBase),
|
|
2034
2546
|
__metadata("design:type", QueryList),
|
|
@@ -2058,6 +2570,18 @@ __decorate([
|
|
|
2058
2570
|
__metadata("design:type", Array),
|
|
2059
2571
|
__metadata("design:paramtypes", [Array])
|
|
2060
2572
|
], GanttComponent.prototype, "data", null);
|
|
2573
|
+
__decorate([
|
|
2574
|
+
Input(),
|
|
2575
|
+
__metadata("design:type", Function)
|
|
2576
|
+
], GanttComponent.prototype, "isSelected", void 0);
|
|
2577
|
+
__decorate([
|
|
2578
|
+
Output(),
|
|
2579
|
+
__metadata("design:type", EventEmitter)
|
|
2580
|
+
], GanttComponent.prototype, "selectionChange", void 0);
|
|
2581
|
+
__decorate([
|
|
2582
|
+
Input(),
|
|
2583
|
+
__metadata("design:type", Boolean)
|
|
2584
|
+
], GanttComponent.prototype, "selectable", void 0);
|
|
2061
2585
|
__decorate([
|
|
2062
2586
|
Input(),
|
|
2063
2587
|
__metadata("design:type", String)
|
|
@@ -2150,10 +2674,38 @@ __decorate([
|
|
|
2150
2674
|
Output(),
|
|
2151
2675
|
__metadata("design:type", EventEmitter)
|
|
2152
2676
|
], GanttComponent.prototype, "rowExpand", void 0);
|
|
2677
|
+
__decorate([
|
|
2678
|
+
Output(),
|
|
2679
|
+
__metadata("design:type", EventEmitter)
|
|
2680
|
+
], GanttComponent.prototype, "taskDblClick", void 0);
|
|
2681
|
+
__decorate([
|
|
2682
|
+
Output(),
|
|
2683
|
+
__metadata("design:type", EventEmitter)
|
|
2684
|
+
], GanttComponent.prototype, "cellDblClick", void 0);
|
|
2685
|
+
__decorate([
|
|
2686
|
+
Output(),
|
|
2687
|
+
__metadata("design:type", EventEmitter)
|
|
2688
|
+
], GanttComponent.prototype, "cellClose", void 0);
|
|
2689
|
+
__decorate([
|
|
2690
|
+
Output(),
|
|
2691
|
+
__metadata("design:type", EventEmitter)
|
|
2692
|
+
], GanttComponent.prototype, "taskDelete", void 0);
|
|
2153
2693
|
__decorate([
|
|
2154
2694
|
Output(),
|
|
2155
2695
|
__metadata("design:type", EventEmitter)
|
|
2156
2696
|
], GanttComponent.prototype, "rowCollapse", void 0);
|
|
2697
|
+
__decorate([
|
|
2698
|
+
Output(),
|
|
2699
|
+
__metadata("design:type", EventEmitter)
|
|
2700
|
+
], GanttComponent.prototype, "remove", void 0);
|
|
2701
|
+
__decorate([
|
|
2702
|
+
Output(),
|
|
2703
|
+
__metadata("design:type", EventEmitter)
|
|
2704
|
+
], GanttComponent.prototype, "cancel", void 0);
|
|
2705
|
+
__decorate([
|
|
2706
|
+
Output(),
|
|
2707
|
+
__metadata("design:type", EventEmitter)
|
|
2708
|
+
], GanttComponent.prototype, "save", void 0);
|
|
2157
2709
|
__decorate([
|
|
2158
2710
|
Output(),
|
|
2159
2711
|
__metadata("design:type", EventEmitter)
|
|
@@ -2198,10 +2750,20 @@ __decorate([
|
|
|
2198
2750
|
Output(),
|
|
2199
2751
|
__metadata("design:type", EventEmitter)
|
|
2200
2752
|
], GanttComponent.prototype, "columnLockedChange", void 0);
|
|
2201
|
-
|
|
2202
|
-
|
|
2753
|
+
__decorate([
|
|
2754
|
+
Output(),
|
|
2755
|
+
__metadata("design:type", EventEmitter)
|
|
2756
|
+
], GanttComponent.prototype, "cellClick", void 0);
|
|
2757
|
+
__decorate([
|
|
2758
|
+
Output(),
|
|
2759
|
+
__metadata("design:type", EventEmitter)
|
|
2760
|
+
], GanttComponent.prototype, "taskClick", void 0);
|
|
2761
|
+
GanttComponent = GanttComponent_1 = __decorate([
|
|
2762
|
+
Component({
|
|
2203
2763
|
selector: 'kendo-gantt',
|
|
2764
|
+
exportAs: 'kendoGantt',
|
|
2204
2765
|
providers: [
|
|
2766
|
+
LocalizationService,
|
|
2205
2767
|
{
|
|
2206
2768
|
provide: DataBoundTreeComponent,
|
|
2207
2769
|
useExisting: forwardRef(() => GanttComponent_1)
|
|
@@ -2217,9 +2779,181 @@ GanttComponent = GanttComponent_1 = __decorate([
|
|
|
2217
2779
|
ScrollSyncService,
|
|
2218
2780
|
DependencyDomService,
|
|
2219
2781
|
MappingService,
|
|
2220
|
-
OptionChangesService
|
|
2782
|
+
OptionChangesService,
|
|
2783
|
+
EditService
|
|
2221
2784
|
],
|
|
2222
2785
|
template: `
|
|
2786
|
+
<ng-container kendoGanttLocalizedMessages
|
|
2787
|
+
i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
|
|
2788
|
+
taskDeleteLabel="Delete"
|
|
2789
|
+
|
|
2790
|
+
i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
|
|
2791
|
+
taskEditingDialogTitle="Editing Task"
|
|
2792
|
+
|
|
2793
|
+
i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
|
|
2794
|
+
taskEditingDialogCloseTitle="Close"
|
|
2795
|
+
|
|
2796
|
+
i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
|
|
2797
|
+
confirmationDialogCloseTitle="Close"
|
|
2798
|
+
|
|
2799
|
+
i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
|
|
2800
|
+
confirmationDialogTitle="Delete Task"
|
|
2801
|
+
|
|
2802
|
+
i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
|
|
2803
|
+
confirmationDialogContent="Are you sure you want to delete this task?"
|
|
2804
|
+
|
|
2805
|
+
i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
|
|
2806
|
+
deleteButtonText="Delete"
|
|
2807
|
+
|
|
2808
|
+
i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
|
|
2809
|
+
cancelButtonText="Cancel"
|
|
2810
|
+
|
|
2811
|
+
i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
|
|
2812
|
+
saveButtonText="Save"
|
|
2813
|
+
|
|
2814
|
+
i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
|
|
2815
|
+
titleFieldInputLabel="Title"
|
|
2816
|
+
|
|
2817
|
+
i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
|
|
2818
|
+
startFieldInputLabel="Start"
|
|
2819
|
+
|
|
2820
|
+
i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
|
|
2821
|
+
endFieldInputLabel="End"
|
|
2822
|
+
|
|
2823
|
+
i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
|
|
2824
|
+
completionRatioFieldInputLabel="Progress"
|
|
2825
|
+
|
|
2826
|
+
i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
|
|
2827
|
+
dayViewText="Day"
|
|
2828
|
+
|
|
2829
|
+
i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
|
|
2830
|
+
weekViewText="Week"
|
|
2831
|
+
|
|
2832
|
+
i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
|
|
2833
|
+
monthViewText="Month"
|
|
2834
|
+
|
|
2835
|
+
i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
|
|
2836
|
+
yearViewText="Year"
|
|
2837
|
+
|
|
2838
|
+
i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
|
|
2839
|
+
noRecords="No records available."
|
|
2840
|
+
|
|
2841
|
+
i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
|
|
2842
|
+
filter="Filter"
|
|
2843
|
+
|
|
2844
|
+
i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
|
|
2845
|
+
filterEqOperator="Is equal to"
|
|
2846
|
+
|
|
2847
|
+
i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
|
|
2848
|
+
filterNotEqOperator="Is not equal to"
|
|
2849
|
+
|
|
2850
|
+
i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
|
|
2851
|
+
filterIsNullOperator="Is null"
|
|
2852
|
+
|
|
2853
|
+
i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
2854
|
+
filterIsNotNullOperator="Is not null"
|
|
2855
|
+
|
|
2856
|
+
i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
2857
|
+
filterIsEmptyOperator="Is empty"
|
|
2858
|
+
|
|
2859
|
+
i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
2860
|
+
filterIsNotEmptyOperator="Is not empty"
|
|
2861
|
+
|
|
2862
|
+
i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
|
|
2863
|
+
filterStartsWithOperator="Starts with"
|
|
2864
|
+
|
|
2865
|
+
i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
|
|
2866
|
+
filterContainsOperator="Contains"
|
|
2867
|
+
|
|
2868
|
+
i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
2869
|
+
filterNotContainsOperator="Does not contain"
|
|
2870
|
+
|
|
2871
|
+
i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
|
|
2872
|
+
filterEndsWithOperator="Ends with"
|
|
2873
|
+
|
|
2874
|
+
i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
|
|
2875
|
+
filterGteOperator="Is greater than or equal to"
|
|
2876
|
+
|
|
2877
|
+
i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
|
|
2878
|
+
filterGtOperator="Is greater than"
|
|
2879
|
+
|
|
2880
|
+
i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
|
|
2881
|
+
filterLteOperator="Is less than or equal to"
|
|
2882
|
+
|
|
2883
|
+
i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
|
|
2884
|
+
filterLtOperator="Is less than"
|
|
2885
|
+
|
|
2886
|
+
i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
2887
|
+
filterIsTrue="Is True"
|
|
2888
|
+
|
|
2889
|
+
i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
2890
|
+
filterIsFalse="Is False"
|
|
2891
|
+
|
|
2892
|
+
i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
|
|
2893
|
+
filterBooleanAll="(All)"
|
|
2894
|
+
|
|
2895
|
+
i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
2896
|
+
filterAfterOrEqualOperator="Is after or equal to"
|
|
2897
|
+
|
|
2898
|
+
i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
|
|
2899
|
+
filterAfterOperator="Is after"
|
|
2900
|
+
|
|
2901
|
+
i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
|
|
2902
|
+
filterBeforeOperator="Is before"
|
|
2903
|
+
|
|
2904
|
+
i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
2905
|
+
filterBeforeOrEqualOperator="Is before or equal to"
|
|
2906
|
+
|
|
2907
|
+
i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
|
|
2908
|
+
filterFilterButton="Filter"
|
|
2909
|
+
|
|
2910
|
+
i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
|
|
2911
|
+
filterClearButton="Clear"
|
|
2912
|
+
|
|
2913
|
+
i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
|
|
2914
|
+
filterAndLogic="And"
|
|
2915
|
+
|
|
2916
|
+
i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
|
|
2917
|
+
filterOrLogic="Or"
|
|
2918
|
+
|
|
2919
|
+
i18n-loading="kendo.gantt.loading|The loading text"
|
|
2920
|
+
loading="Loading"
|
|
2921
|
+
|
|
2922
|
+
i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
|
|
2923
|
+
columnMenu="Column Menu"
|
|
2924
|
+
|
|
2925
|
+
i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
|
|
2926
|
+
columns="Columns"
|
|
2927
|
+
|
|
2928
|
+
i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
|
|
2929
|
+
lock-disabled="Lock"
|
|
2930
|
+
|
|
2931
|
+
i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
|
|
2932
|
+
unlock-disabled="Unlock"
|
|
2933
|
+
|
|
2934
|
+
i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
|
|
2935
|
+
sortable="Sortable"
|
|
2936
|
+
|
|
2937
|
+
i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
2938
|
+
sortAscending="Sort Ascending"
|
|
2939
|
+
|
|
2940
|
+
i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
|
|
2941
|
+
sortDescending="Sort Descending"
|
|
2942
|
+
|
|
2943
|
+
i18n-sortedAscending="kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending"
|
|
2944
|
+
sortedAscending="Sorted Ascending"
|
|
2945
|
+
|
|
2946
|
+
i18n-sortedDescending="kendo.gantt.sortedDescending|The status announcement when a column is sorted descending"
|
|
2947
|
+
sortedDescending="Sorted Descending"
|
|
2948
|
+
|
|
2949
|
+
i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
|
|
2950
|
+
sortedDefault="Not Sorted"
|
|
2951
|
+
|
|
2952
|
+
i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
2953
|
+
columnsApply="Apply"
|
|
2954
|
+
|
|
2955
|
+
i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
2956
|
+
columnsReset="Reset"></ng-container>
|
|
2223
2957
|
<kendo-gantt-toolbar
|
|
2224
2958
|
*ngIf="showToolbar('top')"
|
|
2225
2959
|
class="k-gantt-header k-toolbar k-gantt-toolbar"
|
|
@@ -2244,6 +2978,8 @@ GanttComponent = GanttComponent_1 = __decorate([
|
|
|
2244
2978
|
[reorderable]="columnsReorderable"
|
|
2245
2979
|
[resizable]="columnsResizable"
|
|
2246
2980
|
[rowClass]="rowClass"
|
|
2981
|
+
[isSelected]="isSelected"
|
|
2982
|
+
[selectable]="selectable"
|
|
2247
2983
|
[sortable]="sortable"
|
|
2248
2984
|
[sort]="sort"
|
|
2249
2985
|
[filterable]="filterMenu"
|
|
@@ -2261,7 +2997,15 @@ GanttComponent = GanttComponent_1 = __decorate([
|
|
|
2261
2997
|
(columnResize)="columnResize.emit($event)"
|
|
2262
2998
|
(columnVisibilityChange)="handleColumnVisibilityChange($event)"
|
|
2263
2999
|
(columnLockedChange)="columnLockedChange.emit($event)"
|
|
3000
|
+
(selectionChange)="handleTreeListSelectionChange($event)"
|
|
3001
|
+
(cellClick)="handleTreeListCellClick($event)"
|
|
3002
|
+
(cellClose)="handleCellClose($event)"
|
|
3003
|
+
[kendoEventsOutsideAngular]="{
|
|
3004
|
+
dblclick: handleTreeListDoubleClick
|
|
3005
|
+
}"
|
|
3006
|
+
[scope]="this"
|
|
2264
3007
|
>
|
|
3008
|
+
<kendo-treelist-messages [kendoGanttTreeListMessages]="localizationService"></kendo-treelist-messages>
|
|
2265
3009
|
</kendo-treelist>
|
|
2266
3010
|
</kendo-splitter-pane>
|
|
2267
3011
|
<kendo-splitter-pane
|
|
@@ -2287,6 +3031,14 @@ GanttComponent = GanttComponent_1 = __decorate([
|
|
|
2287
3031
|
[taskClass]="taskClass"
|
|
2288
3032
|
[dependencies]="dependencies"
|
|
2289
3033
|
[hasChildren]="hasChildren"
|
|
3034
|
+
[isTaskSelected]="isTaskSelected"
|
|
3035
|
+
[kendoEventsOutsideAngular]="{
|
|
3036
|
+
click: handleTimelineClick,
|
|
3037
|
+
contextmenu: handleTimelineRightClick,
|
|
3038
|
+
dblclick: handleTimelineDblClick,
|
|
3039
|
+
mousedown: handleTimelineMouseDown
|
|
3040
|
+
}"
|
|
3041
|
+
[scope]="this"
|
|
2290
3042
|
></kendo-gantt-timeline>
|
|
2291
3043
|
</kendo-splitter-pane>
|
|
2292
3044
|
</kendo-splitter>
|
|
@@ -2295,6 +3047,20 @@ GanttComponent = GanttComponent_1 = __decorate([
|
|
|
2295
3047
|
*ngIf="showToolbar('bottom')"
|
|
2296
3048
|
class="k-gantt-footer k-toolbar k-gantt-toolbar"
|
|
2297
3049
|
position="bottom"></kendo-gantt-toolbar>
|
|
3050
|
+
<kendo-gantt-edit-dialog *ngIf="showEditingDialog" [formGroup]="editDialogFormGroup"></kendo-gantt-edit-dialog>
|
|
3051
|
+
<kendo-dialog
|
|
3052
|
+
*ngIf="showConfirmationDialog"
|
|
3053
|
+
[width]="575"
|
|
3054
|
+
[height]="170"
|
|
3055
|
+
[title]="getText('confirmationDialogTitle')"
|
|
3056
|
+
(close)="showConfirmationDialog = false;">
|
|
3057
|
+
<span>{{getText('confirmationDialogContent')}}</span>
|
|
3058
|
+
<kendo-dialog-actions layout="normal">
|
|
3059
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
3060
|
+
<button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
|
|
3061
|
+
<button kendoButton (click)="showConfirmationDialog = false;">{{ getText('cancelButtonText') }}</button>
|
|
3062
|
+
</kendo-dialog-actions>
|
|
3063
|
+
</kendo-dialog>
|
|
2298
3064
|
`
|
|
2299
3065
|
}),
|
|
2300
3066
|
__metadata("design:paramtypes", [TimelineViewService,
|
|
@@ -2302,7 +3068,11 @@ GanttComponent = GanttComponent_1 = __decorate([
|
|
|
2302
3068
|
Renderer2,
|
|
2303
3069
|
MappingService,
|
|
2304
3070
|
OptionChangesService,
|
|
2305
|
-
DependencyDomService
|
|
3071
|
+
DependencyDomService,
|
|
3072
|
+
EditService,
|
|
3073
|
+
LocalizationService,
|
|
3074
|
+
ElementRef,
|
|
3075
|
+
NgZone])
|
|
2306
3076
|
], GanttComponent);
|
|
2307
3077
|
|
|
2308
3078
|
/**
|
|
@@ -2397,6 +3167,10 @@ __decorate([
|
|
|
2397
3167
|
Input(),
|
|
2398
3168
|
__metadata("design:type", Function)
|
|
2399
3169
|
], GanttTimelineComponent.prototype, "taskClass", void 0);
|
|
3170
|
+
__decorate([
|
|
3171
|
+
Input(),
|
|
3172
|
+
__metadata("design:type", Function)
|
|
3173
|
+
], GanttTimelineComponent.prototype, "isTaskSelected", void 0);
|
|
2400
3174
|
__decorate([
|
|
2401
3175
|
Input(),
|
|
2402
3176
|
__metadata("design:type", Function)
|
|
@@ -2476,6 +3250,7 @@ GanttTimelineComponent = __decorate([
|
|
|
2476
3250
|
[summaryTaskTemplate]="summaryTaskTemplate"
|
|
2477
3251
|
[taskClass]="taskClass"
|
|
2478
3252
|
[hasChildren]="hasChildren"
|
|
3253
|
+
[isTaskSelected]="isTaskSelected"
|
|
2479
3254
|
>
|
|
2480
3255
|
</tbody>
|
|
2481
3256
|
</table>
|
|
@@ -2549,17 +3324,23 @@ __decorate([
|
|
|
2549
3324
|
Input(),
|
|
2550
3325
|
__metadata("design:type", Function)
|
|
2551
3326
|
], GanttTasksTableBodyComponent.prototype, "hasChildren", void 0);
|
|
3327
|
+
__decorate([
|
|
3328
|
+
Input(),
|
|
3329
|
+
__metadata("design:type", Function)
|
|
3330
|
+
], GanttTasksTableBodyComponent.prototype, "isTaskSelected", void 0);
|
|
2552
3331
|
GanttTasksTableBodyComponent = __decorate([
|
|
2553
3332
|
Component({
|
|
2554
3333
|
selector: '[kendoGanttTasksTableBody]',
|
|
2555
3334
|
template: `
|
|
2556
|
-
<tr #timelineRow *ngFor="let item of rows">
|
|
3335
|
+
<tr #timelineRow *ngFor="let item of rows; let index = index">
|
|
2557
3336
|
<td>
|
|
2558
3337
|
<kendo-gantt-milestone-task
|
|
2559
3338
|
*ngIf="isMileStone(item); else task"
|
|
2560
3339
|
[dataItem]="item"
|
|
2561
3340
|
[activeView]="activeView"
|
|
2562
3341
|
[taskClass]="taskClass"
|
|
3342
|
+
[isSelected]="isTaskSelected"
|
|
3343
|
+
[index]="index"
|
|
2563
3344
|
>
|
|
2564
3345
|
</kendo-gantt-milestone-task>
|
|
2565
3346
|
<ng-template #task>
|
|
@@ -2569,6 +3350,8 @@ GanttTasksTableBodyComponent = __decorate([
|
|
|
2569
3350
|
[template]="summaryTaskTemplate"
|
|
2570
3351
|
[activeView]="activeView"
|
|
2571
3352
|
[taskClass]="taskClass"
|
|
3353
|
+
[isSelected]="isTaskSelected"
|
|
3354
|
+
[index]="index"
|
|
2572
3355
|
>
|
|
2573
3356
|
</kendo-gantt-summary-task>
|
|
2574
3357
|
<kendo-gantt-task
|
|
@@ -2578,6 +3361,8 @@ GanttTasksTableBodyComponent = __decorate([
|
|
|
2578
3361
|
[taskTemplate]="taskTemplate"
|
|
2579
3362
|
[activeView]="activeView"
|
|
2580
3363
|
[taskClass]="taskClass"
|
|
3364
|
+
[isSelected]="isTaskSelected"
|
|
3365
|
+
[index]="index"
|
|
2581
3366
|
>
|
|
2582
3367
|
</kendo-gantt-task>
|
|
2583
3368
|
</ng-template>
|
|
@@ -2695,6 +3480,14 @@ __decorate([
|
|
|
2695
3480
|
Input(),
|
|
2696
3481
|
__metadata("design:type", Object)
|
|
2697
3482
|
], GanttTaskBase.prototype, "dataItem", void 0);
|
|
3483
|
+
__decorate([
|
|
3484
|
+
Input(),
|
|
3485
|
+
__metadata("design:type", Number)
|
|
3486
|
+
], GanttTaskBase.prototype, "index", void 0);
|
|
3487
|
+
__decorate([
|
|
3488
|
+
Input(),
|
|
3489
|
+
__metadata("design:type", Function)
|
|
3490
|
+
], GanttTaskBase.prototype, "isSelected", void 0);
|
|
2698
3491
|
__decorate([
|
|
2699
3492
|
Input(),
|
|
2700
3493
|
__metadata("design:type", String)
|
|
@@ -2709,8 +3502,13 @@ var GanttTaskComponent_1;
|
|
|
2709
3502
|
* @hidden
|
|
2710
3503
|
*/
|
|
2711
3504
|
let GanttTaskComponent = GanttTaskComponent_1 = class GanttTaskComponent extends GanttTaskBase {
|
|
2712
|
-
constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr) {
|
|
3505
|
+
constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, editService) {
|
|
2713
3506
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr);
|
|
3507
|
+
this.editService = editService;
|
|
3508
|
+
}
|
|
3509
|
+
onTaskDelete() {
|
|
3510
|
+
this.editService.dataItem = this.dataItem;
|
|
3511
|
+
this.editService.showConfirmationDialog.next();
|
|
2714
3512
|
}
|
|
2715
3513
|
};
|
|
2716
3514
|
__decorate([
|
|
@@ -2738,6 +3536,8 @@ GanttTaskComponent = GanttTaskComponent_1 = __decorate([
|
|
|
2738
3536
|
[style.width.px]="taskWidth"
|
|
2739
3537
|
[style.left.px]="taskOffset"
|
|
2740
3538
|
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
3539
|
+
[attr.data-task-index]="index"
|
|
3540
|
+
[class.k-state-selected]="isSelected(dataItem)"
|
|
2741
3541
|
>
|
|
2742
3542
|
<ng-container *ngIf="!taskTemplate">
|
|
2743
3543
|
<div
|
|
@@ -2757,6 +3557,13 @@ GanttTaskComponent = GanttTaskComponent_1 = __decorate([
|
|
|
2757
3557
|
>
|
|
2758
3558
|
</ng-template>
|
|
2759
3559
|
</div>
|
|
3560
|
+
<span class="k-task-actions">
|
|
3561
|
+
<span
|
|
3562
|
+
(click)="onTaskDelete()"
|
|
3563
|
+
class="k-link k-task-delete">
|
|
3564
|
+
<span class="k-icon k-i-close"></span>
|
|
3565
|
+
</span>
|
|
3566
|
+
</span>
|
|
2760
3567
|
</div>
|
|
2761
3568
|
</ng-container>
|
|
2762
3569
|
<ng-template
|
|
@@ -2775,7 +3582,8 @@ GanttTaskComponent = GanttTaskComponent_1 = __decorate([
|
|
|
2775
3582
|
TimelineViewService,
|
|
2776
3583
|
DependencyDomService,
|
|
2777
3584
|
OptionChangesService,
|
|
2778
|
-
ChangeDetectorRef
|
|
3585
|
+
ChangeDetectorRef,
|
|
3586
|
+
EditService])
|
|
2779
3587
|
], GanttTaskComponent);
|
|
2780
3588
|
|
|
2781
3589
|
var GanttSummaryTaskComponent_1;
|
|
@@ -2813,6 +3621,8 @@ GanttSummaryTaskComponent = GanttSummaryTaskComponent_1 = __decorate([
|
|
|
2813
3621
|
[style.width.px]="taskWidth"
|
|
2814
3622
|
[style.left.px]="taskOffset"
|
|
2815
3623
|
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
3624
|
+
[attr.data-task-index]="index"
|
|
3625
|
+
[class.k-state-selected]="isSelected(dataItem)"
|
|
2816
3626
|
>
|
|
2817
3627
|
<div *ngIf="!template; else summaryTemplate"
|
|
2818
3628
|
class="k-task-summary-progress"
|
|
@@ -2872,6 +3682,8 @@ GanttMilestoneTaskComponent = GanttMilestoneTaskComponent_1 = __decorate([
|
|
|
2872
3682
|
[ngClass]="taskClass(dataItem)"
|
|
2873
3683
|
[style.left.px]="taskOffset"
|
|
2874
3684
|
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
3685
|
+
[class.k-state-selected]="isSelected(dataItem)"
|
|
3686
|
+
[attr.data-task-index]="index"
|
|
2875
3687
|
>
|
|
2876
3688
|
</div>
|
|
2877
3689
|
`
|
|
@@ -2959,6 +3771,119 @@ GanttExpandableDirective = __decorate([
|
|
|
2959
3771
|
})
|
|
2960
3772
|
], GanttExpandableDirective);
|
|
2961
3773
|
|
|
3774
|
+
/**
|
|
3775
|
+
* A directive which handles the [`selectionChange`]({% slug api_gantt_ganttcomponent %}#toc-selectionchange) event of the Gantt
|
|
3776
|
+
* ([see example]({% slug selection_gantt %}#toc-built-in-directive))
|
|
3777
|
+
*/
|
|
3778
|
+
let SelectableDirective = class SelectableDirective {
|
|
3779
|
+
constructor(gantt) {
|
|
3780
|
+
this.gantt = gantt;
|
|
3781
|
+
/**
|
|
3782
|
+
* Fires when the selected keys are changed.
|
|
3783
|
+
*/
|
|
3784
|
+
this.selectedKeysChange = new EventEmitter();
|
|
3785
|
+
this.state = new Set();
|
|
3786
|
+
this.isSelected = this.isSelected.bind(this);
|
|
3787
|
+
this.selectionChange = this.selectionChange.bind(this);
|
|
3788
|
+
this.selectable = true;
|
|
3789
|
+
}
|
|
3790
|
+
/**
|
|
3791
|
+
* @hidden
|
|
3792
|
+
*/
|
|
3793
|
+
set selectable(value) {
|
|
3794
|
+
if (value) {
|
|
3795
|
+
this.gantt.isSelected = this.isSelected;
|
|
3796
|
+
this.subscribeSelection();
|
|
3797
|
+
}
|
|
3798
|
+
else {
|
|
3799
|
+
this.gantt.isSelected = () => false;
|
|
3800
|
+
this.unsubscribeSelection();
|
|
3801
|
+
}
|
|
3802
|
+
this.gantt.selectable = value;
|
|
3803
|
+
this.gantt.updateView();
|
|
3804
|
+
}
|
|
3805
|
+
/**
|
|
3806
|
+
* Sets the selected keys.
|
|
3807
|
+
*/
|
|
3808
|
+
set selectedKeys(value) {
|
|
3809
|
+
if (isPresent(value) && value === this.lastChange) {
|
|
3810
|
+
return;
|
|
3811
|
+
}
|
|
3812
|
+
// prevent multiple items displayed as selected as multiple selection still not supported fully
|
|
3813
|
+
const keys = (value || []).slice(0, 1);
|
|
3814
|
+
this.state = new Set(keys);
|
|
3815
|
+
this.gantt.updateView();
|
|
3816
|
+
}
|
|
3817
|
+
/**
|
|
3818
|
+
* The field name or a function that specifies the data item unique key identifier.
|
|
3819
|
+
* By default, the string field `id` is used.
|
|
3820
|
+
*/
|
|
3821
|
+
set itemKey(value) {
|
|
3822
|
+
if (isString(value)) {
|
|
3823
|
+
this._keyGetter = getter(value);
|
|
3824
|
+
}
|
|
3825
|
+
else {
|
|
3826
|
+
this._keyGetter = value;
|
|
3827
|
+
}
|
|
3828
|
+
}
|
|
3829
|
+
get keyGetter() {
|
|
3830
|
+
return this._keyGetter || this.gantt.idGetter;
|
|
3831
|
+
}
|
|
3832
|
+
ngOnDestroy() {
|
|
3833
|
+
this.unsubscribeSelection();
|
|
3834
|
+
}
|
|
3835
|
+
isSelected(dataItem) {
|
|
3836
|
+
return this.state.has(this.keyGetter(dataItem));
|
|
3837
|
+
}
|
|
3838
|
+
selectionChange({ action, items }) {
|
|
3839
|
+
this.state.clear();
|
|
3840
|
+
if (action === 'select') {
|
|
3841
|
+
items.forEach(item => this.state.add(this.keyGetter(item)));
|
|
3842
|
+
}
|
|
3843
|
+
this.emitSelectedItemsChange();
|
|
3844
|
+
}
|
|
3845
|
+
emitSelectedItemsChange() {
|
|
3846
|
+
this.lastChange = Array.from(this.state);
|
|
3847
|
+
this.selectedKeysChange.emit(this.lastChange);
|
|
3848
|
+
}
|
|
3849
|
+
subscribeSelection() {
|
|
3850
|
+
this.unsubscribeSelection();
|
|
3851
|
+
this.selectionSubscription = this.gantt.selectionChange.subscribe(this.selectionChange);
|
|
3852
|
+
}
|
|
3853
|
+
unsubscribeSelection() {
|
|
3854
|
+
if (this.selectionSubscription) {
|
|
3855
|
+
this.selectionSubscription.unsubscribe();
|
|
3856
|
+
this.selectionSubscription = null;
|
|
3857
|
+
}
|
|
3858
|
+
}
|
|
3859
|
+
};
|
|
3860
|
+
__decorate([
|
|
3861
|
+
Input(),
|
|
3862
|
+
__metadata("design:type", Boolean),
|
|
3863
|
+
__metadata("design:paramtypes", [Boolean])
|
|
3864
|
+
], SelectableDirective.prototype, "selectable", null);
|
|
3865
|
+
__decorate([
|
|
3866
|
+
Input(),
|
|
3867
|
+
__metadata("design:type", Array),
|
|
3868
|
+
__metadata("design:paramtypes", [Array])
|
|
3869
|
+
], SelectableDirective.prototype, "selectedKeys", null);
|
|
3870
|
+
__decorate([
|
|
3871
|
+
Output(),
|
|
3872
|
+
__metadata("design:type", EventEmitter)
|
|
3873
|
+
], SelectableDirective.prototype, "selectedKeysChange", void 0);
|
|
3874
|
+
__decorate([
|
|
3875
|
+
Input(),
|
|
3876
|
+
__metadata("design:type", Object),
|
|
3877
|
+
__metadata("design:paramtypes", [Object])
|
|
3878
|
+
], SelectableDirective.prototype, "itemKey", null);
|
|
3879
|
+
SelectableDirective = __decorate([
|
|
3880
|
+
Directive({
|
|
3881
|
+
exportAs: 'kendoGanttSelectable',
|
|
3882
|
+
selector: '[kendoGanttSelectable]'
|
|
3883
|
+
}),
|
|
3884
|
+
__metadata("design:paramtypes", [GanttComponent])
|
|
3885
|
+
], SelectableDirective);
|
|
3886
|
+
|
|
2962
3887
|
/**
|
|
2963
3888
|
* @hidden
|
|
2964
3889
|
*/
|
|
@@ -3021,10 +3946,8 @@ ToolbarComponent = __decorate([
|
|
|
3021
3946
|
* The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
|
|
3022
3947
|
*/
|
|
3023
3948
|
let ViewSelectorComponent = class ViewSelectorComponent {
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
*/
|
|
3027
|
-
constructor() {
|
|
3949
|
+
constructor(localizationService) {
|
|
3950
|
+
this.localizationService = localizationService;
|
|
3028
3951
|
this.hostClass = true;
|
|
3029
3952
|
/**
|
|
3030
3953
|
* The currently active view type.
|
|
@@ -3048,7 +3971,7 @@ let ViewSelectorComponent = class ViewSelectorComponent {
|
|
|
3048
3971
|
* @hidden
|
|
3049
3972
|
*/
|
|
3050
3973
|
getViewTypeText(viewType) {
|
|
3051
|
-
return `${viewType
|
|
3974
|
+
return this.localizationService.get(`${viewType}ViewText`);
|
|
3052
3975
|
}
|
|
3053
3976
|
};
|
|
3054
3977
|
__decorate([
|
|
@@ -3071,7 +3994,7 @@ ViewSelectorComponent = __decorate([
|
|
|
3071
3994
|
Component({
|
|
3072
3995
|
selector: 'kendo-gantt-view-selector',
|
|
3073
3996
|
template: `
|
|
3074
|
-
<select class="k-dropdown k-views-dropdown"
|
|
3997
|
+
<select class="k-dropdown k-views-dropdown"
|
|
3075
3998
|
[value]="activeView"
|
|
3076
3999
|
(change)="activeViewChange.emit($event.target.value)">
|
|
3077
4000
|
<option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
|
|
@@ -3083,7 +4006,8 @@ ViewSelectorComponent = __decorate([
|
|
|
3083
4006
|
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
3084
4007
|
</kendo-buttongroup>
|
|
3085
4008
|
`
|
|
3086
|
-
})
|
|
4009
|
+
}),
|
|
4010
|
+
__metadata("design:paramtypes", [LocalizationService])
|
|
3087
4011
|
], ViewSelectorComponent);
|
|
3088
4012
|
|
|
3089
4013
|
/**
|
|
@@ -3389,11 +4313,401 @@ TimelineMonthViewComponent = TimelineMonthViewComponent_1 = __decorate([
|
|
|
3389
4313
|
__metadata("design:paramtypes", [OptionChangesService, DependencyDomService])
|
|
3390
4314
|
], TimelineMonthViewComponent);
|
|
3391
4315
|
|
|
4316
|
+
/**
|
|
4317
|
+
* @hidden
|
|
4318
|
+
*/
|
|
4319
|
+
let EditDialogComponent = class EditDialogComponent {
|
|
4320
|
+
constructor(mapper, editService, localizationService) {
|
|
4321
|
+
this.mapper = mapper;
|
|
4322
|
+
this.editService = editService;
|
|
4323
|
+
this.localizationService = localizationService;
|
|
4324
|
+
}
|
|
4325
|
+
getText(token) {
|
|
4326
|
+
return this.localizationService.get(token);
|
|
4327
|
+
}
|
|
4328
|
+
handleEditingResult(editResultType) {
|
|
4329
|
+
this.editService.triggerEditEvent(editResultType);
|
|
4330
|
+
}
|
|
4331
|
+
onTaskDelete() {
|
|
4332
|
+
this.editService.showConfirmationDialog.next();
|
|
4333
|
+
}
|
|
4334
|
+
};
|
|
4335
|
+
__decorate([
|
|
4336
|
+
Input(),
|
|
4337
|
+
__metadata("design:type", FormGroup)
|
|
4338
|
+
], EditDialogComponent.prototype, "formGroup", void 0);
|
|
4339
|
+
EditDialogComponent = __decorate([
|
|
4340
|
+
Component({
|
|
4341
|
+
selector: 'kendo-gantt-edit-dialog',
|
|
4342
|
+
template: `
|
|
4343
|
+
<kendo-dialog
|
|
4344
|
+
[title]="getText('taskEditingDialogTitle')"
|
|
4345
|
+
[width]="575"
|
|
4346
|
+
[height]="470"
|
|
4347
|
+
(close)="handleEditingResult('cancel')">
|
|
4348
|
+
<kendo-dialog-messages
|
|
4349
|
+
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
|
|
4350
|
+
<form class="k-form" [formGroup]="formGroup">
|
|
4351
|
+
<kendo-formfield *ngIf="formGroup.contains(mapper.taskFields.title)">
|
|
4352
|
+
<kendo-label [for]="mapper.taskFields.title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4353
|
+
<input class="k-textbox" [formControlName]="mapper.taskFields.title" />
|
|
4354
|
+
</kendo-formfield>
|
|
4355
|
+
<div class="k-hstack">
|
|
4356
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.contains(mapper.taskFields.start)">
|
|
4357
|
+
<kendo-label [for]="mapper.taskFields.start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4358
|
+
<kendo-datetimepicker [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4359
|
+
</kendo-formfield>
|
|
4360
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4361
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.contains(mapper.taskFields.end)">
|
|
4362
|
+
<kendo-label [for]="mapper.taskFields.end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4363
|
+
<kendo-datetimepicker [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4364
|
+
</kendo-formfield>
|
|
4365
|
+
</div>
|
|
4366
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.contains(mapper.taskFields.completionRatio)">
|
|
4367
|
+
<kendo-label [for]="mapper.taskFields.completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4368
|
+
<kendo-numerictextbox
|
|
4369
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4370
|
+
[min]="0"
|
|
4371
|
+
[max]="1"
|
|
4372
|
+
[decimals]="2"
|
|
4373
|
+
format="p2"
|
|
4374
|
+
[step]="0.01"
|
|
4375
|
+
></kendo-numerictextbox>
|
|
4376
|
+
</kendo-formfield>
|
|
4377
|
+
</form>
|
|
4378
|
+
<kendo-dialog-actions layout="normal">
|
|
4379
|
+
<button kendoButton (click)="onTaskDelete()">{{ getText('deleteButtonText') }}</button>
|
|
4380
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4381
|
+
<button kendoButton [primary]="true" (click)="handleEditingResult('save')">{{ getText('saveButtonText') }}</button>
|
|
4382
|
+
<button kendoButton (click)="handleEditingResult('cancel')">{{ getText('cancelButtonText') }}</button>
|
|
4383
|
+
</kendo-dialog-actions>
|
|
4384
|
+
</kendo-dialog>
|
|
4385
|
+
`
|
|
4386
|
+
}),
|
|
4387
|
+
__metadata("design:paramtypes", [MappingService,
|
|
4388
|
+
EditService,
|
|
4389
|
+
LocalizationService])
|
|
4390
|
+
], EditDialogComponent);
|
|
4391
|
+
|
|
4392
|
+
/**
|
|
4393
|
+
* @hidden
|
|
4394
|
+
*/
|
|
4395
|
+
class Messages extends ComponentMessages {
|
|
4396
|
+
}
|
|
4397
|
+
__decorate([
|
|
4398
|
+
Input(),
|
|
4399
|
+
__metadata("design:type", String)
|
|
4400
|
+
], Messages.prototype, "taskDeleteLabel", void 0);
|
|
4401
|
+
__decorate([
|
|
4402
|
+
Input(),
|
|
4403
|
+
__metadata("design:type", String)
|
|
4404
|
+
], Messages.prototype, "taskEditingDialogTitle", void 0);
|
|
4405
|
+
__decorate([
|
|
4406
|
+
Input(),
|
|
4407
|
+
__metadata("design:type", String)
|
|
4408
|
+
], Messages.prototype, "taskEditingDialogCloseTitle", void 0);
|
|
4409
|
+
__decorate([
|
|
4410
|
+
Input(),
|
|
4411
|
+
__metadata("design:type", String)
|
|
4412
|
+
], Messages.prototype, "confirmationDialogCloseTitle", void 0);
|
|
4413
|
+
__decorate([
|
|
4414
|
+
Input(),
|
|
4415
|
+
__metadata("design:type", String)
|
|
4416
|
+
], Messages.prototype, "confirmationDialogTitle", void 0);
|
|
4417
|
+
__decorate([
|
|
4418
|
+
Input(),
|
|
4419
|
+
__metadata("design:type", String)
|
|
4420
|
+
], Messages.prototype, "deleteButtonText", void 0);
|
|
4421
|
+
__decorate([
|
|
4422
|
+
Input(),
|
|
4423
|
+
__metadata("design:type", String)
|
|
4424
|
+
], Messages.prototype, "cancelButtonText", void 0);
|
|
4425
|
+
__decorate([
|
|
4426
|
+
Input(),
|
|
4427
|
+
__metadata("design:type", String)
|
|
4428
|
+
], Messages.prototype, "saveButtonText", void 0);
|
|
4429
|
+
__decorate([
|
|
4430
|
+
Input(),
|
|
4431
|
+
__metadata("design:type", String)
|
|
4432
|
+
], Messages.prototype, "titleFieldInputLabel", void 0);
|
|
4433
|
+
__decorate([
|
|
4434
|
+
Input(),
|
|
4435
|
+
__metadata("design:type", String)
|
|
4436
|
+
], Messages.prototype, "startFieldInputLabel", void 0);
|
|
4437
|
+
__decorate([
|
|
4438
|
+
Input(),
|
|
4439
|
+
__metadata("design:type", String)
|
|
4440
|
+
], Messages.prototype, "endFieldInputLabel", void 0);
|
|
4441
|
+
__decorate([
|
|
4442
|
+
Input(),
|
|
4443
|
+
__metadata("design:type", String)
|
|
4444
|
+
], Messages.prototype, "completionRatioFieldInputLabel", void 0);
|
|
4445
|
+
__decorate([
|
|
4446
|
+
Input(),
|
|
4447
|
+
__metadata("design:type", String)
|
|
4448
|
+
], Messages.prototype, "confirmationDialogContent", void 0);
|
|
4449
|
+
__decorate([
|
|
4450
|
+
Input(),
|
|
4451
|
+
__metadata("design:type", String)
|
|
4452
|
+
], Messages.prototype, "dayViewText", void 0);
|
|
4453
|
+
__decorate([
|
|
4454
|
+
Input(),
|
|
4455
|
+
__metadata("design:type", String)
|
|
4456
|
+
], Messages.prototype, "weekViewText", void 0);
|
|
4457
|
+
__decorate([
|
|
4458
|
+
Input(),
|
|
4459
|
+
__metadata("design:type", String)
|
|
4460
|
+
], Messages.prototype, "monthViewText", void 0);
|
|
4461
|
+
__decorate([
|
|
4462
|
+
Input(),
|
|
4463
|
+
__metadata("design:type", String)
|
|
4464
|
+
], Messages.prototype, "yearViewText", void 0);
|
|
4465
|
+
__decorate([
|
|
4466
|
+
Input(),
|
|
4467
|
+
__metadata("design:type", String)
|
|
4468
|
+
], Messages.prototype, "noRecords", void 0);
|
|
4469
|
+
__decorate([
|
|
4470
|
+
Input(),
|
|
4471
|
+
__metadata("design:type", String)
|
|
4472
|
+
], Messages.prototype, "filter", void 0);
|
|
4473
|
+
__decorate([
|
|
4474
|
+
Input(),
|
|
4475
|
+
__metadata("design:type", String)
|
|
4476
|
+
], Messages.prototype, "filterEqOperator", void 0);
|
|
4477
|
+
__decorate([
|
|
4478
|
+
Input(),
|
|
4479
|
+
__metadata("design:type", String)
|
|
4480
|
+
], Messages.prototype, "filterNotEqOperator", void 0);
|
|
4481
|
+
__decorate([
|
|
4482
|
+
Input(),
|
|
4483
|
+
__metadata("design:type", String)
|
|
4484
|
+
], Messages.prototype, "filterIsNullOperator", void 0);
|
|
4485
|
+
__decorate([
|
|
4486
|
+
Input(),
|
|
4487
|
+
__metadata("design:type", String)
|
|
4488
|
+
], Messages.prototype, "filterIsNotNullOperator", void 0);
|
|
4489
|
+
__decorate([
|
|
4490
|
+
Input(),
|
|
4491
|
+
__metadata("design:type", String)
|
|
4492
|
+
], Messages.prototype, "filterIsEmptyOperator", void 0);
|
|
4493
|
+
__decorate([
|
|
4494
|
+
Input(),
|
|
4495
|
+
__metadata("design:type", String)
|
|
4496
|
+
], Messages.prototype, "filterIsNotEmptyOperator", void 0);
|
|
4497
|
+
__decorate([
|
|
4498
|
+
Input(),
|
|
4499
|
+
__metadata("design:type", String)
|
|
4500
|
+
], Messages.prototype, "filterStartsWithOperator", void 0);
|
|
4501
|
+
__decorate([
|
|
4502
|
+
Input(),
|
|
4503
|
+
__metadata("design:type", String)
|
|
4504
|
+
], Messages.prototype, "filterContainsOperator", void 0);
|
|
4505
|
+
__decorate([
|
|
4506
|
+
Input(),
|
|
4507
|
+
__metadata("design:type", String)
|
|
4508
|
+
], Messages.prototype, "filterNotContainsOperator", void 0);
|
|
4509
|
+
__decorate([
|
|
4510
|
+
Input(),
|
|
4511
|
+
__metadata("design:type", String)
|
|
4512
|
+
], Messages.prototype, "filterEndsWithOperator", void 0);
|
|
4513
|
+
__decorate([
|
|
4514
|
+
Input(),
|
|
4515
|
+
__metadata("design:type", String)
|
|
4516
|
+
], Messages.prototype, "filterGteOperator", void 0);
|
|
4517
|
+
__decorate([
|
|
4518
|
+
Input(),
|
|
4519
|
+
__metadata("design:type", String)
|
|
4520
|
+
], Messages.prototype, "filterGtOperator", void 0);
|
|
4521
|
+
__decorate([
|
|
4522
|
+
Input(),
|
|
4523
|
+
__metadata("design:type", String)
|
|
4524
|
+
], Messages.prototype, "filterLteOperator", void 0);
|
|
4525
|
+
__decorate([
|
|
4526
|
+
Input(),
|
|
4527
|
+
__metadata("design:type", String)
|
|
4528
|
+
], Messages.prototype, "filterLtOperator", void 0);
|
|
4529
|
+
__decorate([
|
|
4530
|
+
Input(),
|
|
4531
|
+
__metadata("design:type", String)
|
|
4532
|
+
], Messages.prototype, "filterIsTrue", void 0);
|
|
4533
|
+
__decorate([
|
|
4534
|
+
Input(),
|
|
4535
|
+
__metadata("design:type", String)
|
|
4536
|
+
], Messages.prototype, "filterIsFalse", void 0);
|
|
4537
|
+
__decorate([
|
|
4538
|
+
Input(),
|
|
4539
|
+
__metadata("design:type", String)
|
|
4540
|
+
], Messages.prototype, "filterBooleanAll", void 0);
|
|
4541
|
+
__decorate([
|
|
4542
|
+
Input(),
|
|
4543
|
+
__metadata("design:type", String)
|
|
4544
|
+
], Messages.prototype, "filterAfterOrEqualOperator", void 0);
|
|
4545
|
+
__decorate([
|
|
4546
|
+
Input(),
|
|
4547
|
+
__metadata("design:type", String)
|
|
4548
|
+
], Messages.prototype, "filterAfterOperator", void 0);
|
|
4549
|
+
__decorate([
|
|
4550
|
+
Input(),
|
|
4551
|
+
__metadata("design:type", String)
|
|
4552
|
+
], Messages.prototype, "filterBeforeOperator", void 0);
|
|
4553
|
+
__decorate([
|
|
4554
|
+
Input(),
|
|
4555
|
+
__metadata("design:type", String)
|
|
4556
|
+
], Messages.prototype, "filterBeforeOrEqualOperator", void 0);
|
|
4557
|
+
__decorate([
|
|
4558
|
+
Input(),
|
|
4559
|
+
__metadata("design:type", String)
|
|
4560
|
+
], Messages.prototype, "filterFilterButton", void 0);
|
|
4561
|
+
__decorate([
|
|
4562
|
+
Input(),
|
|
4563
|
+
__metadata("design:type", String)
|
|
4564
|
+
], Messages.prototype, "filterClearButton", void 0);
|
|
4565
|
+
__decorate([
|
|
4566
|
+
Input(),
|
|
4567
|
+
__metadata("design:type", String)
|
|
4568
|
+
], Messages.prototype, "filterAndLogic", void 0);
|
|
4569
|
+
__decorate([
|
|
4570
|
+
Input(),
|
|
4571
|
+
__metadata("design:type", String)
|
|
4572
|
+
], Messages.prototype, "filterOrLogic", void 0);
|
|
4573
|
+
__decorate([
|
|
4574
|
+
Input(),
|
|
4575
|
+
__metadata("design:type", String)
|
|
4576
|
+
], Messages.prototype, "loading", void 0);
|
|
4577
|
+
__decorate([
|
|
4578
|
+
Input(),
|
|
4579
|
+
__metadata("design:type", String)
|
|
4580
|
+
], Messages.prototype, "columnMenu", void 0);
|
|
4581
|
+
__decorate([
|
|
4582
|
+
Input(),
|
|
4583
|
+
__metadata("design:type", String)
|
|
4584
|
+
], Messages.prototype, "columns", void 0);
|
|
4585
|
+
__decorate([
|
|
4586
|
+
Input(),
|
|
4587
|
+
__metadata("design:type", String)
|
|
4588
|
+
], Messages.prototype, "lock", void 0);
|
|
4589
|
+
__decorate([
|
|
4590
|
+
Input(),
|
|
4591
|
+
__metadata("design:type", String)
|
|
4592
|
+
], Messages.prototype, "unlock", void 0);
|
|
4593
|
+
__decorate([
|
|
4594
|
+
Input(),
|
|
4595
|
+
__metadata("design:type", String)
|
|
4596
|
+
], Messages.prototype, "sortable", void 0);
|
|
4597
|
+
__decorate([
|
|
4598
|
+
Input(),
|
|
4599
|
+
__metadata("design:type", String)
|
|
4600
|
+
], Messages.prototype, "sortAscending", void 0);
|
|
4601
|
+
__decorate([
|
|
4602
|
+
Input(),
|
|
4603
|
+
__metadata("design:type", String)
|
|
4604
|
+
], Messages.prototype, "sortDescending", void 0);
|
|
4605
|
+
__decorate([
|
|
4606
|
+
Input(),
|
|
4607
|
+
__metadata("design:type", String)
|
|
4608
|
+
], Messages.prototype, "sortedAscending", void 0);
|
|
4609
|
+
__decorate([
|
|
4610
|
+
Input(),
|
|
4611
|
+
__metadata("design:type", String)
|
|
4612
|
+
], Messages.prototype, "sortedDescending", void 0);
|
|
4613
|
+
__decorate([
|
|
4614
|
+
Input(),
|
|
4615
|
+
__metadata("design:type", String)
|
|
4616
|
+
], Messages.prototype, "sortedDefault", void 0);
|
|
4617
|
+
__decorate([
|
|
4618
|
+
Input(),
|
|
4619
|
+
__metadata("design:type", String)
|
|
4620
|
+
], Messages.prototype, "columnsApply", void 0);
|
|
4621
|
+
__decorate([
|
|
4622
|
+
Input(),
|
|
4623
|
+
__metadata("design:type", String)
|
|
4624
|
+
], Messages.prototype, "columnsReset", void 0);
|
|
4625
|
+
|
|
4626
|
+
var CustomMessagesComponent_1;
|
|
4627
|
+
/**
|
|
4628
|
+
* Custom component messages override default component messages
|
|
4629
|
+
* ([see example]({% slug globalization_treelist %}#toc-localization)).
|
|
4630
|
+
*/
|
|
4631
|
+
let CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {
|
|
4632
|
+
constructor(service) {
|
|
4633
|
+
super();
|
|
4634
|
+
this.service = service;
|
|
4635
|
+
}
|
|
4636
|
+
get override() {
|
|
4637
|
+
return true;
|
|
4638
|
+
}
|
|
4639
|
+
};
|
|
4640
|
+
CustomMessagesComponent = CustomMessagesComponent_1 = __decorate([
|
|
4641
|
+
Component({
|
|
4642
|
+
providers: [
|
|
4643
|
+
{
|
|
4644
|
+
provide: Messages,
|
|
4645
|
+
useExisting: forwardRef(() => CustomMessagesComponent_1)
|
|
4646
|
+
}
|
|
4647
|
+
],
|
|
4648
|
+
selector: 'kendo-gantt-messages',
|
|
4649
|
+
template: ``
|
|
4650
|
+
}),
|
|
4651
|
+
__metadata("design:paramtypes", [LocalizationService])
|
|
4652
|
+
], CustomMessagesComponent);
|
|
4653
|
+
|
|
4654
|
+
var LocalizedMessagesDirective_1;
|
|
4655
|
+
/**
|
|
4656
|
+
* @hidden
|
|
4657
|
+
*/
|
|
4658
|
+
let LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {
|
|
4659
|
+
constructor(service) {
|
|
4660
|
+
super();
|
|
4661
|
+
this.service = service;
|
|
4662
|
+
}
|
|
4663
|
+
};
|
|
4664
|
+
LocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([
|
|
4665
|
+
Directive({
|
|
4666
|
+
providers: [
|
|
4667
|
+
{
|
|
4668
|
+
provide: Messages,
|
|
4669
|
+
useExisting: forwardRef(() => LocalizedMessagesDirective_1)
|
|
4670
|
+
}
|
|
4671
|
+
],
|
|
4672
|
+
selector: '[kendoGanttLocalizedMessages]'
|
|
4673
|
+
}),
|
|
4674
|
+
__metadata("design:paramtypes", [LocalizationService])
|
|
4675
|
+
], LocalizedMessagesDirective);
|
|
4676
|
+
|
|
4677
|
+
/**
|
|
4678
|
+
* @hidden
|
|
4679
|
+
*/
|
|
4680
|
+
let GanttTreeListMessagesDirective = class GanttTreeListMessagesDirective {
|
|
4681
|
+
constructor(localizationService) {
|
|
4682
|
+
this.localizationService = localizationService;
|
|
4683
|
+
}
|
|
4684
|
+
ngAfterViewInit() {
|
|
4685
|
+
const treeListServiceDictionary = this.localizationService.dictionary;
|
|
4686
|
+
Object.keys(treeListServiceDictionary)
|
|
4687
|
+
.forEach(token => treeListServiceDictionary[token] = this.kendoGanttTreeListMessages.get(token.replace('kendo.treelist.', '')));
|
|
4688
|
+
}
|
|
4689
|
+
};
|
|
4690
|
+
__decorate([
|
|
4691
|
+
Input(),
|
|
4692
|
+
__metadata("design:type", LocalizationService)
|
|
4693
|
+
], GanttTreeListMessagesDirective.prototype, "kendoGanttTreeListMessages", void 0);
|
|
4694
|
+
GanttTreeListMessagesDirective = __decorate([
|
|
4695
|
+
Directive({ selector: '[kendoGanttTreeListMessages]' }),
|
|
4696
|
+
__metadata("design:paramtypes", [LocalizationService])
|
|
4697
|
+
], GanttTreeListMessagesDirective);
|
|
4698
|
+
|
|
3392
4699
|
const IMPORTED_MODULES = [
|
|
3393
4700
|
CommonModule,
|
|
4701
|
+
ReactiveFormsModule,
|
|
4702
|
+
LabelModule,
|
|
4703
|
+
InputsModule,
|
|
4704
|
+
DateInputsModule,
|
|
4705
|
+
ButtonsModule,
|
|
3394
4706
|
SplitterModule,
|
|
3395
4707
|
TreeListModule,
|
|
3396
|
-
ButtonsModule
|
|
4708
|
+
ButtonsModule,
|
|
4709
|
+
DialogModule,
|
|
4710
|
+
EventsModule
|
|
3397
4711
|
];
|
|
3398
4712
|
const DECLARATIONS = [
|
|
3399
4713
|
GanttComponent,
|
|
@@ -3417,6 +4731,7 @@ const DECLARATIONS = [
|
|
|
3417
4731
|
FilterMenuTemplateDirective,
|
|
3418
4732
|
FilterCellTemplateDirective,
|
|
3419
4733
|
CellTemplateDirective,
|
|
4734
|
+
EditTemplateDirective,
|
|
3420
4735
|
ColumnMenuTemplateDirective,
|
|
3421
4736
|
HeaderTemplateDirective,
|
|
3422
4737
|
FooterTemplateDirective,
|
|
@@ -3424,10 +4739,43 @@ const DECLARATIONS = [
|
|
|
3424
4739
|
GanttDependencyDirective,
|
|
3425
4740
|
TimelineDayViewComponent,
|
|
3426
4741
|
TimelineWeekViewComponent,
|
|
3427
|
-
TimelineMonthViewComponent
|
|
4742
|
+
TimelineMonthViewComponent,
|
|
4743
|
+
SelectableDirective,
|
|
4744
|
+
EditDialogComponent,
|
|
4745
|
+
CustomMessagesComponent,
|
|
4746
|
+
LocalizedMessagesDirective,
|
|
4747
|
+
GanttTreeListMessagesDirective
|
|
3428
4748
|
];
|
|
3429
4749
|
/**
|
|
3430
|
-
*
|
|
4750
|
+
* Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
|
|
4751
|
+
* definition for the Gantt component.
|
|
4752
|
+
*
|
|
4753
|
+
* @example
|
|
4754
|
+
*
|
|
4755
|
+
* ```ts-no-run
|
|
4756
|
+
* // Import the Gantt module
|
|
4757
|
+
* import { GanttModule } from '@progress/kendo-angular-gantt';
|
|
4758
|
+
*
|
|
4759
|
+
* // The browser platform with a compiler
|
|
4760
|
+
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
4761
|
+
*
|
|
4762
|
+
* import { NgModule } from '@angular/core';
|
|
4763
|
+
*
|
|
4764
|
+
* // Import the app component
|
|
4765
|
+
* import { AppComponent } from './app.component';
|
|
4766
|
+
*
|
|
4767
|
+
* // Define the app module
|
|
4768
|
+
* _@NgModule({
|
|
4769
|
+
* declarations: [AppComponent], // declare app component
|
|
4770
|
+
* imports: [BrowserModule, GanttModule], // import Gantt module
|
|
4771
|
+
* bootstrap: [AppComponent]
|
|
4772
|
+
* })
|
|
4773
|
+
* export class AppModule {}
|
|
4774
|
+
*
|
|
4775
|
+
* // Compile and launch the module
|
|
4776
|
+
* platformBrowserDynamic().bootstrapModule(AppModule);
|
|
4777
|
+
*
|
|
4778
|
+
* ```
|
|
3431
4779
|
*/
|
|
3432
4780
|
let GanttModule = class GanttModule {
|
|
3433
4781
|
};
|
|
@@ -3435,7 +4783,11 @@ GanttModule = __decorate([
|
|
|
3435
4783
|
NgModule({
|
|
3436
4784
|
imports: [...IMPORTED_MODULES],
|
|
3437
4785
|
declarations: [...DECLARATIONS],
|
|
3438
|
-
exports: [...DECLARATIONS]
|
|
4786
|
+
exports: [...DECLARATIONS],
|
|
4787
|
+
providers: [{
|
|
4788
|
+
provide: L10N_PREFIX,
|
|
4789
|
+
useValue: 'kendo.gantt'
|
|
4790
|
+
}]
|
|
3439
4791
|
})
|
|
3440
4792
|
], GanttModule);
|
|
3441
4793
|
|
|
@@ -3443,4 +4795,4 @@ GanttModule = __decorate([
|
|
|
3443
4795
|
* Generated bundle index. Do not edit.
|
|
3444
4796
|
*/
|
|
3445
4797
|
|
|
3446
|
-
export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, GanttHeaderTableBodyComponent, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskBase, GanttTaskComponent, GanttTasksTableBodyComponent, ScrollSyncService, GanttTimelineComponent, TimelineBaseViewService, TimelineDayViewComponent, TimelineDayViewService, TimelineMonthViewComponent, TimelineMonthViewService, TimelineViewService, TimelineWeekViewComponent, TimelineWeekViewService, ViewBase, ToolbarComponent, ViewSelectorComponent, GanttComponent, GanttModule, GanttHierarchyBindingDirective, GanttFlatBindingDirective, GanttExpandableDirective, GanttTaskTemplateDirective, GanttTaskContentTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective };
|
|
4798
|
+
export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, EditDialogComponent, EditService, CustomMessagesComponent, LocalizedMessagesDirective, Messages, GanttTreeListMessagesDirective, GanttHeaderTableBodyComponent, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskBase, GanttTaskComponent, GanttTasksTableBodyComponent, ScrollSyncService, GanttTimelineComponent, TimelineBaseViewService, TimelineDayViewComponent, TimelineDayViewService, TimelineMonthViewComponent, TimelineMonthViewService, TimelineViewService, TimelineWeekViewComponent, TimelineWeekViewService, ViewBase, ToolbarComponent, ViewSelectorComponent, GanttComponent, GanttModule, GanttHierarchyBindingDirective, GanttFlatBindingDirective, GanttExpandableDirective, GanttTaskTemplateDirective, GanttTaskContentTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, SelectableDirective, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, EditTemplateDirective };
|