@progress/kendo-angular-gantt 0.2.1-dev.202112091019 → 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.
- package/dist/cdn/js/kendo-angular-gantt.js +2 -2
- package/dist/cdn/main.js +10 -4
- package/dist/es/dependencies/utils.js +6 -5
- package/dist/es/editing/add-task.component.js +94 -0
- package/dist/es/editing/dependencies-table.component.js +131 -0
- package/dist/es/editing/edit-dialog.component.js +37 -6
- package/dist/es/editing/edit.service.js +89 -7
- package/dist/es/editing/task-fields.component.js +43 -0
- package/dist/es/expanded-state/expandable.directive.js +4 -6
- package/dist/es/gantt.component.js +116 -45
- package/dist/es/gantt.module.js +13 -4
- package/dist/es/index.js +5 -1
- package/dist/es/localization/gantt-localization.service.js +26 -0
- package/dist/es/localization/messages.js +45 -1
- package/dist/es/models/dependency-type.enum.js +16 -0
- package/dist/es/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/es/models/models.js +2 -0
- package/dist/es/models/{events/edit-event.interface.js → toolbar-settings.js} +0 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/timeline/timeline-base-view.service.js +12 -3
- package/dist/es/toolbar/toolbar.component.js +9 -1
- package/dist/es2015/dependencies/utils.js +6 -5
- package/dist/es2015/editing/add-task.component.d.ts +45 -0
- package/dist/es2015/editing/add-task.component.js +102 -0
- package/dist/es2015/editing/dependencies-table.component.d.ts +39 -0
- package/dist/es2015/editing/dependencies-table.component.js +160 -0
- package/dist/es2015/editing/edit-dialog.component.d.ts +10 -3
- package/dist/es2015/editing/edit-dialog.component.js +55 -33
- package/dist/es2015/editing/edit.service.d.ts +24 -3
- package/dist/es2015/editing/edit.service.js +78 -10
- package/dist/es2015/editing/task-fields.component.d.ts +22 -0
- package/dist/es2015/editing/task-fields.component.js +67 -0
- package/dist/es2015/expanded-state/expandable.directive.d.ts +1 -2
- package/dist/es2015/expanded-state/expandable.directive.js +2 -7
- package/dist/es2015/gantt.component.d.ts +29 -18
- package/dist/es2015/gantt.component.js +183 -43
- package/dist/es2015/gantt.module.js +13 -4
- package/dist/es2015/index.d.ts +5 -1
- package/dist/es2015/index.js +5 -1
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/localization/{treelist-messages.directive.d.ts → gantt-localization.service.d.ts} +4 -3
- package/dist/es2015/localization/gantt-localization.service.js +25 -0
- package/dist/es2015/localization/messages.d.ts +46 -2
- package/dist/es2015/localization/messages.js +45 -1
- package/dist/es2015/models/dependency-type.enum.d.ts +1 -1
- package/dist/es2015/models/dependency-type.enum.js +16 -0
- package/dist/es2015/models/events/cell-close-event.interface.d.ts +1 -1
- package/dist/es2015/models/events/task-add-event.interface.d.ts +31 -0
- package/dist/{es/models/events/remove-event.interface.js → es2015/models/events/task-add-event.interface.js} +0 -0
- package/dist/es2015/models/events/task-edit-event.interface.d.ts +15 -2
- package/dist/es2015/models/models.d.ts +5 -3
- package/dist/es2015/models/models.js +2 -0
- package/dist/es2015/models/toolbar-settings.d.ts +29 -0
- package/dist/{es/models/toolbar-position.js → es2015/models/toolbar-settings.js} +0 -0
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/timeline/timeline-base-view.service.d.ts +12 -0
- package/dist/es2015/timeline/timeline-base-view.service.js +12 -3
- package/dist/es2015/toolbar/toolbar-template.directive.d.ts +1 -1
- package/dist/es2015/toolbar/toolbar.component.d.ts +2 -0
- package/dist/es2015/toolbar/toolbar.component.js +10 -0
- package/dist/fesm2015/index.js +757 -115
- package/dist/fesm5/index.js +627 -88
- package/dist/npm/dependencies/utils.js +6 -5
- package/dist/npm/editing/add-task.component.js +96 -0
- package/dist/npm/editing/dependencies-table.component.js +133 -0
- package/dist/npm/editing/edit-dialog.component.js +36 -5
- package/dist/npm/editing/edit.service.js +88 -6
- package/dist/npm/editing/task-fields.component.js +45 -0
- package/dist/npm/expanded-state/expandable.directive.js +3 -5
- package/dist/npm/gantt.component.js +116 -45
- package/dist/npm/gantt.module.js +12 -3
- package/dist/npm/index.js +10 -2
- package/dist/npm/localization/gantt-localization.service.js +28 -0
- package/dist/npm/localization/messages.js +45 -1
- package/dist/npm/models/dependency-type.enum.js +16 -0
- package/dist/npm/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/npm/models/models.js +4 -0
- package/dist/npm/models/{events/edit-event.interface.js → toolbar-settings.js} +0 -0
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/timeline/timeline-base-view.service.js +17 -8
- package/dist/npm/toolbar/toolbar.component.js +9 -1
- package/dist/systemjs/kendo-angular-gantt.js +1 -1
- package/package.json +5 -3
- package/dist/es/localization/treelist-messages.directive.js +0 -31
- package/dist/es2015/localization/treelist-messages.directive.js +0 -29
- package/dist/es2015/models/events/add-event.interface.d.ts +0 -16
- package/dist/es2015/models/events/add-event.interface.js +0 -4
- package/dist/es2015/models/events/edit-event.interface.d.ts +0 -19
- package/dist/es2015/models/events/edit-event.interface.js +0 -4
- package/dist/es2015/models/events/remove-event.interface.d.ts +0 -16
- package/dist/es2015/models/events/remove-event.interface.js +0 -4
- package/dist/es2015/models/toolbar-position.d.ts +0 -9
- package/dist/es2015/models/toolbar-position.js +0 -4
- package/dist/npm/localization/treelist-messages.directive.js +0 -33
- package/dist/npm/models/events/remove-event.interface.js +0 -6
- package/dist/npm/models/toolbar-position.js +0 -6
package/dist/fesm5/index.js
CHANGED
|
@@ -6,22 +6,24 @@ import { __extends, __decorate, __metadata, __param, __assign } from 'tslib';
|
|
|
6
6
|
import { Input, Injectable, EventEmitter, 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
8
|
import { cloneDate, addWeeks, firstDayInWeek, addDays, getDate, lastDayOfMonth, firstDayOfMonth, addMonths, isEqual, MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
|
|
9
|
-
import { of, fromEvent, Subject, Subscription } from 'rxjs';
|
|
9
|
+
import { of, fromEvent, Subject, Subscription, forkJoin, EMPTY, isObservable } from 'rxjs';
|
|
10
10
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
11
11
|
import { isDocumentAvailable, closestInScope, matchesClasses, anyChanged, hasObservers, EventsModule } from '@progress/kendo-angular-common';
|
|
12
12
|
import { IntlService } from '@progress/kendo-angular-intl';
|
|
13
13
|
import { orderBy } from '@progress/kendo-data-query';
|
|
14
14
|
import { getter } from '@progress/kendo-common';
|
|
15
|
-
import { map, distinctUntilChanged, take, filter, switchMap } from 'rxjs/operators';
|
|
15
|
+
import { map, distinctUntilChanged, take, expand, reduce, filter, switchMap } from 'rxjs/operators';
|
|
16
16
|
import { LocalizationService, ComponentMessages, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
17
17
|
import { CommonModule } from '@angular/common';
|
|
18
|
-
import { SplitterModule } from '@progress/kendo-angular-layout';
|
|
18
|
+
import { SplitterModule, TabStripModule } from '@progress/kendo-angular-layout';
|
|
19
19
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
20
20
|
import { DialogModule } from '@progress/kendo-angular-dialog';
|
|
21
|
-
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
21
|
+
import { FormGroup, FormControl, Validators, FormArray, ReactiveFormsModule } from '@angular/forms';
|
|
22
22
|
import { LabelModule } from '@progress/kendo-angular-label';
|
|
23
23
|
import { InputsModule } from '@progress/kendo-angular-inputs';
|
|
24
24
|
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
|
|
25
|
+
import { GridModule } from '@progress/kendo-angular-grid';
|
|
26
|
+
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
|
25
27
|
|
|
26
28
|
/**
|
|
27
29
|
* @hidden
|
|
@@ -30,7 +32,7 @@ var packageMetadata = {
|
|
|
30
32
|
name: '@progress/kendo-angular-gantt',
|
|
31
33
|
productName: 'Kendo UI for Angular',
|
|
32
34
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
33
|
-
publishDate:
|
|
35
|
+
publishDate: 1641921322,
|
|
34
36
|
version: '',
|
|
35
37
|
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'
|
|
36
38
|
};
|
|
@@ -789,8 +791,17 @@ var isClearButton = function (contender, gantt) {
|
|
|
789
791
|
return isPresent(clearButtonContainer);
|
|
790
792
|
};
|
|
791
793
|
|
|
794
|
+
/**
|
|
795
|
+
* @hidden
|
|
796
|
+
*/
|
|
792
797
|
var DAY_FORMAT = 'E d/MM';
|
|
798
|
+
/**
|
|
799
|
+
* @hidden
|
|
800
|
+
*/
|
|
793
801
|
var HOUR_FORMAT = 'HH:mm aa';
|
|
802
|
+
/**
|
|
803
|
+
* @hidden
|
|
804
|
+
*/
|
|
794
805
|
var MONTH_FORMAT = 'MMM';
|
|
795
806
|
/**
|
|
796
807
|
* @hidden
|
|
@@ -1371,30 +1382,109 @@ var DependencyDomService = /** @class */ (function () {
|
|
|
1371
1382
|
* @hidden
|
|
1372
1383
|
*/
|
|
1373
1384
|
var EditService = /** @class */ (function () {
|
|
1374
|
-
function EditService() {
|
|
1385
|
+
function EditService(mapper) {
|
|
1386
|
+
var _this = this;
|
|
1387
|
+
this.mapper = mapper;
|
|
1375
1388
|
this.showEditingDialog = new Subject();
|
|
1376
1389
|
this.showConfirmationDialog = new Subject();
|
|
1377
1390
|
this.editEvent = new Subject();
|
|
1391
|
+
this.addEvent = new Subject();
|
|
1392
|
+
this.updatedItems = [];
|
|
1393
|
+
this.deletedItems = [];
|
|
1394
|
+
this.itemIndex = function (item, data) {
|
|
1395
|
+
return data.findIndex(function (dataItem) { return _this.mapper.extractFromTask(dataItem, 'id') === _this.mapper.extractFromTask(item, 'id'); });
|
|
1396
|
+
};
|
|
1378
1397
|
}
|
|
1379
|
-
EditService.prototype
|
|
1398
|
+
Object.defineProperty(EditService.prototype, "dependencies", {
|
|
1399
|
+
get: function () {
|
|
1400
|
+
return this.predecessors.concat(this.successors);
|
|
1401
|
+
},
|
|
1402
|
+
set: function (items) {
|
|
1403
|
+
var _this = this;
|
|
1404
|
+
// Can this whole thing be moved to edit-dialog? Dependencies might not be needed here
|
|
1405
|
+
var dataItemId = this.mapper.extractFromTask(this.dataItem, 'id');
|
|
1406
|
+
this.predecessors = items.filter(function (item) { return _this.mapper.extractFromDependency(item, 'toId') === dataItemId; });
|
|
1407
|
+
this.successors = items.filter(function (item) { return _this.mapper.extractFromDependency(item, 'fromId') === dataItemId; });
|
|
1408
|
+
},
|
|
1409
|
+
enumerable: true,
|
|
1410
|
+
configurable: true
|
|
1411
|
+
});
|
|
1412
|
+
EditService.prototype.createEditDialog = function (dataItem, taskFormGroup, dependencies) {
|
|
1380
1413
|
this.dataItem = dataItem;
|
|
1381
|
-
this.
|
|
1414
|
+
this.taskFormGroup = taskFormGroup;
|
|
1415
|
+
this.dependencies = dependencies;
|
|
1382
1416
|
this.showEditingDialog.next(true);
|
|
1383
1417
|
};
|
|
1384
1418
|
EditService.prototype.closeEditDialog = function () {
|
|
1385
1419
|
this.showEditingDialog.next(false);
|
|
1386
1420
|
this.dataItem = undefined;
|
|
1387
|
-
this.
|
|
1421
|
+
this.taskFormGroup = undefined;
|
|
1422
|
+
this.dependencies = [];
|
|
1423
|
+
this.updatedItems = [];
|
|
1424
|
+
this.deletedItems = [];
|
|
1388
1425
|
};
|
|
1389
1426
|
EditService.prototype.triggerEditEvent = function (editResultType) {
|
|
1390
1427
|
this.editEvent.next({
|
|
1391
|
-
|
|
1428
|
+
taskFormGroup: this.taskFormGroup,
|
|
1392
1429
|
dataItem: this.dataItem,
|
|
1430
|
+
dependencies: {
|
|
1431
|
+
createdItems: this.getCreatedDependencies(),
|
|
1432
|
+
updatedItems: this.updatedItems,
|
|
1433
|
+
deletedItems: this.deletedItems
|
|
1434
|
+
},
|
|
1393
1435
|
editResultType: editResultType
|
|
1394
1436
|
});
|
|
1395
1437
|
};
|
|
1438
|
+
EditService.prototype.updateDependencies = function (item) {
|
|
1439
|
+
if (!this.isNew(item)) {
|
|
1440
|
+
// update
|
|
1441
|
+
var index = this.itemIndex(item, this.updatedItems);
|
|
1442
|
+
if (index !== -1) {
|
|
1443
|
+
this.updatedItems.splice(index, 1, item);
|
|
1444
|
+
}
|
|
1445
|
+
else {
|
|
1446
|
+
this.updatedItems.push(item);
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
};
|
|
1450
|
+
EditService.prototype.getCreatedDependencies = function () {
|
|
1451
|
+
var _this = this;
|
|
1452
|
+
return this.dependencies.filter(function (item) { return _this.mapper.extractFromDependency(item, 'id') === null; });
|
|
1453
|
+
};
|
|
1454
|
+
EditService.prototype.deleteDependency = function (item) {
|
|
1455
|
+
var updatedIndex = this.itemIndex(item, this.updatedItems);
|
|
1456
|
+
if (updatedIndex !== -1) {
|
|
1457
|
+
this.updatedItems.splice(updatedIndex, 1);
|
|
1458
|
+
}
|
|
1459
|
+
if (!this.isNew(item)) {
|
|
1460
|
+
this.deletedItems.push(item);
|
|
1461
|
+
}
|
|
1462
|
+
};
|
|
1463
|
+
EditService.prototype.loadTasks = function (initialValues, isInitializer) {
|
|
1464
|
+
var _this = this;
|
|
1465
|
+
if (isInitializer === void 0) { isInitializer = true; }
|
|
1466
|
+
return forkJoin(initialValues.map(function (v) { return _this.getElementById(v); })).pipe(map(function (value) {
|
|
1467
|
+
return value.reduce(function (acc, item) { return acc = acc.concat(normalizeGanttData(item)); }, []);
|
|
1468
|
+
}), expand(function (values) {
|
|
1469
|
+
if (values.some(function (el) { return _this.hasChildren(el); })) {
|
|
1470
|
+
return _this.loadTasks(values, false);
|
|
1471
|
+
}
|
|
1472
|
+
return EMPTY;
|
|
1473
|
+
}), reduce(function (acc, values) { return acc.concat(values); }, isInitializer ? initialValues.slice() : []));
|
|
1474
|
+
};
|
|
1475
|
+
EditService.prototype.getElementById = function (item) {
|
|
1476
|
+
var children = this.fetchChildren(item);
|
|
1477
|
+
if (isObservable(children)) {
|
|
1478
|
+
return children;
|
|
1479
|
+
}
|
|
1480
|
+
return of(children);
|
|
1481
|
+
};
|
|
1482
|
+
EditService.prototype.isNew = function (item) {
|
|
1483
|
+
return !isPresent(this.mapper.extractFromDependency(item, 'id'));
|
|
1484
|
+
};
|
|
1396
1485
|
EditService = __decorate([
|
|
1397
|
-
Injectable()
|
|
1486
|
+
Injectable(),
|
|
1487
|
+
__metadata("design:paramtypes", [MappingService])
|
|
1398
1488
|
], EditService);
|
|
1399
1489
|
return EditService;
|
|
1400
1490
|
}());
|
|
@@ -1707,6 +1797,25 @@ var mapPath = function (item) { return ({
|
|
|
1707
1797
|
parent: item.parent.data ? mapPath(item.parent) : null
|
|
1708
1798
|
}); };
|
|
1709
1799
|
|
|
1800
|
+
/**
|
|
1801
|
+
* @hidden
|
|
1802
|
+
*
|
|
1803
|
+
* Needed to keep the Gantt's LocalizationService reference and be able to use it component's inside the TabStrip
|
|
1804
|
+
*/
|
|
1805
|
+
var GanttLocalizationService = /** @class */ (function () {
|
|
1806
|
+
function GanttLocalizationService(localizationService) {
|
|
1807
|
+
this.localizationService = localizationService;
|
|
1808
|
+
}
|
|
1809
|
+
GanttLocalizationService.prototype.get = function (token) {
|
|
1810
|
+
return this.localizationService.get(token);
|
|
1811
|
+
};
|
|
1812
|
+
GanttLocalizationService = __decorate([
|
|
1813
|
+
Injectable(),
|
|
1814
|
+
__metadata("design:paramtypes", [LocalizationService])
|
|
1815
|
+
], GanttLocalizationService);
|
|
1816
|
+
return GanttLocalizationService;
|
|
1817
|
+
}());
|
|
1818
|
+
|
|
1710
1819
|
var TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
|
|
1711
1820
|
var DEFAULT_VIEW = 'week';
|
|
1712
1821
|
/**
|
|
@@ -1797,7 +1906,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1797
1906
|
/**
|
|
1798
1907
|
* Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
|
|
1799
1908
|
*
|
|
1800
|
-
* > The [`selectable`]({% slug
|
|
1909
|
+
* > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
|
|
1801
1910
|
*/
|
|
1802
1911
|
this.isSelected = isSelected;
|
|
1803
1912
|
/**
|
|
@@ -1811,29 +1920,10 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1811
1920
|
/**
|
|
1812
1921
|
* Enables or disables the Gantt selection mechanism ([see example]({% slug selection_gantt %}#toc-custom-selection)).
|
|
1813
1922
|
*
|
|
1814
|
-
* > When set to `true`, the [`isSelected`]({% slug
|
|
1923
|
+
* > When set to `true`, the [`isSelected`]({% slug api_gantt_ganttcomponent %}#toc-isselected) callback has to be provided.
|
|
1815
1924
|
* > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
|
|
1816
1925
|
*/
|
|
1817
1926
|
this.selectable = false;
|
|
1818
|
-
/**
|
|
1819
|
-
* The position of the toolbar.
|
|
1820
|
-
*
|
|
1821
|
-
* The possible values are:
|
|
1822
|
-
* - `top`—Positions the toolbar above the Gantt panes.
|
|
1823
|
-
* - `bottom`—Positions the toolbar below the Gantt panes.
|
|
1824
|
-
* - `both`—Displays two toolbar instances. Positions the first one above,
|
|
1825
|
-
* and the second one - below the Gantt panes.
|
|
1826
|
-
* - `none`—No toolbar is rendered.
|
|
1827
|
-
*/
|
|
1828
|
-
this.toolbarPosition = 'top';
|
|
1829
|
-
/**
|
|
1830
|
-
* Gets or sets the callback function that retrieves the child items for a particular item.
|
|
1831
|
-
*/
|
|
1832
|
-
this.fetchChildren = fetchChildren;
|
|
1833
|
-
/**
|
|
1834
|
-
* Gets or sets the callback function that indicates if a particular item has child items.
|
|
1835
|
-
*/
|
|
1836
|
-
this.hasChildren = hasChildren;
|
|
1837
1927
|
/**
|
|
1838
1928
|
* Defines the dependencies that will be drawn between the rendered tasks.
|
|
1839
1929
|
*
|
|
@@ -1935,6 +2025,10 @@ var GanttComponent = /** @class */ (function () {
|
|
|
1935
2025
|
* Fires when the user saves an edited task.
|
|
1936
2026
|
*/
|
|
1937
2027
|
this.save = new EventEmitter();
|
|
2028
|
+
/**
|
|
2029
|
+
* Fires when the user adds a task.
|
|
2030
|
+
*/
|
|
2031
|
+
this.taskAdd = new EventEmitter();
|
|
1938
2032
|
/**
|
|
1939
2033
|
* Fires when the sorting of the Gantt is changed.
|
|
1940
2034
|
* You have to handle the event yourself and sort the data.
|
|
@@ -2012,6 +2106,13 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2012
2106
|
this._rowClass = rowClassCallback;
|
|
2013
2107
|
this._taskClass = taskClassCallback;
|
|
2014
2108
|
this._activeView = DEFAULT_VIEW;
|
|
2109
|
+
this._toolbarSettings = {
|
|
2110
|
+
position: 'top',
|
|
2111
|
+
addTaskTool: 'none',
|
|
2112
|
+
viewSelectorTool: 'top'
|
|
2113
|
+
};
|
|
2114
|
+
this._fetchChildren = fetchChildren;
|
|
2115
|
+
this._hasChildren = hasChildren;
|
|
2015
2116
|
this.rtl = false;
|
|
2016
2117
|
this.optionChangesSubscriptions = new Subscription();
|
|
2017
2118
|
this.editServiceSubscription = new Subscription();
|
|
@@ -2022,18 +2123,27 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2022
2123
|
this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(function () {
|
|
2023
2124
|
_this.treeList.columns.notifyOnChanges();
|
|
2024
2125
|
}));
|
|
2126
|
+
this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
|
|
2025
2127
|
this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(function (show) { return _this.showEditingDialog = show; }));
|
|
2026
2128
|
this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(function () { return _this.taskDelete.emit(); }));
|
|
2027
2129
|
this.editServiceSubscription.add(this.editService.editEvent.subscribe(function (args) {
|
|
2028
2130
|
_this[args.editResultType].emit({
|
|
2029
|
-
|
|
2131
|
+
taskFormGroup: args.taskFormGroup,
|
|
2030
2132
|
item: getEditItem(args.dataItem, _this.treeList.view.data, _this.mapper),
|
|
2133
|
+
dependencies: args.dependencies,
|
|
2031
2134
|
sender: _this
|
|
2032
2135
|
});
|
|
2033
2136
|
_this.showConfirmationDialog = _this.showEditingDialog = false;
|
|
2034
|
-
_this.editService.dataItem = _this.editService.
|
|
2137
|
+
_this.editService.dataItem = _this.editService.taskFormGroup = null;
|
|
2138
|
+
_this.updateView();
|
|
2139
|
+
}));
|
|
2140
|
+
this.editServiceSubscription.add(this.editService.addEvent.subscribe(function (args) {
|
|
2141
|
+
var selectedItem = _this.getFirstSelectedItem();
|
|
2142
|
+
_this.taskAdd.emit({
|
|
2143
|
+
actionType: args.actionType,
|
|
2144
|
+
selectedItem: selectedItem ? getEditItem(selectedItem, _this.treeList.view.data, _this.mapper) : null
|
|
2145
|
+
});
|
|
2035
2146
|
_this.updateView();
|
|
2036
|
-
_this.dependencyDomService.notifyChanges();
|
|
2037
2147
|
}));
|
|
2038
2148
|
this.localizationSubscription = this.localizationService.changes.subscribe(function (_a) {
|
|
2039
2149
|
var rtl = _a.rtl;
|
|
@@ -2139,6 +2249,61 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2139
2249
|
enumerable: true,
|
|
2140
2250
|
configurable: true
|
|
2141
2251
|
});
|
|
2252
|
+
Object.defineProperty(GanttComponent.prototype, "toolbarSettings", {
|
|
2253
|
+
get: function () {
|
|
2254
|
+
return this._toolbarSettings;
|
|
2255
|
+
},
|
|
2256
|
+
/**
|
|
2257
|
+
* The toolbar configuration. Defines the position and content of the toolbar(s).
|
|
2258
|
+
* The available properties are `position`, `addTaskTool`, and `viewSelectorTool`.
|
|
2259
|
+
* All are optional and default to `top`.
|
|
2260
|
+
*
|
|
2261
|
+
* The possible values for each option are:
|
|
2262
|
+
* - `top`—Positions the toolbar above the Gantt panes. Renders the respective tool in the top toolbar.
|
|
2263
|
+
* - `bottom`—Positions the toolbar below the Gantt panes. Renders the respective tool in the bottom toolbar.
|
|
2264
|
+
* - `both`—Displays two toolbar instances. Positions the first one above,
|
|
2265
|
+
* and the second one - below the Gantt panes. Renders the respective tool in the both toolbars.
|
|
2266
|
+
* - `none`—No toolbar is rendered when used for setting `position`.
|
|
2267
|
+
* No add task or view selector tool is rendered when used for setting `addTaskTool` or `viewSelectorTool`.
|
|
2268
|
+
*/
|
|
2269
|
+
set: function (value) {
|
|
2270
|
+
this._toolbarSettings = {
|
|
2271
|
+
position: value.position || 'top',
|
|
2272
|
+
addTaskTool: value.addTaskTool || 'none',
|
|
2273
|
+
viewSelectorTool: value.viewSelectorTool || 'top'
|
|
2274
|
+
};
|
|
2275
|
+
},
|
|
2276
|
+
enumerable: true,
|
|
2277
|
+
configurable: true
|
|
2278
|
+
});
|
|
2279
|
+
Object.defineProperty(GanttComponent.prototype, "fetchChildren", {
|
|
2280
|
+
get: function () {
|
|
2281
|
+
return this._fetchChildren;
|
|
2282
|
+
},
|
|
2283
|
+
/**
|
|
2284
|
+
* Gets or sets the callback function that retrieves the child items for a particular item.
|
|
2285
|
+
*/
|
|
2286
|
+
set: function (fn) {
|
|
2287
|
+
this._fetchChildren = fn;
|
|
2288
|
+
this.editService.fetchChildren = fn;
|
|
2289
|
+
},
|
|
2290
|
+
enumerable: true,
|
|
2291
|
+
configurable: true
|
|
2292
|
+
});
|
|
2293
|
+
Object.defineProperty(GanttComponent.prototype, "hasChildren", {
|
|
2294
|
+
get: function () {
|
|
2295
|
+
return this._hasChildren;
|
|
2296
|
+
},
|
|
2297
|
+
/**
|
|
2298
|
+
* Gets or sets the callback function that indicates if a particular item has child items.
|
|
2299
|
+
*/
|
|
2300
|
+
set: function (fn) {
|
|
2301
|
+
this._hasChildren = fn;
|
|
2302
|
+
this.editService.hasChildren = fn;
|
|
2303
|
+
},
|
|
2304
|
+
enumerable: true,
|
|
2305
|
+
configurable: true
|
|
2306
|
+
});
|
|
2142
2307
|
Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
|
|
2143
2308
|
get: function () {
|
|
2144
2309
|
return __assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
|
|
@@ -2290,16 +2455,6 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2290
2455
|
enumerable: true,
|
|
2291
2456
|
configurable: true
|
|
2292
2457
|
});
|
|
2293
|
-
Object.defineProperty(GanttComponent.prototype, "editDialogFormGroup", {
|
|
2294
|
-
/**
|
|
2295
|
-
* @hidden
|
|
2296
|
-
*/
|
|
2297
|
-
get: function () {
|
|
2298
|
-
return this.editService.formGroup;
|
|
2299
|
-
},
|
|
2300
|
-
enumerable: true,
|
|
2301
|
-
configurable: true
|
|
2302
|
-
});
|
|
2303
2458
|
GanttComponent.prototype.ngOnChanges = function (changes) {
|
|
2304
2459
|
if (anyChanged(['data', 'activeView', 'workWeekStart', 'workWeekEnd', 'workDayStart', 'workDayEnd'], changes)) {
|
|
2305
2460
|
this.loadTimelineData();
|
|
@@ -2373,19 +2528,30 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2373
2528
|
}
|
|
2374
2529
|
};
|
|
2375
2530
|
/**
|
|
2376
|
-
*
|
|
2531
|
+
* Forces the TreeList to evaluate if some data items have changed and re-renders the rows information, if needed.
|
|
2532
|
+
* Recalculates and re-renders the Timeline period, if needed.
|
|
2533
|
+
* Redraws changed dependencies, if needed.
|
|
2534
|
+
* Executes all row-related callbacks anew.
|
|
2377
2535
|
*/
|
|
2378
2536
|
GanttComponent.prototype.updateView = function () {
|
|
2379
2537
|
if (isPresent(this.treeList)) {
|
|
2380
2538
|
this.treeList.updateView();
|
|
2381
2539
|
}
|
|
2540
|
+
this.loadTimelineData();
|
|
2541
|
+
this.dependencyDomService.notifyChanges();
|
|
2382
2542
|
};
|
|
2383
2543
|
/**
|
|
2384
2544
|
* Opens the task editing dialog.
|
|
2385
2545
|
*/
|
|
2386
2546
|
GanttComponent.prototype.editTask = function (dataItem, formGroup) {
|
|
2547
|
+
var _this = this;
|
|
2387
2548
|
if (!this.showEditingDialog) {
|
|
2388
|
-
this.
|
|
2549
|
+
var taskId_1 = this.mapper.extractFromTask(dataItem, 'id');
|
|
2550
|
+
var dependencies = this.dependencies.filter(function (item) {
|
|
2551
|
+
return _this.mapper.extractFromDependency(item, 'toId') === taskId_1
|
|
2552
|
+
|| _this.mapper.extractFromDependency(item, 'fromId') === taskId_1;
|
|
2553
|
+
});
|
|
2554
|
+
this.editService.createEditDialog(dataItem, formGroup, dependencies);
|
|
2389
2555
|
}
|
|
2390
2556
|
};
|
|
2391
2557
|
/**
|
|
@@ -2458,7 +2624,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2458
2624
|
* @hidden
|
|
2459
2625
|
*/
|
|
2460
2626
|
GanttComponent.prototype.showToolbar = function (position) {
|
|
2461
|
-
return this.
|
|
2627
|
+
return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
|
|
2462
2628
|
};
|
|
2463
2629
|
/**
|
|
2464
2630
|
* @hidden
|
|
@@ -2626,7 +2792,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2626
2792
|
items: [dataItem],
|
|
2627
2793
|
sender: this
|
|
2628
2794
|
});
|
|
2629
|
-
this.updateView();
|
|
2795
|
+
this.treeList.updateView();
|
|
2630
2796
|
};
|
|
2631
2797
|
GanttComponent.prototype.updateTreeListGroupClass = function (columns) {
|
|
2632
2798
|
if (columns === void 0) { columns = this.columns; }
|
|
@@ -2666,6 +2832,11 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2666
2832
|
var shouldToggleSelection = ctrlKey || metaKey;
|
|
2667
2833
|
return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
|
|
2668
2834
|
};
|
|
2835
|
+
GanttComponent.prototype.getFirstSelectedItem = function () {
|
|
2836
|
+
var isSelectedCallback = this.isSelected || isSelected;
|
|
2837
|
+
var loadedItems = this.renderedTreeListItems || [];
|
|
2838
|
+
return loadedItems.find(isSelectedCallback);
|
|
2839
|
+
};
|
|
2669
2840
|
var GanttComponent_1;
|
|
2670
2841
|
__decorate([
|
|
2671
2842
|
ViewChild(TreeListComponent, { static: true }),
|
|
@@ -2739,16 +2910,19 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2739
2910
|
], GanttComponent.prototype, "selectable", void 0);
|
|
2740
2911
|
__decorate([
|
|
2741
2912
|
Input(),
|
|
2742
|
-
__metadata("design:type",
|
|
2743
|
-
|
|
2913
|
+
__metadata("design:type", Object),
|
|
2914
|
+
__metadata("design:paramtypes", [Object])
|
|
2915
|
+
], GanttComponent.prototype, "toolbarSettings", null);
|
|
2744
2916
|
__decorate([
|
|
2745
2917
|
Input(),
|
|
2746
|
-
__metadata("design:type", Function)
|
|
2747
|
-
|
|
2918
|
+
__metadata("design:type", Function),
|
|
2919
|
+
__metadata("design:paramtypes", [Function])
|
|
2920
|
+
], GanttComponent.prototype, "fetchChildren", null);
|
|
2748
2921
|
__decorate([
|
|
2749
2922
|
Input(),
|
|
2750
|
-
__metadata("design:type", Function)
|
|
2751
|
-
|
|
2923
|
+
__metadata("design:type", Function),
|
|
2924
|
+
__metadata("design:paramtypes", [Function])
|
|
2925
|
+
], GanttComponent.prototype, "hasChildren", null);
|
|
2752
2926
|
__decorate([
|
|
2753
2927
|
Input(),
|
|
2754
2928
|
__metadata("design:type", Array)
|
|
@@ -2861,6 +3035,10 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2861
3035
|
Output(),
|
|
2862
3036
|
__metadata("design:type", EventEmitter)
|
|
2863
3037
|
], GanttComponent.prototype, "save", void 0);
|
|
3038
|
+
__decorate([
|
|
3039
|
+
Output(),
|
|
3040
|
+
__metadata("design:type", EventEmitter)
|
|
3041
|
+
], GanttComponent.prototype, "taskAdd", void 0);
|
|
2864
3042
|
__decorate([
|
|
2865
3043
|
Output(),
|
|
2866
3044
|
__metadata("design:type", EventEmitter)
|
|
@@ -2918,6 +3096,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2918
3096
|
selector: 'kendo-gantt',
|
|
2919
3097
|
exportAs: 'kendoGantt',
|
|
2920
3098
|
providers: [
|
|
3099
|
+
GanttLocalizationService,
|
|
2921
3100
|
LocalizationService,
|
|
2922
3101
|
{
|
|
2923
3102
|
provide: DataBoundTreeComponent,
|
|
@@ -2937,7 +3116,7 @@ var GanttComponent = /** @class */ (function () {
|
|
|
2937
3116
|
OptionChangesService,
|
|
2938
3117
|
EditService
|
|
2939
3118
|
],
|
|
2940
|
-
template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages [kendoGanttTreeListMessages]=\"localizationService\"></kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [rows]=\"renderedTreeListItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [hasChildren]=\"hasChildren\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog *ngIf=\"showEditingDialog\" [formGroup]=\"editDialogFormGroup\"></kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"showConfirmationDialog = false;\">\n <span>{{getText('confirmationDialogContent')}}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"showConfirmationDialog = false;\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
|
|
3119
|
+
template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskEditingGeneralTabTitle=\"kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip\"\n taskEditingGeneralTabTitle=\"General\"\n\n i18n-taskEditingPredecessorsTabTitle=\"kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip\"\n taskEditingPredecessorsTabTitle=\"Predecessors\"\n\n i18n-taskEditingSuccessorsTabTitle=\"kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip\"\n taskEditingSuccessorsTabTitle=\"Successors\"\n\n i18n-taskEditingDependenciesAddButtonText=\"kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesAddButtonText=\"Add\"\n\n i18n-taskEditingDependenciesRemoveButtonText=\"kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesRemoveButtonText=\"Remove\"\n\n i18n-taskEditingDependenciesGridNameColumnTitle=\"kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridNameColumnTitle=\"Task Title\"\n\n i18n-taskEditingDependenciesGridTypeColumnTitle=\"kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridTypeColumnTitle=\"Type\"\n\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-addTaskText=\"kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component\"\n addTaskText=\"Add Task\"\n\n i18n-addChildText=\"kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component\"\n addChildText=\"Add Child\"\n\n i18n-addAboveText=\"kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component\"\n addAboveText=\"Add Above\"\n\n i18n-addBelowText=\"kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component\"\n addBelowText=\"Add Below\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages\n [noRecords]=\"getText('noRecords')\"\n [filter]=\"getText('filter')\"\n [filterEqOperator]=\"getText('filterEqOperator')\"\n [filterNotEqOperator]=\"getText('filterNotEqOperator')\"\n [filterIsNullOperator]=\"getText('filterIsNullOperator')\"\n [filterIsNotNullOperator]=\"getText('filterIsNotNullOperator')\"\n [filterIsEmptyOperator]=\"getText('filterIsEmptyOperator')\"\n [filterIsNotEmptyOperator]=\"getText('filterIsNotEmptyOperator')\"\n [filterStartsWithOperator]=\"getText('filterStartsWithOperator')\"\n [filterContainsOperator]=\"getText('filterContainsOperator')\"\n [filterNotContainsOperator]=\"getText('filterNotContainsOperator')\"\n [filterEndsWithOperator]=\"getText('filterEndsWithOperator')\"\n [filterGteOperator]=\"getText('filterGteOperator')\"\n [filterGtOperator]=\"getText('filterGtOperator')\"\n [filterLteOperator]=\"getText('filterLteOperator')\"\n [filterLtOperator]=\"getText('filterLtOperator')\"\n [filterIsTrue]=\"getText('filterIsTrue')\"\n [filterIsFalse]=\"getText('filterIsFalse')\"\n [filterBooleanAll]=\"getText('filterBooleanAll')\"\n [filterAfterOrEqualOperator]=\"getText('filterAfterOrEqualOperator')\"\n [filterAfterOperator]=\"getText('filterAfterOperator')\"\n [filterBeforeOperator]=\"getText('filterBeforeOperator')\"\n [filterBeforeOrEqualOperator]=\"getText('filterBeforeOrEqualOperator')\"\n [filterFilterButton]=\"getText('filterFilterButton')\"\n [filterClearButton]=\"getText('filterClearButton')\"\n [filterAndLogic]=\"getText('filterAndLogic')\"\n [filterOrLogic]=\"getText('filterOrLogic')\"\n [loading]=\"getText('loading')\"\n [columnMenu]=\"getText('columnMenu')\"\n [columns]=\"getText('columns')\"\n [sortable]=\"getText('sortable')\"\n [sortAscending]=\"getText('sortAscending')\"\n [sortDescending]=\"getText('sortDescending')\"\n [sortedAscending]=\"getText('sortedAscending')\"\n [sortedDescending]=\"getText('sortedDescending')\"\n [sortedDefault]=\"getText('sortedDefault')\"\n [columnsApply]=\"getText('columnsApply')\"\n [columnsReset]=\"getText('columnsReset')\"\n >\n </kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [rows]=\"renderedTreeListItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [hasChildren]=\"hasChildren\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog\n *ngIf=\"showEditingDialog\"\n [data]=\"data\">\n </kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"showConfirmationDialog = false;\">\n <span>{{ getText('confirmationDialogContent') }}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"showConfirmationDialog = false;\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
|
|
2941
3120
|
}),
|
|
2942
3121
|
__metadata("design:paramtypes", [TimelineViewService,
|
|
2943
3122
|
ScrollSyncService,
|
|
@@ -3467,9 +3646,8 @@ var GanttHierarchyBindingDirective = /** @class */ (function (_super) {
|
|
|
3467
3646
|
*/
|
|
3468
3647
|
var GanttExpandableDirective = /** @class */ (function (_super) {
|
|
3469
3648
|
__extends(GanttExpandableDirective, _super);
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
return _super.call(this, gantt) || this;
|
|
3649
|
+
function GanttExpandableDirective() {
|
|
3650
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
3473
3651
|
}
|
|
3474
3652
|
__decorate([
|
|
3475
3653
|
Input(),
|
|
@@ -3479,8 +3657,7 @@ var GanttExpandableDirective = /** @class */ (function (_super) {
|
|
|
3479
3657
|
Directive({
|
|
3480
3658
|
exportAs: 'kendoGanttExpandable',
|
|
3481
3659
|
selector: '[kendoGanttExpandable]'
|
|
3482
|
-
})
|
|
3483
|
-
__metadata("design:paramtypes", [ExpandableTreeComponent])
|
|
3660
|
+
})
|
|
3484
3661
|
], GanttExpandableDirective);
|
|
3485
3662
|
return GanttExpandableDirective;
|
|
3486
3663
|
}(ExpandableDirective));
|
|
@@ -3658,6 +3835,14 @@ var ToolbarComponent = /** @class */ (function () {
|
|
|
3658
3835
|
this.gantt.activeViewChange.emit(e);
|
|
3659
3836
|
this.scrollSyncService.resetTimelineScrollLeft();
|
|
3660
3837
|
};
|
|
3838
|
+
__decorate([
|
|
3839
|
+
Input(),
|
|
3840
|
+
__metadata("design:type", Boolean)
|
|
3841
|
+
], ToolbarComponent.prototype, "showAddTask", void 0);
|
|
3842
|
+
__decorate([
|
|
3843
|
+
Input(),
|
|
3844
|
+
__metadata("design:type", Boolean)
|
|
3845
|
+
], ToolbarComponent.prototype, "showViewSelector", void 0);
|
|
3661
3846
|
__decorate([
|
|
3662
3847
|
Input(),
|
|
3663
3848
|
__metadata("design:type", String),
|
|
@@ -3666,7 +3851,7 @@ var ToolbarComponent = /** @class */ (function () {
|
|
|
3666
3851
|
ToolbarComponent = __decorate([
|
|
3667
3852
|
Component({
|
|
3668
3853
|
selector: 'kendo-gantt-toolbar',
|
|
3669
|
-
template: "\n <ng-container *ngIf=\"!renderTemplate\">\n <span class=\"k-spacer k-toolbar-spacer\"></span>\n <kendo-gantt-view-selector\n [views]=\"gantt.viewTypes\"\n [activeView]=\"gantt.activeView\"\n (activeViewChange)=\"onViewChange($event)\"></kendo-gantt-view-selector>\n </ng-container>\n <ng-template\n *ngIf=\"renderTemplate\"\n [ngTemplateOutlet]=\"toolbarTemplateRef\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-template>\n "
|
|
3854
|
+
template: "\n <ng-container *ngIf=\"!renderTemplate\">\n <kendo-gantt-add-task *ngIf=\"showAddTask\"></kendo-gantt-add-task>\n <span class=\"k-spacer k-toolbar-spacer\"></span>\n <kendo-gantt-view-selector\n *ngIf=\"showViewSelector\"\n [views]=\"gantt.viewTypes\"\n [activeView]=\"gantt.activeView\"\n (activeViewChange)=\"onViewChange($event)\"></kendo-gantt-view-selector>\n </ng-container>\n <ng-template\n *ngIf=\"renderTemplate\"\n [ngTemplateOutlet]=\"toolbarTemplateRef\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-template>\n "
|
|
3670
3855
|
}),
|
|
3671
3856
|
__metadata("design:paramtypes", [GanttComponent,
|
|
3672
3857
|
ScrollSyncService])
|
|
@@ -3731,6 +3916,23 @@ var ViewSelectorComponent = /** @class */ (function () {
|
|
|
3731
3916
|
return ViewSelectorComponent;
|
|
3732
3917
|
}());
|
|
3733
3918
|
|
|
3919
|
+
/**
|
|
3920
|
+
* The dependency type when two tasks are connected.
|
|
3921
|
+
*
|
|
3922
|
+
* The supported values are:
|
|
3923
|
+
* * `FF`—from 'finish' to 'finish'
|
|
3924
|
+
* * `FS`—from 'finish' to 'start'
|
|
3925
|
+
* * `SS`—from 'start' to 'start'
|
|
3926
|
+
* * `SF`—from 'start' to 'finish'
|
|
3927
|
+
*/
|
|
3928
|
+
var DependencyType;
|
|
3929
|
+
(function (DependencyType) {
|
|
3930
|
+
DependencyType[DependencyType["FF"] = 0] = "FF";
|
|
3931
|
+
DependencyType[DependencyType["FS"] = 1] = "FS";
|
|
3932
|
+
DependencyType[DependencyType["SF"] = 2] = "SF";
|
|
3933
|
+
DependencyType[DependencyType["SS"] = 3] = "SS"; // task B can't start before task A starts
|
|
3934
|
+
})(DependencyType || (DependencyType = {}));
|
|
3935
|
+
|
|
3734
3936
|
/**
|
|
3735
3937
|
* @hidden
|
|
3736
3938
|
*
|
|
@@ -3774,9 +3976,9 @@ var dependencyCoordinates = function (from, to, rowHeight, type, minDistanceBefo
|
|
|
3774
3976
|
| |
|
|
3775
3977
|
[[[]]]- -[[[]]]
|
|
3776
3978
|
*/
|
|
3777
|
-
if (type ===
|
|
3979
|
+
if (type === DependencyType.FF || type === DependencyType.SS) {
|
|
3778
3980
|
// polyline start from first task
|
|
3779
|
-
var dir = type ===
|
|
3981
|
+
var dir = type === DependencyType.SS ? 'left' : 'right';
|
|
3780
3982
|
top = from.top;
|
|
3781
3983
|
left = from[dir];
|
|
3782
3984
|
points.push({ top: top, left: left });
|
|
@@ -3802,9 +4004,9 @@ var dependencyCoordinates = function (from, to, rowHeight, type, minDistanceBefo
|
|
|
3802
4004
|
|
|
|
3803
4005
|
-[[[]]]
|
|
3804
4006
|
*/
|
|
3805
|
-
var startDir = type ===
|
|
3806
|
-
var endDir = type ===
|
|
3807
|
-
var additionalTurn = type ===
|
|
4007
|
+
var startDir = type === DependencyType.SF ? 'left' : 'right';
|
|
4008
|
+
var endDir = type === DependencyType.SF ? 'right' : 'left';
|
|
4009
|
+
var additionalTurn = type === DependencyType.SF
|
|
3808
4010
|
? from[startDir] - minDistanceBeforeTurn * 2 < to[endDir]
|
|
3809
4011
|
: from[startDir] + minDistanceBeforeTurn * 2 > to[endDir];
|
|
3810
4012
|
// polyline start from first task
|
|
@@ -4057,14 +4259,44 @@ var TimelineMonthViewComponent = /** @class */ (function (_super) {
|
|
|
4057
4259
|
* @hidden
|
|
4058
4260
|
*/
|
|
4059
4261
|
var EditDialogComponent = /** @class */ (function () {
|
|
4060
|
-
function EditDialogComponent(mapper, editService, localizationService) {
|
|
4262
|
+
function EditDialogComponent(mapper, editService, cdr, localizationService) {
|
|
4061
4263
|
this.mapper = mapper;
|
|
4062
4264
|
this.editService = editService;
|
|
4265
|
+
this.cdr = cdr;
|
|
4063
4266
|
this.localizationService = localizationService;
|
|
4064
4267
|
}
|
|
4268
|
+
EditDialogComponent.prototype.ngOnInit = function () {
|
|
4269
|
+
var _this = this;
|
|
4270
|
+
this.editService.loadTasks(this.data).subscribe(function (value) {
|
|
4271
|
+
_this.loadedTasks = value;
|
|
4272
|
+
});
|
|
4273
|
+
};
|
|
4274
|
+
Object.defineProperty(EditDialogComponent.prototype, "predecessors", {
|
|
4275
|
+
get: function () {
|
|
4276
|
+
return this.editService.predecessors;
|
|
4277
|
+
},
|
|
4278
|
+
set: function (items) {
|
|
4279
|
+
this.editService.predecessors = items;
|
|
4280
|
+
},
|
|
4281
|
+
enumerable: true,
|
|
4282
|
+
configurable: true
|
|
4283
|
+
});
|
|
4284
|
+
Object.defineProperty(EditDialogComponent.prototype, "successors", {
|
|
4285
|
+
get: function () {
|
|
4286
|
+
return this.editService.successors;
|
|
4287
|
+
},
|
|
4288
|
+
set: function (items) {
|
|
4289
|
+
this.editService.successors = items;
|
|
4290
|
+
},
|
|
4291
|
+
enumerable: true,
|
|
4292
|
+
configurable: true
|
|
4293
|
+
});
|
|
4065
4294
|
EditDialogComponent.prototype.getText = function (token) {
|
|
4066
4295
|
return this.localizationService.get(token);
|
|
4067
4296
|
};
|
|
4297
|
+
EditDialogComponent.prototype.getDependencyType = function (typeId) {
|
|
4298
|
+
return DependencyType[typeId];
|
|
4299
|
+
};
|
|
4068
4300
|
EditDialogComponent.prototype.handleEditingResult = function (editResultType) {
|
|
4069
4301
|
this.editService.triggerEditEvent(editResultType);
|
|
4070
4302
|
};
|
|
@@ -4073,15 +4305,16 @@ var EditDialogComponent = /** @class */ (function () {
|
|
|
4073
4305
|
};
|
|
4074
4306
|
__decorate([
|
|
4075
4307
|
Input(),
|
|
4076
|
-
__metadata("design:type",
|
|
4077
|
-
], EditDialogComponent.prototype, "
|
|
4308
|
+
__metadata("design:type", Array)
|
|
4309
|
+
], EditDialogComponent.prototype, "data", void 0);
|
|
4078
4310
|
EditDialogComponent = __decorate([
|
|
4079
4311
|
Component({
|
|
4080
4312
|
selector: 'kendo-gantt-edit-dialog',
|
|
4081
|
-
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 <
|
|
4313
|
+
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 "
|
|
4082
4314
|
}),
|
|
4083
4315
|
__metadata("design:paramtypes", [MappingService,
|
|
4084
4316
|
EditService,
|
|
4317
|
+
ChangeDetectorRef,
|
|
4085
4318
|
LocalizationService])
|
|
4086
4319
|
], EditDialogComponent);
|
|
4087
4320
|
return EditDialogComponent;
|
|
@@ -4095,6 +4328,38 @@ var Messages = /** @class */ (function (_super) {
|
|
|
4095
4328
|
function Messages() {
|
|
4096
4329
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
4097
4330
|
}
|
|
4331
|
+
__decorate([
|
|
4332
|
+
Input(),
|
|
4333
|
+
__metadata("design:type", String)
|
|
4334
|
+
], Messages.prototype, "taskEditingGeneralTabTitle", void 0);
|
|
4335
|
+
__decorate([
|
|
4336
|
+
Input(),
|
|
4337
|
+
__metadata("design:type", String)
|
|
4338
|
+
], Messages.prototype, "taskEditingPredecessorsTabTitle", void 0);
|
|
4339
|
+
__decorate([
|
|
4340
|
+
Input(),
|
|
4341
|
+
__metadata("design:type", String)
|
|
4342
|
+
], Messages.prototype, "taskEditingSuccessorsTabTitle", void 0);
|
|
4343
|
+
__decorate([
|
|
4344
|
+
Input(),
|
|
4345
|
+
__metadata("design:type", String)
|
|
4346
|
+
], Messages.prototype, "taskEditingDependenciesAddButtonText", void 0);
|
|
4347
|
+
__decorate([
|
|
4348
|
+
Input(),
|
|
4349
|
+
__metadata("design:type", String)
|
|
4350
|
+
], Messages.prototype, "taskEditingDependenciesRemoveButtonText", void 0);
|
|
4351
|
+
__decorate([
|
|
4352
|
+
Input(),
|
|
4353
|
+
__metadata("design:type", String)
|
|
4354
|
+
], Messages.prototype, "taskEditingDependenciesGridNameColumnTitle", void 0);
|
|
4355
|
+
__decorate([
|
|
4356
|
+
Input(),
|
|
4357
|
+
__metadata("design:type", String)
|
|
4358
|
+
], Messages.prototype, "taskEditingDependenciesGridTypeColumnTitle", void 0);
|
|
4359
|
+
__decorate([
|
|
4360
|
+
Input(),
|
|
4361
|
+
__metadata("design:type", String)
|
|
4362
|
+
], Messages.prototype, "deleteButtonText", void 0);
|
|
4098
4363
|
__decorate([
|
|
4099
4364
|
Input(),
|
|
4100
4365
|
__metadata("design:type", String)
|
|
@@ -4118,7 +4383,19 @@ var Messages = /** @class */ (function (_super) {
|
|
|
4118
4383
|
__decorate([
|
|
4119
4384
|
Input(),
|
|
4120
4385
|
__metadata("design:type", String)
|
|
4121
|
-
], Messages.prototype, "
|
|
4386
|
+
], Messages.prototype, "addTaskText", void 0);
|
|
4387
|
+
__decorate([
|
|
4388
|
+
Input(),
|
|
4389
|
+
__metadata("design:type", String)
|
|
4390
|
+
], Messages.prototype, "addChildText", void 0);
|
|
4391
|
+
__decorate([
|
|
4392
|
+
Input(),
|
|
4393
|
+
__metadata("design:type", String)
|
|
4394
|
+
], Messages.prototype, "addAboveText", void 0);
|
|
4395
|
+
__decorate([
|
|
4396
|
+
Input(),
|
|
4397
|
+
__metadata("design:type", String)
|
|
4398
|
+
], Messages.prototype, "addBelowText", void 0);
|
|
4122
4399
|
__decorate([
|
|
4123
4400
|
Input(),
|
|
4124
4401
|
__metadata("design:type", String)
|
|
@@ -4389,28 +4666,244 @@ var LocalizedMessagesDirective = /** @class */ (function (_super) {
|
|
|
4389
4666
|
return LocalizedMessagesDirective;
|
|
4390
4667
|
}(Messages));
|
|
4391
4668
|
|
|
4669
|
+
/**
|
|
4670
|
+
* The UI for adding new items to the Gantt.
|
|
4671
|
+
* Use it within a toolbar template to provide a custom icon or list of options.
|
|
4672
|
+
*/
|
|
4673
|
+
var GanttAddTaskComponent = /** @class */ (function () {
|
|
4674
|
+
function GanttAddTaskComponent(localizationService, editService, ngZone) {
|
|
4675
|
+
this.localizationService = localizationService;
|
|
4676
|
+
this.editService = editService;
|
|
4677
|
+
this.ngZone = ngZone;
|
|
4678
|
+
/**
|
|
4679
|
+
* Sets the data of the DropDownButton.
|
|
4680
|
+
* > The data has to be provided in an array-like list.
|
|
4681
|
+
*/
|
|
4682
|
+
this.data = [{
|
|
4683
|
+
text: this.getText('addChildText'),
|
|
4684
|
+
type: 'addChild'
|
|
4685
|
+
}, {
|
|
4686
|
+
text: this.getText('addAboveText'),
|
|
4687
|
+
type: 'addAbove'
|
|
4688
|
+
}, {
|
|
4689
|
+
text: this.getText('addBelowText'),
|
|
4690
|
+
type: 'addBelow'
|
|
4691
|
+
}];
|
|
4692
|
+
/**
|
|
4693
|
+
* Defines the name of an existing icon in a Kendo UI theme.
|
|
4694
|
+
* @default 'plus'
|
|
4695
|
+
*/
|
|
4696
|
+
this.icon = 'plus';
|
|
4697
|
+
}
|
|
4698
|
+
/**
|
|
4699
|
+
* @hidden
|
|
4700
|
+
*/
|
|
4701
|
+
GanttAddTaskComponent.prototype.getText = function (message) {
|
|
4702
|
+
return this.localizationService.get(message);
|
|
4703
|
+
};
|
|
4704
|
+
/**
|
|
4705
|
+
* @hidden
|
|
4706
|
+
*/
|
|
4707
|
+
GanttAddTaskComponent.prototype.handleOpen = function (e) {
|
|
4708
|
+
if (!this.editService.getSelectedItem()) {
|
|
4709
|
+
e.preventDefault();
|
|
4710
|
+
}
|
|
4711
|
+
};
|
|
4712
|
+
/**
|
|
4713
|
+
* @hidden
|
|
4714
|
+
*/
|
|
4715
|
+
GanttAddTaskComponent.prototype.handleMouseClick = function () {
|
|
4716
|
+
var _this = this;
|
|
4717
|
+
if (!this.editService.getSelectedItem()) {
|
|
4718
|
+
this.ngZone.run(function () {
|
|
4719
|
+
_this.editService.addEvent.next({
|
|
4720
|
+
selectedItem: null,
|
|
4721
|
+
actionType: 'addTask'
|
|
4722
|
+
});
|
|
4723
|
+
});
|
|
4724
|
+
}
|
|
4725
|
+
};
|
|
4726
|
+
/**
|
|
4727
|
+
* @hidden
|
|
4728
|
+
*/
|
|
4729
|
+
GanttAddTaskComponent.prototype.handleItemClick = function (e) {
|
|
4730
|
+
this.editService.addEvent.next({
|
|
4731
|
+
actionType: e.type,
|
|
4732
|
+
selectedItem: null
|
|
4733
|
+
});
|
|
4734
|
+
};
|
|
4735
|
+
__decorate([
|
|
4736
|
+
Input(),
|
|
4737
|
+
__metadata("design:type", Array)
|
|
4738
|
+
], GanttAddTaskComponent.prototype, "data", void 0);
|
|
4739
|
+
__decorate([
|
|
4740
|
+
Input(),
|
|
4741
|
+
__metadata("design:type", String)
|
|
4742
|
+
], GanttAddTaskComponent.prototype, "icon", void 0);
|
|
4743
|
+
GanttAddTaskComponent = __decorate([
|
|
4744
|
+
Component({
|
|
4745
|
+
selector: 'kendo-gantt-add-task',
|
|
4746
|
+
template: "\n <kendo-dropdownbutton\n [data]=\"data\"\n [icon]=\"icon\"\n [kendoEventsOutsideAngular]=\"{ click: handleMouseClick }\"\n [scope]=\"this\"\n (itemClick)=\"handleItemClick($event)\"\n (open)=\"handleOpen($event)\">\n {{ getText('addTaskText') }}\n </kendo-dropdownbutton>\n "
|
|
4747
|
+
}),
|
|
4748
|
+
__metadata("design:paramtypes", [LocalizationService,
|
|
4749
|
+
EditService,
|
|
4750
|
+
NgZone])
|
|
4751
|
+
], GanttAddTaskComponent);
|
|
4752
|
+
return GanttAddTaskComponent;
|
|
4753
|
+
}());
|
|
4754
|
+
|
|
4392
4755
|
/**
|
|
4393
4756
|
* @hidden
|
|
4394
4757
|
*/
|
|
4395
|
-
var
|
|
4396
|
-
function
|
|
4758
|
+
var DependenciesTableComponent = /** @class */ (function () {
|
|
4759
|
+
function DependenciesTableComponent(mapper, editService, localizationService) {
|
|
4760
|
+
this.mapper = mapper;
|
|
4761
|
+
this.editService = editService;
|
|
4397
4762
|
this.localizationService = localizationService;
|
|
4763
|
+
this.dependenciesChange = new EventEmitter();
|
|
4764
|
+
this.selectedKeys = [];
|
|
4765
|
+
this.formGroups = new FormArray([]);
|
|
4766
|
+
this.dependencyTypes = this.getDependencyTypes();
|
|
4398
4767
|
}
|
|
4399
|
-
|
|
4768
|
+
Object.defineProperty(DependenciesTableComponent.prototype, "taskId", {
|
|
4769
|
+
get: function () {
|
|
4770
|
+
return this.editService.dataItem.id;
|
|
4771
|
+
},
|
|
4772
|
+
enumerable: true,
|
|
4773
|
+
configurable: true
|
|
4774
|
+
});
|
|
4775
|
+
Object.defineProperty(DependenciesTableComponent.prototype, "dependencyIdField", {
|
|
4776
|
+
// The target dependency id field
|
|
4777
|
+
// e.g. if Predecessors, we have the `fromId` which is the currently edited task,
|
|
4778
|
+
// while the `toId` is missing (needs to be selected by the user)
|
|
4779
|
+
get: function () {
|
|
4780
|
+
return this.dependencyType === 'predecessor' ? 'fromId' : 'toId';
|
|
4781
|
+
},
|
|
4782
|
+
enumerable: true,
|
|
4783
|
+
configurable: true
|
|
4784
|
+
});
|
|
4785
|
+
DependenciesTableComponent.prototype.ngOnInit = function () {
|
|
4400
4786
|
var _this = this;
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4787
|
+
// generate the FormGroups per each Grid row
|
|
4788
|
+
if (this.formGroups.controls.length === 0) {
|
|
4789
|
+
var fields_1 = this.mapper.dependencyFields;
|
|
4790
|
+
this.dependencies.forEach(function (item) {
|
|
4791
|
+
var _a;
|
|
4792
|
+
var formGroup = new FormGroup((_a = {},
|
|
4793
|
+
_a[fields_1.id] = new FormControl(_this.mapper.extractFromDependency(item, 'id')),
|
|
4794
|
+
_a[fields_1.fromId] = new FormControl(_this.mapper.extractFromDependency(item, 'fromId'), Validators.required),
|
|
4795
|
+
_a[fields_1.toId] = new FormControl(_this.mapper.extractFromDependency(item, 'toId'), Validators.required),
|
|
4796
|
+
_a[fields_1.type] = new FormControl(_this.mapper.extractFromDependency(item, 'type'), Validators.required),
|
|
4797
|
+
_a));
|
|
4798
|
+
_this.formGroups.push(formGroup);
|
|
4799
|
+
});
|
|
4800
|
+
}
|
|
4801
|
+
this.formGroups.valueChanges.subscribe(function (val) {
|
|
4802
|
+
_this.formGroups.controls.forEach(function (control) {
|
|
4803
|
+
if (control.dirty) {
|
|
4804
|
+
_this.editService.updateDependencies(control.value);
|
|
4805
|
+
}
|
|
4806
|
+
});
|
|
4807
|
+
_this.dependenciesChange.emit(val);
|
|
4808
|
+
});
|
|
4809
|
+
};
|
|
4810
|
+
DependenciesTableComponent.prototype.getFormControl = function (dataItemIndex, field) {
|
|
4811
|
+
// return the FormControl for the respective column editor
|
|
4812
|
+
return this.formGroups.controls
|
|
4813
|
+
.find(function (_control, index) { return index === dataItemIndex; })
|
|
4814
|
+
.get(this.mapper.dependencyFields[field]);
|
|
4815
|
+
};
|
|
4816
|
+
DependenciesTableComponent.prototype.getText = function (token) {
|
|
4817
|
+
return this.localizationService.get(token);
|
|
4818
|
+
};
|
|
4819
|
+
DependenciesTableComponent.prototype.getDependencyTypes = function () {
|
|
4820
|
+
var types = Object.keys(DependencyType)
|
|
4821
|
+
.filter(function (value) { return typeof DependencyType[value] === 'number'; })
|
|
4822
|
+
.map(function (type) {
|
|
4823
|
+
return {
|
|
4824
|
+
type: type,
|
|
4825
|
+
id: DependencyType[type]
|
|
4826
|
+
};
|
|
4827
|
+
});
|
|
4828
|
+
return types;
|
|
4829
|
+
};
|
|
4830
|
+
DependenciesTableComponent.prototype.addHandler = function () {
|
|
4831
|
+
var _a;
|
|
4832
|
+
var fields = this.mapper.dependencyFields;
|
|
4833
|
+
var formGroup = new FormGroup((_a = {},
|
|
4834
|
+
_a[fields.id] = new FormControl(),
|
|
4835
|
+
_a[fields.fromId] = new FormControl(this.dependencyIdField === 'toId' ? this.taskId : null, Validators.required),
|
|
4836
|
+
_a[fields.toId] = new FormControl(this.dependencyIdField === 'fromId' ? this.taskId : null, Validators.required),
|
|
4837
|
+
_a[fields.type] = new FormControl(null, Validators.required),
|
|
4838
|
+
_a));
|
|
4839
|
+
this.formGroups.push(formGroup);
|
|
4840
|
+
};
|
|
4841
|
+
DependenciesTableComponent.prototype.removeHandler = function () {
|
|
4842
|
+
var selectedIndex = this.selectedKeys[0];
|
|
4843
|
+
var item = this.formGroups.at(selectedIndex).value;
|
|
4844
|
+
this.editService.deleteDependency(item);
|
|
4845
|
+
this.formGroups.removeAt(selectedIndex);
|
|
4404
4846
|
};
|
|
4405
4847
|
__decorate([
|
|
4406
4848
|
Input(),
|
|
4407
|
-
__metadata("design:type",
|
|
4408
|
-
],
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
__metadata("design:
|
|
4412
|
-
],
|
|
4413
|
-
|
|
4849
|
+
__metadata("design:type", Array)
|
|
4850
|
+
], DependenciesTableComponent.prototype, "tasks", void 0);
|
|
4851
|
+
__decorate([
|
|
4852
|
+
Input(),
|
|
4853
|
+
__metadata("design:type", Array)
|
|
4854
|
+
], DependenciesTableComponent.prototype, "dependencies", void 0);
|
|
4855
|
+
__decorate([
|
|
4856
|
+
Input(),
|
|
4857
|
+
__metadata("design:type", String)
|
|
4858
|
+
], DependenciesTableComponent.prototype, "dependencyType", void 0);
|
|
4859
|
+
__decorate([
|
|
4860
|
+
Output(),
|
|
4861
|
+
__metadata("design:type", EventEmitter)
|
|
4862
|
+
], DependenciesTableComponent.prototype, "dependenciesChange", void 0);
|
|
4863
|
+
DependenciesTableComponent = __decorate([
|
|
4864
|
+
Component({
|
|
4865
|
+
selector: 'kendo-gantt-dependencies-table',
|
|
4866
|
+
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 "
|
|
4867
|
+
}),
|
|
4868
|
+
__metadata("design:paramtypes", [MappingService,
|
|
4869
|
+
EditService,
|
|
4870
|
+
GanttLocalizationService])
|
|
4871
|
+
], DependenciesTableComponent);
|
|
4872
|
+
return DependenciesTableComponent;
|
|
4873
|
+
}());
|
|
4874
|
+
|
|
4875
|
+
/**
|
|
4876
|
+
* @hidden
|
|
4877
|
+
*/
|
|
4878
|
+
var TaskFieldsComponent = /** @class */ (function () {
|
|
4879
|
+
function TaskFieldsComponent(mapper, editService, localizationService) {
|
|
4880
|
+
this.mapper = mapper;
|
|
4881
|
+
this.editService = editService;
|
|
4882
|
+
this.localizationService = localizationService;
|
|
4883
|
+
}
|
|
4884
|
+
Object.defineProperty(TaskFieldsComponent.prototype, "formGroup", {
|
|
4885
|
+
/**
|
|
4886
|
+
* @hidden
|
|
4887
|
+
*/
|
|
4888
|
+
get: function () {
|
|
4889
|
+
return this.editService.taskFormGroup;
|
|
4890
|
+
},
|
|
4891
|
+
enumerable: true,
|
|
4892
|
+
configurable: true
|
|
4893
|
+
});
|
|
4894
|
+
TaskFieldsComponent.prototype.getText = function (token) {
|
|
4895
|
+
return this.localizationService.get(token);
|
|
4896
|
+
};
|
|
4897
|
+
TaskFieldsComponent = __decorate([
|
|
4898
|
+
Component({
|
|
4899
|
+
selector: 'kendo-gantt-task-fields',
|
|
4900
|
+
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 "
|
|
4901
|
+
}),
|
|
4902
|
+
__metadata("design:paramtypes", [MappingService,
|
|
4903
|
+
EditService,
|
|
4904
|
+
GanttLocalizationService])
|
|
4905
|
+
], TaskFieldsComponent);
|
|
4906
|
+
return TaskFieldsComponent;
|
|
4414
4907
|
}());
|
|
4415
4908
|
|
|
4416
4909
|
var IMPORTED_MODULES = [
|
|
@@ -4424,7 +4917,10 @@ var IMPORTED_MODULES = [
|
|
|
4424
4917
|
TreeListModule,
|
|
4425
4918
|
ButtonsModule,
|
|
4426
4919
|
DialogModule,
|
|
4427
|
-
EventsModule
|
|
4920
|
+
EventsModule,
|
|
4921
|
+
TabStripModule,
|
|
4922
|
+
GridModule,
|
|
4923
|
+
DropDownsModule
|
|
4428
4924
|
];
|
|
4429
4925
|
var DECLARATIONS = [
|
|
4430
4926
|
GanttComponent,
|
|
@@ -4461,7 +4957,9 @@ var DECLARATIONS = [
|
|
|
4461
4957
|
EditDialogComponent,
|
|
4462
4958
|
CustomMessagesComponent,
|
|
4463
4959
|
LocalizedMessagesDirective,
|
|
4464
|
-
|
|
4960
|
+
GanttAddTaskComponent,
|
|
4961
|
+
DependenciesTableComponent,
|
|
4962
|
+
TaskFieldsComponent
|
|
4465
4963
|
];
|
|
4466
4964
|
/**
|
|
4467
4965
|
* Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
|
|
@@ -4511,8 +5009,49 @@ var GanttModule = /** @class */ (function () {
|
|
|
4511
5009
|
return GanttModule;
|
|
4512
5010
|
}());
|
|
4513
5011
|
|
|
5012
|
+
/**
|
|
5013
|
+
* @hidden
|
|
5014
|
+
*/
|
|
5015
|
+
var PreventableEvent = /** @class */ (function () {
|
|
5016
|
+
function PreventableEvent() {
|
|
5017
|
+
this.prevented = false;
|
|
5018
|
+
}
|
|
5019
|
+
/**
|
|
5020
|
+
* Prevents the default action for a specified event.
|
|
5021
|
+
* In this way, the source component suppresses
|
|
5022
|
+
* the built-in behavior that follows the event.
|
|
5023
|
+
*/
|
|
5024
|
+
PreventableEvent.prototype.preventDefault = function () {
|
|
5025
|
+
this.prevented = true;
|
|
5026
|
+
};
|
|
5027
|
+
/**
|
|
5028
|
+
* Returns `true` if the event was prevented
|
|
5029
|
+
* by any of its subscribers.
|
|
5030
|
+
*
|
|
5031
|
+
* @returns `true` if the default action was prevented.
|
|
5032
|
+
* Otherwise, returns `false`.
|
|
5033
|
+
*/
|
|
5034
|
+
PreventableEvent.prototype.isDefaultPrevented = function () {
|
|
5035
|
+
return this.prevented;
|
|
5036
|
+
};
|
|
5037
|
+
return PreventableEvent;
|
|
5038
|
+
}());
|
|
5039
|
+
|
|
5040
|
+
/**
|
|
5041
|
+
* Called every time a user leaves an edited cell.
|
|
5042
|
+
*/
|
|
5043
|
+
var CellCloseEvent = /** @class */ (function (_super) {
|
|
5044
|
+
__extends(CellCloseEvent, _super);
|
|
5045
|
+
function CellCloseEvent(options) {
|
|
5046
|
+
var _this = _super.call(this) || this;
|
|
5047
|
+
Object.assign(_this, options);
|
|
5048
|
+
return _this;
|
|
5049
|
+
}
|
|
5050
|
+
return CellCloseEvent;
|
|
5051
|
+
}(PreventableEvent));
|
|
5052
|
+
|
|
4514
5053
|
/**
|
|
4515
5054
|
* Generated bundle index. Do not edit.
|
|
4516
5055
|
*/
|
|
4517
5056
|
|
|
4518
|
-
export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, EditDialogComponent, EditService, CustomMessagesComponent, LocalizedMessagesDirective, Messages,
|
|
5057
|
+
export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, GanttAddTaskComponent, DependenciesTableComponent, EditDialogComponent, EditService, TaskFieldsComponent, CustomMessagesComponent, GanttLocalizationService, LocalizedMessagesDirective, Messages, PreventableEvent, 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, DependencyType, CellCloseEvent, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, EditTemplateDirective };
|