@progress/kendo-angular-gantt 0.3.0-dev.202112141015 → 0.3.0-dev.202201111723

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/cdn/js/kendo-angular-gantt.js +2 -2
  2. package/dist/cdn/main.js +10 -4
  3. package/dist/es/dependencies/utils.js +6 -5
  4. package/dist/es/editing/dependencies-table.component.js +131 -0
  5. package/dist/es/editing/edit-dialog.component.js +37 -6
  6. package/dist/es/editing/edit.service.js +88 -7
  7. package/dist/es/editing/task-fields.component.js +43 -0
  8. package/dist/es/gantt.component.js +49 -26
  9. package/dist/es/gantt.module.js +12 -3
  10. package/dist/es/index.js +3 -0
  11. package/dist/es/localization/gantt-localization.service.js +26 -0
  12. package/dist/es/models/dependency-type.enum.js +16 -0
  13. package/dist/es/models/models.js +1 -0
  14. package/dist/es/package-metadata.js +1 -1
  15. package/dist/es2015/dependencies/utils.js +6 -5
  16. package/dist/es2015/editing/dependencies-table.component.d.ts +39 -0
  17. package/dist/es2015/editing/dependencies-table.component.js +160 -0
  18. package/dist/es2015/editing/edit-dialog.component.d.ts +10 -3
  19. package/dist/es2015/editing/edit-dialog.component.js +55 -33
  20. package/dist/es2015/editing/edit.service.d.ts +21 -3
  21. package/dist/es2015/editing/edit.service.js +77 -10
  22. package/dist/es2015/editing/task-fields.component.d.ts +22 -0
  23. package/dist/es2015/editing/task-fields.component.js +67 -0
  24. package/dist/es2015/gantt.component.d.ts +4 -6
  25. package/dist/es2015/gantt.component.js +42 -23
  26. package/dist/es2015/gantt.module.js +12 -3
  27. package/dist/es2015/index.d.ts +3 -0
  28. package/dist/es2015/index.js +3 -0
  29. package/dist/es2015/index.metadata.json +1 -1
  30. package/dist/es2015/{models/events/remove-event.interface.d.ts → localization/gantt-localization.service.d.ts} +6 -7
  31. package/dist/es2015/localization/gantt-localization.service.js +25 -0
  32. package/dist/es2015/models/dependency-type.enum.d.ts +1 -1
  33. package/dist/es2015/models/dependency-type.enum.js +16 -0
  34. package/dist/es2015/models/events/task-edit-event.interface.d.ts +17 -4
  35. package/dist/es2015/models/models.d.ts +0 -2
  36. package/dist/es2015/models/models.js +1 -0
  37. package/dist/es2015/package-metadata.js +1 -1
  38. package/dist/fesm2015/index.js +429 -76
  39. package/dist/fesm5/index.js +377 -49
  40. package/dist/npm/dependencies/utils.js +6 -5
  41. package/dist/npm/editing/dependencies-table.component.js +133 -0
  42. package/dist/npm/editing/edit-dialog.component.js +36 -5
  43. package/dist/npm/editing/edit.service.js +87 -6
  44. package/dist/npm/editing/task-fields.component.js +45 -0
  45. package/dist/npm/gantt.component.js +49 -26
  46. package/dist/npm/gantt.module.js +11 -2
  47. package/dist/npm/index.js +6 -0
  48. package/dist/npm/localization/gantt-localization.service.js +28 -0
  49. package/dist/npm/models/dependency-type.enum.js +16 -0
  50. package/dist/npm/models/models.js +2 -0
  51. package/dist/npm/package-metadata.js +1 -1
  52. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  53. package/package.json +3 -1
  54. package/dist/es/models/events/edit-event.interface.js +0 -4
  55. package/dist/es/models/events/remove-event.interface.js +0 -4
  56. package/dist/es2015/models/events/edit-event.interface.d.ts +0 -19
  57. package/dist/es2015/models/events/edit-event.interface.js +0 -4
  58. package/dist/es2015/models/events/remove-event.interface.js +0 -4
  59. package/dist/npm/models/events/edit-event.interface.js +0 -6
  60. package/dist/npm/models/events/remove-event.interface.js +0 -6
@@ -4,6 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  "use strict";
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ var dependency_type_enum_1 = require("../models/dependency-type.enum");
7
8
  /**
8
9
  * @hidden
9
10
  *
@@ -47,9 +48,9 @@ exports.dependencyCoordinates = function (from, to, rowHeight, type, minDistance
47
48
  | |
48
49
  [[[]]]- -[[[]]]
49
50
  */
50
- if (type === 0 /* FF */ || type === 3 /* SS */) {
51
+ if (type === dependency_type_enum_1.DependencyType.FF || type === dependency_type_enum_1.DependencyType.SS) {
51
52
  // polyline start from first task
52
- var dir = type === 3 /* SS */ ? 'left' : 'right';
53
+ var dir = type === dependency_type_enum_1.DependencyType.SS ? 'left' : 'right';
53
54
  top = from.top;
54
55
  left = from[dir];
55
56
  points.push({ top: top, left: left });
@@ -75,9 +76,9 @@ exports.dependencyCoordinates = function (from, to, rowHeight, type, minDistance
75
76
  |
76
77
  -[[[]]]
77
78
  */
78
- var startDir = type === 2 /* SF */ ? 'left' : 'right';
79
- var endDir = type === 2 /* SF */ ? 'right' : 'left';
80
- var additionalTurn = type === 2 /* SF */
79
+ var startDir = type === dependency_type_enum_1.DependencyType.SF ? 'left' : 'right';
80
+ var endDir = type === dependency_type_enum_1.DependencyType.SF ? 'right' : 'left';
81
+ var additionalTurn = type === dependency_type_enum_1.DependencyType.SF
81
82
  ? from[startDir] - minDistanceBeforeTurn * 2 < to[endDir]
82
83
  : from[startDir] + minDistanceBeforeTurn * 2 > to[endDir];
83
84
  // polyline start from first task
@@ -0,0 +1,133 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ var tslib_1 = require("tslib");
8
+ var core_1 = require("@angular/core");
9
+ var forms_1 = require("@angular/forms");
10
+ var mapping_service_1 = require("../common/mapping.service");
11
+ var gantt_localization_service_1 = require("../localization/gantt-localization.service");
12
+ var dependency_type_enum_1 = require("../models/dependency-type.enum");
13
+ var edit_service_1 = require("./edit.service");
14
+ /**
15
+ * @hidden
16
+ */
17
+ var DependenciesTableComponent = /** @class */ (function () {
18
+ function DependenciesTableComponent(mapper, editService, localizationService) {
19
+ this.mapper = mapper;
20
+ this.editService = editService;
21
+ this.localizationService = localizationService;
22
+ this.dependenciesChange = new core_1.EventEmitter();
23
+ this.selectedKeys = [];
24
+ this.formGroups = new forms_1.FormArray([]);
25
+ this.dependencyTypes = this.getDependencyTypes();
26
+ }
27
+ Object.defineProperty(DependenciesTableComponent.prototype, "taskId", {
28
+ get: function () {
29
+ return this.editService.dataItem.id;
30
+ },
31
+ enumerable: true,
32
+ configurable: true
33
+ });
34
+ Object.defineProperty(DependenciesTableComponent.prototype, "dependencyIdField", {
35
+ // The target dependency id field
36
+ // e.g. if Predecessors, we have the `fromId` which is the currently edited task,
37
+ // while the `toId` is missing (needs to be selected by the user)
38
+ get: function () {
39
+ return this.dependencyType === 'predecessor' ? 'fromId' : 'toId';
40
+ },
41
+ enumerable: true,
42
+ configurable: true
43
+ });
44
+ DependenciesTableComponent.prototype.ngOnInit = function () {
45
+ var _this = this;
46
+ // generate the FormGroups per each Grid row
47
+ if (this.formGroups.controls.length === 0) {
48
+ var fields_1 = this.mapper.dependencyFields;
49
+ this.dependencies.forEach(function (item) {
50
+ var _a;
51
+ var formGroup = new forms_1.FormGroup((_a = {},
52
+ _a[fields_1.id] = new forms_1.FormControl(_this.mapper.extractFromDependency(item, 'id')),
53
+ _a[fields_1.fromId] = new forms_1.FormControl(_this.mapper.extractFromDependency(item, 'fromId'), forms_1.Validators.required),
54
+ _a[fields_1.toId] = new forms_1.FormControl(_this.mapper.extractFromDependency(item, 'toId'), forms_1.Validators.required),
55
+ _a[fields_1.type] = new forms_1.FormControl(_this.mapper.extractFromDependency(item, 'type'), forms_1.Validators.required),
56
+ _a));
57
+ _this.formGroups.push(formGroup);
58
+ });
59
+ }
60
+ this.formGroups.valueChanges.subscribe(function (val) {
61
+ _this.formGroups.controls.forEach(function (control) {
62
+ if (control.dirty) {
63
+ _this.editService.updateDependencies(control.value);
64
+ }
65
+ });
66
+ _this.dependenciesChange.emit(val);
67
+ });
68
+ };
69
+ DependenciesTableComponent.prototype.getFormControl = function (dataItemIndex, field) {
70
+ // return the FormControl for the respective column editor
71
+ return this.formGroups.controls
72
+ .find(function (_control, index) { return index === dataItemIndex; })
73
+ .get(this.mapper.dependencyFields[field]);
74
+ };
75
+ DependenciesTableComponent.prototype.getText = function (token) {
76
+ return this.localizationService.get(token);
77
+ };
78
+ DependenciesTableComponent.prototype.getDependencyTypes = function () {
79
+ var types = Object.keys(dependency_type_enum_1.DependencyType)
80
+ .filter(function (value) { return typeof dependency_type_enum_1.DependencyType[value] === 'number'; })
81
+ .map(function (type) {
82
+ return {
83
+ type: type,
84
+ id: dependency_type_enum_1.DependencyType[type]
85
+ };
86
+ });
87
+ return types;
88
+ };
89
+ DependenciesTableComponent.prototype.addHandler = function () {
90
+ var _a;
91
+ var fields = this.mapper.dependencyFields;
92
+ var formGroup = new forms_1.FormGroup((_a = {},
93
+ _a[fields.id] = new forms_1.FormControl(),
94
+ _a[fields.fromId] = new forms_1.FormControl(this.dependencyIdField === 'toId' ? this.taskId : null, forms_1.Validators.required),
95
+ _a[fields.toId] = new forms_1.FormControl(this.dependencyIdField === 'fromId' ? this.taskId : null, forms_1.Validators.required),
96
+ _a[fields.type] = new forms_1.FormControl(null, forms_1.Validators.required),
97
+ _a));
98
+ this.formGroups.push(formGroup);
99
+ };
100
+ DependenciesTableComponent.prototype.removeHandler = function () {
101
+ var selectedIndex = this.selectedKeys[0];
102
+ var item = this.formGroups.at(selectedIndex).value;
103
+ this.editService.deleteDependency(item);
104
+ this.formGroups.removeAt(selectedIndex);
105
+ };
106
+ tslib_1.__decorate([
107
+ core_1.Input(),
108
+ tslib_1.__metadata("design:type", Array)
109
+ ], DependenciesTableComponent.prototype, "tasks", void 0);
110
+ tslib_1.__decorate([
111
+ core_1.Input(),
112
+ tslib_1.__metadata("design:type", Array)
113
+ ], DependenciesTableComponent.prototype, "dependencies", void 0);
114
+ tslib_1.__decorate([
115
+ core_1.Input(),
116
+ tslib_1.__metadata("design:type", String)
117
+ ], DependenciesTableComponent.prototype, "dependencyType", void 0);
118
+ tslib_1.__decorate([
119
+ core_1.Output(),
120
+ tslib_1.__metadata("design:type", core_1.EventEmitter)
121
+ ], DependenciesTableComponent.prototype, "dependenciesChange", void 0);
122
+ DependenciesTableComponent = tslib_1.__decorate([
123
+ core_1.Component({
124
+ selector: 'kendo-gantt-dependencies-table',
125
+ template: "\n <kendo-grid\n [data]=\"dependencies\"\n [selectable]=\"{ mode: 'single' }\"\n [(selectedKeys)]=\"selectedKeys\"\n kendoGridSelectBy\n [height]=\"295\"\n >\n <ng-template kendoGridToolbarTemplate>\n <button kendoButton (click)=\"addHandler()\">\n {{ getText('taskEditingDependenciesAddButtonText') }}\n </button>\n <button kendoButton (click)=\"removeHandler()\" [disabled]=\"selectedKeys.length === 0\">\n {{ getText('taskEditingDependenciesRemoveButtonText') }}\n </button>\n </ng-template>\n <kendo-grid-column [title]=\"getText('taskEditingDependenciesGridNameColumnTitle')\" [field]=\"dependencyIdField\">\n <ng-template kendoGridCellTemplate let-dataItem=\"dataItem\" let-column=\"column\" let-rowIndex=\"rowIndex\">\n <kendo-dropdownlist\n [data]=\"tasks\"\n textField=\"title\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n [formControl]=\"getFormControl(rowIndex, column.field)\"\n >\n </kendo-dropdownlist>\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column [title]=\"getText('taskEditingDependenciesGridTypeColumnTitle')\" field=\"type\">\n <ng-template kendoGridCellTemplate let-dataItem=\"dataItem\" let-column=\"column\" let-rowIndex=\"rowIndex\">\n <kendo-dropdownlist\n [data]=\"dependencyTypes\"\n textField=\"type\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n [formControl]=\"getFormControl(rowIndex, column.field)\"\n >\n </kendo-dropdownlist>\n </ng-template>\n </kendo-grid-column>\n </kendo-grid>\n "
126
+ }),
127
+ tslib_1.__metadata("design:paramtypes", [mapping_service_1.MappingService,
128
+ edit_service_1.EditService,
129
+ gantt_localization_service_1.GanttLocalizationService])
130
+ ], DependenciesTableComponent);
131
+ return DependenciesTableComponent;
132
+ }());
133
+ exports.DependenciesTableComponent = DependenciesTableComponent;
@@ -6,22 +6,52 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  var tslib_1 = require("tslib");
8
8
  var core_1 = require("@angular/core");
9
- var forms_1 = require("@angular/forms");
10
9
  var kendo_angular_l10n_1 = require("@progress/kendo-angular-l10n");
11
10
  var mapping_service_1 = require("../common/mapping.service");
11
+ var dependency_type_enum_1 = require("../models/dependency-type.enum");
12
12
  var edit_service_1 = require("./edit.service");
13
13
  /**
14
14
  * @hidden
15
15
  */
16
16
  var EditDialogComponent = /** @class */ (function () {
17
- function EditDialogComponent(mapper, editService, localizationService) {
17
+ function EditDialogComponent(mapper, editService, cdr, localizationService) {
18
18
  this.mapper = mapper;
19
19
  this.editService = editService;
20
+ this.cdr = cdr;
20
21
  this.localizationService = localizationService;
21
22
  }
23
+ EditDialogComponent.prototype.ngOnInit = function () {
24
+ var _this = this;
25
+ this.editService.loadTasks(this.data).subscribe(function (value) {
26
+ _this.loadedTasks = value;
27
+ });
28
+ };
29
+ Object.defineProperty(EditDialogComponent.prototype, "predecessors", {
30
+ get: function () {
31
+ return this.editService.predecessors;
32
+ },
33
+ set: function (items) {
34
+ this.editService.predecessors = items;
35
+ },
36
+ enumerable: true,
37
+ configurable: true
38
+ });
39
+ Object.defineProperty(EditDialogComponent.prototype, "successors", {
40
+ get: function () {
41
+ return this.editService.successors;
42
+ },
43
+ set: function (items) {
44
+ this.editService.successors = items;
45
+ },
46
+ enumerable: true,
47
+ configurable: true
48
+ });
22
49
  EditDialogComponent.prototype.getText = function (token) {
23
50
  return this.localizationService.get(token);
24
51
  };
52
+ EditDialogComponent.prototype.getDependencyType = function (typeId) {
53
+ return dependency_type_enum_1.DependencyType[typeId];
54
+ };
25
55
  EditDialogComponent.prototype.handleEditingResult = function (editResultType) {
26
56
  this.editService.triggerEditEvent(editResultType);
27
57
  };
@@ -30,15 +60,16 @@ var EditDialogComponent = /** @class */ (function () {
30
60
  };
31
61
  tslib_1.__decorate([
32
62
  core_1.Input(),
33
- tslib_1.__metadata("design:type", forms_1.FormGroup)
34
- ], EditDialogComponent.prototype, "formGroup", void 0);
63
+ tslib_1.__metadata("design:type", Array)
64
+ ], EditDialogComponent.prototype, "data", void 0);
35
65
  EditDialogComponent = tslib_1.__decorate([
36
66
  core_1.Component({
37
67
  selector: 'kendo-gantt-edit-dialog',
38
- template: "\n <kendo-dialog\n [title]=\"getText('taskEditingDialogTitle')\"\n [width]=\"575\"\n [height]=\"470\"\n (close)=\"handleEditingResult('cancel')\">\n <kendo-dialog-messages\n [closeTitle]=\"getText('taskEditingDialogCloseTitle')\"></kendo-dialog-messages>\n <form class=\"k-form\" [formGroup]=\"formGroup\">\n <kendo-formfield *ngIf=\"formGroup.contains(mapper.taskFields.title)\">\n <kendo-label [for]=\"mapper.taskFields.title\" [text]=\"getText('titleFieldInputLabel')\"></kendo-label>\n <input class=\"k-textbox\" [formControlName]=\"mapper.taskFields.title\" />\n </kendo-formfield>\n <div class=\"k-hstack\">\n <kendo-formfield [style.width.%]=\"49\" *ngIf=\"formGroup.contains(mapper.taskFields.start)\">\n <kendo-label [for]=\"mapper.taskFields.start\" [text]=\"getText('startFieldInputLabel')\"></kendo-label>\n <kendo-datetimepicker [formControlName]=\"mapper.taskFields.start\"></kendo-datetimepicker>\n </kendo-formfield>\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <kendo-formfield [style.width.%]=\"49\" *ngIf=\"formGroup.contains(mapper.taskFields.end)\">\n <kendo-label [for]=\"mapper.taskFields.end\" [text]=\"getText('endFieldInputLabel')\"></kendo-label>\n <kendo-datetimepicker [formControlName]=\"mapper.taskFields.end\"></kendo-datetimepicker>\n </kendo-formfield>\n </div>\n <kendo-formfield [style.width.%]=\"49\" *ngIf=\"formGroup.contains(mapper.taskFields.completionRatio)\">\n <kendo-label [for]=\"mapper.taskFields.completionRatio\" [text]=\"getText('completionRatioFieldInputLabel')\"></kendo-label>\n <kendo-numerictextbox\n [formControlName]=\"mapper.taskFields.completionRatio\"\n [min]=\"0\"\n [max]=\"1\"\n [decimals]=\"2\"\n format=\"p2\"\n [step]=\"0.01\"\n ></kendo-numerictextbox>\n </kendo-formfield>\n </form>\n <kendo-dialog-actions layout=\"normal\">\n <button kendoButton (click)=\"onTaskDelete()\">{{ getText('deleteButtonText') }}</button>\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleEditingResult('save')\">{{ getText('saveButtonText') }}</button>\n <button kendoButton (click)=\"handleEditingResult('cancel')\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
68
+ template: "\n <kendo-dialog\n [title]=\"getText('taskEditingDialogTitle')\"\n [width]=\"575\"\n [height]=\"470\"\n (close)=\"handleEditingResult('cancel')\">\n <kendo-dialog-messages\n [closeTitle]=\"getText('taskEditingDialogCloseTitle')\"></kendo-dialog-messages>\n\n <kendo-tabstrip [keepTabContent]=\"true\">\n <kendo-tabstrip-tab [title]=\"getText('taskEditingGeneralTabTitle')\" [selected]=\"true\">\n <ng-template kendoTabContent>\n <kendo-gantt-task-fields></kendo-gantt-task-fields>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab [title]=\"getText('taskEditingPredecessorsTabTitle')\">\n <ng-template kendoTabContent>\n <kendo-gantt-dependencies-table\n [tasks]=\"loadedTasks\"\n [(dependencies)]=\"predecessors\"\n dependencyType=\"predecessor\"\n >\n </kendo-gantt-dependencies-table>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab [title]=\"getText('taskEditingSuccessorsTabTitle')\">\n <ng-template kendoTabContent>\n <kendo-gantt-dependencies-table\n [tasks]=\"loadedTasks\"\n [(dependencies)]=\"successors\"\n dependencyType=\"successor\">\n </kendo-gantt-dependencies-table>\n </ng-template>\n </kendo-tabstrip-tab>\n </kendo-tabstrip>\n\n <kendo-dialog-actions layout=\"normal\">\n <button kendoButton (click)=\"onTaskDelete()\">{{ getText('deleteButtonText') }}</button>\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleEditingResult('save')\">{{ getText('saveButtonText') }}</button>\n <button kendoButton (click)=\"handleEditingResult('cancel')\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
39
69
  }),
40
70
  tslib_1.__metadata("design:paramtypes", [mapping_service_1.MappingService,
41
71
  edit_service_1.EditService,
72
+ core_1.ChangeDetectorRef,
42
73
  kendo_angular_l10n_1.LocalizationService])
43
74
  ], EditDialogComponent);
44
75
  return EditDialogComponent;
@@ -7,35 +7,116 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  var tslib_1 = require("tslib");
8
8
  var core_1 = require("@angular/core");
9
9
  var rxjs_1 = require("rxjs");
10
+ var mapping_service_1 = require("../common/mapping.service");
11
+ var operators_1 = require("rxjs/operators");
12
+ var utils_1 = require("../utils");
10
13
  /**
11
14
  * @hidden
12
15
  */
13
16
  var EditService = /** @class */ (function () {
14
- function EditService() {
17
+ function EditService(mapper) {
18
+ var _this = this;
19
+ this.mapper = mapper;
15
20
  this.showEditingDialog = new rxjs_1.Subject();
16
21
  this.showConfirmationDialog = new rxjs_1.Subject();
17
22
  this.editEvent = new rxjs_1.Subject();
18
23
  this.addEvent = new rxjs_1.Subject();
24
+ this.updatedItems = [];
25
+ this.deletedItems = [];
26
+ this.itemIndex = function (item, data) {
27
+ return data.findIndex(function (dataItem) { return _this.mapper.extractFromTask(dataItem, 'id') === _this.mapper.extractFromTask(item, 'id'); });
28
+ };
19
29
  }
20
- EditService.prototype.createEditDialog = function (dataItem, formGroup) {
30
+ Object.defineProperty(EditService.prototype, "dependencies", {
31
+ get: function () {
32
+ return this.predecessors.concat(this.successors);
33
+ },
34
+ set: function (items) {
35
+ var _this = this;
36
+ // Can this whole thing be moved to edit-dialog? Dependencies might not be needed here
37
+ var dataItemId = this.mapper.extractFromTask(this.dataItem, 'id');
38
+ this.predecessors = items.filter(function (item) { return _this.mapper.extractFromDependency(item, 'toId') === dataItemId; });
39
+ this.successors = items.filter(function (item) { return _this.mapper.extractFromDependency(item, 'fromId') === dataItemId; });
40
+ },
41
+ enumerable: true,
42
+ configurable: true
43
+ });
44
+ EditService.prototype.createEditDialog = function (dataItem, taskFormGroup, dependencies) {
21
45
  this.dataItem = dataItem;
22
- this.formGroup = formGroup;
46
+ this.taskFormGroup = taskFormGroup;
47
+ this.dependencies = dependencies;
23
48
  this.showEditingDialog.next(true);
24
49
  };
25
50
  EditService.prototype.closeEditDialog = function () {
26
51
  this.showEditingDialog.next(false);
27
52
  this.dataItem = undefined;
28
- this.formGroup = undefined;
53
+ this.taskFormGroup = undefined;
54
+ this.dependencies = [];
55
+ this.updatedItems = [];
56
+ this.deletedItems = [];
29
57
  };
30
58
  EditService.prototype.triggerEditEvent = function (editResultType) {
31
59
  this.editEvent.next({
32
- formGroup: this.formGroup,
60
+ taskFormGroup: this.taskFormGroup,
33
61
  dataItem: this.dataItem,
62
+ dependencies: {
63
+ createdItems: this.getCreatedDependencies(),
64
+ updatedItems: this.updatedItems,
65
+ deletedItems: this.deletedItems
66
+ },
34
67
  editResultType: editResultType
35
68
  });
36
69
  };
70
+ EditService.prototype.updateDependencies = function (item) {
71
+ if (!this.isNew(item)) {
72
+ // update
73
+ var index = this.itemIndex(item, this.updatedItems);
74
+ if (index !== -1) {
75
+ this.updatedItems.splice(index, 1, item);
76
+ }
77
+ else {
78
+ this.updatedItems.push(item);
79
+ }
80
+ }
81
+ };
82
+ EditService.prototype.getCreatedDependencies = function () {
83
+ var _this = this;
84
+ return this.dependencies.filter(function (item) { return _this.mapper.extractFromDependency(item, 'id') === null; });
85
+ };
86
+ EditService.prototype.deleteDependency = function (item) {
87
+ var updatedIndex = this.itemIndex(item, this.updatedItems);
88
+ if (updatedIndex !== -1) {
89
+ this.updatedItems.splice(updatedIndex, 1);
90
+ }
91
+ if (!this.isNew(item)) {
92
+ this.deletedItems.push(item);
93
+ }
94
+ };
95
+ EditService.prototype.loadTasks = function (initialValues, isInitializer) {
96
+ var _this = this;
97
+ if (isInitializer === void 0) { isInitializer = true; }
98
+ return rxjs_1.forkJoin(initialValues.map(function (v) { return _this.getElementById(v); })).pipe(operators_1.map(function (value) {
99
+ return value.reduce(function (acc, item) { return acc = acc.concat(utils_1.normalizeGanttData(item)); }, []);
100
+ }), operators_1.expand(function (values) {
101
+ if (values.some(function (el) { return _this.hasChildren(el); })) {
102
+ return _this.loadTasks(values, false);
103
+ }
104
+ return rxjs_1.EMPTY;
105
+ }), operators_1.reduce(function (acc, values) { return acc.concat(values); }, isInitializer ? initialValues.slice() : []));
106
+ };
107
+ EditService.prototype.getElementById = function (item) {
108
+ var children = this.fetchChildren(item);
109
+ if (rxjs_1.isObservable(children)) {
110
+ return children;
111
+ }
112
+ return rxjs_1.of(children);
113
+ };
114
+ EditService.prototype.isNew = function (item) {
115
+ return !utils_1.isPresent(this.mapper.extractFromDependency(item, 'id'));
116
+ };
37
117
  EditService = tslib_1.__decorate([
38
- core_1.Injectable()
118
+ core_1.Injectable(),
119
+ tslib_1.__metadata("design:paramtypes", [mapping_service_1.MappingService])
39
120
  ], EditService);
40
121
  return EditService;
41
122
  }());
@@ -0,0 +1,45 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ var tslib_1 = require("tslib");
8
+ var core_1 = require("@angular/core");
9
+ var mapping_service_1 = require("../common/mapping.service");
10
+ var gantt_localization_service_1 = require("../localization/gantt-localization.service");
11
+ var edit_service_1 = require("./edit.service");
12
+ /**
13
+ * @hidden
14
+ */
15
+ var TaskFieldsComponent = /** @class */ (function () {
16
+ function TaskFieldsComponent(mapper, editService, localizationService) {
17
+ this.mapper = mapper;
18
+ this.editService = editService;
19
+ this.localizationService = localizationService;
20
+ }
21
+ Object.defineProperty(TaskFieldsComponent.prototype, "formGroup", {
22
+ /**
23
+ * @hidden
24
+ */
25
+ get: function () {
26
+ return this.editService.taskFormGroup;
27
+ },
28
+ enumerable: true,
29
+ configurable: true
30
+ });
31
+ TaskFieldsComponent.prototype.getText = function (token) {
32
+ return this.localizationService.get(token);
33
+ };
34
+ TaskFieldsComponent = tslib_1.__decorate([
35
+ core_1.Component({
36
+ selector: 'kendo-gantt-task-fields',
37
+ template: "\n <form class=\"k-form\" [formGroup]=\"formGroup\">\n <kendo-formfield *ngIf=\"formGroup.contains(mapper.taskFields.title)\">\n <kendo-label [for]=\"mapper.taskFields.title\" [text]=\"getText('titleFieldInputLabel')\"></kendo-label>\n <input class=\"k-textbox\" [formControlName]=\"mapper.taskFields.title\" />\n </kendo-formfield>\n <div class=\"k-hstack\">\n <kendo-formfield [style.width.%]=\"49\" *ngIf=\"formGroup.contains(mapper.taskFields.start)\">\n <kendo-label [for]=\"mapper.taskFields.start\" [text]=\"getText('startFieldInputLabel')\"></kendo-label>\n <kendo-datetimepicker [formControlName]=\"mapper.taskFields.start\"></kendo-datetimepicker>\n </kendo-formfield>\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <kendo-formfield [style.width.%]=\"49\" *ngIf=\"formGroup.contains(mapper.taskFields.end)\">\n <kendo-label [for]=\"mapper.taskFields.end\" [text]=\"getText('endFieldInputLabel')\"></kendo-label>\n <kendo-datetimepicker [formControlName]=\"mapper.taskFields.end\"></kendo-datetimepicker>\n </kendo-formfield>\n </div>\n <kendo-formfield [style.width.%]=\"49\" *ngIf=\"formGroup.contains(mapper.taskFields.completionRatio)\">\n <kendo-label [for]=\"mapper.taskFields.completionRatio\" [text]=\"getText('completionRatioFieldInputLabel')\"></kendo-label>\n <kendo-numerictextbox\n [formControlName]=\"mapper.taskFields.completionRatio\"\n [min]=\"0\"\n [max]=\"1\"\n [decimals]=\"2\"\n format=\"p2\"\n [step]=\"0.01\"\n ></kendo-numerictextbox>\n </kendo-formfield>\n </form>\n "
38
+ }),
39
+ tslib_1.__metadata("design:paramtypes", [mapping_service_1.MappingService,
40
+ edit_service_1.EditService,
41
+ gantt_localization_service_1.GanttLocalizationService])
42
+ ], TaskFieldsComponent);
43
+ return TaskFieldsComponent;
44
+ }());
45
+ exports.TaskFieldsComponent = TaskFieldsComponent;