@progress/kendo-angular-gantt 16.5.0 → 16.6.0-develop.10
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/NOTICE.txt +12 -19
- package/binding-directives/flat-binding.directive.d.ts +1 -1
- package/binding-directives/hierarchy-binding.directive.d.ts +1 -1
- package/columns/cell-template.directive.d.ts +1 -1
- package/columns/column-group.component.d.ts +1 -1
- package/columns/column-menu-template.directive.d.ts +1 -1
- package/columns/column.component.d.ts +1 -1
- package/columns/edit-template.directive.d.ts +1 -1
- package/columns/filter-cell-template.directive.d.ts +1 -1
- package/columns/filter-menu-template.directive.d.ts +1 -1
- package/columns/footer-template.directive.d.ts +1 -1
- package/columns/header-template.directive.d.ts +1 -1
- package/columns/span-column.component.d.ts +1 -1
- package/dependencies/gantt-dependency.directive.d.ts +1 -1
- package/directives.d.ts +29 -0
- package/dragging/dependency-drag-create.directive.d.ts +1 -1
- package/dragging/drag-validation-tooltip.component.d.ts +1 -1
- package/editing/add-task.component.d.ts +1 -1
- package/editing/dependencies-table.component.d.ts +1 -1
- package/editing/edit-dialog.component.d.ts +1 -1
- package/editing/task-fields.component.d.ts +1 -1
- package/esm2020/binding-directives/flat-binding.directive.mjs +3 -2
- package/esm2020/binding-directives/hierarchy-binding.directive.mjs +3 -2
- package/esm2020/columns/cell-template.directive.mjs +3 -2
- package/esm2020/columns/column-group.component.mjs +3 -2
- package/esm2020/columns/column-menu-template.directive.mjs +3 -2
- package/esm2020/columns/column.component.mjs +3 -2
- package/esm2020/columns/edit-template.directive.mjs +3 -2
- package/esm2020/columns/filter-cell-template.directive.mjs +3 -2
- package/esm2020/columns/filter-menu-template.directive.mjs +3 -2
- package/esm2020/columns/footer-template.directive.mjs +3 -2
- package/esm2020/columns/header-template.directive.mjs +3 -2
- package/esm2020/columns/span-column.component.mjs +3 -2
- package/esm2020/dependencies/gantt-dependency.directive.mjs +3 -2
- package/esm2020/directives.mjs +57 -0
- package/esm2020/dragging/dependency-drag-create.directive.mjs +3 -2
- package/esm2020/dragging/drag-validation-tooltip.component.mjs +3 -2
- package/esm2020/editing/add-task.component.mjs +7 -5
- package/esm2020/editing/dependencies-table.component.mjs +9 -7
- package/esm2020/editing/edit-dialog.component.mjs +12 -10
- package/esm2020/editing/task-fields.component.mjs +12 -9
- package/esm2020/expanded-state/expandable.directive.mjs +3 -2
- package/esm2020/gantt.component.mjs +23 -16
- package/esm2020/gantt.module.mjs +90 -222
- package/esm2020/index.mjs +1 -0
- package/esm2020/localization/custom-messages.component.mjs +3 -2
- package/esm2020/localization/localized-messages.directive.mjs +3 -2
- package/esm2020/package-metadata.mjs +2 -2
- package/esm2020/rendering/gantt-header-table-body.component.mjs +6 -4
- package/esm2020/rendering/gantt-milestone-task.component.mjs +12 -13
- package/esm2020/rendering/gantt-summary-task.component.mjs +12 -13
- package/esm2020/rendering/gantt-task.component.mjs +14 -15
- package/esm2020/rendering/gantt-tasks-table-body.component.mjs +9 -7
- package/esm2020/scrolling/timeline-scroll.directive.mjs +3 -2
- package/esm2020/selection/selectable.directive.mjs +3 -2
- package/esm2020/template-directives/summary-task-template.directive.mjs +3 -2
- package/esm2020/template-directives/task-content-template.directive.mjs +3 -2
- package/esm2020/template-directives/task-template.directive.mjs +3 -2
- package/esm2020/timeline/gantt-timeline.component.mjs +12 -10
- package/esm2020/timeline/timeline-day-view.component.mjs +3 -2
- package/esm2020/timeline/timeline-month-view.component.mjs +3 -2
- package/esm2020/timeline/timeline-week-view.component.mjs +3 -2
- package/esm2020/timeline/timeline-year-view.component.mjs +3 -2
- package/esm2020/toolbar/toolbar-template.directive.mjs +3 -2
- package/esm2020/toolbar/toolbar.component.mjs +8 -6
- package/esm2020/toolbar/view-selector.component.mjs +9 -6
- package/expanded-state/expandable.directive.d.ts +1 -1
- package/fesm2015/progress-kendo-angular-gantt.mjs +1812 -1867
- package/fesm2020/progress-kendo-angular-gantt.mjs +1963 -2012
- package/gantt.component.d.ts +1 -1
- package/gantt.module.d.ts +25 -54
- package/index.d.ts +1 -0
- package/localization/custom-messages.component.d.ts +1 -1
- package/localization/localized-messages.directive.d.ts +1 -1
- package/package.json +15 -15
- package/rendering/gantt-header-table-body.component.d.ts +1 -1
- package/rendering/gantt-milestone-task.component.d.ts +3 -3
- package/rendering/gantt-summary-task.component.d.ts +3 -3
- package/rendering/gantt-task.component.d.ts +3 -3
- package/rendering/gantt-tasks-table-body.component.d.ts +1 -1
- package/schematics/ngAdd/index.js +7 -7
- package/scrolling/timeline-scroll.directive.d.ts +1 -1
- package/selection/selectable.directive.d.ts +1 -1
- package/template-directives/summary-task-template.directive.d.ts +1 -1
- package/template-directives/task-content-template.directive.d.ts +1 -1
- package/template-directives/task-template.directive.d.ts +1 -1
- package/timeline/gantt-timeline.component.d.ts +1 -1
- package/timeline/timeline-day-view.component.d.ts +1 -1
- package/timeline/timeline-month-view.component.d.ts +1 -1
- package/timeline/timeline-week-view.component.d.ts +1 -1
- package/timeline/timeline-year-view.component.d.ts +1 -1
- package/toolbar/toolbar-template.directive.d.ts +1 -1
- package/toolbar/toolbar.component.d.ts +1 -1
- package/toolbar/view-selector.component.d.ts +1 -1
- package/common/touch-enabled.d.ts +0 -9
- package/esm2020/common/touch-enabled.mjs +0 -9
|
@@ -3,47 +3,35 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Injectable,
|
|
7
|
-
import
|
|
8
|
-
import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent, DataBoundTreeComponent, ExpandableTreeComponent, TreeListComponent, FlatBindingDirective, HierarchyBindingDirective, ExpandableDirective, TreeListModule } from '@progress/kendo-angular-treelist';
|
|
6
|
+
import { Injectable, Directive, Input, Inject, LOCALE_ID, EventEmitter, HostBinding, ViewChild, forwardRef, Component, ViewContainerRef, Output, Optional, QueryList, SkipSelf, Host, ContentChildren, ContentChild, HostListener, isDevMode, NgModule } from '@angular/core';
|
|
7
|
+
import { TableDirective, ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent, TreeListSpacerComponent, DataBoundTreeComponent, ExpandableTreeComponent, TreeListComponent, CustomMessagesComponent as CustomMessagesComponent$2, FlatBindingDirective, HierarchyBindingDirective, ExpandableDirective, ColumnResizingService } from '@progress/kendo-angular-treelist';
|
|
9
8
|
import { Subject, Subscription, fromEvent, forkJoin, EMPTY, isObservable, of } from 'rxjs';
|
|
10
9
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
import { map, distinctUntilChanged, take, expand, reduce, switchMap, filter } from 'rxjs/operators';
|
|
10
|
+
import { Keys, isDocumentAvailable, closestInScope, matchesClasses, EventsOutsideAngularDirective, DraggableDirective, PreventableEvent, anyChanged, closest, isFocusable, focusableSelector, isVisible, shouldShowValidationUI, hasObservers, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
11
|
+
import { switchMap, take, map, distinctUntilChanged, expand, reduce, filter } from 'rxjs/operators';
|
|
14
12
|
import { cloneDate, addWeeks, firstDayInWeek, addDays, lastDayOfMonth, getDate, firstDayOfMonth, addMonths, lastMonthOfYear, MS_PER_HOUR, MS_PER_DAY, isEqual } from '@progress/kendo-date-math';
|
|
15
13
|
import { getter, touchEnabled } from '@progress/kendo-common';
|
|
16
|
-
import * as i6 from '@angular/common';
|
|
17
|
-
import { CommonModule } from '@angular/common';
|
|
18
14
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
19
15
|
import * as i1 from '@progress/kendo-angular-intl';
|
|
20
|
-
import { IntlService
|
|
16
|
+
import { IntlService } from '@progress/kendo-angular-intl';
|
|
21
17
|
import { orderBy } from '@progress/kendo-data-query';
|
|
22
18
|
import { xIcon, plusIcon, minusIcon, saveIcon, cancelOutlineIcon, trashIcon } from '@progress/kendo-svg-icons';
|
|
23
|
-
import
|
|
24
|
-
import {
|
|
19
|
+
import { NgClass, NgIf, NgTemplateOutlet, NgFor } from '@angular/common';
|
|
20
|
+
import { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
|
|
25
21
|
import * as i1$1 from '@progress/kendo-angular-l10n';
|
|
26
22
|
import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
27
|
-
import * as i4 from '@
|
|
28
|
-
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
29
|
-
import * as i8$1 from '@progress/kendo-angular-layout';
|
|
30
|
-
import { SplitterModule, TabStripModule } from '@progress/kendo-angular-layout';
|
|
31
|
-
import * as i7$2 from '@progress/kendo-angular-dialog';
|
|
32
|
-
import { DialogModule } from '@progress/kendo-angular-dialog';
|
|
33
|
-
import * as i5 from '@angular/forms';
|
|
23
|
+
import * as i4 from '@angular/forms';
|
|
34
24
|
import { FormArray, FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
35
|
-
import
|
|
36
|
-
import {
|
|
37
|
-
import
|
|
38
|
-
import {
|
|
39
|
-
import
|
|
40
|
-
import {
|
|
41
|
-
import
|
|
42
|
-
import {
|
|
43
|
-
import * as i8 from '@progress/kendo-angular-dateinputs';
|
|
44
|
-
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
|
|
25
|
+
import { GridComponent, SelectionDirective, ToolbarTemplateDirective as ToolbarTemplateDirective$1, ColumnComponent as ColumnComponent$1, CellTemplateDirective as CellTemplateDirective$1 } from '@progress/kendo-angular-grid';
|
|
26
|
+
import { ButtonComponent, ButtonGroupComponent, DropDownButtonComponent } from '@progress/kendo-angular-buttons';
|
|
27
|
+
import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
|
|
28
|
+
import { FormFieldComponent, TextBoxDirective, NumericTextBoxComponent } from '@progress/kendo-angular-inputs';
|
|
29
|
+
import { LabelComponent } from '@progress/kendo-angular-label';
|
|
30
|
+
import { DateTimePickerComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService as NavigationService$1, TimePickerDOMService, HoursService, MinutesService, SecondsService, MillisecondsService, DayPeriodService } from '@progress/kendo-angular-dateinputs';
|
|
31
|
+
import { DialogComponent, CustomMessagesComponent as CustomMessagesComponent$1, DialogActionsComponent, DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';
|
|
32
|
+
import { TabStripComponent, TabStripTabComponent, TabContentDirective, SplitterComponent, SplitterPaneComponent } from '@progress/kendo-angular-layout';
|
|
45
33
|
import * as i3 from '@progress/kendo-angular-popup';
|
|
46
|
-
import {
|
|
34
|
+
import { PopupService } from '@progress/kendo-angular-popup';
|
|
47
35
|
|
|
48
36
|
/**
|
|
49
37
|
* @hidden
|
|
@@ -52,8 +40,8 @@ const packageMetadata = {
|
|
|
52
40
|
name: '@progress/kendo-angular-gantt',
|
|
53
41
|
productName: 'Kendo UI for Angular',
|
|
54
42
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
55
|
-
publishDate:
|
|
56
|
-
version: '16.
|
|
43
|
+
publishDate: 1722607229,
|
|
44
|
+
version: '16.6.0-develop.10',
|
|
57
45
|
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'
|
|
58
46
|
};
|
|
59
47
|
|
|
@@ -446,76 +434,194 @@ const elementFromPoint = (clientX, clientY) => {
|
|
|
446
434
|
|
|
447
435
|
/**
|
|
448
436
|
* @hidden
|
|
437
|
+
*
|
|
438
|
+
* Gets the offset (top and left values) relative to a target element.
|
|
449
439
|
*/
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
this.scroll(args);
|
|
458
|
-
}));
|
|
459
|
-
}
|
|
460
|
-
registerElement(el, sourceType) {
|
|
461
|
-
this.elements.push({ element: el, sourceType });
|
|
462
|
-
if (sourceType === "timeline" || sourceType === "treelist") {
|
|
463
|
-
this.ngZone.runOutsideAngular(() => {
|
|
464
|
-
const obs = fromEvent(el, 'scroll').pipe(map(({ target: { scrollTop, scrollLeft } }) => ({
|
|
465
|
-
scrollTop,
|
|
466
|
-
scrollLeft,
|
|
467
|
-
sourceType
|
|
468
|
-
})));
|
|
469
|
-
const comparisonFn = sourceType === 'timeline' ?
|
|
470
|
-
(x, y) => (x.scrollTop === y.scrollTop) && (x.scrollLeft === y.scrollLeft) :
|
|
471
|
-
(x, y) => (x.scrollTop === y.scrollTop);
|
|
472
|
-
this.subscriptions.add(obs.pipe(distinctUntilChanged(comparisonFn))
|
|
473
|
-
.subscribe((event) => this.changes.next(event)));
|
|
474
|
-
});
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
ngOnDestroy() {
|
|
478
|
-
this.subscriptions.unsubscribe();
|
|
479
|
-
this.elements = null;
|
|
440
|
+
const getOffsetRelativeToParent = (element, targetParent) => {
|
|
441
|
+
const offset = {
|
|
442
|
+
top: 0,
|
|
443
|
+
left: 0
|
|
444
|
+
};
|
|
445
|
+
if (!targetParent.contains(element)) {
|
|
446
|
+
return offset;
|
|
480
447
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
448
|
+
let offsetParent = element;
|
|
449
|
+
while (offsetParent && offsetParent !== targetParent) {
|
|
450
|
+
offset.top += offsetParent.offsetTop;
|
|
451
|
+
offset.left += offsetParent.offsetLeft;
|
|
452
|
+
offsetParent = offsetParent.offsetParent;
|
|
486
453
|
}
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
454
|
+
return offset;
|
|
455
|
+
};
|
|
456
|
+
/**
|
|
457
|
+
* @hidden
|
|
458
|
+
*/
|
|
459
|
+
const getElementRect = (element, relativeContainer) => {
|
|
460
|
+
const { top, left } = getOffsetRelativeToParent(element, relativeContainer);
|
|
461
|
+
return {
|
|
462
|
+
top: top + element.offsetHeight / 2,
|
|
463
|
+
left: left,
|
|
464
|
+
right: left + element.offsetWidth
|
|
465
|
+
};
|
|
466
|
+
};
|
|
467
|
+
/**
|
|
468
|
+
* @hidden
|
|
469
|
+
*/
|
|
470
|
+
const dependencyCoordinates = (from, to, rowHeight, type, minDistanceBeforeTurn, arrowSize) => {
|
|
471
|
+
const points = [];
|
|
472
|
+
const minTurnHeight = Math.floor(rowHeight / 2);
|
|
473
|
+
const drawingDown = from.top < to.top;
|
|
474
|
+
let top, left;
|
|
475
|
+
// FF and SS are composed of 4 connected polyline points (not counting the arrow)
|
|
476
|
+
/*
|
|
477
|
+
[[[]]]- -[[[]]]
|
|
478
|
+
| |
|
|
479
|
+
[[[]]]- -[[[]]]
|
|
480
|
+
*/
|
|
481
|
+
if (type === DependencyType.FF || type === DependencyType.SS) {
|
|
482
|
+
// polyline start from first task
|
|
483
|
+
const dir = type === DependencyType.SS ? 'left' : 'right';
|
|
484
|
+
top = from.top;
|
|
485
|
+
left = from[dir];
|
|
486
|
+
points.push({ top, left });
|
|
487
|
+
// first turn point
|
|
488
|
+
left = Math[dir === 'left' ? 'min' : 'max'](from[dir], to[dir]);
|
|
489
|
+
left = dir === 'left' ? left - minDistanceBeforeTurn : left + minDistanceBeforeTurn;
|
|
490
|
+
points.push({ top, left });
|
|
491
|
+
// second turn point
|
|
492
|
+
top = to.top;
|
|
493
|
+
points.push({ top, left });
|
|
494
|
+
// second task reached
|
|
495
|
+
left = dir === 'left' ? to[dir] - arrowSize : to[dir] + arrowSize;
|
|
496
|
+
points.push({ top, left });
|
|
497
|
+
// arrow pointing to the second task
|
|
498
|
+
points.push(...getArrow(top, left, dir !== 'left', arrowSize));
|
|
490
499
|
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
500
|
+
else {
|
|
501
|
+
// FS and SF are composed of 4 or 6 connected polyline points (not counting the arrow), depending on the position of the tasks
|
|
502
|
+
/*
|
|
503
|
+
[[[]]]- [[[]]]-
|
|
504
|
+
| |
|
|
505
|
+
-[[[]]] -----
|
|
506
|
+
|
|
|
507
|
+
-[[[]]]
|
|
508
|
+
*/
|
|
509
|
+
const startDir = type === DependencyType.SF ? 'left' : 'right';
|
|
510
|
+
const endDir = type === DependencyType.SF ? 'right' : 'left';
|
|
511
|
+
const additionalTurn = type === DependencyType.SF
|
|
512
|
+
? from[startDir] - minDistanceBeforeTurn * 2 < to[endDir]
|
|
513
|
+
: from[startDir] + minDistanceBeforeTurn * 2 > to[endDir];
|
|
514
|
+
// polyline start from first task
|
|
515
|
+
top = from.top;
|
|
516
|
+
left = from[startDir];
|
|
517
|
+
points.push({ top, left });
|
|
518
|
+
// first turn point
|
|
519
|
+
left = startDir === 'left'
|
|
520
|
+
? left - minDistanceBeforeTurn
|
|
521
|
+
: left + minDistanceBeforeTurn;
|
|
522
|
+
points.push({ top, left });
|
|
523
|
+
// if second task start is before the first task end in FS
|
|
524
|
+
// if second task end is after the first task start in SF
|
|
525
|
+
if (additionalTurn) {
|
|
526
|
+
// additional turn start
|
|
527
|
+
top = drawingDown
|
|
528
|
+
? top + minTurnHeight
|
|
529
|
+
: top - minTurnHeight;
|
|
530
|
+
points.push({ top, left });
|
|
531
|
+
// additional turn end
|
|
532
|
+
left = startDir === 'left'
|
|
533
|
+
? to[endDir] + minDistanceBeforeTurn
|
|
534
|
+
: to[endDir] - minDistanceBeforeTurn;
|
|
535
|
+
points.push({ top, left });
|
|
536
|
+
}
|
|
537
|
+
// second task level reached
|
|
538
|
+
top = to.top;
|
|
539
|
+
points.push({ top, left });
|
|
540
|
+
// second task element reached
|
|
541
|
+
left = endDir === 'left' ? to[endDir] - arrowSize : to[endDir] + arrowSize;
|
|
542
|
+
points.push({ top, left });
|
|
543
|
+
// arrow pointing to the second task
|
|
544
|
+
points.push(...getArrow(top, left, endDir !== 'left', arrowSize));
|
|
512
545
|
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
546
|
+
return points;
|
|
547
|
+
};
|
|
548
|
+
const getArrow = (top, left, isArrowWest, arrowSize) => {
|
|
549
|
+
const points = isArrowWest
|
|
550
|
+
? getArrowWest(top, left, arrowSize)
|
|
551
|
+
: getArrowEast(top, left, arrowSize);
|
|
552
|
+
return points;
|
|
553
|
+
};
|
|
554
|
+
const getArrowWest = (top, left, arrowSize) => {
|
|
555
|
+
const points = [];
|
|
556
|
+
points.push({
|
|
557
|
+
top: top - arrowSize / 2,
|
|
558
|
+
left
|
|
559
|
+
});
|
|
560
|
+
points.push({
|
|
561
|
+
top,
|
|
562
|
+
left: left - arrowSize + 1
|
|
563
|
+
});
|
|
564
|
+
points.push({
|
|
565
|
+
top: top + arrowSize / 2,
|
|
566
|
+
left
|
|
567
|
+
});
|
|
568
|
+
points.push({
|
|
569
|
+
top,
|
|
570
|
+
left
|
|
571
|
+
});
|
|
572
|
+
return points;
|
|
573
|
+
};
|
|
574
|
+
const getArrowEast = (top, left, arrowSize) => {
|
|
575
|
+
const points = [];
|
|
576
|
+
points.push({
|
|
577
|
+
top: top + arrowSize / 2,
|
|
578
|
+
left
|
|
579
|
+
});
|
|
580
|
+
points.push({
|
|
581
|
+
top,
|
|
582
|
+
left: left + arrowSize - 1
|
|
583
|
+
});
|
|
584
|
+
points.push({
|
|
585
|
+
top: top - arrowSize / 2,
|
|
586
|
+
left
|
|
587
|
+
});
|
|
588
|
+
points.push({
|
|
589
|
+
top,
|
|
590
|
+
left
|
|
591
|
+
});
|
|
592
|
+
return points;
|
|
593
|
+
};
|
|
594
|
+
/**
|
|
595
|
+
* @hidden
|
|
596
|
+
*
|
|
597
|
+
* Translates the provided client `left` and `top` coords to coords relative to the provided container.
|
|
598
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/Coordinate_systems#standard_cssom_coordinate_systems
|
|
599
|
+
*/
|
|
600
|
+
const clientToOffsetCoords = (clientLeft, clientTop, offsetContainer) => {
|
|
601
|
+
// client (viewport) coordinates of the target container
|
|
602
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#value
|
|
603
|
+
const offsetContainerClientRect = offsetContainer.getBoundingClientRect();
|
|
604
|
+
return {
|
|
605
|
+
left: clientLeft - offsetContainerClientRect.left + offsetContainer.scrollLeft,
|
|
606
|
+
top: clientTop - offsetContainerClientRect.top + offsetContainer.scrollTop
|
|
607
|
+
};
|
|
608
|
+
};
|
|
609
|
+
/**
|
|
610
|
+
* @hidden
|
|
611
|
+
*
|
|
612
|
+
* Retrieves the `left` and `top` values of the center of the provided element.
|
|
613
|
+
* The retrieved values are relative to the current viewport (client values).
|
|
614
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/Coordinate_systems#standard_cssom_coordinate_systems
|
|
615
|
+
*/
|
|
616
|
+
const getElementClientCenterCoords = (element) => {
|
|
617
|
+
// client (viewport) coordinates of the targeted element
|
|
618
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#value
|
|
619
|
+
const { left, top, width, height } = element.getBoundingClientRect();
|
|
620
|
+
return {
|
|
621
|
+
left: left + (width / 2),
|
|
622
|
+
top: top + (height / 2)
|
|
623
|
+
};
|
|
624
|
+
};
|
|
519
625
|
|
|
520
626
|
/**
|
|
521
627
|
* @hidden
|
|
@@ -657,87 +763,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
657
763
|
type: Injectable
|
|
658
764
|
}], ctorParameters: function () { return [{ type: MappingService }]; } });
|
|
659
765
|
|
|
660
|
-
const MS_PER_SECOND = 1000;
|
|
661
|
-
const MS_PER_MINUTE = 60 * MS_PER_SECOND;
|
|
662
766
|
/**
|
|
663
|
-
*
|
|
767
|
+
* Defines the size of the arrow that will be drawn at the end of each Gantt dependency.
|
|
664
768
|
*/
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
}
|
|
688
|
-
};
|
|
689
|
-
}
|
|
690
|
-
get deltaOffset() {
|
|
691
|
-
if (this.slotIndex >= 0) {
|
|
692
|
-
const total = this.slots[this.slotIndex].end.getTime() - this.slots[this.slotIndex].start.getTime();
|
|
693
|
-
if (total > 0) {
|
|
694
|
-
const currentTimeValue = this.now.getTime() - this.slots[this.slotIndex].start.getTime();
|
|
695
|
-
const fractionInsideCell = currentTimeValue / total;
|
|
696
|
-
const deltaOffsetToSlot = this.slotIndex * this.slotWidth;
|
|
697
|
-
const deltaOffsetInsideSlot = fractionInsideCell * this.slotWidth;
|
|
698
|
-
return deltaOffsetToSlot + deltaOffsetInsideSlot;
|
|
699
|
-
}
|
|
700
|
-
return 0;
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
get slotWidth() {
|
|
704
|
-
var _a;
|
|
705
|
-
return (_a = this.slots[0]) === null || _a === void 0 ? void 0 : _a.slotWidth;
|
|
769
|
+
const ARROW_SIZE = 4;
|
|
770
|
+
/**
|
|
771
|
+
* Defines the distance the polyline will cover from the task element before making a turn.
|
|
772
|
+
*/
|
|
773
|
+
const MIN_DISTANCE_BEFORE_TURN = 10;
|
|
774
|
+
/**
|
|
775
|
+
* @hidden
|
|
776
|
+
*/
|
|
777
|
+
class GanttDependencyDirective {
|
|
778
|
+
constructor(polyline, zone, renderer, mapper, dependencyDomService) {
|
|
779
|
+
this.polyline = polyline;
|
|
780
|
+
this.zone = zone;
|
|
781
|
+
this.renderer = renderer;
|
|
782
|
+
this.mapper = mapper;
|
|
783
|
+
this.dependencyDomService = dependencyDomService;
|
|
784
|
+
this.subscriptions = new Subscription();
|
|
785
|
+
this.subscriptions.add(dependencyDomService.taskChanges
|
|
786
|
+
.pipe(switchMap(changes =>
|
|
787
|
+
// reacts only on the very last event emission,
|
|
788
|
+
// ensures that the tasks are drawn in the DOM
|
|
789
|
+
this.zone.onStable.pipe(take(1), map(() => changes))))
|
|
790
|
+
.subscribe(changes => this.updatePoints(changes)));
|
|
706
791
|
}
|
|
707
|
-
|
|
708
|
-
|
|
792
|
+
ngOnDestroy() {
|
|
793
|
+
this.subscriptions.unsubscribe();
|
|
709
794
|
}
|
|
710
|
-
|
|
711
|
-
|
|
795
|
+
ngOnChanges(changes) {
|
|
796
|
+
if (isPresent(changes['dependency'])) {
|
|
797
|
+
this.updatePoints(this.dependencyDomService.dependencyDomArgs);
|
|
798
|
+
}
|
|
712
799
|
}
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
800
|
+
updatePoints({ timelineRow, contentContainer, tasks }) {
|
|
801
|
+
if (!isPresent(timelineRow) || !isPresent(contentContainer) ||
|
|
802
|
+
!isPresent(tasks) || tasks.size === 0 ||
|
|
803
|
+
!tasks.has(this.mapper.extractFromDependency(this.dependency, 'fromId')) || !tasks.has(this.mapper.extractFromDependency(this.dependency, 'toId'))) {
|
|
804
|
+
this.clearPoints();
|
|
805
|
+
return;
|
|
717
806
|
}
|
|
718
|
-
|
|
807
|
+
const fromCoordinates = getElementRect(tasks.get(this.mapper.extractFromDependency(this.dependency, 'fromId')), contentContainer);
|
|
808
|
+
const toCoordinates = getElementRect(tasks.get(this.mapper.extractFromDependency(this.dependency, 'toId')), contentContainer);
|
|
809
|
+
const timelineRowHeight = isDocumentAvailable() ? timelineRow.getBoundingClientRect().height : 0;
|
|
810
|
+
const points = dependencyCoordinates(fromCoordinates, toCoordinates, timelineRowHeight, this.dependency.type, MIN_DISTANCE_BEFORE_TURN, ARROW_SIZE);
|
|
811
|
+
this.drawPoints(points);
|
|
719
812
|
}
|
|
720
|
-
|
|
721
|
-
|
|
813
|
+
clearPoints() {
|
|
814
|
+
this.renderer.setAttribute(this.polyline.nativeElement, 'points', '');
|
|
722
815
|
}
|
|
723
|
-
|
|
724
|
-
if (
|
|
725
|
-
this.
|
|
726
|
-
|
|
727
|
-
this.cdr.detectChanges();
|
|
816
|
+
drawPoints(points) {
|
|
817
|
+
if (!isPresent(points) || points.length === 0) {
|
|
818
|
+
this.clearPoints();
|
|
819
|
+
return;
|
|
728
820
|
}
|
|
821
|
+
const parsedCoords = points.map(({ left, top }) => `${left},${top}`).join(' ');
|
|
822
|
+
this.renderer.setAttribute(this.polyline.nativeElement, 'points', parsedCoords);
|
|
729
823
|
}
|
|
730
824
|
}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type:
|
|
734
|
-
type:
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
825
|
+
GanttDependencyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttDependencyDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: MappingService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
826
|
+
GanttDependencyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttDependencyDirective, isStandalone: true, selector: "[kendoGanttDependency]", inputs: { dependency: "dependency" }, usesOnChanges: true, ngImport: i0 });
|
|
827
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttDependencyDirective, decorators: [{
|
|
828
|
+
type: Directive,
|
|
829
|
+
args: [{
|
|
830
|
+
selector: '[kendoGanttDependency]',
|
|
831
|
+
standalone: true
|
|
832
|
+
}]
|
|
833
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: MappingService }, { type: DependencyDomService }]; }, propDecorators: { dependency: [{
|
|
834
|
+
type: Input
|
|
835
|
+
}] } });
|
|
741
836
|
|
|
742
837
|
const setTime = (origin, candidate) => {
|
|
743
838
|
const date = cloneDate(origin);
|
|
@@ -1227,6 +1322,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1227
1322
|
type: Injectable
|
|
1228
1323
|
}] });
|
|
1229
1324
|
|
|
1325
|
+
/**
|
|
1326
|
+
* @hidden
|
|
1327
|
+
*/
|
|
1328
|
+
class ScrollSyncService {
|
|
1329
|
+
constructor(ngZone) {
|
|
1330
|
+
this.ngZone = ngZone;
|
|
1331
|
+
this.changes = new Subject();
|
|
1332
|
+
this.elements = [];
|
|
1333
|
+
this.subscriptions = new Subscription();
|
|
1334
|
+
this.subscriptions.add(this.changes.subscribe(args => {
|
|
1335
|
+
this.scroll(args);
|
|
1336
|
+
}));
|
|
1337
|
+
}
|
|
1338
|
+
registerElement(el, sourceType) {
|
|
1339
|
+
this.elements.push({ element: el, sourceType });
|
|
1340
|
+
if (sourceType === "timeline" || sourceType === "treelist") {
|
|
1341
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1342
|
+
const obs = fromEvent(el, 'scroll').pipe(map(({ target: { scrollTop, scrollLeft } }) => ({
|
|
1343
|
+
scrollTop,
|
|
1344
|
+
scrollLeft,
|
|
1345
|
+
sourceType
|
|
1346
|
+
})));
|
|
1347
|
+
const comparisonFn = sourceType === 'timeline' ?
|
|
1348
|
+
(x, y) => (x.scrollTop === y.scrollTop) && (x.scrollLeft === y.scrollLeft) :
|
|
1349
|
+
(x, y) => (x.scrollTop === y.scrollTop);
|
|
1350
|
+
this.subscriptions.add(obs.pipe(distinctUntilChanged(comparisonFn))
|
|
1351
|
+
.subscribe((event) => this.changes.next(event)));
|
|
1352
|
+
});
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
ngOnDestroy() {
|
|
1356
|
+
this.subscriptions.unsubscribe();
|
|
1357
|
+
this.elements = null;
|
|
1358
|
+
}
|
|
1359
|
+
syncScrollTop(sourceType, targetType) {
|
|
1360
|
+
const source = this.elements.find(element => element.sourceType === sourceType);
|
|
1361
|
+
const target = this.elements.find(element => element.sourceType === targetType);
|
|
1362
|
+
// Need to wait for the splitter pane's content to be rendered
|
|
1363
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => target.element.scrollTop = source.element.scrollTop);
|
|
1364
|
+
}
|
|
1365
|
+
resetTimelineScrollLeft() {
|
|
1366
|
+
const source = this.elements.find(element => element.sourceType === 'timeline');
|
|
1367
|
+
source.element.scrollLeft = 0;
|
|
1368
|
+
}
|
|
1369
|
+
scroll({ scrollTop, scrollLeft, sourceType }) {
|
|
1370
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1371
|
+
if (sourceType === 'timeline') {
|
|
1372
|
+
const header = this.elements.find(element => element.sourceType === 'header').element;
|
|
1373
|
+
header.scrollLeft = scrollLeft;
|
|
1374
|
+
if (!this.syncingTimeline) {
|
|
1375
|
+
this.syncingTreeList = true;
|
|
1376
|
+
const treelist = this.elements.find(element => element.sourceType === 'treelist').element;
|
|
1377
|
+
treelist.scrollTop = scrollTop;
|
|
1378
|
+
}
|
|
1379
|
+
this.syncingTimeline = false;
|
|
1380
|
+
}
|
|
1381
|
+
if (sourceType === 'treelist') {
|
|
1382
|
+
if (!this.syncingTreeList) {
|
|
1383
|
+
this.syncingTimeline = true;
|
|
1384
|
+
const timeline = this.elements.find(element => element.sourceType === 'timeline').element;
|
|
1385
|
+
timeline.scrollTop = scrollTop;
|
|
1386
|
+
}
|
|
1387
|
+
this.syncingTreeList = false;
|
|
1388
|
+
}
|
|
1389
|
+
});
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
ScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollSyncService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1393
|
+
ScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollSyncService });
|
|
1394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollSyncService, decorators: [{
|
|
1395
|
+
type: Injectable
|
|
1396
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
1397
|
+
|
|
1230
1398
|
/**
|
|
1231
1399
|
* @hidden
|
|
1232
1400
|
*/
|
|
@@ -1748,19 +1916,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1748
1916
|
* @hidden
|
|
1749
1917
|
*/
|
|
1750
1918
|
class GanttTaskComponent extends GanttTaskBase {
|
|
1751
|
-
constructor(editService,
|
|
1919
|
+
constructor(editService, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
|
|
1752
1920
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
|
|
1753
1921
|
this.editService = editService;
|
|
1754
|
-
this.touchEnabled = touchEnabled;
|
|
1755
1922
|
this.xIcon = xIcon;
|
|
1923
|
+
this.touchEnabled = touchEnabled;
|
|
1756
1924
|
}
|
|
1757
1925
|
onTaskDelete() {
|
|
1758
1926
|
this.editService.dataItem = this.dataItem;
|
|
1759
1927
|
this.editService.taskDelete.next(this.dataItem);
|
|
1760
1928
|
}
|
|
1761
1929
|
}
|
|
1762
|
-
GanttTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskComponent, deps: [{ token: EditService }, { token:
|
|
1763
|
-
GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskComponent, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
|
|
1930
|
+
GanttTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskComponent, deps: [{ token: EditService }, { token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1931
|
+
GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskComponent, isStandalone: true, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
|
|
1764
1932
|
{
|
|
1765
1933
|
provide: GanttTaskBase,
|
|
1766
1934
|
useExisting: forwardRef(() => GanttTaskComponent)
|
|
@@ -1836,7 +2004,7 @@ GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
1836
2004
|
>
|
|
1837
2005
|
</div>
|
|
1838
2006
|
</ng-container>
|
|
1839
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2007
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
|
|
1840
2008
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskComponent, decorators: [{
|
|
1841
2009
|
type: Component,
|
|
1842
2010
|
args: [{
|
|
@@ -1918,14 +2086,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1918
2086
|
>
|
|
1919
2087
|
</div>
|
|
1920
2088
|
</ng-container>
|
|
1921
|
-
|
|
2089
|
+
`,
|
|
2090
|
+
standalone: true,
|
|
2091
|
+
imports: [NgClass, NgIf, NgTemplateOutlet, EventsOutsideAngularDirective, IconWrapperComponent]
|
|
1922
2092
|
}]
|
|
1923
|
-
}], ctorParameters: function () {
|
|
1924
|
-
return [{ type: EditService }, { type: undefined, decorators: [{
|
|
1925
|
-
type: Inject,
|
|
1926
|
-
args: [TOUCH_ENABLED]
|
|
1927
|
-
}] }, { type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }];
|
|
1928
|
-
}, propDecorators: { taskContentTemplate: [{
|
|
2093
|
+
}], ctorParameters: function () { return [{ type: EditService }, { type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; }, propDecorators: { taskContentTemplate: [{
|
|
1929
2094
|
type: Input
|
|
1930
2095
|
}], taskTemplate: [{
|
|
1931
2096
|
type: Input
|
|
@@ -1935,10 +2100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1935
2100
|
* @hidden
|
|
1936
2101
|
*/
|
|
1937
2102
|
class GanttSummaryTaskComponent extends GanttTaskBase {
|
|
1938
|
-
constructor(
|
|
2103
|
+
constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
|
|
1939
2104
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
|
|
1940
|
-
this.touchEnabled = touchEnabled;
|
|
1941
2105
|
this.summaryWrapperClass = true;
|
|
2106
|
+
this.touchEnabled = touchEnabled;
|
|
1942
2107
|
}
|
|
1943
2108
|
get ariaExpanded() {
|
|
1944
2109
|
// if no callback is provided, all child items are displayed and the item is regarded as expanded
|
|
@@ -1947,8 +2112,8 @@ class GanttSummaryTaskComponent extends GanttTaskBase {
|
|
|
1947
2112
|
return String(isExpanded);
|
|
1948
2113
|
}
|
|
1949
2114
|
}
|
|
1950
|
-
GanttSummaryTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token:
|
|
1951
|
-
GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
|
|
2115
|
+
GanttSummaryTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2116
|
+
GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttSummaryTaskComponent, isStandalone: true, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
|
|
1952
2117
|
{
|
|
1953
2118
|
provide: GanttTaskBase,
|
|
1954
2119
|
useExisting: forwardRef(() => GanttSummaryTaskComponent)
|
|
@@ -1997,7 +2162,7 @@ GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
1997
2162
|
>
|
|
1998
2163
|
</div>
|
|
1999
2164
|
</ng-container>
|
|
2000
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2165
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
2001
2166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
|
|
2002
2167
|
type: Component,
|
|
2003
2168
|
args: [{
|
|
@@ -2052,14 +2217,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2052
2217
|
>
|
|
2053
2218
|
</div>
|
|
2054
2219
|
</ng-container>
|
|
2055
|
-
|
|
2220
|
+
`,
|
|
2221
|
+
standalone: true,
|
|
2222
|
+
imports: [NgClass, NgIf, NgTemplateOutlet]
|
|
2056
2223
|
}]
|
|
2057
|
-
}], ctorParameters: function () {
|
|
2058
|
-
return [{ type: undefined, decorators: [{
|
|
2059
|
-
type: Inject,
|
|
2060
|
-
args: [TOUCH_ENABLED]
|
|
2061
|
-
}] }, { type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }];
|
|
2062
|
-
}, propDecorators: { summaryWrapperClass: [{
|
|
2224
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; }, propDecorators: { summaryWrapperClass: [{
|
|
2063
2225
|
type: HostBinding,
|
|
2064
2226
|
args: ['class.k-summary-wrap']
|
|
2065
2227
|
}], template: [{
|
|
@@ -2072,14 +2234,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2072
2234
|
* @hidden
|
|
2073
2235
|
*/
|
|
2074
2236
|
class GanttMilestoneTaskComponent extends GanttTaskBase {
|
|
2075
|
-
constructor(
|
|
2237
|
+
constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
|
|
2076
2238
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
|
|
2077
|
-
this.touchEnabled = touchEnabled;
|
|
2078
2239
|
this.milestoneWrapperClass = true;
|
|
2240
|
+
this.touchEnabled = touchEnabled;
|
|
2079
2241
|
}
|
|
2080
2242
|
}
|
|
2081
|
-
GanttMilestoneTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token:
|
|
2082
|
-
GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
|
|
2243
|
+
GanttMilestoneTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2244
|
+
GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttMilestoneTaskComponent, isStandalone: true, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
|
|
2083
2245
|
{
|
|
2084
2246
|
provide: GanttTaskBase,
|
|
2085
2247
|
useExisting: forwardRef(() => GanttMilestoneTaskComponent)
|
|
@@ -2108,7 +2270,7 @@ GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
|
|
|
2108
2270
|
>
|
|
2109
2271
|
</div>
|
|
2110
2272
|
</ng-container>
|
|
2111
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2273
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2112
2274
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
|
|
2113
2275
|
type: Component,
|
|
2114
2276
|
args: [{
|
|
@@ -2143,14 +2305,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2143
2305
|
>
|
|
2144
2306
|
</div>
|
|
2145
2307
|
</ng-container>
|
|
2146
|
-
|
|
2308
|
+
`,
|
|
2309
|
+
standalone: true,
|
|
2310
|
+
imports: [NgClass, NgIf]
|
|
2147
2311
|
}]
|
|
2148
|
-
}], ctorParameters: function () {
|
|
2149
|
-
return [{ type: undefined, decorators: [{
|
|
2150
|
-
type: Inject,
|
|
2151
|
-
args: [TOUCH_ENABLED]
|
|
2152
|
-
}] }, { type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }];
|
|
2153
|
-
}, propDecorators: { milestoneWrapperClass: [{
|
|
2312
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; }, propDecorators: { milestoneWrapperClass: [{
|
|
2154
2313
|
type: HostBinding,
|
|
2155
2314
|
args: ['class.k-milestone-wrap']
|
|
2156
2315
|
}] } });
|
|
@@ -2175,7 +2334,7 @@ class GanttTasksTableBodyComponent {
|
|
|
2175
2334
|
}
|
|
2176
2335
|
}
|
|
2177
2336
|
GanttTasksTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTasksTableBodyComponent, deps: [{ token: DependencyDomService }, { token: MappingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2178
|
-
GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: { selectable: "selectable", rows: "rows", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", isExpanded: "isExpanded", isTaskSelected: "isTaskSelected", renderDependencyDragClues: "renderDependencyDragClues" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
|
|
2337
|
+
GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttTasksTableBodyComponent, isStandalone: true, selector: "[kendoGanttTasksTableBody]", inputs: { selectable: "selectable", rows: "rows", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", isExpanded: "isExpanded", isTaskSelected: "isTaskSelected", renderDependencyDragClues: "renderDependencyDragClues" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
|
|
2179
2338
|
<tr class="k-table-row" #timelineRow *ngFor="let item of rows; let index = index">
|
|
2180
2339
|
<td class="k-table-td">
|
|
2181
2340
|
<kendo-gantt-milestone-task
|
|
@@ -2222,7 +2381,7 @@ GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
|
|
|
2222
2381
|
</ng-template>
|
|
2223
2382
|
</td>
|
|
2224
2383
|
</tr>
|
|
2225
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2384
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task" }, { kind: "component", type: GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: ["template", "isExpanded"] }, { kind: "component", type: GanttTaskComponent, selector: "kendo-gantt-task", inputs: ["taskContentTemplate", "taskTemplate"] }] });
|
|
2226
2385
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTasksTableBodyComponent, decorators: [{
|
|
2227
2386
|
type: Component,
|
|
2228
2387
|
args: [{
|
|
@@ -2275,7 +2434,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2275
2434
|
</ng-template>
|
|
2276
2435
|
</td>
|
|
2277
2436
|
</tr>
|
|
2278
|
-
|
|
2437
|
+
`,
|
|
2438
|
+
standalone: true,
|
|
2439
|
+
imports: [NgFor, NgIf, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskComponent]
|
|
2279
2440
|
}]
|
|
2280
2441
|
}], ctorParameters: function () { return [{ type: DependencyDomService }, { type: MappingService }]; }, propDecorators: { timelineRow: [{
|
|
2281
2442
|
type: ViewChild,
|
|
@@ -2305,434 +2466,131 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2305
2466
|
/**
|
|
2306
2467
|
* @hidden
|
|
2307
2468
|
*/
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
}
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
</tr>
|
|
2322
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
2323
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
|
|
2324
|
-
type: Component,
|
|
2325
|
-
args: [{
|
|
2326
|
-
// eslint-disable-next-line @angular-eslint/component-selector
|
|
2327
|
-
selector: '[kendoGanttHeaderTableBody]',
|
|
2328
|
-
template: `
|
|
2329
|
-
<tr class="k-table-row">
|
|
2330
|
-
<td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
2331
|
-
</tr>
|
|
2332
|
-
|
|
2333
|
-
<tr class="k-table-row">
|
|
2334
|
-
<td *ngFor="let item of slots" class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
|
|
2335
|
-
</tr>
|
|
2336
|
-
`
|
|
2337
|
-
}]
|
|
2338
|
-
}], propDecorators: { tbodyClass: [{
|
|
2339
|
-
type: HostBinding,
|
|
2340
|
-
args: ['class.k-table-tbody']
|
|
2341
|
-
}], groupSlots: [{
|
|
2342
|
-
type: Input
|
|
2343
|
-
}], slots: [{
|
|
2344
|
-
type: Input
|
|
2345
|
-
}] } });
|
|
2469
|
+
var ScrollDirection;
|
|
2470
|
+
(function (ScrollDirection) {
|
|
2471
|
+
ScrollDirection[ScrollDirection["Backwards"] = -1] = "Backwards";
|
|
2472
|
+
ScrollDirection[ScrollDirection["Forward"] = 1] = "Forward";
|
|
2473
|
+
})(ScrollDirection || (ScrollDirection = {}));
|
|
2474
|
+
/**
|
|
2475
|
+
* @hidden
|
|
2476
|
+
*/
|
|
2477
|
+
var ScrollAxis;
|
|
2478
|
+
(function (ScrollAxis) {
|
|
2479
|
+
ScrollAxis["Vertical"] = "scrollTop";
|
|
2480
|
+
ScrollAxis["Horizontal"] = "scrollLeft";
|
|
2481
|
+
})(ScrollAxis || (ScrollAxis = {}));
|
|
2346
2482
|
|
|
2347
2483
|
/**
|
|
2348
2484
|
* @hidden
|
|
2349
2485
|
*
|
|
2350
|
-
*
|
|
2486
|
+
* Checks if the beginning of the scrollable element is reached (top/left).
|
|
2487
|
+
* Floors the top value.
|
|
2351
2488
|
*/
|
|
2352
|
-
const
|
|
2353
|
-
const offset = {
|
|
2354
|
-
top: 0,
|
|
2355
|
-
left: 0
|
|
2356
|
-
};
|
|
2357
|
-
if (!targetParent.contains(element)) {
|
|
2358
|
-
return offset;
|
|
2359
|
-
}
|
|
2360
|
-
let offsetParent = element;
|
|
2361
|
-
while (offsetParent && offsetParent !== targetParent) {
|
|
2362
|
-
offset.top += offsetParent.offsetTop;
|
|
2363
|
-
offset.left += offsetParent.offsetLeft;
|
|
2364
|
-
offsetParent = offsetParent.offsetParent;
|
|
2365
|
-
}
|
|
2366
|
-
return offset;
|
|
2367
|
-
};
|
|
2489
|
+
const isUpperLimitReached = (element, axis) => Math.floor(element[axis]) <= 0;
|
|
2368
2490
|
/**
|
|
2369
2491
|
* @hidden
|
|
2492
|
+
*
|
|
2493
|
+
* Checks if the end of the scrollable element is reached (bottom/right).
|
|
2494
|
+
* Ceils the top value.
|
|
2370
2495
|
*/
|
|
2371
|
-
const
|
|
2372
|
-
const
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
right: left + element.offsetWidth
|
|
2377
|
-
};
|
|
2496
|
+
const isBottomLimitReached = (element, axis) => {
|
|
2497
|
+
const elementSize = axis === ScrollAxis.Horizontal ?
|
|
2498
|
+
element.scrollWidth - element.clientWidth :
|
|
2499
|
+
element.scrollHeight - element.clientHeight;
|
|
2500
|
+
return Math.ceil(element[axis]) >= elementSize;
|
|
2378
2501
|
};
|
|
2379
2502
|
/**
|
|
2380
2503
|
* @hidden
|
|
2504
|
+
*
|
|
2505
|
+
* Scrolls the element in the given direction by the provided step in the provided scroll axis.
|
|
2506
|
+
*
|
|
2507
|
+
* If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),
|
|
2508
|
+
* increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.
|
|
2509
|
+
*
|
|
2510
|
+
* Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.
|
|
2381
2511
|
*/
|
|
2382
|
-
const
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
const drawingDown = from.top < to.top;
|
|
2386
|
-
let top, left;
|
|
2387
|
-
// FF and SS are composed of 4 connected polyline points (not counting the arrow)
|
|
2388
|
-
/*
|
|
2389
|
-
[[[]]]- -[[[]]]
|
|
2390
|
-
| |
|
|
2391
|
-
[[[]]]- -[[[]]]
|
|
2392
|
-
*/
|
|
2393
|
-
if (type === DependencyType.FF || type === DependencyType.SS) {
|
|
2394
|
-
// polyline start from first task
|
|
2395
|
-
const dir = type === DependencyType.SS ? 'left' : 'right';
|
|
2396
|
-
top = from.top;
|
|
2397
|
-
left = from[dir];
|
|
2398
|
-
points.push({ top, left });
|
|
2399
|
-
// first turn point
|
|
2400
|
-
left = Math[dir === 'left' ? 'min' : 'max'](from[dir], to[dir]);
|
|
2401
|
-
left = dir === 'left' ? left - minDistanceBeforeTurn : left + minDistanceBeforeTurn;
|
|
2402
|
-
points.push({ top, left });
|
|
2403
|
-
// second turn point
|
|
2404
|
-
top = to.top;
|
|
2405
|
-
points.push({ top, left });
|
|
2406
|
-
// second task reached
|
|
2407
|
-
left = dir === 'left' ? to[dir] - arrowSize : to[dir] + arrowSize;
|
|
2408
|
-
points.push({ top, left });
|
|
2409
|
-
// arrow pointing to the second task
|
|
2410
|
-
points.push(...getArrow(top, left, dir !== 'left', arrowSize));
|
|
2512
|
+
const scrollElement = (element, step, direction, scrollAxis) => {
|
|
2513
|
+
if (!(isPresent(element) && isDocumentAvailable())) {
|
|
2514
|
+
return;
|
|
2411
2515
|
}
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
? from[startDir] - minDistanceBeforeTurn * 2 < to[endDir]
|
|
2425
|
-
: from[startDir] + minDistanceBeforeTurn * 2 > to[endDir];
|
|
2426
|
-
// polyline start from first task
|
|
2427
|
-
top = from.top;
|
|
2428
|
-
left = from[startDir];
|
|
2429
|
-
points.push({ top, left });
|
|
2430
|
-
// first turn point
|
|
2431
|
-
left = startDir === 'left'
|
|
2432
|
-
? left - minDistanceBeforeTurn
|
|
2433
|
-
: left + minDistanceBeforeTurn;
|
|
2434
|
-
points.push({ top, left });
|
|
2435
|
-
// if second task start is before the first task end in FS
|
|
2436
|
-
// if second task end is after the first task start in SF
|
|
2437
|
-
if (additionalTurn) {
|
|
2438
|
-
// additional turn start
|
|
2439
|
-
top = drawingDown
|
|
2440
|
-
? top + minTurnHeight
|
|
2441
|
-
: top - minTurnHeight;
|
|
2442
|
-
points.push({ top, left });
|
|
2443
|
-
// additional turn end
|
|
2444
|
-
left = startDir === 'left'
|
|
2445
|
-
? to[endDir] + minDistanceBeforeTurn
|
|
2446
|
-
: to[endDir] - minDistanceBeforeTurn;
|
|
2447
|
-
points.push({ top, left });
|
|
2448
|
-
}
|
|
2449
|
-
// second task level reached
|
|
2450
|
-
top = to.top;
|
|
2451
|
-
points.push({ top, left });
|
|
2452
|
-
// second task element reached
|
|
2453
|
-
left = endDir === 'left' ? to[endDir] - arrowSize : to[endDir] + arrowSize;
|
|
2454
|
-
points.push({ top, left });
|
|
2455
|
-
// arrow pointing to the second task
|
|
2456
|
-
points.push(...getArrow(top, left, endDir !== 'left', arrowSize));
|
|
2516
|
+
const initialScrollPosition = element[scrollAxis];
|
|
2517
|
+
let currentStep = step;
|
|
2518
|
+
let iterations = 0;
|
|
2519
|
+
while (initialScrollPosition === element[scrollAxis] &&
|
|
2520
|
+
!(direction === ScrollDirection.Backwards && isUpperLimitReached(element, scrollAxis)) &&
|
|
2521
|
+
!(direction === ScrollDirection.Forward && isBottomLimitReached(element, scrollAxis)) &&
|
|
2522
|
+
iterations < 20 // cut the operation short in 20 attempts - in case of a wild corner case
|
|
2523
|
+
) {
|
|
2524
|
+
element[scrollAxis] += (currentStep * direction);
|
|
2525
|
+
// try with a larger step if the current one doesn't update the scroll position successfully
|
|
2526
|
+
currentStep += 1;
|
|
2527
|
+
iterations += 1;
|
|
2457
2528
|
}
|
|
2458
|
-
return points;
|
|
2459
|
-
};
|
|
2460
|
-
const getArrow = (top, left, isArrowWest, arrowSize) => {
|
|
2461
|
-
const points = isArrowWest
|
|
2462
|
-
? getArrowWest(top, left, arrowSize)
|
|
2463
|
-
: getArrowEast(top, left, arrowSize);
|
|
2464
|
-
return points;
|
|
2465
|
-
};
|
|
2466
|
-
const getArrowWest = (top, left, arrowSize) => {
|
|
2467
|
-
const points = [];
|
|
2468
|
-
points.push({
|
|
2469
|
-
top: top - arrowSize / 2,
|
|
2470
|
-
left
|
|
2471
|
-
});
|
|
2472
|
-
points.push({
|
|
2473
|
-
top,
|
|
2474
|
-
left: left - arrowSize + 1
|
|
2475
|
-
});
|
|
2476
|
-
points.push({
|
|
2477
|
-
top: top + arrowSize / 2,
|
|
2478
|
-
left
|
|
2479
|
-
});
|
|
2480
|
-
points.push({
|
|
2481
|
-
top,
|
|
2482
|
-
left
|
|
2483
|
-
});
|
|
2484
|
-
return points;
|
|
2485
|
-
};
|
|
2486
|
-
const getArrowEast = (top, left, arrowSize) => {
|
|
2487
|
-
const points = [];
|
|
2488
|
-
points.push({
|
|
2489
|
-
top: top + arrowSize / 2,
|
|
2490
|
-
left
|
|
2491
|
-
});
|
|
2492
|
-
points.push({
|
|
2493
|
-
top,
|
|
2494
|
-
left: left + arrowSize - 1
|
|
2495
|
-
});
|
|
2496
|
-
points.push({
|
|
2497
|
-
top: top - arrowSize / 2,
|
|
2498
|
-
left
|
|
2499
|
-
});
|
|
2500
|
-
points.push({
|
|
2501
|
-
top,
|
|
2502
|
-
left
|
|
2503
|
-
});
|
|
2504
|
-
return points;
|
|
2505
2529
|
};
|
|
2506
2530
|
/**
|
|
2507
2531
|
* @hidden
|
|
2508
2532
|
*
|
|
2509
|
-
*
|
|
2510
|
-
*
|
|
2533
|
+
* As client coordinates are not restricted to the range 0px - {viewportSize}px, but can have negative starting values or ending values greater than the viewport size,
|
|
2534
|
+
* this function extracts the visible boundaries of the provided element - fall-backing to 0 when the top/left are below 0,
|
|
2535
|
+
* and fall-backing to the actual visible size of the container for bottom/right.
|
|
2511
2536
|
*/
|
|
2512
|
-
const
|
|
2513
|
-
|
|
2514
|
-
//
|
|
2515
|
-
const
|
|
2537
|
+
const getViewportBoundaries = (element) => {
|
|
2538
|
+
const elementRect = element.getBoundingClientRect();
|
|
2539
|
+
// if the beginning of the scrollable container is above/before the current viewport, fall-back to 0
|
|
2540
|
+
const topLimit = Math.max(elementRect.top, 0);
|
|
2541
|
+
const leftLimit = Math.max(elementRect.left, 0);
|
|
2542
|
+
// if the end of the scrollable container is beneath/after the current viewport, fall-back to its client height
|
|
2543
|
+
// add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached
|
|
2544
|
+
const bottomLimit = topLimit + Math.min(elementRect.bottom, element.clientHeight);
|
|
2545
|
+
const rightLimit = leftLimit + Math.min(elementRect.right, element.clientWidth);
|
|
2516
2546
|
return {
|
|
2517
|
-
|
|
2518
|
-
|
|
2547
|
+
top: topLimit,
|
|
2548
|
+
bottom: bottomLimit,
|
|
2549
|
+
left: leftLimit,
|
|
2550
|
+
right: rightLimit
|
|
2519
2551
|
};
|
|
2520
2552
|
};
|
|
2553
|
+
|
|
2521
2554
|
/**
|
|
2522
2555
|
* @hidden
|
|
2523
2556
|
*
|
|
2524
|
-
*
|
|
2525
|
-
* The
|
|
2526
|
-
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/Coordinate_systems#standard_cssom_coordinate_systems
|
|
2557
|
+
* Notifies the timeline-scroll.directive to scroll into view to requested coordinates.
|
|
2558
|
+
* The scrolling is performed based on client (viewport) coordinates.
|
|
2527
2559
|
*/
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2560
|
+
class TimelineScrollService {
|
|
2561
|
+
constructor() {
|
|
2562
|
+
this.horizontalScroll = new Subject();
|
|
2563
|
+
this.verticalScroll = new Subject();
|
|
2564
|
+
this.scrollCancel = new Subject();
|
|
2565
|
+
}
|
|
2566
|
+
ngOnDestroy() {
|
|
2567
|
+
this.horizontalScroll.complete();
|
|
2568
|
+
this.verticalScroll.complete();
|
|
2569
|
+
this.scrollCancel.complete();
|
|
2570
|
+
}
|
|
2571
|
+
requestHorizontalScroll(clientTop) {
|
|
2572
|
+
this.horizontalScroll.next(clientTop);
|
|
2573
|
+
}
|
|
2574
|
+
requestVerticalScroll(clientLeft) {
|
|
2575
|
+
this.verticalScroll.next(clientLeft);
|
|
2576
|
+
}
|
|
2577
|
+
requestScrollCancel() {
|
|
2578
|
+
this.scrollCancel.next();
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2581
|
+
TimelineScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2582
|
+
TimelineScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService });
|
|
2583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService, decorators: [{
|
|
2584
|
+
type: Injectable
|
|
2585
|
+
}] });
|
|
2537
2586
|
|
|
2538
|
-
/**
|
|
2539
|
-
* Defines the size of the arrow that will be drawn at the end of each Gantt dependency.
|
|
2540
|
-
*/
|
|
2541
|
-
const ARROW_SIZE = 4;
|
|
2542
|
-
/**
|
|
2543
|
-
* Defines the distance the polyline will cover from the task element before making a turn.
|
|
2544
|
-
*/
|
|
2545
|
-
const MIN_DISTANCE_BEFORE_TURN = 10;
|
|
2546
2587
|
/**
|
|
2547
2588
|
* @hidden
|
|
2548
2589
|
*/
|
|
2549
|
-
class
|
|
2550
|
-
constructor(
|
|
2551
|
-
this.
|
|
2552
|
-
this.
|
|
2553
|
-
this.renderer = renderer;
|
|
2554
|
-
this.mapper = mapper;
|
|
2555
|
-
this.dependencyDomService = dependencyDomService;
|
|
2556
|
-
this.subscriptions = new Subscription();
|
|
2557
|
-
this.subscriptions.add(dependencyDomService.taskChanges
|
|
2558
|
-
.pipe(switchMap(changes =>
|
|
2559
|
-
// reacts only on the very last event emission,
|
|
2560
|
-
// ensures that the tasks are drawn in the DOM
|
|
2561
|
-
this.zone.onStable.pipe(take(1), map(() => changes))))
|
|
2562
|
-
.subscribe(changes => this.updatePoints(changes)));
|
|
2563
|
-
}
|
|
2564
|
-
ngOnDestroy() {
|
|
2565
|
-
this.subscriptions.unsubscribe();
|
|
2566
|
-
}
|
|
2567
|
-
ngOnChanges(changes) {
|
|
2568
|
-
if (isPresent(changes['dependency'])) {
|
|
2569
|
-
this.updatePoints(this.dependencyDomService.dependencyDomArgs);
|
|
2570
|
-
}
|
|
2571
|
-
}
|
|
2572
|
-
updatePoints({ timelineRow, contentContainer, tasks }) {
|
|
2573
|
-
if (!isPresent(timelineRow) || !isPresent(contentContainer) ||
|
|
2574
|
-
!isPresent(tasks) || tasks.size === 0 ||
|
|
2575
|
-
!tasks.has(this.mapper.extractFromDependency(this.dependency, 'fromId')) || !tasks.has(this.mapper.extractFromDependency(this.dependency, 'toId'))) {
|
|
2576
|
-
this.clearPoints();
|
|
2577
|
-
return;
|
|
2578
|
-
}
|
|
2579
|
-
const fromCoordinates = getElementRect(tasks.get(this.mapper.extractFromDependency(this.dependency, 'fromId')), contentContainer);
|
|
2580
|
-
const toCoordinates = getElementRect(tasks.get(this.mapper.extractFromDependency(this.dependency, 'toId')), contentContainer);
|
|
2581
|
-
const timelineRowHeight = isDocumentAvailable() ? timelineRow.getBoundingClientRect().height : 0;
|
|
2582
|
-
const points = dependencyCoordinates(fromCoordinates, toCoordinates, timelineRowHeight, this.dependency.type, MIN_DISTANCE_BEFORE_TURN, ARROW_SIZE);
|
|
2583
|
-
this.drawPoints(points);
|
|
2584
|
-
}
|
|
2585
|
-
clearPoints() {
|
|
2586
|
-
this.renderer.setAttribute(this.polyline.nativeElement, 'points', '');
|
|
2587
|
-
}
|
|
2588
|
-
drawPoints(points) {
|
|
2589
|
-
if (!isPresent(points) || points.length === 0) {
|
|
2590
|
-
this.clearPoints();
|
|
2591
|
-
return;
|
|
2592
|
-
}
|
|
2593
|
-
const parsedCoords = points.map(({ left, top }) => `${left},${top}`).join(' ');
|
|
2594
|
-
this.renderer.setAttribute(this.polyline.nativeElement, 'points', parsedCoords);
|
|
2595
|
-
}
|
|
2596
|
-
}
|
|
2597
|
-
GanttDependencyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttDependencyDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: MappingService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2598
|
-
GanttDependencyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: { dependency: "dependency" }, usesOnChanges: true, ngImport: i0 });
|
|
2599
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttDependencyDirective, decorators: [{
|
|
2600
|
-
type: Directive,
|
|
2601
|
-
args: [{
|
|
2602
|
-
selector: '[kendoGanttDependency]'
|
|
2603
|
-
}]
|
|
2604
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: MappingService }, { type: DependencyDomService }]; }, propDecorators: { dependency: [{
|
|
2605
|
-
type: Input
|
|
2606
|
-
}] } });
|
|
2607
|
-
|
|
2608
|
-
/**
|
|
2609
|
-
* @hidden
|
|
2610
|
-
*/
|
|
2611
|
-
var ScrollDirection;
|
|
2612
|
-
(function (ScrollDirection) {
|
|
2613
|
-
ScrollDirection[ScrollDirection["Backwards"] = -1] = "Backwards";
|
|
2614
|
-
ScrollDirection[ScrollDirection["Forward"] = 1] = "Forward";
|
|
2615
|
-
})(ScrollDirection || (ScrollDirection = {}));
|
|
2616
|
-
/**
|
|
2617
|
-
* @hidden
|
|
2618
|
-
*/
|
|
2619
|
-
var ScrollAxis;
|
|
2620
|
-
(function (ScrollAxis) {
|
|
2621
|
-
ScrollAxis["Vertical"] = "scrollTop";
|
|
2622
|
-
ScrollAxis["Horizontal"] = "scrollLeft";
|
|
2623
|
-
})(ScrollAxis || (ScrollAxis = {}));
|
|
2624
|
-
|
|
2625
|
-
/**
|
|
2626
|
-
* @hidden
|
|
2627
|
-
*
|
|
2628
|
-
* Checks if the beginning of the scrollable element is reached (top/left).
|
|
2629
|
-
* Floors the top value.
|
|
2630
|
-
*/
|
|
2631
|
-
const isUpperLimitReached = (element, axis) => Math.floor(element[axis]) <= 0;
|
|
2632
|
-
/**
|
|
2633
|
-
* @hidden
|
|
2634
|
-
*
|
|
2635
|
-
* Checks if the end of the scrollable element is reached (bottom/right).
|
|
2636
|
-
* Ceils the top value.
|
|
2637
|
-
*/
|
|
2638
|
-
const isBottomLimitReached = (element, axis) => {
|
|
2639
|
-
const elementSize = axis === ScrollAxis.Horizontal ?
|
|
2640
|
-
element.scrollWidth - element.clientWidth :
|
|
2641
|
-
element.scrollHeight - element.clientHeight;
|
|
2642
|
-
return Math.ceil(element[axis]) >= elementSize;
|
|
2643
|
-
};
|
|
2644
|
-
/**
|
|
2645
|
-
* @hidden
|
|
2646
|
-
*
|
|
2647
|
-
* Scrolls the element in the given direction by the provided step in the provided scroll axis.
|
|
2648
|
-
*
|
|
2649
|
-
* If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),
|
|
2650
|
-
* increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.
|
|
2651
|
-
*
|
|
2652
|
-
* Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.
|
|
2653
|
-
*/
|
|
2654
|
-
const scrollElement = (element, step, direction, scrollAxis) => {
|
|
2655
|
-
if (!(isPresent(element) && isDocumentAvailable())) {
|
|
2656
|
-
return;
|
|
2657
|
-
}
|
|
2658
|
-
const initialScrollPosition = element[scrollAxis];
|
|
2659
|
-
let currentStep = step;
|
|
2660
|
-
let iterations = 0;
|
|
2661
|
-
while (initialScrollPosition === element[scrollAxis] &&
|
|
2662
|
-
!(direction === ScrollDirection.Backwards && isUpperLimitReached(element, scrollAxis)) &&
|
|
2663
|
-
!(direction === ScrollDirection.Forward && isBottomLimitReached(element, scrollAxis)) &&
|
|
2664
|
-
iterations < 20 // cut the operation short in 20 attempts - in case of a wild corner case
|
|
2665
|
-
) {
|
|
2666
|
-
element[scrollAxis] += (currentStep * direction);
|
|
2667
|
-
// try with a larger step if the current one doesn't update the scroll position successfully
|
|
2668
|
-
currentStep += 1;
|
|
2669
|
-
iterations += 1;
|
|
2670
|
-
}
|
|
2671
|
-
};
|
|
2672
|
-
/**
|
|
2673
|
-
* @hidden
|
|
2674
|
-
*
|
|
2675
|
-
* As client coordinates are not restricted to the range 0px - {viewportSize}px, but can have negative starting values or ending values greater than the viewport size,
|
|
2676
|
-
* this function extracts the visible boundaries of the provided element - fall-backing to 0 when the top/left are below 0,
|
|
2677
|
-
* and fall-backing to the actual visible size of the container for bottom/right.
|
|
2678
|
-
*/
|
|
2679
|
-
const getViewportBoundaries = (element) => {
|
|
2680
|
-
const elementRect = element.getBoundingClientRect();
|
|
2681
|
-
// if the beginning of the scrollable container is above/before the current viewport, fall-back to 0
|
|
2682
|
-
const topLimit = Math.max(elementRect.top, 0);
|
|
2683
|
-
const leftLimit = Math.max(elementRect.left, 0);
|
|
2684
|
-
// if the end of the scrollable container is beneath/after the current viewport, fall-back to its client height
|
|
2685
|
-
// add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached
|
|
2686
|
-
const bottomLimit = topLimit + Math.min(elementRect.bottom, element.clientHeight);
|
|
2687
|
-
const rightLimit = leftLimit + Math.min(elementRect.right, element.clientWidth);
|
|
2688
|
-
return {
|
|
2689
|
-
top: topLimit,
|
|
2690
|
-
bottom: bottomLimit,
|
|
2691
|
-
left: leftLimit,
|
|
2692
|
-
right: rightLimit
|
|
2693
|
-
};
|
|
2694
|
-
};
|
|
2695
|
-
|
|
2696
|
-
/**
|
|
2697
|
-
* @hidden
|
|
2698
|
-
*
|
|
2699
|
-
* Notifies the timeline-scroll.directive to scroll into view to requested coordinates.
|
|
2700
|
-
* The scrolling is performed based on client (viewport) coordinates.
|
|
2701
|
-
*/
|
|
2702
|
-
class TimelineScrollService {
|
|
2703
|
-
constructor() {
|
|
2704
|
-
this.horizontalScroll = new Subject();
|
|
2705
|
-
this.verticalScroll = new Subject();
|
|
2706
|
-
this.scrollCancel = new Subject();
|
|
2707
|
-
}
|
|
2708
|
-
ngOnDestroy() {
|
|
2709
|
-
this.horizontalScroll.complete();
|
|
2710
|
-
this.verticalScroll.complete();
|
|
2711
|
-
this.scrollCancel.complete();
|
|
2712
|
-
}
|
|
2713
|
-
requestHorizontalScroll(clientTop) {
|
|
2714
|
-
this.horizontalScroll.next(clientTop);
|
|
2715
|
-
}
|
|
2716
|
-
requestVerticalScroll(clientLeft) {
|
|
2717
|
-
this.verticalScroll.next(clientLeft);
|
|
2718
|
-
}
|
|
2719
|
-
requestScrollCancel() {
|
|
2720
|
-
this.scrollCancel.next();
|
|
2721
|
-
}
|
|
2722
|
-
}
|
|
2723
|
-
TimelineScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2724
|
-
TimelineScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService });
|
|
2725
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService, decorators: [{
|
|
2726
|
-
type: Injectable
|
|
2727
|
-
}] });
|
|
2728
|
-
|
|
2729
|
-
/**
|
|
2730
|
-
* @hidden
|
|
2731
|
-
*/
|
|
2732
|
-
class TimelineScrollableDirective {
|
|
2733
|
-
constructor(timelineScrollableContainer, scrollService, zone) {
|
|
2734
|
-
this.timelineScrollableContainer = timelineScrollableContainer;
|
|
2735
|
-
this.scrollService = scrollService;
|
|
2590
|
+
class TimelineScrollableDirective {
|
|
2591
|
+
constructor(timelineScrollableContainer, scrollService, zone) {
|
|
2592
|
+
this.timelineScrollableContainer = timelineScrollableContainer;
|
|
2593
|
+
this.scrollService = scrollService;
|
|
2736
2594
|
this.zone = zone;
|
|
2737
2595
|
this.subscriptions = new Subscription();
|
|
2738
2596
|
this.subscriptions.add(this.scrollService.horizontalScroll
|
|
@@ -2781,11 +2639,12 @@ class TimelineScrollableDirective {
|
|
|
2781
2639
|
}
|
|
2782
2640
|
}
|
|
2783
2641
|
TimelineScrollableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollableDirective, deps: [{ token: i0.ElementRef }, { token: TimelineScrollService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2784
|
-
TimelineScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: { scrollSettings: "scrollSettings" }, ngImport: i0 });
|
|
2642
|
+
TimelineScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TimelineScrollableDirective, isStandalone: true, selector: "[kendoGanttTimelineScrollable]", inputs: { scrollSettings: "scrollSettings" }, ngImport: i0 });
|
|
2785
2643
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollableDirective, decorators: [{
|
|
2786
2644
|
type: Directive,
|
|
2787
2645
|
args: [{
|
|
2788
|
-
selector: '[kendoGanttTimelineScrollable]'
|
|
2646
|
+
selector: '[kendoGanttTimelineScrollable]',
|
|
2647
|
+
standalone: true
|
|
2789
2648
|
}]
|
|
2790
2649
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: TimelineScrollService }, { type: i0.NgZone }]; }, propDecorators: { scrollSettings: [{
|
|
2791
2650
|
type: Input
|
|
@@ -2794,84 +2653,205 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2794
2653
|
/**
|
|
2795
2654
|
* @hidden
|
|
2796
2655
|
*/
|
|
2797
|
-
class
|
|
2798
|
-
constructor(
|
|
2799
|
-
this.
|
|
2800
|
-
this.dependencyDomService = dependencyDomService;
|
|
2801
|
-
this.renderer = renderer;
|
|
2802
|
-
this.zone = zone;
|
|
2803
|
-
this.currentTimeMarkerService = currentTimeMarkerService;
|
|
2804
|
-
this.dependencies = [];
|
|
2805
|
-
// as all drag-and-drop operations are on the timeline container, use a single draggable instance
|
|
2806
|
-
this.timelineContainerPress = new EventEmitter();
|
|
2807
|
-
this.timelineContainerDrag = new EventEmitter();
|
|
2808
|
-
this.timelineContainerRelease = new EventEmitter();
|
|
2809
|
-
this.subscriptions = new Subscription();
|
|
2810
|
-
this.subscriptions.add(
|
|
2811
|
-
// task changes indicates change in row content, number, height, etc.
|
|
2812
|
-
this.dependencyDomService.taskChanges
|
|
2813
|
-
.pipe(filter(args => isPresent(args.timelineRow)), switchMap(args => this.zone.onStable.pipe(take(1), map(() => args))) // ensure the content is rendered
|
|
2814
|
-
)
|
|
2815
|
-
.subscribe(({ timelineRow }) => {
|
|
2816
|
-
const timelineRowHeight = isDocumentAvailable() ? timelineRow.getBoundingClientRect().height : 0;
|
|
2817
|
-
this.currentTimeMarkerService.rowHeight = timelineRowHeight;
|
|
2818
|
-
this.currentTimeMarkerService.currentTimeMarker = this.currentTimeMarker;
|
|
2819
|
-
this.currentTimeMarkerService.slots = this.slots;
|
|
2820
|
-
this.currentTimeMarkerService.rows = this.rows;
|
|
2821
|
-
this.currentTimeMarkerService.activeView = this.activeView;
|
|
2822
|
-
this.createTimeMarker();
|
|
2823
|
-
this.renderer.setStyle(this.timelineColumns.nativeElement, 'height', `${(this.rows || []).length * timelineRowHeight}px`);
|
|
2824
|
-
}));
|
|
2825
|
-
}
|
|
2826
|
-
/**
|
|
2827
|
-
* Specifies whether the draggable will attach or detach its pointer event listeners.
|
|
2828
|
-
*/
|
|
2829
|
-
get draggableEnabled() {
|
|
2830
|
-
return this.renderDependencyDragClues;
|
|
2831
|
-
}
|
|
2832
|
-
ngOnChanges(changes) {
|
|
2833
|
-
if (changes['currentTimeMarker']) {
|
|
2834
|
-
this.createTimeMarker();
|
|
2835
|
-
}
|
|
2836
|
-
}
|
|
2837
|
-
ngAfterViewInit() {
|
|
2838
|
-
this.currentTimeMarkerService.slots = this.slots;
|
|
2839
|
-
this.currentTimeMarkerService.rows = this.rows;
|
|
2840
|
-
this.currentTimeMarkerService.container = this.timelineContent;
|
|
2841
|
-
const timelineHeader = this.timelineHeaderWrap.nativeElement;
|
|
2842
|
-
const rightContainer = this.timelineContent.nativeElement;
|
|
2843
|
-
this.scrollSyncService.registerElement(rightContainer, 'timeline');
|
|
2844
|
-
this.scrollSyncService.registerElement(timelineHeader, 'header');
|
|
2845
|
-
this.dependencyDomService.registerContentContainer(this.tasksContainer.nativeElement);
|
|
2846
|
-
}
|
|
2847
|
-
ngOnDestroy() {
|
|
2848
|
-
this.subscriptions.unsubscribe();
|
|
2849
|
-
}
|
|
2850
|
-
isNonWorking(item) {
|
|
2851
|
-
return item.hasOwnProperty('isWorking') && !item.isWorking;
|
|
2852
|
-
}
|
|
2853
|
-
createTimeMarker() {
|
|
2854
|
-
this.zone.runOutsideAngular(() => {
|
|
2855
|
-
var _a;
|
|
2856
|
-
this.currentTimeMarkerService.removeTimeMarker();
|
|
2857
|
-
if ((typeof this.currentTimeMarker === 'boolean' && this.currentTimeMarker) || ((_a = this.currentTimeMarker) === null || _a === void 0 ? void 0 : _a.enabled)) {
|
|
2858
|
-
this.currentTimeMarkerService.createTimeMarker();
|
|
2859
|
-
}
|
|
2860
|
-
});
|
|
2656
|
+
class GanttHeaderTableBodyComponent {
|
|
2657
|
+
constructor() {
|
|
2658
|
+
this.tbodyClass = true;
|
|
2861
2659
|
}
|
|
2862
2660
|
}
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
<
|
|
2866
|
-
<
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2661
|
+
GanttHeaderTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2662
|
+
GanttHeaderTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttHeaderTableBodyComponent, isStandalone: true, selector: "[kendoGanttHeaderTableBody]", inputs: { groupSlots: "groupSlots", slots: "slots" }, host: { properties: { "class.k-table-tbody": "this.tbodyClass" } }, ngImport: i0, template: `
|
|
2663
|
+
<tr class="k-table-row">
|
|
2664
|
+
<td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
2665
|
+
</tr>
|
|
2666
|
+
|
|
2667
|
+
<tr class="k-table-row">
|
|
2668
|
+
<td *ngFor="let item of slots" class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
|
|
2669
|
+
</tr>
|
|
2670
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
2671
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
|
|
2672
|
+
type: Component,
|
|
2673
|
+
args: [{
|
|
2674
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
2675
|
+
selector: '[kendoGanttHeaderTableBody]',
|
|
2676
|
+
template: `
|
|
2677
|
+
<tr class="k-table-row">
|
|
2678
|
+
<td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
2679
|
+
</tr>
|
|
2680
|
+
|
|
2681
|
+
<tr class="k-table-row">
|
|
2682
|
+
<td *ngFor="let item of slots" class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
|
|
2683
|
+
</tr>
|
|
2684
|
+
`,
|
|
2685
|
+
standalone: true,
|
|
2686
|
+
imports: [NgFor]
|
|
2687
|
+
}]
|
|
2688
|
+
}], propDecorators: { tbodyClass: [{
|
|
2689
|
+
type: HostBinding,
|
|
2690
|
+
args: ['class.k-table-tbody']
|
|
2691
|
+
}], groupSlots: [{
|
|
2692
|
+
type: Input
|
|
2693
|
+
}], slots: [{
|
|
2694
|
+
type: Input
|
|
2695
|
+
}] } });
|
|
2696
|
+
|
|
2697
|
+
const MS_PER_SECOND = 1000;
|
|
2698
|
+
const MS_PER_MINUTE = 60 * MS_PER_SECOND;
|
|
2699
|
+
/**
|
|
2700
|
+
* @hidden
|
|
2701
|
+
*/
|
|
2702
|
+
class CurrentTimeMarkerService {
|
|
2703
|
+
constructor(renderer, cdr) {
|
|
2704
|
+
this.renderer = renderer;
|
|
2705
|
+
this.cdr = cdr;
|
|
2706
|
+
this.slots = [];
|
|
2707
|
+
this.rows = [];
|
|
2708
|
+
this.now = new Date(Date.now());
|
|
2709
|
+
this.createTimeMarker = () => {
|
|
2710
|
+
if (!isDocumentAvailable()) {
|
|
2711
|
+
return;
|
|
2712
|
+
}
|
|
2713
|
+
this.removeTimeMarker();
|
|
2714
|
+
if (this.slotIndex >= 0) {
|
|
2715
|
+
this.now = new Date(Date.now());
|
|
2716
|
+
this.timeMarkerDiv = this.renderer.createElement('div');
|
|
2717
|
+
this.renderer.addClass(this.timeMarkerDiv, 'k-current-time');
|
|
2718
|
+
this.renderer.setStyle(this.timeMarkerDiv, 'width', '1px');
|
|
2719
|
+
this.renderer.setStyle(this.timeMarkerDiv, 'top', '0px');
|
|
2720
|
+
this.renderer.setStyle(this.timeMarkerDiv, `${this.rtl ? 'right' : 'left'}`, this.deltaOffset + 'px');
|
|
2721
|
+
this.renderer.appendChild(this.container.nativeElement, this.timeMarkerDiv);
|
|
2722
|
+
this.renderer.setStyle(this.timeMarkerDiv, 'height', this.height + 'px');
|
|
2723
|
+
this.currentTimeTimeout = setTimeout(this.createTimeMarker, this.interval || MS_PER_MINUTE);
|
|
2724
|
+
}
|
|
2725
|
+
};
|
|
2726
|
+
}
|
|
2727
|
+
get deltaOffset() {
|
|
2728
|
+
if (this.slotIndex >= 0) {
|
|
2729
|
+
const total = this.slots[this.slotIndex].end.getTime() - this.slots[this.slotIndex].start.getTime();
|
|
2730
|
+
if (total > 0) {
|
|
2731
|
+
const currentTimeValue = this.now.getTime() - this.slots[this.slotIndex].start.getTime();
|
|
2732
|
+
const fractionInsideCell = currentTimeValue / total;
|
|
2733
|
+
const deltaOffsetToSlot = this.slotIndex * this.slotWidth;
|
|
2734
|
+
const deltaOffsetInsideSlot = fractionInsideCell * this.slotWidth;
|
|
2735
|
+
return deltaOffsetToSlot + deltaOffsetInsideSlot;
|
|
2736
|
+
}
|
|
2737
|
+
return 0;
|
|
2738
|
+
}
|
|
2739
|
+
}
|
|
2740
|
+
get slotWidth() {
|
|
2741
|
+
var _a;
|
|
2742
|
+
return (_a = this.slots[0]) === null || _a === void 0 ? void 0 : _a.slotWidth;
|
|
2743
|
+
}
|
|
2744
|
+
get slotIndex() {
|
|
2745
|
+
return this.slots.indexOf(this.slots.find((slot) => slot.start <= this.now && slot.end > this.now));
|
|
2746
|
+
}
|
|
2747
|
+
get height() {
|
|
2748
|
+
return this.rows.length * this.rowHeight;
|
|
2749
|
+
}
|
|
2750
|
+
get interval() {
|
|
2751
|
+
var _a;
|
|
2752
|
+
if (typeof (this.currentTimeMarker) === 'boolean') {
|
|
2753
|
+
return MS_PER_MINUTE;
|
|
2754
|
+
}
|
|
2755
|
+
return ((_a = this.currentTimeMarker) === null || _a === void 0 ? void 0 : _a.updateInterval) || MS_PER_MINUTE;
|
|
2756
|
+
}
|
|
2757
|
+
ngOnDestroy() {
|
|
2758
|
+
clearTimeout(this.currentTimeTimeout);
|
|
2759
|
+
}
|
|
2760
|
+
removeTimeMarker() {
|
|
2761
|
+
if (this.timeMarkerDiv) {
|
|
2762
|
+
this.renderer.removeChild(this.container.nativeElement, this.timeMarkerDiv);
|
|
2763
|
+
clearTimeout(this.currentTimeTimeout);
|
|
2764
|
+
this.cdr.detectChanges();
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
}
|
|
2768
|
+
CurrentTimeMarkerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CurrentTimeMarkerService, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2769
|
+
CurrentTimeMarkerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CurrentTimeMarkerService });
|
|
2770
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CurrentTimeMarkerService, decorators: [{
|
|
2771
|
+
type: Injectable
|
|
2772
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; } });
|
|
2773
|
+
|
|
2774
|
+
/**
|
|
2775
|
+
* @hidden
|
|
2776
|
+
*/
|
|
2777
|
+
class GanttTimelineComponent {
|
|
2778
|
+
constructor(scrollSyncService, dependencyDomService, renderer, zone, currentTimeMarkerService) {
|
|
2779
|
+
this.scrollSyncService = scrollSyncService;
|
|
2780
|
+
this.dependencyDomService = dependencyDomService;
|
|
2781
|
+
this.renderer = renderer;
|
|
2782
|
+
this.zone = zone;
|
|
2783
|
+
this.currentTimeMarkerService = currentTimeMarkerService;
|
|
2784
|
+
this.dependencies = [];
|
|
2785
|
+
// as all drag-and-drop operations are on the timeline container, use a single draggable instance
|
|
2786
|
+
this.timelineContainerPress = new EventEmitter();
|
|
2787
|
+
this.timelineContainerDrag = new EventEmitter();
|
|
2788
|
+
this.timelineContainerRelease = new EventEmitter();
|
|
2789
|
+
this.subscriptions = new Subscription();
|
|
2790
|
+
this.subscriptions.add(
|
|
2791
|
+
// task changes indicates change in row content, number, height, etc.
|
|
2792
|
+
this.dependencyDomService.taskChanges
|
|
2793
|
+
.pipe(filter(args => isPresent(args.timelineRow)), switchMap(args => this.zone.onStable.pipe(take(1), map(() => args))) // ensure the content is rendered
|
|
2794
|
+
)
|
|
2795
|
+
.subscribe(({ timelineRow }) => {
|
|
2796
|
+
const timelineRowHeight = isDocumentAvailable() ? timelineRow.getBoundingClientRect().height : 0;
|
|
2797
|
+
this.currentTimeMarkerService.rowHeight = timelineRowHeight;
|
|
2798
|
+
this.currentTimeMarkerService.currentTimeMarker = this.currentTimeMarker;
|
|
2799
|
+
this.currentTimeMarkerService.slots = this.slots;
|
|
2800
|
+
this.currentTimeMarkerService.rows = this.rows;
|
|
2801
|
+
this.currentTimeMarkerService.activeView = this.activeView;
|
|
2802
|
+
this.createTimeMarker();
|
|
2803
|
+
this.renderer.setStyle(this.timelineColumns.nativeElement, 'height', `${(this.rows || []).length * timelineRowHeight}px`);
|
|
2804
|
+
}));
|
|
2805
|
+
}
|
|
2806
|
+
/**
|
|
2807
|
+
* Specifies whether the draggable will attach or detach its pointer event listeners.
|
|
2808
|
+
*/
|
|
2809
|
+
get draggableEnabled() {
|
|
2810
|
+
return this.renderDependencyDragClues;
|
|
2811
|
+
}
|
|
2812
|
+
ngOnChanges(changes) {
|
|
2813
|
+
if (changes['currentTimeMarker']) {
|
|
2814
|
+
this.createTimeMarker();
|
|
2815
|
+
}
|
|
2816
|
+
}
|
|
2817
|
+
ngAfterViewInit() {
|
|
2818
|
+
this.currentTimeMarkerService.slots = this.slots;
|
|
2819
|
+
this.currentTimeMarkerService.rows = this.rows;
|
|
2820
|
+
this.currentTimeMarkerService.container = this.timelineContent;
|
|
2821
|
+
const timelineHeader = this.timelineHeaderWrap.nativeElement;
|
|
2822
|
+
const rightContainer = this.timelineContent.nativeElement;
|
|
2823
|
+
this.scrollSyncService.registerElement(rightContainer, 'timeline');
|
|
2824
|
+
this.scrollSyncService.registerElement(timelineHeader, 'header');
|
|
2825
|
+
this.dependencyDomService.registerContentContainer(this.tasksContainer.nativeElement);
|
|
2826
|
+
}
|
|
2827
|
+
ngOnDestroy() {
|
|
2828
|
+
this.subscriptions.unsubscribe();
|
|
2829
|
+
}
|
|
2830
|
+
isNonWorking(item) {
|
|
2831
|
+
return item.hasOwnProperty('isWorking') && !item.isWorking;
|
|
2832
|
+
}
|
|
2833
|
+
createTimeMarker() {
|
|
2834
|
+
this.zone.runOutsideAngular(() => {
|
|
2835
|
+
var _a;
|
|
2836
|
+
this.currentTimeMarkerService.removeTimeMarker();
|
|
2837
|
+
if ((typeof this.currentTimeMarker === 'boolean' && this.currentTimeMarker) || ((_a = this.currentTimeMarker) === null || _a === void 0 ? void 0 : _a.enabled)) {
|
|
2838
|
+
this.currentTimeMarkerService.createTimeMarker();
|
|
2839
|
+
}
|
|
2840
|
+
});
|
|
2841
|
+
}
|
|
2842
|
+
}
|
|
2843
|
+
GanttTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: ScrollSyncService }, { token: DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: CurrentTimeMarkerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2844
|
+
GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttTimelineComponent, isStandalone: true, selector: "kendo-gantt-timeline", inputs: { rows: "rows", slots: "slots", groupSlots: "groupSlots", tableWidth: "tableWidth", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", renderDependencyDragClues: "renderDependencyDragClues", dragScrollSettings: "dragScrollSettings", currentTimeMarker: "currentTimeMarker", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, viewQueries: [{ propertyName: "timelineContent", first: true, predicate: ["timelineContent"], descendants: true, static: true }, { propertyName: "timelineColumns", first: true, predicate: ["timelineColumns"], descendants: true, static: true }, { propertyName: "timelineHeaderWrap", first: true, predicate: ["timelineHeaderWrap"], descendants: true, static: true }, { propertyName: "tasksContainer", first: true, predicate: ["tasksContainer"], descendants: true, static: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
2845
|
+
<div class="k-gantt-timeline k-grid k-grid-md">
|
|
2846
|
+
<div class="k-grid-header">
|
|
2847
|
+
<div #timelineHeaderWrap class="k-grid-header-wrap">
|
|
2848
|
+
<table
|
|
2849
|
+
class="k-table k-table-md k-grid-header-table"
|
|
2850
|
+
role="presentation"
|
|
2851
|
+
[style.width.px]="tableWidth"
|
|
2852
|
+
>
|
|
2853
|
+
<tbody
|
|
2854
|
+
kendoGanttHeaderTableBody
|
|
2875
2855
|
[groupSlots]="groupSlots"
|
|
2876
2856
|
[slots]="slots">
|
|
2877
2857
|
</tbody>
|
|
@@ -2964,7 +2944,7 @@ GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
2964
2944
|
<ng-container #dragPopupContainer></ng-container>
|
|
2965
2945
|
</div>
|
|
2966
2946
|
</div>
|
|
2967
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2947
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { kind: "component", type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: ["groupSlots", "slots"] }, { kind: "directive", type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: ["scrollSettings"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"] }, { kind: "directive", type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }] });
|
|
2968
2948
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTimelineComponent, decorators: [{
|
|
2969
2949
|
type: Component,
|
|
2970
2950
|
args: [{
|
|
@@ -3072,7 +3052,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3072
3052
|
<ng-container #dragPopupContainer></ng-container>
|
|
3073
3053
|
</div>
|
|
3074
3054
|
</div>
|
|
3075
|
-
|
|
3055
|
+
`,
|
|
3056
|
+
standalone: true,
|
|
3057
|
+
imports: [TableDirective, GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, NgFor, GanttTasksTableBodyComponent, GanttDependencyDirective]
|
|
3076
3058
|
}]
|
|
3077
3059
|
}], ctorParameters: function () { return [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }]; }, propDecorators: { timelineContent: [{
|
|
3078
3060
|
type: ViewChild,
|
|
@@ -3203,11 +3185,12 @@ class CellTemplateDirective {
|
|
|
3203
3185
|
}
|
|
3204
3186
|
}
|
|
3205
3187
|
CellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CellTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3206
|
-
CellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CellTemplateDirective, selector: "[kendoGanttCellTemplate]", ngImport: i0 });
|
|
3188
|
+
CellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CellTemplateDirective, isStandalone: true, selector: "[kendoGanttCellTemplate]", ngImport: i0 });
|
|
3207
3189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CellTemplateDirective, decorators: [{
|
|
3208
3190
|
type: Directive,
|
|
3209
3191
|
args: [{
|
|
3210
|
-
selector: '[kendoGanttCellTemplate]'
|
|
3192
|
+
selector: '[kendoGanttCellTemplate]',
|
|
3193
|
+
standalone: true
|
|
3211
3194
|
}]
|
|
3212
3195
|
}], ctorParameters: function () {
|
|
3213
3196
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3231,11 +3214,12 @@ class ColumnMenuTemplateDirective {
|
|
|
3231
3214
|
}
|
|
3232
3215
|
}
|
|
3233
3216
|
ColumnMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ColumnMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3234
|
-
ColumnMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ColumnMenuTemplateDirective, selector: "[kendoGanttColumnMenuTemplate]", ngImport: i0 });
|
|
3217
|
+
ColumnMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ColumnMenuTemplateDirective, isStandalone: true, selector: "[kendoGanttColumnMenuTemplate]", ngImport: i0 });
|
|
3235
3218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ColumnMenuTemplateDirective, decorators: [{
|
|
3236
3219
|
type: Directive,
|
|
3237
3220
|
args: [{
|
|
3238
|
-
selector: '[kendoGanttColumnMenuTemplate]'
|
|
3221
|
+
selector: '[kendoGanttColumnMenuTemplate]',
|
|
3222
|
+
standalone: true
|
|
3239
3223
|
}]
|
|
3240
3224
|
}], ctorParameters: function () {
|
|
3241
3225
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3258,11 +3242,12 @@ class FilterCellTemplateDirective {
|
|
|
3258
3242
|
}
|
|
3259
3243
|
}
|
|
3260
3244
|
FilterCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterCellTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3261
|
-
FilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilterCellTemplateDirective, selector: "[kendoGanttFilterCellTemplate]", ngImport: i0 });
|
|
3245
|
+
FilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilterCellTemplateDirective, isStandalone: true, selector: "[kendoGanttFilterCellTemplate]", ngImport: i0 });
|
|
3262
3246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterCellTemplateDirective, decorators: [{
|
|
3263
3247
|
type: Directive,
|
|
3264
3248
|
args: [{
|
|
3265
|
-
selector: '[kendoGanttFilterCellTemplate]'
|
|
3249
|
+
selector: '[kendoGanttFilterCellTemplate]',
|
|
3250
|
+
standalone: true
|
|
3266
3251
|
}]
|
|
3267
3252
|
}], ctorParameters: function () {
|
|
3268
3253
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3284,11 +3269,12 @@ class FilterMenuTemplateDirective {
|
|
|
3284
3269
|
}
|
|
3285
3270
|
}
|
|
3286
3271
|
FilterMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3287
|
-
FilterMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilterMenuTemplateDirective, selector: "[kendoGanttFilterMenuTemplate]", ngImport: i0 });
|
|
3272
|
+
FilterMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilterMenuTemplateDirective, isStandalone: true, selector: "[kendoGanttFilterMenuTemplate]", ngImport: i0 });
|
|
3288
3273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterMenuTemplateDirective, decorators: [{
|
|
3289
3274
|
type: Directive,
|
|
3290
3275
|
args: [{
|
|
3291
|
-
selector: '[kendoGanttFilterMenuTemplate]'
|
|
3276
|
+
selector: '[kendoGanttFilterMenuTemplate]',
|
|
3277
|
+
standalone: true
|
|
3292
3278
|
}]
|
|
3293
3279
|
}], ctorParameters: function () {
|
|
3294
3280
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3314,11 +3300,12 @@ class FooterTemplateDirective {
|
|
|
3314
3300
|
}
|
|
3315
3301
|
}
|
|
3316
3302
|
FooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3317
|
-
FooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FooterTemplateDirective, selector: "[kendoGanttFooterTemplate]", ngImport: i0 });
|
|
3303
|
+
FooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FooterTemplateDirective, isStandalone: true, selector: "[kendoGanttFooterTemplate]", ngImport: i0 });
|
|
3318
3304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FooterTemplateDirective, decorators: [{
|
|
3319
3305
|
type: Directive,
|
|
3320
3306
|
args: [{
|
|
3321
|
-
selector: '[kendoGanttFooterTemplate]'
|
|
3307
|
+
selector: '[kendoGanttFooterTemplate]',
|
|
3308
|
+
standalone: true
|
|
3322
3309
|
}]
|
|
3323
3310
|
}], ctorParameters: function () {
|
|
3324
3311
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3342,11 +3329,12 @@ class HeaderTemplateDirective {
|
|
|
3342
3329
|
}
|
|
3343
3330
|
}
|
|
3344
3331
|
HeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3345
|
-
HeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: HeaderTemplateDirective, selector: "[kendoGanttHeaderTemplate]", ngImport: i0 });
|
|
3332
|
+
HeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: HeaderTemplateDirective, isStandalone: true, selector: "[kendoGanttHeaderTemplate]", ngImport: i0 });
|
|
3346
3333
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HeaderTemplateDirective, decorators: [{
|
|
3347
3334
|
type: Directive,
|
|
3348
3335
|
args: [{
|
|
3349
|
-
selector: '[kendoGanttHeaderTemplate]'
|
|
3336
|
+
selector: '[kendoGanttHeaderTemplate]',
|
|
3337
|
+
standalone: true
|
|
3350
3338
|
}]
|
|
3351
3339
|
}], ctorParameters: function () {
|
|
3352
3340
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3374,11 +3362,12 @@ class EditTemplateDirective {
|
|
|
3374
3362
|
}
|
|
3375
3363
|
}
|
|
3376
3364
|
EditTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3377
|
-
EditTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: EditTemplateDirective, selector: "[kendoGanttEditTemplate]", ngImport: i0 });
|
|
3365
|
+
EditTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: EditTemplateDirective, isStandalone: true, selector: "[kendoGanttEditTemplate]", ngImport: i0 });
|
|
3378
3366
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditTemplateDirective, decorators: [{
|
|
3379
3367
|
type: Directive,
|
|
3380
3368
|
args: [{
|
|
3381
|
-
selector: '[kendoGanttEditTemplate]'
|
|
3369
|
+
selector: '[kendoGanttEditTemplate]',
|
|
3370
|
+
standalone: true
|
|
3382
3371
|
}]
|
|
3383
3372
|
}], ctorParameters: function () {
|
|
3384
3373
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3430,7 +3419,7 @@ class GanttColumnComponent extends ColumnComponent {
|
|
|
3430
3419
|
}
|
|
3431
3420
|
}
|
|
3432
3421
|
GanttColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttColumnComponent, deps: [{ token: OptionChangesService }, { token: GanttColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3433
|
-
GanttColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttColumnComponent, selector: "kendo-gantt-column", inputs: { format: "format", filter: "filter", filterable: "filterable", editor: "editor", editable: "editable", locked: "locked", lockable: "lockable", hidden: "hidden", media: "media", style: "style", headerStyle: "headerStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", footerClass: "footerClass" }, providers: [
|
|
3422
|
+
GanttColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttColumnComponent, isStandalone: true, selector: "kendo-gantt-column", inputs: { format: "format", filter: "filter", filterable: "filterable", editor: "editor", editable: "editable", locked: "locked", lockable: "lockable", hidden: "hidden", media: "media", style: "style", headerStyle: "headerStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", footerClass: "footerClass" }, providers: [
|
|
3434
3423
|
{
|
|
3435
3424
|
provide: GanttColumnBase,
|
|
3436
3425
|
useExisting: forwardRef(() => GanttColumnComponent)
|
|
@@ -3446,7 +3435,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3446
3435
|
provide: GanttColumnBase,
|
|
3447
3436
|
useExisting: forwardRef(() => GanttColumnComponent)
|
|
3448
3437
|
}
|
|
3449
|
-
]
|
|
3438
|
+
],
|
|
3439
|
+
standalone: true
|
|
3450
3440
|
}]
|
|
3451
3441
|
}], ctorParameters: function () {
|
|
3452
3442
|
return [{ type: OptionChangesService }, { type: GanttColumnBase, decorators: [{
|
|
@@ -3544,7 +3534,7 @@ class GanttColumnGroupComponent extends ColumnGroupComponent {
|
|
|
3544
3534
|
}
|
|
3545
3535
|
}
|
|
3546
3536
|
GanttColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttColumnGroupComponent, deps: [{ token: OptionChangesService }, { token: GanttColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3547
|
-
GanttColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttColumnGroupComponent, selector: "kendo-gantt-column-group", inputs: { locked: "locked", lockable: "lockable", hidden: "hidden", sortable: "sortable", media: "media", style: "style", headerStyle: "headerStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", footerClass: "footerClass" }, providers: [
|
|
3537
|
+
GanttColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttColumnGroupComponent, isStandalone: true, selector: "kendo-gantt-column-group", inputs: { locked: "locked", lockable: "lockable", hidden: "hidden", sortable: "sortable", media: "media", style: "style", headerStyle: "headerStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", footerClass: "footerClass" }, providers: [
|
|
3548
3538
|
{
|
|
3549
3539
|
provide: GanttColumnBase,
|
|
3550
3540
|
useExisting: forwardRef(() => GanttColumnGroupComponent)
|
|
@@ -3560,7 +3550,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3560
3550
|
provide: GanttColumnBase,
|
|
3561
3551
|
useExisting: forwardRef(() => GanttColumnGroupComponent)
|
|
3562
3552
|
}
|
|
3563
|
-
]
|
|
3553
|
+
],
|
|
3554
|
+
standalone: true
|
|
3564
3555
|
}]
|
|
3565
3556
|
}], ctorParameters: function () {
|
|
3566
3557
|
return [{ type: OptionChangesService }, { type: GanttColumnBase, decorators: [{
|
|
@@ -3649,7 +3640,7 @@ class GanttSpanColumnComponent extends SpanColumnComponent {
|
|
|
3649
3640
|
}
|
|
3650
3641
|
}
|
|
3651
3642
|
GanttSpanColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSpanColumnComponent, deps: [{ token: OptionChangesService }, { token: GanttColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3652
|
-
GanttSpanColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttSpanColumnComponent, selector: "kendo-gantt-span-column", inputs: { locked: "locked", lockable: "lockable", editable: "editable", hidden: "hidden", media: "media", style: "style", headerStyle: "headerStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", footerClass: "footerClass" }, providers: [
|
|
3643
|
+
GanttSpanColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttSpanColumnComponent, isStandalone: true, selector: "kendo-gantt-span-column", inputs: { locked: "locked", lockable: "lockable", editable: "editable", hidden: "hidden", media: "media", style: "style", headerStyle: "headerStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", footerClass: "footerClass" }, providers: [
|
|
3653
3644
|
{
|
|
3654
3645
|
provide: GanttColumnBase,
|
|
3655
3646
|
useExisting: forwardRef(() => GanttSpanColumnComponent)
|
|
@@ -3665,7 +3656,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3665
3656
|
provide: GanttColumnBase,
|
|
3666
3657
|
useExisting: forwardRef(() => GanttSpanColumnComponent)
|
|
3667
3658
|
}
|
|
3668
|
-
]
|
|
3659
|
+
],
|
|
3660
|
+
standalone: true
|
|
3669
3661
|
}]
|
|
3670
3662
|
}], ctorParameters: function () {
|
|
3671
3663
|
return [{ type: OptionChangesService }, { type: GanttColumnBase, decorators: [{
|
|
@@ -3809,11 +3801,12 @@ class GanttTaskTemplateDirective {
|
|
|
3809
3801
|
}
|
|
3810
3802
|
}
|
|
3811
3803
|
GanttTaskTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3812
|
-
GanttTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskTemplateDirective, selector: "[kendoGanttTaskTemplate]", ngImport: i0 });
|
|
3804
|
+
GanttTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskTemplateDirective, isStandalone: true, selector: "[kendoGanttTaskTemplate]", ngImport: i0 });
|
|
3813
3805
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskTemplateDirective, decorators: [{
|
|
3814
3806
|
type: Directive,
|
|
3815
3807
|
args: [{
|
|
3816
|
-
selector: '[kendoGanttTaskTemplate]'
|
|
3808
|
+
selector: '[kendoGanttTaskTemplate]',
|
|
3809
|
+
standalone: true
|
|
3817
3810
|
}]
|
|
3818
3811
|
}], ctorParameters: function () {
|
|
3819
3812
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3856,11 +3849,12 @@ class GanttSummaryTaskTemplateDirective {
|
|
|
3856
3849
|
}
|
|
3857
3850
|
}
|
|
3858
3851
|
GanttSummaryTaskTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3859
|
-
GanttSummaryTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttSummaryTaskTemplateDirective, selector: "[kendoGanttSummaryTaskTemplate]", ngImport: i0 });
|
|
3852
|
+
GanttSummaryTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttSummaryTaskTemplateDirective, isStandalone: true, selector: "[kendoGanttSummaryTaskTemplate]", ngImport: i0 });
|
|
3860
3853
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskTemplateDirective, decorators: [{
|
|
3861
3854
|
type: Directive,
|
|
3862
3855
|
args: [{
|
|
3863
|
-
selector: '[kendoGanttSummaryTaskTemplate]'
|
|
3856
|
+
selector: '[kendoGanttSummaryTaskTemplate]',
|
|
3857
|
+
standalone: true
|
|
3864
3858
|
}]
|
|
3865
3859
|
}], ctorParameters: function () {
|
|
3866
3860
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3898,11 +3892,12 @@ class GanttTaskContentTemplateDirective {
|
|
|
3898
3892
|
}
|
|
3899
3893
|
}
|
|
3900
3894
|
GanttTaskContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3901
|
-
GanttTaskContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskContentTemplateDirective, selector: "[kendoGanttTaskContentTemplate]", ngImport: i0 });
|
|
3895
|
+
GanttTaskContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskContentTemplateDirective, isStandalone: true, selector: "[kendoGanttTaskContentTemplate]", ngImport: i0 });
|
|
3902
3896
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskContentTemplateDirective, decorators: [{
|
|
3903
3897
|
type: Directive,
|
|
3904
3898
|
args: [{
|
|
3905
|
-
selector: '[kendoGanttTaskContentTemplate]'
|
|
3899
|
+
selector: '[kendoGanttTaskContentTemplate]',
|
|
3900
|
+
standalone: true
|
|
3906
3901
|
}]
|
|
3907
3902
|
}], ctorParameters: function () {
|
|
3908
3903
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -4019,11 +4014,12 @@ class ToolbarTemplateDirective {
|
|
|
4019
4014
|
}
|
|
4020
4015
|
}
|
|
4021
4016
|
ToolbarTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4022
|
-
ToolbarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ToolbarTemplateDirective, selector: "[kendoGanttToolbarTemplate]", inputs: { position: "position" }, ngImport: i0 });
|
|
4017
|
+
ToolbarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ToolbarTemplateDirective, isStandalone: true, selector: "[kendoGanttToolbarTemplate]", inputs: { position: "position" }, ngImport: i0 });
|
|
4023
4018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarTemplateDirective, decorators: [{
|
|
4024
4019
|
type: Directive,
|
|
4025
4020
|
args: [{
|
|
4026
|
-
selector: '[kendoGanttToolbarTemplate]'
|
|
4021
|
+
selector: '[kendoGanttToolbarTemplate]',
|
|
4022
|
+
standalone: true
|
|
4027
4023
|
}]
|
|
4028
4024
|
}], ctorParameters: function () {
|
|
4029
4025
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -4093,851 +4089,863 @@ const mapPath = (item) => ({
|
|
|
4093
4089
|
/**
|
|
4094
4090
|
* @hidden
|
|
4095
4091
|
*/
|
|
4096
|
-
class
|
|
4097
|
-
constructor(
|
|
4098
|
-
this.
|
|
4099
|
-
this.
|
|
4100
|
-
}
|
|
4101
|
-
updateFocus() {
|
|
4102
|
-
this.focusableContent.forEach(el => {
|
|
4103
|
-
this.renderer.setAttribute(el, 'tabindex', '-1');
|
|
4104
|
-
});
|
|
4105
|
-
this.renderer.setAttribute(this.focusableContent[this.focusIndex], 'tabindex', '0');
|
|
4106
|
-
this.focusableContent[this.focusIndex].focus();
|
|
4107
|
-
}
|
|
4108
|
-
}
|
|
4109
|
-
ToolbarNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4110
|
-
ToolbarNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService });
|
|
4111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService, decorators: [{
|
|
4112
|
-
type: Injectable
|
|
4113
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
4114
|
-
|
|
4115
|
-
/**
|
|
4116
|
-
* The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
|
|
4117
|
-
*/
|
|
4118
|
-
class ViewSelectorComponent {
|
|
4119
|
-
constructor(localizationService) {
|
|
4092
|
+
class DependenciesTableComponent {
|
|
4093
|
+
constructor(mapper, editService, localizationService) {
|
|
4094
|
+
this.mapper = mapper;
|
|
4095
|
+
this.editService = editService;
|
|
4120
4096
|
this.localizationService = localizationService;
|
|
4121
|
-
this.
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
this.
|
|
4127
|
-
/**
|
|
4128
|
-
* Fires each time the user selects a different view type. The event data contains the type of the newly selected view.
|
|
4129
|
-
*/
|
|
4130
|
-
this.activeViewChange = new EventEmitter();
|
|
4131
|
-
}
|
|
4132
|
-
/**
|
|
4133
|
-
* @hidden
|
|
4134
|
-
*/
|
|
4135
|
-
onClick(viewType) {
|
|
4136
|
-
if (viewType !== this.activeView) {
|
|
4137
|
-
this.activeViewChange.emit(viewType);
|
|
4138
|
-
}
|
|
4097
|
+
this.dependenciesChange = new EventEmitter();
|
|
4098
|
+
this.selectedKeys = [];
|
|
4099
|
+
this.formGroups = new FormArray([]);
|
|
4100
|
+
this.dependencyTypes = this.getDependencyTypes();
|
|
4101
|
+
this.plusIcon = plusIcon;
|
|
4102
|
+
this.minusIcon = minusIcon;
|
|
4139
4103
|
}
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
*/
|
|
4143
|
-
getViewTypeText(viewType) {
|
|
4144
|
-
return this.localizationService.get(`${viewType}ViewText`);
|
|
4104
|
+
get taskId() {
|
|
4105
|
+
return this.editService.dataItem.id;
|
|
4145
4106
|
}
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
this.
|
|
4107
|
+
// The target dependency id field
|
|
4108
|
+
// e.g. if Predecessors, we have the `fromId` which is the currently edited task,
|
|
4109
|
+
// while the `toId` is missing (needs to be selected by the user)
|
|
4110
|
+
get dependencyIdField() {
|
|
4111
|
+
return this.dependencyType === 'predecessor' ? 'fromId' : 'toId';
|
|
4112
|
+
}
|
|
4113
|
+
ngOnInit() {
|
|
4114
|
+
// generate the FormGroups per each Grid row
|
|
4115
|
+
if (this.formGroups.controls.length === 0) {
|
|
4116
|
+
const fields = this.mapper.dependencyFields;
|
|
4117
|
+
this.dependencies.forEach(item => {
|
|
4118
|
+
const formGroup = new FormGroup({
|
|
4119
|
+
[fields.id]: new FormControl(this.mapper.extractFromDependency(item, 'id')),
|
|
4120
|
+
[fields.fromId]: new FormControl(this.mapper.extractFromDependency(item, 'fromId'), Validators.required),
|
|
4121
|
+
[fields.toId]: new FormControl(this.mapper.extractFromDependency(item, 'toId'), Validators.required),
|
|
4122
|
+
[fields.type]: new FormControl(this.mapper.extractFromDependency(item, 'type'), Validators.required)
|
|
4123
|
+
});
|
|
4124
|
+
this.formGroups.push(formGroup);
|
|
4125
|
+
});
|
|
4126
|
+
}
|
|
4127
|
+
this.formGroups.valueChanges.subscribe(val => {
|
|
4128
|
+
this.formGroups.controls.forEach(control => {
|
|
4129
|
+
if (control.dirty) {
|
|
4130
|
+
this.editService.updateDependencies(control.value);
|
|
4131
|
+
}
|
|
4132
|
+
});
|
|
4133
|
+
this.dependenciesChange.emit(val);
|
|
4134
|
+
});
|
|
4135
|
+
}
|
|
4136
|
+
getFormControl(dataItemIndex, field) {
|
|
4137
|
+
// return the FormControl for the respective column editor
|
|
4138
|
+
return this.formGroups.controls
|
|
4139
|
+
.find((_control, index) => index === dataItemIndex)
|
|
4140
|
+
.get(this.mapper.dependencyFields[field]);
|
|
4141
|
+
}
|
|
4142
|
+
getText(token) {
|
|
4143
|
+
return this.localizationService.get(token);
|
|
4144
|
+
}
|
|
4145
|
+
getDependencyTypes() {
|
|
4146
|
+
const types = Object.keys(DependencyType)
|
|
4147
|
+
.filter(value => typeof DependencyType[value] === 'number')
|
|
4148
|
+
.map(type => {
|
|
4149
|
+
return {
|
|
4150
|
+
type,
|
|
4151
|
+
id: DependencyType[type]
|
|
4152
|
+
};
|
|
4153
|
+
});
|
|
4154
|
+
return types;
|
|
4155
|
+
}
|
|
4156
|
+
addHandler() {
|
|
4157
|
+
const fields = this.mapper.dependencyFields;
|
|
4158
|
+
const formGroup = new FormGroup({
|
|
4159
|
+
[fields.id]: new FormControl(),
|
|
4160
|
+
[fields.fromId]: new FormControl(this.dependencyIdField === 'toId' ? this.taskId : null, Validators.required),
|
|
4161
|
+
[fields.toId]: new FormControl(this.dependencyIdField === 'fromId' ? this.taskId : null, Validators.required),
|
|
4162
|
+
[fields.type]: new FormControl(null, Validators.required)
|
|
4163
|
+
});
|
|
4164
|
+
this.formGroups.push(formGroup);
|
|
4165
|
+
}
|
|
4166
|
+
removeHandler() {
|
|
4167
|
+
const [selectedIndex] = this.selectedKeys;
|
|
4168
|
+
const item = this.formGroups.at(selectedIndex).value;
|
|
4169
|
+
this.editService.deleteDependency(item);
|
|
4170
|
+
this.formGroups.removeAt(selectedIndex);
|
|
4151
4171
|
}
|
|
4152
4172
|
}
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
<
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
[
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4173
|
+
DependenciesTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependenciesTableComponent, deps: [{ token: MappingService }, { token: EditService }, { token: GanttLocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4174
|
+
DependenciesTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DependenciesTableComponent, isStandalone: true, selector: "kendo-gantt-dependencies-table", inputs: { tasks: "tasks", dependencies: "dependencies", dependencyType: "dependencyType" }, outputs: { dependenciesChange: "dependenciesChange" }, ngImport: i0, template: `
|
|
4175
|
+
<kendo-grid
|
|
4176
|
+
[data]="dependencies"
|
|
4177
|
+
[selectable]="{ mode: 'single' }"
|
|
4178
|
+
[(selectedKeys)]="selectedKeys"
|
|
4179
|
+
kendoGridSelectBy
|
|
4180
|
+
[height]="275"
|
|
4181
|
+
>
|
|
4182
|
+
<ng-template kendoGridToolbarTemplate>
|
|
4183
|
+
<button
|
|
4184
|
+
kendoButton
|
|
4185
|
+
icon="plus"
|
|
4186
|
+
[svgIcon]="plusIcon"
|
|
4187
|
+
(click)="addHandler()"
|
|
4188
|
+
>
|
|
4189
|
+
{{ getText('taskEditingDependenciesAddButtonText') }}
|
|
4190
|
+
</button>
|
|
4191
|
+
<button
|
|
4192
|
+
kendoButton
|
|
4193
|
+
icon="minus"
|
|
4194
|
+
[svgIcon]="minusIcon"
|
|
4195
|
+
[disabled]="selectedKeys.length === 0"
|
|
4196
|
+
(click)="removeHandler()"
|
|
4197
|
+
>
|
|
4198
|
+
{{ getText('taskEditingDependenciesRemoveButtonText') }}
|
|
4199
|
+
</button>
|
|
4200
|
+
</ng-template>
|
|
4201
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridNameColumnTitle')" [field]="dependencyIdField">
|
|
4202
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4203
|
+
<kendo-dropdownlist
|
|
4204
|
+
[data]="tasks"
|
|
4205
|
+
textField="title"
|
|
4206
|
+
valueField="id"
|
|
4207
|
+
[valuePrimitive]="true"
|
|
4208
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4209
|
+
>
|
|
4210
|
+
</kendo-dropdownlist>
|
|
4211
|
+
</ng-template>
|
|
4212
|
+
</kendo-grid-column>
|
|
4213
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridTypeColumnTitle')" field="type">
|
|
4214
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4215
|
+
<kendo-dropdownlist
|
|
4216
|
+
[data]="dependencyTypes"
|
|
4217
|
+
textField="type"
|
|
4218
|
+
valueField="id"
|
|
4219
|
+
[valuePrimitive]="true"
|
|
4220
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4221
|
+
>
|
|
4222
|
+
</kendo-dropdownlist>
|
|
4223
|
+
</ng-template>
|
|
4224
|
+
</kendo-grid-column>
|
|
4225
|
+
</kendo-grid>
|
|
4226
|
+
`, isInline: true, dependencies: [{ kind: "component", type: GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "directive", type: ToolbarTemplateDirective$1, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ColumnComponent$1, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: CellTemplateDirective$1, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
4227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependenciesTableComponent, decorators: [{
|
|
4171
4228
|
type: Component,
|
|
4172
4229
|
args: [{
|
|
4173
|
-
selector: 'kendo-gantt-
|
|
4230
|
+
selector: 'kendo-gantt-dependencies-table',
|
|
4174
4231
|
template: `
|
|
4175
|
-
<
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
[
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4232
|
+
<kendo-grid
|
|
4233
|
+
[data]="dependencies"
|
|
4234
|
+
[selectable]="{ mode: 'single' }"
|
|
4235
|
+
[(selectedKeys)]="selectedKeys"
|
|
4236
|
+
kendoGridSelectBy
|
|
4237
|
+
[height]="275"
|
|
4238
|
+
>
|
|
4239
|
+
<ng-template kendoGridToolbarTemplate>
|
|
4240
|
+
<button
|
|
4241
|
+
kendoButton
|
|
4242
|
+
icon="plus"
|
|
4243
|
+
[svgIcon]="plusIcon"
|
|
4244
|
+
(click)="addHandler()"
|
|
4245
|
+
>
|
|
4246
|
+
{{ getText('taskEditingDependenciesAddButtonText') }}
|
|
4247
|
+
</button>
|
|
4248
|
+
<button
|
|
4249
|
+
kendoButton
|
|
4250
|
+
icon="minus"
|
|
4251
|
+
[svgIcon]="minusIcon"
|
|
4252
|
+
[disabled]="selectedKeys.length === 0"
|
|
4253
|
+
(click)="removeHandler()"
|
|
4254
|
+
>
|
|
4255
|
+
{{ getText('taskEditingDependenciesRemoveButtonText') }}
|
|
4256
|
+
</button>
|
|
4257
|
+
</ng-template>
|
|
4258
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridNameColumnTitle')" [field]="dependencyIdField">
|
|
4259
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4260
|
+
<kendo-dropdownlist
|
|
4261
|
+
[data]="tasks"
|
|
4262
|
+
textField="title"
|
|
4263
|
+
valueField="id"
|
|
4264
|
+
[valuePrimitive]="true"
|
|
4265
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4266
|
+
>
|
|
4267
|
+
</kendo-dropdownlist>
|
|
4268
|
+
</ng-template>
|
|
4269
|
+
</kendo-grid-column>
|
|
4270
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridTypeColumnTitle')" field="type">
|
|
4271
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4272
|
+
<kendo-dropdownlist
|
|
4273
|
+
[data]="dependencyTypes"
|
|
4274
|
+
textField="type"
|
|
4275
|
+
valueField="id"
|
|
4276
|
+
[valuePrimitive]="true"
|
|
4277
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4278
|
+
>
|
|
4279
|
+
</kendo-dropdownlist>
|
|
4280
|
+
</ng-template>
|
|
4281
|
+
</kendo-grid-column>
|
|
4282
|
+
</kendo-grid>
|
|
4283
|
+
`,
|
|
4284
|
+
standalone: true,
|
|
4285
|
+
imports: [GridComponent, SelectionDirective, ToolbarTemplateDirective$1, ButtonComponent, ColumnComponent$1, CellTemplateDirective$1, DropDownListComponent, ReactiveFormsModule]
|
|
4190
4286
|
}]
|
|
4191
|
-
}], ctorParameters: function () { return [{ type:
|
|
4192
|
-
type: HostBinding,
|
|
4193
|
-
args: ['class.k-gantt-views-wrapper']
|
|
4194
|
-
}], views: [{
|
|
4287
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }]; }, propDecorators: { tasks: [{
|
|
4195
4288
|
type: Input
|
|
4196
|
-
}],
|
|
4289
|
+
}], dependencies: [{
|
|
4197
4290
|
type: Input
|
|
4198
|
-
}],
|
|
4291
|
+
}], dependencyType: [{
|
|
4292
|
+
type: Input
|
|
4293
|
+
}], dependenciesChange: [{
|
|
4199
4294
|
type: Output
|
|
4200
4295
|
}] } });
|
|
4201
4296
|
|
|
4202
4297
|
/**
|
|
4203
|
-
*
|
|
4204
|
-
* Use it within a toolbar template to provide a custom icon or list of options.
|
|
4298
|
+
* @hidden
|
|
4205
4299
|
*/
|
|
4206
|
-
class
|
|
4207
|
-
constructor(
|
|
4208
|
-
this.
|
|
4300
|
+
class TaskFieldsComponent {
|
|
4301
|
+
constructor(mapper, editService, localizationService) {
|
|
4302
|
+
this.mapper = mapper;
|
|
4209
4303
|
this.editService = editService;
|
|
4210
|
-
this.
|
|
4211
|
-
/**
|
|
4212
|
-
* Sets the data of the DropDownButton.
|
|
4213
|
-
* > The data has to be provided in an array-like list.
|
|
4214
|
-
*/
|
|
4215
|
-
this.data = [{
|
|
4216
|
-
text: this.getText('addChildText'),
|
|
4217
|
-
type: 'addChild'
|
|
4218
|
-
}, {
|
|
4219
|
-
text: this.getText('addAboveText'),
|
|
4220
|
-
type: 'addAbove'
|
|
4221
|
-
}, {
|
|
4222
|
-
text: this.getText('addBelowText'),
|
|
4223
|
-
type: 'addBelow'
|
|
4224
|
-
}];
|
|
4225
|
-
/**
|
|
4226
|
-
* Defines the name of an existing icon in a Kendo UI theme.
|
|
4227
|
-
* @default 'plus'
|
|
4228
|
-
*/
|
|
4229
|
-
this.icon = 'plus';
|
|
4230
|
-
/**
|
|
4231
|
-
* Defines an [`SVGIcon`](slug:api_icons_svgicon) icon to be rendered inside the `GanttAddTaskComponent` using
|
|
4232
|
-
* a [`KendoSVGIcon`](slug:api_icons_svgiconcomponent) component.
|
|
4233
|
-
*/
|
|
4234
|
-
this.svgIcon = plusIcon;
|
|
4304
|
+
this.localizationService = localizationService;
|
|
4235
4305
|
}
|
|
4236
4306
|
/**
|
|
4237
4307
|
* @hidden
|
|
4238
4308
|
*/
|
|
4239
|
-
|
|
4240
|
-
return this.
|
|
4309
|
+
get formGroup() {
|
|
4310
|
+
return this.editService.taskFormGroup;
|
|
4241
4311
|
}
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
*/
|
|
4245
|
-
handleOpen(e) {
|
|
4246
|
-
if (!this.editService.getSelectedItem()) {
|
|
4247
|
-
e.preventDefault();
|
|
4248
|
-
}
|
|
4249
|
-
}
|
|
4250
|
-
/**
|
|
4251
|
-
* @hidden
|
|
4252
|
-
*/
|
|
4253
|
-
handleMouseClick() {
|
|
4254
|
-
if (!this.editService.getSelectedItem()) {
|
|
4255
|
-
this.ngZone.run(() => {
|
|
4256
|
-
this.editService.addEvent.next({
|
|
4257
|
-
selectedItem: null,
|
|
4258
|
-
actionType: 'addTask'
|
|
4259
|
-
});
|
|
4260
|
-
});
|
|
4261
|
-
}
|
|
4262
|
-
}
|
|
4263
|
-
/**
|
|
4264
|
-
* @hidden
|
|
4265
|
-
*/
|
|
4266
|
-
handleItemClick(e) {
|
|
4267
|
-
this.editService.addEvent.next({
|
|
4268
|
-
actionType: e.type,
|
|
4269
|
-
selectedItem: null
|
|
4270
|
-
});
|
|
4312
|
+
getText(token) {
|
|
4313
|
+
return this.localizationService.get(token);
|
|
4271
4314
|
}
|
|
4272
4315
|
}
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
<
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4316
|
+
TaskFieldsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TaskFieldsComponent, deps: [{ token: MappingService }, { token: EditService }, { token: GanttLocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4317
|
+
TaskFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TaskFieldsComponent, isStandalone: true, selector: "kendo-gantt-task-fields", ngImport: i0, template: `
|
|
4318
|
+
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4319
|
+
<kendo-formfield *ngIf="formGroup.get(mapper.taskFields.title)">
|
|
4320
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4321
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4322
|
+
</kendo-formfield>
|
|
4323
|
+
<div class="k-hstack">
|
|
4324
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.start)">
|
|
4325
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4326
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4327
|
+
</kendo-formfield>
|
|
4328
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4329
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.end)">
|
|
4330
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4331
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4332
|
+
</kendo-formfield>
|
|
4333
|
+
</div>
|
|
4334
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
|
|
4335
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4336
|
+
<kendo-numerictextbox
|
|
4337
|
+
#completionRatio
|
|
4338
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4339
|
+
[min]="0"
|
|
4340
|
+
[max]="1"
|
|
4341
|
+
[decimals]="2"
|
|
4342
|
+
format="p2"
|
|
4343
|
+
[step]="0.01"
|
|
4344
|
+
></kendo-numerictextbox>
|
|
4345
|
+
</kendo-formfield>
|
|
4346
|
+
</form>
|
|
4347
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "weekDaysFormat", "showOtherMonthDays", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "title", "subtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "clearButton", "autoFill", "adaptiveMode", "inputAttributes", "defaultTab", "size", "rounded", "fillMode", "headerTemplate", "footerTemplate", "footer"], outputs: ["valueChange", "open", "close", "focus", "blur", "escape"], exportAs: ["kendo-datetimepicker"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }] });
|
|
4348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TaskFieldsComponent, decorators: [{
|
|
4287
4349
|
type: Component,
|
|
4288
4350
|
args: [{
|
|
4289
|
-
selector: 'kendo-gantt-
|
|
4351
|
+
selector: 'kendo-gantt-task-fields',
|
|
4290
4352
|
template: `
|
|
4291
|
-
<
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4353
|
+
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4354
|
+
<kendo-formfield *ngIf="formGroup.get(mapper.taskFields.title)">
|
|
4355
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4356
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4357
|
+
</kendo-formfield>
|
|
4358
|
+
<div class="k-hstack">
|
|
4359
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.start)">
|
|
4360
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4361
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4362
|
+
</kendo-formfield>
|
|
4363
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4364
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.end)">
|
|
4365
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4366
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4367
|
+
</kendo-formfield>
|
|
4368
|
+
</div>
|
|
4369
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
|
|
4370
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4371
|
+
<kendo-numerictextbox
|
|
4372
|
+
#completionRatio
|
|
4373
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4374
|
+
[min]="0"
|
|
4375
|
+
[max]="1"
|
|
4376
|
+
[decimals]="2"
|
|
4377
|
+
format="p2"
|
|
4378
|
+
[step]="0.01"
|
|
4379
|
+
></kendo-numerictextbox>
|
|
4380
|
+
</kendo-formfield>
|
|
4381
|
+
</form>
|
|
4382
|
+
`,
|
|
4383
|
+
standalone: true,
|
|
4384
|
+
imports: [ReactiveFormsModule, NgIf, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
|
|
4302
4385
|
}]
|
|
4303
|
-
}], ctorParameters: function () { return [{ type:
|
|
4304
|
-
type: Input
|
|
4305
|
-
}], icon: [{
|
|
4306
|
-
type: Input
|
|
4307
|
-
}], svgIcon: [{
|
|
4308
|
-
type: Input
|
|
4309
|
-
}] } });
|
|
4386
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }]; } });
|
|
4310
4387
|
|
|
4311
4388
|
/**
|
|
4312
4389
|
* @hidden
|
|
4313
4390
|
*/
|
|
4314
|
-
class
|
|
4315
|
-
constructor(
|
|
4316
|
-
this.
|
|
4317
|
-
this.
|
|
4318
|
-
this.
|
|
4319
|
-
this.
|
|
4320
|
-
this.
|
|
4321
|
-
this.
|
|
4391
|
+
class EditDialogComponent {
|
|
4392
|
+
constructor(mapper, editService, cdr, localizationService) {
|
|
4393
|
+
this.mapper = mapper;
|
|
4394
|
+
this.editService = editService;
|
|
4395
|
+
this.cdr = cdr;
|
|
4396
|
+
this.localizationService = localizationService;
|
|
4397
|
+
this.saveIcon = saveIcon;
|
|
4398
|
+
this.cancelIcon = cancelOutlineIcon;
|
|
4399
|
+
this.deleteIcon = trashIcon;
|
|
4322
4400
|
}
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
if (targetIndex > -1) {
|
|
4328
|
-
this.navigationService.focusIndex = targetIndex;
|
|
4329
|
-
}
|
|
4330
|
-
this.navigationService.updateFocus();
|
|
4331
|
-
}
|
|
4401
|
+
ngOnInit() {
|
|
4402
|
+
this.editService.loadTasks(this.data).subscribe(value => {
|
|
4403
|
+
this.loadedTasks = value;
|
|
4404
|
+
});
|
|
4332
4405
|
}
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
this.navigationService.focusIndex--;
|
|
4336
|
-
if (this.navigationService.focusIndex < 0) {
|
|
4337
|
-
this.navigationService.focusIndex = this.navigationService.focusableContent.length - 1;
|
|
4338
|
-
}
|
|
4339
|
-
this.navigationService.updateFocus();
|
|
4340
|
-
}
|
|
4406
|
+
get predecessors() {
|
|
4407
|
+
return this.editService.predecessors;
|
|
4341
4408
|
}
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
this.navigationService.focusIndex++;
|
|
4345
|
-
if (this.navigationService.focusIndex >= this.navigationService.focusableContent.length) {
|
|
4346
|
-
this.navigationService.focusIndex = 0;
|
|
4347
|
-
}
|
|
4348
|
-
this.navigationService.updateFocus();
|
|
4349
|
-
}
|
|
4409
|
+
set predecessors(items) {
|
|
4410
|
+
this.editService.predecessors = items;
|
|
4350
4411
|
}
|
|
4351
|
-
|
|
4352
|
-
this.
|
|
4412
|
+
get successors() {
|
|
4413
|
+
return this.editService.successors;
|
|
4353
4414
|
}
|
|
4354
|
-
|
|
4355
|
-
|
|
4415
|
+
set successors(items) {
|
|
4416
|
+
this.editService.successors = items;
|
|
4356
4417
|
}
|
|
4357
|
-
|
|
4358
|
-
return this.
|
|
4418
|
+
getText(token) {
|
|
4419
|
+
return this.localizationService.get(token);
|
|
4359
4420
|
}
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
const templatePosition = ganttToolbarTemplate ? ganttToolbarTemplate.position : null;
|
|
4363
|
-
return ganttToolbarTemplate && (templatePosition === 'both' || templatePosition === this.position);
|
|
4421
|
+
getDependencyType(typeId) {
|
|
4422
|
+
return DependencyType[typeId];
|
|
4364
4423
|
}
|
|
4365
|
-
|
|
4366
|
-
this.
|
|
4424
|
+
handleEditingResult(editResultType) {
|
|
4425
|
+
this.editService.triggerEditEvent(editResultType);
|
|
4367
4426
|
}
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
const focusableElements = Array.from(this.hostEl.nativeElement.querySelectorAll(focusableSelector) || [])
|
|
4371
|
-
.filter(el => isVisible(el));
|
|
4372
|
-
if (focusableElements.length) {
|
|
4373
|
-
this.navigationService.focusableContent = focusableElements;
|
|
4374
|
-
}
|
|
4375
|
-
}
|
|
4427
|
+
handleTaskDelete() {
|
|
4428
|
+
this.editService.taskDelete.next(this.editService.dataItem);
|
|
4376
4429
|
}
|
|
4377
4430
|
}
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
<
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
</ng-container>
|
|
4389
|
-
<ng-template
|
|
4390
|
-
*ngIf="renderTemplate"
|
|
4391
|
-
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
4392
|
-
[ngTemplateOutletContext]="context"
|
|
4393
|
-
>
|
|
4394
|
-
</ng-template>
|
|
4395
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ViewSelectorComponent, selector: "kendo-gantt-view-selector", inputs: ["views", "activeView"], outputs: ["activeViewChange"] }, { kind: "component", type: GanttAddTaskComponent, selector: "kendo-gantt-add-task", inputs: ["data", "icon", "svgIcon"] }] });
|
|
4396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
4397
|
-
type: Component,
|
|
4398
|
-
args: [{
|
|
4399
|
-
selector: 'kendo-gantt-toolbar',
|
|
4400
|
-
providers: [ToolbarNavigationService],
|
|
4401
|
-
template: `
|
|
4402
|
-
<ng-container *ngIf="!renderTemplate">
|
|
4403
|
-
<kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
|
|
4404
|
-
<span class="k-spacer k-toolbar-spacer"></span>
|
|
4405
|
-
<kendo-gantt-view-selector
|
|
4406
|
-
*ngIf="showViewSelector"
|
|
4407
|
-
[views]="views"
|
|
4408
|
-
[activeView]="activeView"
|
|
4409
|
-
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
4410
|
-
</ng-container>
|
|
4411
|
-
<ng-template
|
|
4412
|
-
*ngIf="renderTemplate"
|
|
4413
|
-
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
4414
|
-
[ngTemplateOutletContext]="context"
|
|
4415
|
-
>
|
|
4416
|
-
</ng-template>
|
|
4417
|
-
`
|
|
4418
|
-
}]
|
|
4419
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ToolbarNavigationService }]; }, propDecorators: { role: [{
|
|
4420
|
-
type: HostBinding,
|
|
4421
|
-
args: ['attr.role']
|
|
4422
|
-
}], toolbarSizingClass: [{
|
|
4423
|
-
type: HostBinding,
|
|
4424
|
-
args: ['class.k-toolbar-md']
|
|
4425
|
-
}], clickHandler: [{
|
|
4426
|
-
type: HostListener,
|
|
4427
|
-
args: ['click', ['$event']]
|
|
4428
|
-
}], arrowLeftListener: [{
|
|
4429
|
-
type: HostListener,
|
|
4430
|
-
args: ['keydown.arrowleft', ['$event']]
|
|
4431
|
-
}], arrowRightListener: [{
|
|
4432
|
-
type: HostListener,
|
|
4433
|
-
args: ['keydown.arrowright', ['$event']]
|
|
4434
|
-
}], activeViewChange: [{
|
|
4435
|
-
type: Output
|
|
4436
|
-
}], showAddTask: [{
|
|
4437
|
-
type: Input
|
|
4438
|
-
}], showViewSelector: [{
|
|
4439
|
-
type: Input
|
|
4440
|
-
}], views: [{
|
|
4441
|
-
type: Input
|
|
4442
|
-
}], activeView: [{
|
|
4443
|
-
type: Input
|
|
4444
|
-
}], toolbarTemplate: [{
|
|
4445
|
-
type: Input
|
|
4446
|
-
}], navigable: [{
|
|
4447
|
-
type: Input
|
|
4448
|
-
}], position: [{
|
|
4449
|
-
type: Input
|
|
4450
|
-
}] } });
|
|
4431
|
+
EditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditDialogComponent, deps: [{ token: MappingService }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4432
|
+
EditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EditDialogComponent, isStandalone: true, selector: "kendo-gantt-edit-dialog", inputs: { data: "data" }, ngImport: i0, template: `
|
|
4433
|
+
<kendo-dialog
|
|
4434
|
+
[title]="getText('taskEditingDialogTitle')"
|
|
4435
|
+
[width]="575"
|
|
4436
|
+
[height]="470"
|
|
4437
|
+
[autoFocusedElement]="'.k-actions .k-button-solid-primary'"
|
|
4438
|
+
(close)="handleEditingResult('cancel')">
|
|
4439
|
+
<kendo-dialog-messages
|
|
4440
|
+
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
|
|
4451
4441
|
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
this.dependencies.forEach(item => {
|
|
4481
|
-
const formGroup = new FormGroup({
|
|
4482
|
-
[fields.id]: new FormControl(this.mapper.extractFromDependency(item, 'id')),
|
|
4483
|
-
[fields.fromId]: new FormControl(this.mapper.extractFromDependency(item, 'fromId'), Validators.required),
|
|
4484
|
-
[fields.toId]: new FormControl(this.mapper.extractFromDependency(item, 'toId'), Validators.required),
|
|
4485
|
-
[fields.type]: new FormControl(this.mapper.extractFromDependency(item, 'type'), Validators.required)
|
|
4486
|
-
});
|
|
4487
|
-
this.formGroups.push(formGroup);
|
|
4488
|
-
});
|
|
4489
|
-
}
|
|
4490
|
-
this.formGroups.valueChanges.subscribe(val => {
|
|
4491
|
-
this.formGroups.controls.forEach(control => {
|
|
4492
|
-
if (control.dirty) {
|
|
4493
|
-
this.editService.updateDependencies(control.value);
|
|
4494
|
-
}
|
|
4495
|
-
});
|
|
4496
|
-
this.dependenciesChange.emit(val);
|
|
4497
|
-
});
|
|
4498
|
-
}
|
|
4499
|
-
getFormControl(dataItemIndex, field) {
|
|
4500
|
-
// return the FormControl for the respective column editor
|
|
4501
|
-
return this.formGroups.controls
|
|
4502
|
-
.find((_control, index) => index === dataItemIndex)
|
|
4503
|
-
.get(this.mapper.dependencyFields[field]);
|
|
4504
|
-
}
|
|
4505
|
-
getText(token) {
|
|
4506
|
-
return this.localizationService.get(token);
|
|
4507
|
-
}
|
|
4508
|
-
getDependencyTypes() {
|
|
4509
|
-
const types = Object.keys(DependencyType)
|
|
4510
|
-
.filter(value => typeof DependencyType[value] === 'number')
|
|
4511
|
-
.map(type => {
|
|
4512
|
-
return {
|
|
4513
|
-
type,
|
|
4514
|
-
id: DependencyType[type]
|
|
4515
|
-
};
|
|
4516
|
-
});
|
|
4517
|
-
return types;
|
|
4518
|
-
}
|
|
4519
|
-
addHandler() {
|
|
4520
|
-
const fields = this.mapper.dependencyFields;
|
|
4521
|
-
const formGroup = new FormGroup({
|
|
4522
|
-
[fields.id]: new FormControl(),
|
|
4523
|
-
[fields.fromId]: new FormControl(this.dependencyIdField === 'toId' ? this.taskId : null, Validators.required),
|
|
4524
|
-
[fields.toId]: new FormControl(this.dependencyIdField === 'fromId' ? this.taskId : null, Validators.required),
|
|
4525
|
-
[fields.type]: new FormControl(null, Validators.required)
|
|
4526
|
-
});
|
|
4527
|
-
this.formGroups.push(formGroup);
|
|
4528
|
-
}
|
|
4529
|
-
removeHandler() {
|
|
4530
|
-
const [selectedIndex] = this.selectedKeys;
|
|
4531
|
-
const item = this.formGroups.at(selectedIndex).value;
|
|
4532
|
-
this.editService.deleteDependency(item);
|
|
4533
|
-
this.formGroups.removeAt(selectedIndex);
|
|
4534
|
-
}
|
|
4535
|
-
}
|
|
4536
|
-
DependenciesTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependenciesTableComponent, deps: [{ token: MappingService }, { token: EditService }, { token: GanttLocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4537
|
-
DependenciesTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DependenciesTableComponent, selector: "kendo-gantt-dependencies-table", inputs: { tasks: "tasks", dependencies: "dependencies", dependencyType: "dependencyType" }, outputs: { dependenciesChange: "dependenciesChange" }, ngImport: i0, template: `
|
|
4538
|
-
<kendo-grid
|
|
4539
|
-
[data]="dependencies"
|
|
4540
|
-
[selectable]="{ mode: 'single' }"
|
|
4541
|
-
[(selectedKeys)]="selectedKeys"
|
|
4542
|
-
kendoGridSelectBy
|
|
4543
|
-
[height]="275"
|
|
4544
|
-
>
|
|
4545
|
-
<ng-template kendoGridToolbarTemplate>
|
|
4442
|
+
<kendo-tabstrip [keepTabContent]="true" [style.height.px]="345">
|
|
4443
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingGeneralTabTitle')" [selected]="true">
|
|
4444
|
+
<ng-template kendoTabContent>
|
|
4445
|
+
<kendo-gantt-task-fields></kendo-gantt-task-fields>
|
|
4446
|
+
</ng-template>
|
|
4447
|
+
</kendo-tabstrip-tab>
|
|
4448
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingPredecessorsTabTitle')">
|
|
4449
|
+
<ng-template kendoTabContent>
|
|
4450
|
+
<kendo-gantt-dependencies-table
|
|
4451
|
+
[tasks]="loadedTasks"
|
|
4452
|
+
[(dependencies)]="predecessors"
|
|
4453
|
+
dependencyType="predecessor"
|
|
4454
|
+
>
|
|
4455
|
+
</kendo-gantt-dependencies-table>
|
|
4456
|
+
</ng-template>
|
|
4457
|
+
</kendo-tabstrip-tab>
|
|
4458
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
|
|
4459
|
+
<ng-template kendoTabContent>
|
|
4460
|
+
<kendo-gantt-dependencies-table
|
|
4461
|
+
[tasks]="loadedTasks"
|
|
4462
|
+
[(dependencies)]="successors"
|
|
4463
|
+
dependencyType="successor">
|
|
4464
|
+
</kendo-gantt-dependencies-table>
|
|
4465
|
+
</ng-template>
|
|
4466
|
+
</kendo-tabstrip-tab>
|
|
4467
|
+
</kendo-tabstrip>
|
|
4468
|
+
|
|
4469
|
+
<kendo-dialog-actions layout="start">
|
|
4546
4470
|
<button
|
|
4547
4471
|
kendoButton
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4472
|
+
themeColor="primary"
|
|
4473
|
+
icon="save"
|
|
4474
|
+
[svgIcon]="saveIcon"
|
|
4475
|
+
(click)="handleEditingResult('save')"
|
|
4551
4476
|
>
|
|
4552
|
-
{{ getText('
|
|
4477
|
+
{{ getText('saveButtonText') }}
|
|
4553
4478
|
</button>
|
|
4554
4479
|
<button
|
|
4555
4480
|
kendoButton
|
|
4556
|
-
icon="
|
|
4557
|
-
[svgIcon]="
|
|
4558
|
-
|
|
4559
|
-
(click)="removeHandler()"
|
|
4481
|
+
icon="cancel-outline"
|
|
4482
|
+
[svgIcon]="cancelIcon"
|
|
4483
|
+
(click)="handleEditingResult('cancel')"
|
|
4560
4484
|
>
|
|
4561
|
-
{{ getText('
|
|
4485
|
+
{{ getText('cancelButtonText') }}
|
|
4562
4486
|
</button>
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
valueField="id"
|
|
4582
|
-
[valuePrimitive]="true"
|
|
4583
|
-
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4584
|
-
>
|
|
4585
|
-
</kendo-dropdownlist>
|
|
4586
|
-
</ng-template>
|
|
4587
|
-
</kendo-grid-column>
|
|
4588
|
-
</kendo-grid>
|
|
4589
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: i6$1.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i6$1.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "directive", type: i6$1.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i6$1.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i6$1.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: i7.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }] });
|
|
4590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependenciesTableComponent, decorators: [{
|
|
4487
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4488
|
+
<button
|
|
4489
|
+
kendoButton
|
|
4490
|
+
themeColor="primary"
|
|
4491
|
+
fillMode="flat"
|
|
4492
|
+
icon="delete"
|
|
4493
|
+
[svgIcon]="deleteIcon"
|
|
4494
|
+
[kendoEventsOutsideAngular]="{
|
|
4495
|
+
click: handleTaskDelete
|
|
4496
|
+
}"
|
|
4497
|
+
[scope]="this"
|
|
4498
|
+
>
|
|
4499
|
+
{{ getText('deleteButtonText') }}
|
|
4500
|
+
</button>
|
|
4501
|
+
</kendo-dialog-actions>
|
|
4502
|
+
</kendo-dialog>
|
|
4503
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "directive", type: CustomMessagesComponent$1, selector: "kendo-dialog-messages, kendo-window-messages" }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabContentDirective, selector: "[kendoTabContent]" }, { kind: "component", type: TaskFieldsComponent, selector: "kendo-gantt-task-fields" }, { kind: "component", type: DependenciesTableComponent, selector: "kendo-gantt-dependencies-table", inputs: ["tasks", "dependencies", "dependencyType"], outputs: ["dependenciesChange"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
|
|
4504
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditDialogComponent, decorators: [{
|
|
4591
4505
|
type: Component,
|
|
4592
4506
|
args: [{
|
|
4593
|
-
selector: 'kendo-gantt-
|
|
4507
|
+
selector: 'kendo-gantt-edit-dialog',
|
|
4594
4508
|
template: `
|
|
4595
|
-
<kendo-
|
|
4596
|
-
[
|
|
4597
|
-
[
|
|
4598
|
-
[
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4509
|
+
<kendo-dialog
|
|
4510
|
+
[title]="getText('taskEditingDialogTitle')"
|
|
4511
|
+
[width]="575"
|
|
4512
|
+
[height]="470"
|
|
4513
|
+
[autoFocusedElement]="'.k-actions .k-button-solid-primary'"
|
|
4514
|
+
(close)="handleEditingResult('cancel')">
|
|
4515
|
+
<kendo-dialog-messages
|
|
4516
|
+
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
|
|
4517
|
+
|
|
4518
|
+
<kendo-tabstrip [keepTabContent]="true" [style.height.px]="345">
|
|
4519
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingGeneralTabTitle')" [selected]="true">
|
|
4520
|
+
<ng-template kendoTabContent>
|
|
4521
|
+
<kendo-gantt-task-fields></kendo-gantt-task-fields>
|
|
4522
|
+
</ng-template>
|
|
4523
|
+
</kendo-tabstrip-tab>
|
|
4524
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingPredecessorsTabTitle')">
|
|
4525
|
+
<ng-template kendoTabContent>
|
|
4526
|
+
<kendo-gantt-dependencies-table
|
|
4527
|
+
[tasks]="loadedTasks"
|
|
4528
|
+
[(dependencies)]="predecessors"
|
|
4529
|
+
dependencyType="predecessor"
|
|
4530
|
+
>
|
|
4531
|
+
</kendo-gantt-dependencies-table>
|
|
4532
|
+
</ng-template>
|
|
4533
|
+
</kendo-tabstrip-tab>
|
|
4534
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
|
|
4535
|
+
<ng-template kendoTabContent>
|
|
4536
|
+
<kendo-gantt-dependencies-table
|
|
4537
|
+
[tasks]="loadedTasks"
|
|
4538
|
+
[(dependencies)]="successors"
|
|
4539
|
+
dependencyType="successor">
|
|
4540
|
+
</kendo-gantt-dependencies-table>
|
|
4541
|
+
</ng-template>
|
|
4542
|
+
</kendo-tabstrip-tab>
|
|
4543
|
+
</kendo-tabstrip>
|
|
4544
|
+
|
|
4545
|
+
<kendo-dialog-actions layout="start">
|
|
4603
4546
|
<button
|
|
4604
4547
|
kendoButton
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4548
|
+
themeColor="primary"
|
|
4549
|
+
icon="save"
|
|
4550
|
+
[svgIcon]="saveIcon"
|
|
4551
|
+
(click)="handleEditingResult('save')"
|
|
4608
4552
|
>
|
|
4609
|
-
{{ getText('
|
|
4553
|
+
{{ getText('saveButtonText') }}
|
|
4610
4554
|
</button>
|
|
4611
4555
|
<button
|
|
4612
4556
|
kendoButton
|
|
4613
|
-
icon="
|
|
4614
|
-
[svgIcon]="
|
|
4615
|
-
|
|
4616
|
-
(click)="removeHandler()"
|
|
4557
|
+
icon="cancel-outline"
|
|
4558
|
+
[svgIcon]="cancelIcon"
|
|
4559
|
+
(click)="handleEditingResult('cancel')"
|
|
4617
4560
|
>
|
|
4618
|
-
{{ getText('
|
|
4561
|
+
{{ getText('cancelButtonText') }}
|
|
4619
4562
|
</button>
|
|
4620
|
-
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
|
|
4563
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4564
|
+
<button
|
|
4565
|
+
kendoButton
|
|
4566
|
+
themeColor="primary"
|
|
4567
|
+
fillMode="flat"
|
|
4568
|
+
icon="delete"
|
|
4569
|
+
[svgIcon]="deleteIcon"
|
|
4570
|
+
[kendoEventsOutsideAngular]="{
|
|
4571
|
+
click: handleTaskDelete
|
|
4572
|
+
}"
|
|
4573
|
+
[scope]="this"
|
|
4574
|
+
>
|
|
4575
|
+
{{ getText('deleteButtonText') }}
|
|
4576
|
+
</button>
|
|
4577
|
+
</kendo-dialog-actions>
|
|
4578
|
+
</kendo-dialog>
|
|
4579
|
+
`,
|
|
4580
|
+
standalone: true,
|
|
4581
|
+
imports: [DialogComponent, CustomMessagesComponent$1, TabStripComponent, TabStripTabComponent, TabContentDirective, TaskFieldsComponent, DependenciesTableComponent, DialogActionsComponent, ButtonComponent, TreeListSpacerComponent, EventsOutsideAngularDirective]
|
|
4582
|
+
}]
|
|
4583
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: i1$1.LocalizationService }]; }, propDecorators: { data: [{
|
|
4584
|
+
type: Input
|
|
4585
|
+
}] } });
|
|
4586
|
+
|
|
4587
|
+
/**
|
|
4588
|
+
* @hidden
|
|
4589
|
+
*/
|
|
4590
|
+
class ToolbarNavigationService {
|
|
4591
|
+
constructor(renderer) {
|
|
4592
|
+
this.renderer = renderer;
|
|
4593
|
+
this.focusIndex = 0;
|
|
4594
|
+
}
|
|
4595
|
+
updateFocus() {
|
|
4596
|
+
this.focusableContent.forEach(el => {
|
|
4597
|
+
this.renderer.setAttribute(el, 'tabindex', '-1');
|
|
4598
|
+
});
|
|
4599
|
+
this.renderer.setAttribute(this.focusableContent[this.focusIndex], 'tabindex', '0');
|
|
4600
|
+
this.focusableContent[this.focusIndex].focus();
|
|
4601
|
+
}
|
|
4602
|
+
}
|
|
4603
|
+
ToolbarNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4604
|
+
ToolbarNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService });
|
|
4605
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService, decorators: [{
|
|
4606
|
+
type: Injectable
|
|
4607
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
4608
|
+
|
|
4609
|
+
/**
|
|
4610
|
+
* The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
|
|
4611
|
+
*/
|
|
4612
|
+
class ViewSelectorComponent {
|
|
4613
|
+
constructor(localizationService) {
|
|
4614
|
+
this.localizationService = localizationService;
|
|
4615
|
+
this.hostClass = true;
|
|
4616
|
+
/**
|
|
4617
|
+
* The currently active view type.
|
|
4618
|
+
* @default 'week'
|
|
4619
|
+
*/
|
|
4620
|
+
this.activeView = 'week';
|
|
4621
|
+
/**
|
|
4622
|
+
* Fires each time the user selects a different view type. The event data contains the type of the newly selected view.
|
|
4623
|
+
*/
|
|
4624
|
+
this.activeViewChange = new EventEmitter();
|
|
4625
|
+
}
|
|
4626
|
+
/**
|
|
4627
|
+
* @hidden
|
|
4628
|
+
*/
|
|
4629
|
+
onClick(viewType) {
|
|
4630
|
+
if (viewType !== this.activeView) {
|
|
4631
|
+
this.activeViewChange.emit(viewType);
|
|
4632
|
+
}
|
|
4633
|
+
}
|
|
4634
|
+
/**
|
|
4635
|
+
* @hidden
|
|
4636
|
+
*/
|
|
4637
|
+
getViewTypeText(viewType) {
|
|
4638
|
+
return this.localizationService.get(`${viewType}ViewText`);
|
|
4639
|
+
}
|
|
4640
|
+
/**
|
|
4641
|
+
* @hidden
|
|
4642
|
+
*/
|
|
4643
|
+
onActiveViewChange(event) {
|
|
4644
|
+
this.activeViewChange.emit(event.target.value);
|
|
4645
|
+
}
|
|
4646
|
+
}
|
|
4647
|
+
ViewSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ViewSelectorComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4648
|
+
ViewSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ViewSelectorComponent, isStandalone: true, selector: "kendo-gantt-view-selector", inputs: { views: "views", activeView: "activeView" }, outputs: { activeViewChange: "activeViewChange" }, host: { properties: { "class.k-gantt-views-wrapper": "this.hostClass" } }, ngImport: i0, template: `
|
|
4649
|
+
<select
|
|
4650
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
4651
|
+
aria-label="View Selector"
|
|
4652
|
+
[value]="activeView"
|
|
4653
|
+
(change)="onActiveViewChange($event)">
|
|
4654
|
+
<option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
|
|
4655
|
+
</select>
|
|
4656
|
+
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
4657
|
+
<button *ngFor="let view of views"
|
|
4658
|
+
kendoButton
|
|
4659
|
+
type="button"
|
|
4660
|
+
[selected]="view === activeView"
|
|
4661
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
4662
|
+
</kendo-buttongroup>
|
|
4663
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
4664
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ViewSelectorComponent, decorators: [{
|
|
4665
|
+
type: Component,
|
|
4666
|
+
args: [{
|
|
4667
|
+
selector: 'kendo-gantt-view-selector',
|
|
4668
|
+
template: `
|
|
4669
|
+
<select
|
|
4670
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
4671
|
+
aria-label="View Selector"
|
|
4672
|
+
[value]="activeView"
|
|
4673
|
+
(change)="onActiveViewChange($event)">
|
|
4674
|
+
<option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
|
|
4675
|
+
</select>
|
|
4676
|
+
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
4677
|
+
<button *ngFor="let view of views"
|
|
4678
|
+
kendoButton
|
|
4679
|
+
type="button"
|
|
4680
|
+
[selected]="view === activeView"
|
|
4681
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
4682
|
+
</kendo-buttongroup>
|
|
4683
|
+
`,
|
|
4684
|
+
standalone: true,
|
|
4685
|
+
imports: [NgFor, ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
|
|
4647
4686
|
}]
|
|
4648
|
-
}], ctorParameters: function () { return [{ type:
|
|
4649
|
-
type:
|
|
4650
|
-
|
|
4687
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
|
4688
|
+
type: HostBinding,
|
|
4689
|
+
args: ['class.k-gantt-views-wrapper']
|
|
4690
|
+
}], views: [{
|
|
4651
4691
|
type: Input
|
|
4652
|
-
}],
|
|
4692
|
+
}], activeView: [{
|
|
4653
4693
|
type: Input
|
|
4654
|
-
}],
|
|
4694
|
+
}], activeViewChange: [{
|
|
4655
4695
|
type: Output
|
|
4656
4696
|
}] } });
|
|
4657
4697
|
|
|
4658
4698
|
/**
|
|
4659
|
-
*
|
|
4699
|
+
* The UI for adding new items to the Gantt.
|
|
4700
|
+
* Use it within a toolbar template to provide a custom icon or list of options.
|
|
4660
4701
|
*/
|
|
4661
|
-
class
|
|
4662
|
-
constructor(
|
|
4663
|
-
this.mapper = mapper;
|
|
4664
|
-
this.editService = editService;
|
|
4702
|
+
class GanttAddTaskComponent {
|
|
4703
|
+
constructor(localizationService, editService, ngZone) {
|
|
4665
4704
|
this.localizationService = localizationService;
|
|
4705
|
+
this.editService = editService;
|
|
4706
|
+
this.ngZone = ngZone;
|
|
4707
|
+
/**
|
|
4708
|
+
* Sets the data of the DropDownButton.
|
|
4709
|
+
* > The data has to be provided in an array-like list.
|
|
4710
|
+
*/
|
|
4711
|
+
this.data = [{
|
|
4712
|
+
text: this.getText('addChildText'),
|
|
4713
|
+
type: 'addChild'
|
|
4714
|
+
}, {
|
|
4715
|
+
text: this.getText('addAboveText'),
|
|
4716
|
+
type: 'addAbove'
|
|
4717
|
+
}, {
|
|
4718
|
+
text: this.getText('addBelowText'),
|
|
4719
|
+
type: 'addBelow'
|
|
4720
|
+
}];
|
|
4721
|
+
/**
|
|
4722
|
+
* Defines the name of an existing icon in a Kendo UI theme.
|
|
4723
|
+
* @default 'plus'
|
|
4724
|
+
*/
|
|
4725
|
+
this.icon = 'plus';
|
|
4726
|
+
/**
|
|
4727
|
+
* Defines an [`SVGIcon`](slug:api_icons_svgicon) icon to be rendered inside the `GanttAddTaskComponent` using
|
|
4728
|
+
* a [`KendoSVGIcon`](slug:api_icons_svgiconcomponent) component.
|
|
4729
|
+
*/
|
|
4730
|
+
this.svgIcon = plusIcon;
|
|
4666
4731
|
}
|
|
4667
4732
|
/**
|
|
4668
4733
|
* @hidden
|
|
4669
4734
|
*/
|
|
4670
|
-
|
|
4671
|
-
return this.
|
|
4735
|
+
getText(message) {
|
|
4736
|
+
return this.localizationService.get(message);
|
|
4672
4737
|
}
|
|
4673
|
-
|
|
4674
|
-
|
|
4738
|
+
/**
|
|
4739
|
+
* @hidden
|
|
4740
|
+
*/
|
|
4741
|
+
handleOpen(e) {
|
|
4742
|
+
if (!this.editService.getSelectedItem()) {
|
|
4743
|
+
e.preventDefault();
|
|
4744
|
+
}
|
|
4745
|
+
}
|
|
4746
|
+
/**
|
|
4747
|
+
* @hidden
|
|
4748
|
+
*/
|
|
4749
|
+
handleMouseClick() {
|
|
4750
|
+
if (!this.editService.getSelectedItem()) {
|
|
4751
|
+
this.ngZone.run(() => {
|
|
4752
|
+
this.editService.addEvent.next({
|
|
4753
|
+
selectedItem: null,
|
|
4754
|
+
actionType: 'addTask'
|
|
4755
|
+
});
|
|
4756
|
+
});
|
|
4757
|
+
}
|
|
4758
|
+
}
|
|
4759
|
+
/**
|
|
4760
|
+
* @hidden
|
|
4761
|
+
*/
|
|
4762
|
+
handleItemClick(e) {
|
|
4763
|
+
this.editService.addEvent.next({
|
|
4764
|
+
actionType: e.type,
|
|
4765
|
+
selectedItem: null
|
|
4766
|
+
});
|
|
4675
4767
|
}
|
|
4676
4768
|
}
|
|
4677
|
-
|
|
4678
|
-
|
|
4679
|
-
<
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4692
|
-
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4693
|
-
</kendo-formfield>
|
|
4694
|
-
</div>
|
|
4695
|
-
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
|
|
4696
|
-
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4697
|
-
<kendo-numerictextbox
|
|
4698
|
-
#completionRatio
|
|
4699
|
-
[formControlName]="mapper.taskFields.completionRatio"
|
|
4700
|
-
[min]="0"
|
|
4701
|
-
[max]="1"
|
|
4702
|
-
[decimals]="2"
|
|
4703
|
-
format="p2"
|
|
4704
|
-
[step]="0.01"
|
|
4705
|
-
></kendo-numerictextbox>
|
|
4706
|
-
</kendo-formfield>
|
|
4707
|
-
</form>
|
|
4708
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6$2.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: i7$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i7$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: i7$1.FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors"] }, { kind: "component", type: i8.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "weekDaysFormat", "showOtherMonthDays", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "title", "subtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "clearButton", "autoFill", "adaptiveMode", "inputAttributes", "defaultTab", "size", "rounded", "fillMode", "headerTemplate", "footerTemplate", "footer"], outputs: ["valueChange", "open", "close", "focus", "blur", "escape"], exportAs: ["kendo-datetimepicker"] }, { kind: "component", type: i14.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }] });
|
|
4709
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TaskFieldsComponent, decorators: [{
|
|
4769
|
+
GanttAddTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttAddTaskComponent, deps: [{ token: i1$1.LocalizationService }, { token: EditService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
4770
|
+
GanttAddTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttAddTaskComponent, isStandalone: true, selector: "kendo-gantt-add-task", inputs: { data: "data", icon: "icon", svgIcon: "svgIcon" }, ngImport: i0, template: `
|
|
4771
|
+
<kendo-dropdownbutton
|
|
4772
|
+
[data]="data"
|
|
4773
|
+
[icon]="icon"
|
|
4774
|
+
[svgIcon]="svgIcon"
|
|
4775
|
+
[kendoEventsOutsideAngular]="{ click: handleMouseClick }"
|
|
4776
|
+
[scope]="this"
|
|
4777
|
+
(itemClick)="handleItemClick($event)"
|
|
4778
|
+
(open)="handleOpen($event)">
|
|
4779
|
+
{{ getText('addTaskText') }}
|
|
4780
|
+
</kendo-dropdownbutton>
|
|
4781
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
|
|
4782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttAddTaskComponent, decorators: [{
|
|
4710
4783
|
type: Component,
|
|
4711
4784
|
args: [{
|
|
4712
|
-
selector: 'kendo-gantt-task
|
|
4785
|
+
selector: 'kendo-gantt-add-task',
|
|
4713
4786
|
template: `
|
|
4714
|
-
<
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4728
|
-
</kendo-formfield>
|
|
4729
|
-
</div>
|
|
4730
|
-
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
|
|
4731
|
-
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4732
|
-
<kendo-numerictextbox
|
|
4733
|
-
#completionRatio
|
|
4734
|
-
[formControlName]="mapper.taskFields.completionRatio"
|
|
4735
|
-
[min]="0"
|
|
4736
|
-
[max]="1"
|
|
4737
|
-
[decimals]="2"
|
|
4738
|
-
format="p2"
|
|
4739
|
-
[step]="0.01"
|
|
4740
|
-
></kendo-numerictextbox>
|
|
4741
|
-
</kendo-formfield>
|
|
4742
|
-
</form>
|
|
4743
|
-
`
|
|
4787
|
+
<kendo-dropdownbutton
|
|
4788
|
+
[data]="data"
|
|
4789
|
+
[icon]="icon"
|
|
4790
|
+
[svgIcon]="svgIcon"
|
|
4791
|
+
[kendoEventsOutsideAngular]="{ click: handleMouseClick }"
|
|
4792
|
+
[scope]="this"
|
|
4793
|
+
(itemClick)="handleItemClick($event)"
|
|
4794
|
+
(open)="handleOpen($event)">
|
|
4795
|
+
{{ getText('addTaskText') }}
|
|
4796
|
+
</kendo-dropdownbutton>
|
|
4797
|
+
`,
|
|
4798
|
+
standalone: true,
|
|
4799
|
+
imports: [DropDownButtonComponent, EventsOutsideAngularDirective]
|
|
4744
4800
|
}]
|
|
4745
|
-
}], ctorParameters: function () { return [{ type:
|
|
4801
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: EditService }, { type: i0.NgZone }]; }, propDecorators: { data: [{
|
|
4802
|
+
type: Input
|
|
4803
|
+
}], icon: [{
|
|
4804
|
+
type: Input
|
|
4805
|
+
}], svgIcon: [{
|
|
4806
|
+
type: Input
|
|
4807
|
+
}] } });
|
|
4746
4808
|
|
|
4747
4809
|
/**
|
|
4748
4810
|
* @hidden
|
|
4749
4811
|
*/
|
|
4750
|
-
class
|
|
4751
|
-
constructor(
|
|
4752
|
-
this.
|
|
4753
|
-
this.
|
|
4754
|
-
this.
|
|
4755
|
-
this.
|
|
4756
|
-
this.
|
|
4757
|
-
this.
|
|
4758
|
-
this.deleteIcon = trashIcon;
|
|
4759
|
-
}
|
|
4760
|
-
ngOnInit() {
|
|
4761
|
-
this.editService.loadTasks(this.data).subscribe(value => {
|
|
4762
|
-
this.loadedTasks = value;
|
|
4763
|
-
});
|
|
4812
|
+
class ToolbarComponent {
|
|
4813
|
+
constructor(hostEl, navigationService) {
|
|
4814
|
+
this.hostEl = hostEl;
|
|
4815
|
+
this.navigationService = navigationService;
|
|
4816
|
+
this.context = {};
|
|
4817
|
+
this.role = 'toolbar';
|
|
4818
|
+
this.toolbarSizingClass = true;
|
|
4819
|
+
this.activeViewChange = new EventEmitter();
|
|
4764
4820
|
}
|
|
4765
|
-
|
|
4766
|
-
|
|
4821
|
+
clickHandler(ev) {
|
|
4822
|
+
if (this.navigable) {
|
|
4823
|
+
const closestFocusable = closest(ev.target, isFocusable);
|
|
4824
|
+
const targetIndex = this.navigationService.focusableContent.indexOf(closestFocusable);
|
|
4825
|
+
if (targetIndex > -1) {
|
|
4826
|
+
this.navigationService.focusIndex = targetIndex;
|
|
4827
|
+
}
|
|
4828
|
+
this.navigationService.updateFocus();
|
|
4829
|
+
}
|
|
4767
4830
|
}
|
|
4768
|
-
|
|
4769
|
-
this.
|
|
4831
|
+
arrowLeftListener() {
|
|
4832
|
+
if (this.navigable && isDocumentAvailable()) {
|
|
4833
|
+
this.navigationService.focusIndex--;
|
|
4834
|
+
if (this.navigationService.focusIndex < 0) {
|
|
4835
|
+
this.navigationService.focusIndex = this.navigationService.focusableContent.length - 1;
|
|
4836
|
+
}
|
|
4837
|
+
this.navigationService.updateFocus();
|
|
4838
|
+
}
|
|
4770
4839
|
}
|
|
4771
|
-
|
|
4772
|
-
|
|
4840
|
+
arrowRightListener() {
|
|
4841
|
+
if (this.navigable && isDocumentAvailable()) {
|
|
4842
|
+
this.navigationService.focusIndex++;
|
|
4843
|
+
if (this.navigationService.focusIndex >= this.navigationService.focusableContent.length) {
|
|
4844
|
+
this.navigationService.focusIndex = 0;
|
|
4845
|
+
}
|
|
4846
|
+
this.navigationService.updateFocus();
|
|
4847
|
+
}
|
|
4773
4848
|
}
|
|
4774
|
-
set
|
|
4775
|
-
this.
|
|
4849
|
+
set position(value) {
|
|
4850
|
+
this.context.position = this._position = value;
|
|
4776
4851
|
}
|
|
4777
|
-
|
|
4778
|
-
return this.
|
|
4852
|
+
get position() {
|
|
4853
|
+
return this._position;
|
|
4779
4854
|
}
|
|
4780
|
-
|
|
4781
|
-
return
|
|
4855
|
+
get toolbarTemplateRef() {
|
|
4856
|
+
return this.toolbarTemplate ? this.toolbarTemplate.templateRef : undefined;
|
|
4782
4857
|
}
|
|
4783
|
-
|
|
4784
|
-
this.
|
|
4858
|
+
get renderTemplate() {
|
|
4859
|
+
const ganttToolbarTemplate = this.toolbarTemplate;
|
|
4860
|
+
const templatePosition = ganttToolbarTemplate ? ganttToolbarTemplate.position : null;
|
|
4861
|
+
return ganttToolbarTemplate && (templatePosition === 'both' || templatePosition === this.position);
|
|
4785
4862
|
}
|
|
4786
|
-
|
|
4787
|
-
this.
|
|
4863
|
+
handleViewChange(view) {
|
|
4864
|
+
this.activeViewChange.emit(view);
|
|
4865
|
+
}
|
|
4866
|
+
ngAfterViewInit() {
|
|
4867
|
+
if (isDocumentAvailable()) {
|
|
4868
|
+
const focusableElements = Array.from(this.hostEl.nativeElement.querySelectorAll(focusableSelector) || [])
|
|
4869
|
+
.filter(el => isVisible(el));
|
|
4870
|
+
if (focusableElements.length) {
|
|
4871
|
+
this.navigationService.focusableContent = focusableElements;
|
|
4872
|
+
}
|
|
4873
|
+
}
|
|
4788
4874
|
}
|
|
4789
4875
|
}
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
<
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
<kendo-gantt-dependencies-table
|
|
4810
|
-
[tasks]="loadedTasks"
|
|
4811
|
-
[(dependencies)]="predecessors"
|
|
4812
|
-
dependencyType="predecessor"
|
|
4813
|
-
>
|
|
4814
|
-
</kendo-gantt-dependencies-table>
|
|
4815
|
-
</ng-template>
|
|
4816
|
-
</kendo-tabstrip-tab>
|
|
4817
|
-
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
|
|
4818
|
-
<ng-template kendoTabContent>
|
|
4819
|
-
<kendo-gantt-dependencies-table
|
|
4820
|
-
[tasks]="loadedTasks"
|
|
4821
|
-
[(dependencies)]="successors"
|
|
4822
|
-
dependencyType="successor">
|
|
4823
|
-
</kendo-gantt-dependencies-table>
|
|
4824
|
-
</ng-template>
|
|
4825
|
-
</kendo-tabstrip-tab>
|
|
4826
|
-
</kendo-tabstrip>
|
|
4827
|
-
|
|
4828
|
-
<kendo-dialog-actions layout="start">
|
|
4829
|
-
<button
|
|
4830
|
-
kendoButton
|
|
4831
|
-
themeColor="primary"
|
|
4832
|
-
icon="save"
|
|
4833
|
-
[svgIcon]="saveIcon"
|
|
4834
|
-
(click)="handleEditingResult('save')"
|
|
4835
|
-
>
|
|
4836
|
-
{{ getText('saveButtonText') }}
|
|
4837
|
-
</button>
|
|
4838
|
-
<button
|
|
4839
|
-
kendoButton
|
|
4840
|
-
icon="cancel-outline"
|
|
4841
|
-
[svgIcon]="cancelIcon"
|
|
4842
|
-
(click)="handleEditingResult('cancel')"
|
|
4843
|
-
>
|
|
4844
|
-
{{ getText('cancelButtonText') }}
|
|
4845
|
-
</button>
|
|
4846
|
-
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4847
|
-
<button
|
|
4848
|
-
kendoButton
|
|
4849
|
-
themeColor="primary"
|
|
4850
|
-
fillMode="flat"
|
|
4851
|
-
icon="delete"
|
|
4852
|
-
[svgIcon]="deleteIcon"
|
|
4853
|
-
[kendoEventsOutsideAngular]="{
|
|
4854
|
-
click: handleTaskDelete
|
|
4855
|
-
}"
|
|
4856
|
-
[scope]="this"
|
|
4857
|
-
>
|
|
4858
|
-
{{ getText('deleteButtonText') }}
|
|
4859
|
-
</button>
|
|
4860
|
-
</kendo-dialog-actions>
|
|
4861
|
-
</kendo-dialog>
|
|
4862
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i11.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: i14.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { kind: "component", type: i7$2.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: i7$2.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "directive", type: i7$2.CustomMessagesComponent, selector: "kendo-dialog-messages, kendo-window-messages" }, { kind: "component", type: i8$1.TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: i8$1.TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: i8$1.TabContentDirective, selector: "[kendoTabContent]" }, { kind: "component", type: DependenciesTableComponent, selector: "kendo-gantt-dependencies-table", inputs: ["tasks", "dependencies", "dependencyType"], outputs: ["dependenciesChange"] }, { kind: "component", type: TaskFieldsComponent, selector: "kendo-gantt-task-fields" }] });
|
|
4863
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditDialogComponent, decorators: [{
|
|
4876
|
+
ToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarComponent, deps: [{ token: i0.ElementRef }, { token: ToolbarNavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4877
|
+
ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ToolbarComponent, isStandalone: true, selector: "kendo-gantt-toolbar", inputs: { showAddTask: "showAddTask", showViewSelector: "showViewSelector", views: "views", activeView: "activeView", toolbarTemplate: "toolbarTemplate", navigable: "navigable", position: "position" }, outputs: { activeViewChange: "activeViewChange" }, host: { listeners: { "click": "clickHandler($event)", "keydown.arrowleft": "arrowLeftListener($event)", "keydown.arrowright": "arrowRightListener($event)" }, properties: { "attr.role": "this.role", "class.k-toolbar-md": "this.toolbarSizingClass" } }, providers: [ToolbarNavigationService], ngImport: i0, template: `
|
|
4878
|
+
<ng-container *ngIf="!renderTemplate">
|
|
4879
|
+
<kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
|
|
4880
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
4881
|
+
<kendo-gantt-view-selector
|
|
4882
|
+
*ngIf="showViewSelector"
|
|
4883
|
+
[views]="views"
|
|
4884
|
+
[activeView]="activeView"
|
|
4885
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
4886
|
+
</ng-container>
|
|
4887
|
+
<ng-template
|
|
4888
|
+
*ngIf="renderTemplate"
|
|
4889
|
+
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
4890
|
+
[ngTemplateOutletContext]="context"
|
|
4891
|
+
>
|
|
4892
|
+
</ng-template>
|
|
4893
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GanttAddTaskComponent, selector: "kendo-gantt-add-task", inputs: ["data", "icon", "svgIcon"] }, { kind: "component", type: ViewSelectorComponent, selector: "kendo-gantt-view-selector", inputs: ["views", "activeView"], outputs: ["activeViewChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
4894
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
4864
4895
|
type: Component,
|
|
4865
4896
|
args: [{
|
|
4866
|
-
selector: 'kendo-gantt-
|
|
4897
|
+
selector: 'kendo-gantt-toolbar',
|
|
4898
|
+
providers: [ToolbarNavigationService],
|
|
4867
4899
|
template: `
|
|
4868
|
-
<
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
[tasks]="loadedTasks"
|
|
4887
|
-
[(dependencies)]="predecessors"
|
|
4888
|
-
dependencyType="predecessor"
|
|
4889
|
-
>
|
|
4890
|
-
</kendo-gantt-dependencies-table>
|
|
4891
|
-
</ng-template>
|
|
4892
|
-
</kendo-tabstrip-tab>
|
|
4893
|
-
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
|
|
4894
|
-
<ng-template kendoTabContent>
|
|
4895
|
-
<kendo-gantt-dependencies-table
|
|
4896
|
-
[tasks]="loadedTasks"
|
|
4897
|
-
[(dependencies)]="successors"
|
|
4898
|
-
dependencyType="successor">
|
|
4899
|
-
</kendo-gantt-dependencies-table>
|
|
4900
|
-
</ng-template>
|
|
4901
|
-
</kendo-tabstrip-tab>
|
|
4902
|
-
</kendo-tabstrip>
|
|
4903
|
-
|
|
4904
|
-
<kendo-dialog-actions layout="start">
|
|
4905
|
-
<button
|
|
4906
|
-
kendoButton
|
|
4907
|
-
themeColor="primary"
|
|
4908
|
-
icon="save"
|
|
4909
|
-
[svgIcon]="saveIcon"
|
|
4910
|
-
(click)="handleEditingResult('save')"
|
|
4911
|
-
>
|
|
4912
|
-
{{ getText('saveButtonText') }}
|
|
4913
|
-
</button>
|
|
4914
|
-
<button
|
|
4915
|
-
kendoButton
|
|
4916
|
-
icon="cancel-outline"
|
|
4917
|
-
[svgIcon]="cancelIcon"
|
|
4918
|
-
(click)="handleEditingResult('cancel')"
|
|
4919
|
-
>
|
|
4920
|
-
{{ getText('cancelButtonText') }}
|
|
4921
|
-
</button>
|
|
4922
|
-
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4923
|
-
<button
|
|
4924
|
-
kendoButton
|
|
4925
|
-
themeColor="primary"
|
|
4926
|
-
fillMode="flat"
|
|
4927
|
-
icon="delete"
|
|
4928
|
-
[svgIcon]="deleteIcon"
|
|
4929
|
-
[kendoEventsOutsideAngular]="{
|
|
4930
|
-
click: handleTaskDelete
|
|
4931
|
-
}"
|
|
4932
|
-
[scope]="this"
|
|
4933
|
-
>
|
|
4934
|
-
{{ getText('deleteButtonText') }}
|
|
4935
|
-
</button>
|
|
4936
|
-
</kendo-dialog-actions>
|
|
4937
|
-
</kendo-dialog>
|
|
4938
|
-
`
|
|
4900
|
+
<ng-container *ngIf="!renderTemplate">
|
|
4901
|
+
<kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
|
|
4902
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
4903
|
+
<kendo-gantt-view-selector
|
|
4904
|
+
*ngIf="showViewSelector"
|
|
4905
|
+
[views]="views"
|
|
4906
|
+
[activeView]="activeView"
|
|
4907
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
4908
|
+
</ng-container>
|
|
4909
|
+
<ng-template
|
|
4910
|
+
*ngIf="renderTemplate"
|
|
4911
|
+
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
4912
|
+
[ngTemplateOutletContext]="context"
|
|
4913
|
+
>
|
|
4914
|
+
</ng-template>
|
|
4915
|
+
`,
|
|
4916
|
+
standalone: true,
|
|
4917
|
+
imports: [NgIf, GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
|
|
4939
4918
|
}]
|
|
4940
|
-
}], ctorParameters: function () { return [{ type:
|
|
4919
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ToolbarNavigationService }]; }, propDecorators: { role: [{
|
|
4920
|
+
type: HostBinding,
|
|
4921
|
+
args: ['attr.role']
|
|
4922
|
+
}], toolbarSizingClass: [{
|
|
4923
|
+
type: HostBinding,
|
|
4924
|
+
args: ['class.k-toolbar-md']
|
|
4925
|
+
}], clickHandler: [{
|
|
4926
|
+
type: HostListener,
|
|
4927
|
+
args: ['click', ['$event']]
|
|
4928
|
+
}], arrowLeftListener: [{
|
|
4929
|
+
type: HostListener,
|
|
4930
|
+
args: ['keydown.arrowleft', ['$event']]
|
|
4931
|
+
}], arrowRightListener: [{
|
|
4932
|
+
type: HostListener,
|
|
4933
|
+
args: ['keydown.arrowright', ['$event']]
|
|
4934
|
+
}], activeViewChange: [{
|
|
4935
|
+
type: Output
|
|
4936
|
+
}], showAddTask: [{
|
|
4937
|
+
type: Input
|
|
4938
|
+
}], showViewSelector: [{
|
|
4939
|
+
type: Input
|
|
4940
|
+
}], views: [{
|
|
4941
|
+
type: Input
|
|
4942
|
+
}], activeView: [{
|
|
4943
|
+
type: Input
|
|
4944
|
+
}], toolbarTemplate: [{
|
|
4945
|
+
type: Input
|
|
4946
|
+
}], navigable: [{
|
|
4947
|
+
type: Input
|
|
4948
|
+
}], position: [{
|
|
4941
4949
|
type: Input
|
|
4942
4950
|
}] } });
|
|
4943
4951
|
|
|
@@ -5102,7 +5110,7 @@ class LocalizedMessagesDirective extends Messages {
|
|
|
5102
5110
|
}
|
|
5103
5111
|
}
|
|
5104
5112
|
LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5105
|
-
LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]", providers: [
|
|
5113
|
+
LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: LocalizedMessagesDirective, isStandalone: true, selector: "[kendoGanttLocalizedMessages]", providers: [
|
|
5106
5114
|
{
|
|
5107
5115
|
provide: Messages,
|
|
5108
5116
|
useExisting: forwardRef(() => LocalizedMessagesDirective)
|
|
@@ -5117,7 +5125,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
5117
5125
|
useExisting: forwardRef(() => LocalizedMessagesDirective)
|
|
5118
5126
|
}
|
|
5119
5127
|
],
|
|
5120
|
-
selector: '[kendoGanttLocalizedMessages]'
|
|
5128
|
+
selector: '[kendoGanttLocalizedMessages]',
|
|
5129
|
+
standalone: true
|
|
5121
5130
|
}]
|
|
5122
5131
|
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
|
|
5123
5132
|
|
|
@@ -6385,9 +6394,13 @@ class GanttComponent {
|
|
|
6385
6394
|
}
|
|
6386
6395
|
}
|
|
6387
6396
|
GanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttComponent, deps: [{ token: TimelineViewService }, { token: ScrollSyncService }, { token: i0.Renderer2 }, { token: MappingService }, { token: OptionChangesService }, { token: DependencyDomService }, { token: EditService }, { token: i1$1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: NavigationService }, { token: CurrentTimeMarkerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6388
|
-
GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttComponent, selector: "kendo-gantt", inputs: { roleDescription: ["aria-roledescription", "roleDescription"], role: "role", taskModelFields: "taskModelFields", dependencyModelFields: "dependencyModelFields", activeView: "activeView", data: "data", isSelected: "isSelected", validateNewDependency: "validateNewDependency", selectable: "selectable", toolbarSettings: "toolbarSettings", toolbarAriaLabel: "toolbarAriaLabel", fetchChildren: "fetchChildren", hasChildren: "hasChildren", dependencies: "dependencies", sortable: "sortable", sort: "sort", filterable: "filterable", filter: "filter", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", navigable: "navigable", timelinePaneOptions: "timelinePaneOptions", treeListPaneOptions: "treeListPaneOptions", taskClass: "taskClass", rowClass: "rowClass", isExpanded: "isExpanded", columnsAutoSize: "columnsAutoSize", currentTimeMarker: "currentTimeMarker", columnMenu: "columnMenu", columnsReorderable: "columnsReorderable", columnsResizable: "columnsResizable", dragScrollSettings: "dragScrollSettings" }, outputs: { selectionChange: "selectionChange", rowExpand: "rowExpand", taskDblClick: "taskDblClick", cellDblClick: "cellDblClick", cellClose: "cellClose", taskDelete: "taskDelete", rowCollapse: "rowCollapse", remove: "remove", cancel: "cancel", save: "save", taskAdd: "taskAdd", dependencyAdd: "dependencyAdd", sortChange: "sortChange", filterChange: "filterChange", dataStateChange: "dataStateChange", treeListPaneCollapsedChange: "treeListPaneCollapsedChange", timelinePaneCollapsedChange: "timelinePaneCollapsedChange", timelinePaneSizeChange: "timelinePaneSizeChange", activeViewChange: "activeViewChange", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", cellClick: "cellClick", taskClick: "taskClick" }, host: { properties: { "attr.aria-roledescription": "this.hostRoleDescriptionAttr", "attr.role": "this.hostRoleAttr", "class.k-gantt": "this.hostClasses", "attr.dir": "this.dir" } }, providers: [
|
|
6397
|
+
GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GanttComponent, isStandalone: true, selector: "kendo-gantt", inputs: { roleDescription: ["aria-roledescription", "roleDescription"], role: "role", taskModelFields: "taskModelFields", dependencyModelFields: "dependencyModelFields", activeView: "activeView", data: "data", isSelected: "isSelected", validateNewDependency: "validateNewDependency", selectable: "selectable", toolbarSettings: "toolbarSettings", toolbarAriaLabel: "toolbarAriaLabel", fetchChildren: "fetchChildren", hasChildren: "hasChildren", dependencies: "dependencies", sortable: "sortable", sort: "sort", filterable: "filterable", filter: "filter", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", navigable: "navigable", timelinePaneOptions: "timelinePaneOptions", treeListPaneOptions: "treeListPaneOptions", taskClass: "taskClass", rowClass: "rowClass", isExpanded: "isExpanded", columnsAutoSize: "columnsAutoSize", currentTimeMarker: "currentTimeMarker", columnMenu: "columnMenu", columnsReorderable: "columnsReorderable", columnsResizable: "columnsResizable", dragScrollSettings: "dragScrollSettings" }, outputs: { selectionChange: "selectionChange", rowExpand: "rowExpand", taskDblClick: "taskDblClick", cellDblClick: "cellDblClick", cellClose: "cellClose", taskDelete: "taskDelete", rowCollapse: "rowCollapse", remove: "remove", cancel: "cancel", save: "save", taskAdd: "taskAdd", dependencyAdd: "dependencyAdd", sortChange: "sortChange", filterChange: "filterChange", dataStateChange: "dataStateChange", treeListPaneCollapsedChange: "treeListPaneCollapsedChange", timelinePaneCollapsedChange: "timelinePaneCollapsedChange", timelinePaneSizeChange: "timelinePaneSizeChange", activeViewChange: "activeViewChange", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", cellClick: "cellClick", taskClick: "taskClick" }, host: { properties: { "attr.aria-roledescription": "this.hostRoleDescriptionAttr", "attr.role": "this.hostRoleAttr", "class.k-gantt": "this.hostClasses", "attr.dir": "this.dir" } }, providers: [
|
|
6389
6398
|
GanttLocalizationService,
|
|
6390
6399
|
LocalizationService,
|
|
6400
|
+
{
|
|
6401
|
+
provide: L10N_PREFIX,
|
|
6402
|
+
useValue: 'kendo.gantt'
|
|
6403
|
+
},
|
|
6391
6404
|
{
|
|
6392
6405
|
provide: DataBoundTreeComponent,
|
|
6393
6406
|
useExisting: forwardRef(() => GanttComponent)
|
|
@@ -6781,7 +6794,7 @@ GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
6781
6794
|
</kendo-dialog>
|
|
6782
6795
|
|
|
6783
6796
|
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
|
|
6784
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
6797
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-gantt-toolbar", inputs: ["showAddTask", "showViewSelector", "views", "activeView", "toolbarTemplate", "navigable", "position"], outputs: ["activeViewChange"] }, { kind: "component", type: SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "splitbarWidth", "resizeStep"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { kind: "component", type: SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "separatorLabel", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { kind: "component", type: TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "navigatable", "autoSize", "rowClass", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "idField", "selectable", "isSelected", "rowReorderable", "columns", "fetchChildren", "hasChildren", "isExpanded"], outputs: ["selectionChange", "filterChange", "pageChange", "sortChange", "dataStateChange", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "scrollBottom", "contentScroll", "expand", "collapse", "expandStateChange", "rowReorder"], exportAs: ["kendoTreeList"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: CustomMessagesComponent$2, selector: "kendo-treelist-messages" }, { kind: "component", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: ["rows", "slots", "groupSlots", "tableWidth", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "renderDependencyDragClues", "dragScrollSettings", "currentTimeMarker", "selectable", "isTaskSelected", "isExpanded", "dependencies"], outputs: ["timelineContainerPress", "timelineContainerDrag", "timelineContainerRelease"] }, { kind: "component", type: EditDialogComponent, selector: "kendo-gantt-edit-dialog", inputs: ["data"] }, { kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }] });
|
|
6785
6798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttComponent, decorators: [{
|
|
6786
6799
|
type: Component,
|
|
6787
6800
|
args: [{
|
|
@@ -6790,6 +6803,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
6790
6803
|
providers: [
|
|
6791
6804
|
GanttLocalizationService,
|
|
6792
6805
|
LocalizationService,
|
|
6806
|
+
{
|
|
6807
|
+
provide: L10N_PREFIX,
|
|
6808
|
+
useValue: 'kendo.gantt'
|
|
6809
|
+
},
|
|
6793
6810
|
{
|
|
6794
6811
|
provide: DataBoundTreeComponent,
|
|
6795
6812
|
useExisting: forwardRef(() => GanttComponent)
|
|
@@ -7184,7 +7201,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7184
7201
|
</kendo-dialog>
|
|
7185
7202
|
|
|
7186
7203
|
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
|
|
7187
|
-
|
|
7204
|
+
`,
|
|
7205
|
+
standalone: true,
|
|
7206
|
+
imports: [LocalizedMessagesDirective, NgIf, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
|
|
7188
7207
|
}]
|
|
7189
7208
|
}], ctorParameters: function () { return [{ type: TimelineViewService }, { type: ScrollSyncService }, { type: i0.Renderer2 }, { type: MappingService }, { type: OptionChangesService }, { type: DependencyDomService }, { type: EditService }, { type: i1$1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: NavigationService }, { type: CurrentTimeMarkerService }]; }, propDecorators: { treeList: [{
|
|
7190
7209
|
type: ViewChild,
|
|
@@ -7278,252 +7297,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7278
7297
|
type: Input
|
|
7279
7298
|
}], taskClass: [{
|
|
7280
7299
|
type: Input
|
|
7281
|
-
}], rowClass: [{
|
|
7282
|
-
type: Input
|
|
7283
|
-
}], isExpanded: [{
|
|
7284
|
-
type: Input
|
|
7285
|
-
}], columnsAutoSize: [{
|
|
7286
|
-
type: Input
|
|
7287
|
-
}], currentTimeMarker: [{
|
|
7288
|
-
type: Input
|
|
7289
|
-
}], columnMenu: [{
|
|
7290
|
-
type: Input
|
|
7291
|
-
}], columnsReorderable: [{
|
|
7292
|
-
type: Input
|
|
7293
|
-
}], columnsResizable: [{
|
|
7294
|
-
type: Input
|
|
7295
|
-
}], dragScrollSettings: [{
|
|
7296
|
-
type: Input
|
|
7297
|
-
}], rowExpand: [{
|
|
7298
|
-
type: Output
|
|
7299
|
-
}], taskDblClick: [{
|
|
7300
|
-
type: Output
|
|
7301
|
-
}], cellDblClick: [{
|
|
7302
|
-
type: Output
|
|
7303
|
-
}], cellClose: [{
|
|
7304
|
-
type: Output
|
|
7305
|
-
}], taskDelete: [{
|
|
7306
|
-
type: Output
|
|
7307
|
-
}], rowCollapse: [{
|
|
7308
|
-
type: Output
|
|
7309
|
-
}], remove: [{
|
|
7310
|
-
type: Output
|
|
7311
|
-
}], cancel: [{
|
|
7312
|
-
type: Output
|
|
7313
|
-
}], save: [{
|
|
7314
|
-
type: Output
|
|
7315
|
-
}], taskAdd: [{
|
|
7316
|
-
type: Output
|
|
7317
|
-
}], dependencyAdd: [{
|
|
7318
|
-
type: Output
|
|
7319
|
-
}], sortChange: [{
|
|
7320
|
-
type: Output
|
|
7321
|
-
}], filterChange: [{
|
|
7322
|
-
type: Output
|
|
7323
|
-
}], dataStateChange: [{
|
|
7324
|
-
type: Output
|
|
7325
|
-
}], treeListPaneCollapsedChange: [{
|
|
7326
|
-
type: Output
|
|
7327
|
-
}], timelinePaneCollapsedChange: [{
|
|
7328
|
-
type: Output
|
|
7329
|
-
}], timelinePaneSizeChange: [{
|
|
7330
|
-
type: Output
|
|
7331
|
-
}], activeViewChange: [{
|
|
7332
|
-
type: Output
|
|
7333
|
-
}], columnResize: [{
|
|
7334
|
-
type: Output
|
|
7335
|
-
}], columnReorder: [{
|
|
7336
|
-
type: Output
|
|
7337
|
-
}], columnVisibilityChange: [{
|
|
7338
|
-
type: Output
|
|
7339
|
-
}], columnLockedChange: [{
|
|
7340
|
-
type: Output
|
|
7341
|
-
}], cellClick: [{
|
|
7342
|
-
type: Output
|
|
7343
|
-
}], taskClick: [{
|
|
7344
|
-
type: Output
|
|
7345
|
-
}] } });
|
|
7346
|
-
|
|
7347
|
-
/**
|
|
7348
|
-
* A directive which binds the Gantt to an array of objects by using
|
|
7349
|
-
* an ID and parent ID field to define the hierarchy.
|
|
7350
|
-
*
|
|
7351
|
-
* The directive encapsulates the in-memory handling of data operations such as sorting and filtering.
|
|
7352
|
-
*/
|
|
7353
|
-
class GanttFlatBindingDirective extends FlatBindingDirective {
|
|
7354
|
-
/**
|
|
7355
|
-
* @hidden
|
|
7356
|
-
*/
|
|
7357
|
-
set aggregate(value) {
|
|
7358
|
-
super.aggregate = value;
|
|
7359
|
-
}
|
|
7360
|
-
}
|
|
7361
|
-
GanttFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttFlatBindingDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7362
|
-
GanttFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttFlatBindingDirective, selector: "[kendoGanttFlatBinding]", inputs: { data: ["kendoGanttFlatBinding", "data"] }, exportAs: ["kendoGanttFlatBinding"], usesInheritance: true, ngImport: i0 });
|
|
7363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttFlatBindingDirective, decorators: [{
|
|
7364
|
-
type: Directive,
|
|
7365
|
-
args: [{
|
|
7366
|
-
selector: '[kendoGanttFlatBinding]',
|
|
7367
|
-
exportAs: 'kendoGanttFlatBinding'
|
|
7368
|
-
}]
|
|
7369
|
-
}], propDecorators: { data: [{
|
|
7370
|
-
type: Input,
|
|
7371
|
-
args: ['kendoGanttFlatBinding']
|
|
7372
|
-
}] } });
|
|
7373
|
-
|
|
7374
|
-
/**
|
|
7375
|
-
* A directive which binds the Gantt to a tree of objects,
|
|
7376
|
-
* which encapsulates the in-memory handling of data operations such as sorting and filtering.
|
|
7377
|
-
*/
|
|
7378
|
-
class GanttHierarchyBindingDirective extends HierarchyBindingDirective {
|
|
7379
|
-
/**
|
|
7380
|
-
* @hidden
|
|
7381
|
-
*/
|
|
7382
|
-
set aggregate(value) {
|
|
7383
|
-
super.aggregate = value;
|
|
7384
|
-
}
|
|
7385
|
-
}
|
|
7386
|
-
GanttHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHierarchyBindingDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7387
|
-
GanttHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttHierarchyBindingDirective, selector: "[kendoGanttHierarchyBinding]", inputs: { data: ["kendoGanttHierarchyBinding", "data"] }, exportAs: ["kendoGanttHierarchyBinding"], usesInheritance: true, ngImport: i0 });
|
|
7388
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHierarchyBindingDirective, decorators: [{
|
|
7389
|
-
type: Directive,
|
|
7390
|
-
args: [{
|
|
7391
|
-
selector: '[kendoGanttHierarchyBinding]',
|
|
7392
|
-
exportAs: 'kendoGanttHierarchyBinding'
|
|
7393
|
-
}]
|
|
7394
|
-
}], propDecorators: { data: [{
|
|
7395
|
-
type: Input,
|
|
7396
|
-
args: ['kendoGanttHierarchyBinding']
|
|
7397
|
-
}] } });
|
|
7398
|
-
|
|
7399
|
-
/**
|
|
7400
|
-
* A directive which controls the expanded state of the items.
|
|
7401
|
-
*/
|
|
7402
|
-
class GanttExpandableDirective extends ExpandableDirective {
|
|
7403
|
-
/**
|
|
7404
|
-
* Defines the item key that will be stored in the expandedKeys collection.
|
|
7405
|
-
* Defaults to the task data item ID field,
|
|
7406
|
-
* which is specified in the [`taskModelFields`]({% slug api_gantt_ganttcomponent %}#toc-taskmodelfields) object.
|
|
7407
|
-
*
|
|
7408
|
-
*/
|
|
7409
|
-
set expandBy(value) {
|
|
7410
|
-
super.expandBy = value;
|
|
7411
|
-
}
|
|
7412
|
-
}
|
|
7413
|
-
GanttExpandableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttExpandableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7414
|
-
GanttExpandableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttExpandableDirective, selector: "[kendoGanttExpandable]", inputs: { expandBy: "expandBy" }, exportAs: ["kendoGanttExpandable"], usesInheritance: true, ngImport: i0 });
|
|
7415
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttExpandableDirective, decorators: [{
|
|
7416
|
-
type: Directive,
|
|
7417
|
-
args: [{
|
|
7418
|
-
exportAs: 'kendoGanttExpandable',
|
|
7419
|
-
selector: '[kendoGanttExpandable]'
|
|
7420
|
-
}]
|
|
7421
|
-
}], propDecorators: { expandBy: [{
|
|
7422
|
-
type: Input
|
|
7423
|
-
}] } });
|
|
7424
|
-
|
|
7425
|
-
/**
|
|
7426
|
-
* A directive which handles the [`selectionChange`]({% slug api_gantt_ganttcomponent %}#toc-selectionchange) event of the Gantt
|
|
7427
|
-
* ([see example]({% slug selection_gantt %}#toc-built-in-directive))
|
|
7428
|
-
*/
|
|
7429
|
-
class SelectableDirective {
|
|
7430
|
-
constructor(gantt) {
|
|
7431
|
-
this.gantt = gantt;
|
|
7432
|
-
/**
|
|
7433
|
-
* Fires when the selected keys are changed.
|
|
7434
|
-
*/
|
|
7435
|
-
this.selectedKeysChange = new EventEmitter();
|
|
7436
|
-
this.state = new Set();
|
|
7437
|
-
this.isSelected = this.isSelected.bind(this);
|
|
7438
|
-
this.selectionChange = this.selectionChange.bind(this);
|
|
7439
|
-
this.selectable = true;
|
|
7440
|
-
}
|
|
7441
|
-
/**
|
|
7442
|
-
* @hidden
|
|
7443
|
-
*/
|
|
7444
|
-
set selectable(value) {
|
|
7445
|
-
if (value) {
|
|
7446
|
-
this.gantt.isSelected = this.isSelected;
|
|
7447
|
-
this.subscribeSelection();
|
|
7448
|
-
}
|
|
7449
|
-
else {
|
|
7450
|
-
this.gantt.isSelected = () => false;
|
|
7451
|
-
this.unsubscribeSelection();
|
|
7452
|
-
}
|
|
7453
|
-
this.gantt.selectable = value;
|
|
7454
|
-
this.gantt.updateView();
|
|
7455
|
-
}
|
|
7456
|
-
/**
|
|
7457
|
-
* Sets the selected keys.
|
|
7458
|
-
*/
|
|
7459
|
-
set selectedKeys(value) {
|
|
7460
|
-
if (isPresent(value) && value === this.lastChange) {
|
|
7461
|
-
return;
|
|
7462
|
-
}
|
|
7463
|
-
// prevent multiple items displayed as selected as multiple selection still not supported fully
|
|
7464
|
-
const keys = (value || []).slice(0, 1);
|
|
7465
|
-
this.state = new Set(keys);
|
|
7466
|
-
this.gantt.updateView();
|
|
7467
|
-
}
|
|
7468
|
-
/**
|
|
7469
|
-
* The field name or a function that specifies the data item unique key identifier.
|
|
7470
|
-
* By default, the string field `id` is used.
|
|
7471
|
-
*/
|
|
7472
|
-
set itemKey(value) {
|
|
7473
|
-
if (isString(value)) {
|
|
7474
|
-
this._keyGetter = getter(value);
|
|
7475
|
-
}
|
|
7476
|
-
else {
|
|
7477
|
-
this._keyGetter = value;
|
|
7478
|
-
}
|
|
7479
|
-
}
|
|
7480
|
-
get keyGetter() {
|
|
7481
|
-
return this._keyGetter || this.gantt.idGetter;
|
|
7482
|
-
}
|
|
7483
|
-
ngOnDestroy() {
|
|
7484
|
-
this.unsubscribeSelection();
|
|
7485
|
-
}
|
|
7486
|
-
isSelected(dataItem) {
|
|
7487
|
-
return this.state.has(this.keyGetter(dataItem));
|
|
7488
|
-
}
|
|
7489
|
-
selectionChange({ action, items }) {
|
|
7490
|
-
this.state.clear();
|
|
7491
|
-
if (action === 'select') {
|
|
7492
|
-
items.forEach(item => this.state.add(this.keyGetter(item)));
|
|
7493
|
-
}
|
|
7494
|
-
this.emitSelectedItemsChange();
|
|
7495
|
-
}
|
|
7496
|
-
emitSelectedItemsChange() {
|
|
7497
|
-
this.lastChange = Array.from(this.state);
|
|
7498
|
-
this.selectedKeysChange.emit(this.lastChange);
|
|
7499
|
-
}
|
|
7500
|
-
subscribeSelection() {
|
|
7501
|
-
this.unsubscribeSelection();
|
|
7502
|
-
this.selectionSubscription = this.gantt.selectionChange.subscribe(this.selectionChange);
|
|
7503
|
-
}
|
|
7504
|
-
unsubscribeSelection() {
|
|
7505
|
-
if (this.selectionSubscription) {
|
|
7506
|
-
this.selectionSubscription.unsubscribe();
|
|
7507
|
-
this.selectionSubscription = null;
|
|
7508
|
-
}
|
|
7509
|
-
}
|
|
7510
|
-
}
|
|
7511
|
-
SelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectableDirective, deps: [{ token: GanttComponent }], target: i0.ɵɵFactoryTarget.Directive });
|
|
7512
|
-
SelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: SelectableDirective, selector: "[kendoGanttSelectable]", inputs: { selectable: "selectable", selectedKeys: "selectedKeys", itemKey: "itemKey" }, outputs: { selectedKeysChange: "selectedKeysChange" }, exportAs: ["kendoGanttSelectable"], ngImport: i0 });
|
|
7513
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectableDirective, decorators: [{
|
|
7514
|
-
type: Directive,
|
|
7515
|
-
args: [{
|
|
7516
|
-
exportAs: 'kendoGanttSelectable',
|
|
7517
|
-
selector: '[kendoGanttSelectable]'
|
|
7518
|
-
}]
|
|
7519
|
-
}], ctorParameters: function () { return [{ type: GanttComponent }]; }, propDecorators: { selectable: [{
|
|
7520
|
-
type: Input
|
|
7521
|
-
}], selectedKeys: [{
|
|
7300
|
+
}], rowClass: [{
|
|
7522
7301
|
type: Input
|
|
7523
|
-
}],
|
|
7524
|
-
type:
|
|
7525
|
-
}],
|
|
7302
|
+
}], isExpanded: [{
|
|
7303
|
+
type: Input
|
|
7304
|
+
}], columnsAutoSize: [{
|
|
7305
|
+
type: Input
|
|
7306
|
+
}], currentTimeMarker: [{
|
|
7307
|
+
type: Input
|
|
7308
|
+
}], columnMenu: [{
|
|
7309
|
+
type: Input
|
|
7310
|
+
}], columnsReorderable: [{
|
|
7311
|
+
type: Input
|
|
7312
|
+
}], columnsResizable: [{
|
|
7526
7313
|
type: Input
|
|
7314
|
+
}], dragScrollSettings: [{
|
|
7315
|
+
type: Input
|
|
7316
|
+
}], rowExpand: [{
|
|
7317
|
+
type: Output
|
|
7318
|
+
}], taskDblClick: [{
|
|
7319
|
+
type: Output
|
|
7320
|
+
}], cellDblClick: [{
|
|
7321
|
+
type: Output
|
|
7322
|
+
}], cellClose: [{
|
|
7323
|
+
type: Output
|
|
7324
|
+
}], taskDelete: [{
|
|
7325
|
+
type: Output
|
|
7326
|
+
}], rowCollapse: [{
|
|
7327
|
+
type: Output
|
|
7328
|
+
}], remove: [{
|
|
7329
|
+
type: Output
|
|
7330
|
+
}], cancel: [{
|
|
7331
|
+
type: Output
|
|
7332
|
+
}], save: [{
|
|
7333
|
+
type: Output
|
|
7334
|
+
}], taskAdd: [{
|
|
7335
|
+
type: Output
|
|
7336
|
+
}], dependencyAdd: [{
|
|
7337
|
+
type: Output
|
|
7338
|
+
}], sortChange: [{
|
|
7339
|
+
type: Output
|
|
7340
|
+
}], filterChange: [{
|
|
7341
|
+
type: Output
|
|
7342
|
+
}], dataStateChange: [{
|
|
7343
|
+
type: Output
|
|
7344
|
+
}], treeListPaneCollapsedChange: [{
|
|
7345
|
+
type: Output
|
|
7346
|
+
}], timelinePaneCollapsedChange: [{
|
|
7347
|
+
type: Output
|
|
7348
|
+
}], timelinePaneSizeChange: [{
|
|
7349
|
+
type: Output
|
|
7350
|
+
}], activeViewChange: [{
|
|
7351
|
+
type: Output
|
|
7352
|
+
}], columnResize: [{
|
|
7353
|
+
type: Output
|
|
7354
|
+
}], columnReorder: [{
|
|
7355
|
+
type: Output
|
|
7356
|
+
}], columnVisibilityChange: [{
|
|
7357
|
+
type: Output
|
|
7358
|
+
}], columnLockedChange: [{
|
|
7359
|
+
type: Output
|
|
7360
|
+
}], cellClick: [{
|
|
7361
|
+
type: Output
|
|
7362
|
+
}], taskClick: [{
|
|
7363
|
+
type: Output
|
|
7527
7364
|
}] } });
|
|
7528
7365
|
|
|
7529
7366
|
/**
|
|
@@ -7540,7 +7377,7 @@ class DragValidationTooltipComponent {
|
|
|
7540
7377
|
}
|
|
7541
7378
|
}
|
|
7542
7379
|
DragValidationTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DragValidationTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7543
|
-
DragValidationTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DragValidationTooltipComponent, selector: "ng-component", ngImport: i0, template: `
|
|
7380
|
+
DragValidationTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DragValidationTooltipComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
|
|
7544
7381
|
<div
|
|
7545
7382
|
class="k-tooltip k-gantt-tooltip-validation"
|
|
7546
7383
|
[class.k-gantt-tooltip-valid]="showValidityStatus && isValid"
|
|
@@ -7574,10 +7411,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7574
7411
|
<span class="k-gantt-tooltip-validation-value">{{ toTaskName }}</span>
|
|
7575
7412
|
</div>
|
|
7576
7413
|
</div>
|
|
7577
|
-
|
|
7414
|
+
`,
|
|
7415
|
+
standalone: true
|
|
7578
7416
|
}]
|
|
7579
7417
|
}] });
|
|
7580
7418
|
|
|
7419
|
+
/**
|
|
7420
|
+
* A directive which binds the Gantt to an array of objects by using
|
|
7421
|
+
* an ID and parent ID field to define the hierarchy.
|
|
7422
|
+
*
|
|
7423
|
+
* The directive encapsulates the in-memory handling of data operations such as sorting and filtering.
|
|
7424
|
+
*/
|
|
7425
|
+
class GanttFlatBindingDirective extends FlatBindingDirective {
|
|
7426
|
+
/**
|
|
7427
|
+
* @hidden
|
|
7428
|
+
*/
|
|
7429
|
+
set aggregate(value) {
|
|
7430
|
+
super.aggregate = value;
|
|
7431
|
+
}
|
|
7432
|
+
}
|
|
7433
|
+
GanttFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttFlatBindingDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7434
|
+
GanttFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttFlatBindingDirective, isStandalone: true, selector: "[kendoGanttFlatBinding]", inputs: { data: ["kendoGanttFlatBinding", "data"] }, exportAs: ["kendoGanttFlatBinding"], usesInheritance: true, ngImport: i0 });
|
|
7435
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttFlatBindingDirective, decorators: [{
|
|
7436
|
+
type: Directive,
|
|
7437
|
+
args: [{
|
|
7438
|
+
selector: '[kendoGanttFlatBinding]',
|
|
7439
|
+
exportAs: 'kendoGanttFlatBinding',
|
|
7440
|
+
standalone: true
|
|
7441
|
+
}]
|
|
7442
|
+
}], propDecorators: { data: [{
|
|
7443
|
+
type: Input,
|
|
7444
|
+
args: ['kendoGanttFlatBinding']
|
|
7445
|
+
}] } });
|
|
7446
|
+
|
|
7447
|
+
/**
|
|
7448
|
+
* A directive which binds the Gantt to a tree of objects,
|
|
7449
|
+
* which encapsulates the in-memory handling of data operations such as sorting and filtering.
|
|
7450
|
+
*/
|
|
7451
|
+
class GanttHierarchyBindingDirective extends HierarchyBindingDirective {
|
|
7452
|
+
/**
|
|
7453
|
+
* @hidden
|
|
7454
|
+
*/
|
|
7455
|
+
set aggregate(value) {
|
|
7456
|
+
super.aggregate = value;
|
|
7457
|
+
}
|
|
7458
|
+
}
|
|
7459
|
+
GanttHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHierarchyBindingDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7460
|
+
GanttHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttHierarchyBindingDirective, isStandalone: true, selector: "[kendoGanttHierarchyBinding]", inputs: { data: ["kendoGanttHierarchyBinding", "data"] }, exportAs: ["kendoGanttHierarchyBinding"], usesInheritance: true, ngImport: i0 });
|
|
7461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHierarchyBindingDirective, decorators: [{
|
|
7462
|
+
type: Directive,
|
|
7463
|
+
args: [{
|
|
7464
|
+
selector: '[kendoGanttHierarchyBinding]',
|
|
7465
|
+
exportAs: 'kendoGanttHierarchyBinding',
|
|
7466
|
+
standalone: true
|
|
7467
|
+
}]
|
|
7468
|
+
}], propDecorators: { data: [{
|
|
7469
|
+
type: Input,
|
|
7470
|
+
args: ['kendoGanttHierarchyBinding']
|
|
7471
|
+
}] } });
|
|
7472
|
+
|
|
7473
|
+
/**
|
|
7474
|
+
* A directive which controls the expanded state of the items.
|
|
7475
|
+
*/
|
|
7476
|
+
class GanttExpandableDirective extends ExpandableDirective {
|
|
7477
|
+
/**
|
|
7478
|
+
* Defines the item key that will be stored in the expandedKeys collection.
|
|
7479
|
+
* Defaults to the task data item ID field,
|
|
7480
|
+
* which is specified in the [`taskModelFields`]({% slug api_gantt_ganttcomponent %}#toc-taskmodelfields) object.
|
|
7481
|
+
*
|
|
7482
|
+
*/
|
|
7483
|
+
set expandBy(value) {
|
|
7484
|
+
super.expandBy = value;
|
|
7485
|
+
}
|
|
7486
|
+
}
|
|
7487
|
+
GanttExpandableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttExpandableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7488
|
+
GanttExpandableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttExpandableDirective, isStandalone: true, selector: "[kendoGanttExpandable]", inputs: { expandBy: "expandBy" }, exportAs: ["kendoGanttExpandable"], usesInheritance: true, ngImport: i0 });
|
|
7489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttExpandableDirective, decorators: [{
|
|
7490
|
+
type: Directive,
|
|
7491
|
+
args: [{
|
|
7492
|
+
exportAs: 'kendoGanttExpandable',
|
|
7493
|
+
selector: '[kendoGanttExpandable]',
|
|
7494
|
+
standalone: true
|
|
7495
|
+
}]
|
|
7496
|
+
}], propDecorators: { expandBy: [{
|
|
7497
|
+
type: Input
|
|
7498
|
+
}] } });
|
|
7499
|
+
|
|
7581
7500
|
/**
|
|
7582
7501
|
* When added to the .k-task-dot, the element will be kept with hover styles.
|
|
7583
7502
|
* Used for the drag clue from which the dragging has started.
|
|
@@ -7872,11 +7791,12 @@ class DependencyDragCreateDirective {
|
|
|
7872
7791
|
}
|
|
7873
7792
|
}
|
|
7874
7793
|
DependencyDragCreateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependencyDragCreateDirective, deps: [{ token: GanttComponent }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: MappingService }, { token: i3.PopupService }, { token: TimelineScrollService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
7875
|
-
DependencyDragCreateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DependencyDragCreateDirective, selector: "[kendoGanttDependencyDragCreate]", inputs: { displayValidationTooltip: "displayValidationTooltip" }, ngImport: i0 });
|
|
7794
|
+
DependencyDragCreateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DependencyDragCreateDirective, isStandalone: true, selector: "[kendoGanttDependencyDragCreate]", inputs: { displayValidationTooltip: "displayValidationTooltip" }, ngImport: i0 });
|
|
7876
7795
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependencyDragCreateDirective, decorators: [{
|
|
7877
7796
|
type: Directive,
|
|
7878
7797
|
args: [{
|
|
7879
|
-
selector: '[kendoGanttDependencyDragCreate]'
|
|
7798
|
+
selector: '[kendoGanttDependencyDragCreate]',
|
|
7799
|
+
standalone: true
|
|
7880
7800
|
}]
|
|
7881
7801
|
}], ctorParameters: function () { return [{ type: GanttComponent }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: MappingService }, { type: i3.PopupService }, { type: TimelineScrollService }]; }, propDecorators: { displayValidationTooltip: [{
|
|
7882
7802
|
type: Input
|
|
@@ -7895,7 +7815,7 @@ class TimelineDayViewComponent extends ViewBase {
|
|
|
7895
7815
|
}
|
|
7896
7816
|
}
|
|
7897
7817
|
TimelineDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineDayViewComponent, deps: [{ token: OptionChangesService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7898
|
-
TimelineDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineDayViewComponent, selector: "kendo-gantt-timeline-day-view", providers: [
|
|
7818
|
+
TimelineDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineDayViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-day-view", providers: [
|
|
7899
7819
|
{
|
|
7900
7820
|
provide: ViewBase,
|
|
7901
7821
|
useExisting: forwardRef(() => TimelineDayViewComponent)
|
|
@@ -7911,7 +7831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7911
7831
|
provide: ViewBase,
|
|
7912
7832
|
useExisting: forwardRef(() => TimelineDayViewComponent)
|
|
7913
7833
|
}
|
|
7914
|
-
]
|
|
7834
|
+
],
|
|
7835
|
+
standalone: true
|
|
7915
7836
|
}]
|
|
7916
7837
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
7917
7838
|
|
|
@@ -7928,7 +7849,7 @@ class TimelineWeekViewComponent extends ViewBase {
|
|
|
7928
7849
|
}
|
|
7929
7850
|
}
|
|
7930
7851
|
TimelineWeekViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineWeekViewComponent, deps: [{ token: OptionChangesService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7931
|
-
TimelineWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineWeekViewComponent, selector: "kendo-gantt-timeline-week-view", providers: [
|
|
7852
|
+
TimelineWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineWeekViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-week-view", providers: [
|
|
7932
7853
|
{
|
|
7933
7854
|
provide: ViewBase,
|
|
7934
7855
|
useExisting: forwardRef(() => TimelineWeekViewComponent)
|
|
@@ -7944,7 +7865,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7944
7865
|
provide: ViewBase,
|
|
7945
7866
|
useExisting: forwardRef(() => TimelineWeekViewComponent)
|
|
7946
7867
|
}
|
|
7947
|
-
]
|
|
7868
|
+
],
|
|
7869
|
+
standalone: true
|
|
7948
7870
|
}]
|
|
7949
7871
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
7950
7872
|
|
|
@@ -7961,7 +7883,7 @@ class TimelineMonthViewComponent extends ViewBase {
|
|
|
7961
7883
|
}
|
|
7962
7884
|
}
|
|
7963
7885
|
TimelineMonthViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineMonthViewComponent, deps: [{ token: OptionChangesService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7964
|
-
TimelineMonthViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineMonthViewComponent, selector: "kendo-gantt-timeline-month-view", providers: [
|
|
7886
|
+
TimelineMonthViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineMonthViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-month-view", providers: [
|
|
7965
7887
|
{
|
|
7966
7888
|
provide: ViewBase,
|
|
7967
7889
|
useExisting: forwardRef(() => TimelineMonthViewComponent)
|
|
@@ -7977,7 +7899,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7977
7899
|
provide: ViewBase,
|
|
7978
7900
|
useExisting: forwardRef(() => TimelineMonthViewComponent)
|
|
7979
7901
|
}
|
|
7980
|
-
]
|
|
7902
|
+
],
|
|
7903
|
+
standalone: true
|
|
7981
7904
|
}]
|
|
7982
7905
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
7983
7906
|
|
|
@@ -7994,7 +7917,7 @@ class TimelineYearViewComponent extends ViewBase {
|
|
|
7994
7917
|
}
|
|
7995
7918
|
}
|
|
7996
7919
|
TimelineYearViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineYearViewComponent, deps: [{ token: OptionChangesService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7997
|
-
TimelineYearViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineYearViewComponent, selector: "kendo-gantt-timeline-year-view", providers: [
|
|
7920
|
+
TimelineYearViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineYearViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-year-view", providers: [
|
|
7998
7921
|
{
|
|
7999
7922
|
provide: ViewBase,
|
|
8000
7923
|
useExisting: forwardRef(() => TimelineYearViewComponent)
|
|
@@ -8010,10 +7933,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8010
7933
|
provide: ViewBase,
|
|
8011
7934
|
useExisting: forwardRef(() => TimelineYearViewComponent)
|
|
8012
7935
|
}
|
|
8013
|
-
]
|
|
7936
|
+
],
|
|
7937
|
+
standalone: true
|
|
8014
7938
|
}]
|
|
8015
7939
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
8016
7940
|
|
|
7941
|
+
/**
|
|
7942
|
+
* A directive which handles the [`selectionChange`]({% slug api_gantt_ganttcomponent %}#toc-selectionchange) event of the Gantt
|
|
7943
|
+
* ([see example]({% slug selection_gantt %}#toc-built-in-directive))
|
|
7944
|
+
*/
|
|
7945
|
+
class SelectableDirective {
|
|
7946
|
+
constructor(gantt) {
|
|
7947
|
+
this.gantt = gantt;
|
|
7948
|
+
/**
|
|
7949
|
+
* Fires when the selected keys are changed.
|
|
7950
|
+
*/
|
|
7951
|
+
this.selectedKeysChange = new EventEmitter();
|
|
7952
|
+
this.state = new Set();
|
|
7953
|
+
this.isSelected = this.isSelected.bind(this);
|
|
7954
|
+
this.selectionChange = this.selectionChange.bind(this);
|
|
7955
|
+
this.selectable = true;
|
|
7956
|
+
}
|
|
7957
|
+
/**
|
|
7958
|
+
* @hidden
|
|
7959
|
+
*/
|
|
7960
|
+
set selectable(value) {
|
|
7961
|
+
if (value) {
|
|
7962
|
+
this.gantt.isSelected = this.isSelected;
|
|
7963
|
+
this.subscribeSelection();
|
|
7964
|
+
}
|
|
7965
|
+
else {
|
|
7966
|
+
this.gantt.isSelected = () => false;
|
|
7967
|
+
this.unsubscribeSelection();
|
|
7968
|
+
}
|
|
7969
|
+
this.gantt.selectable = value;
|
|
7970
|
+
this.gantt.updateView();
|
|
7971
|
+
}
|
|
7972
|
+
/**
|
|
7973
|
+
* Sets the selected keys.
|
|
7974
|
+
*/
|
|
7975
|
+
set selectedKeys(value) {
|
|
7976
|
+
if (isPresent(value) && value === this.lastChange) {
|
|
7977
|
+
return;
|
|
7978
|
+
}
|
|
7979
|
+
// prevent multiple items displayed as selected as multiple selection still not supported fully
|
|
7980
|
+
const keys = (value || []).slice(0, 1);
|
|
7981
|
+
this.state = new Set(keys);
|
|
7982
|
+
this.gantt.updateView();
|
|
7983
|
+
}
|
|
7984
|
+
/**
|
|
7985
|
+
* The field name or a function that specifies the data item unique key identifier.
|
|
7986
|
+
* By default, the string field `id` is used.
|
|
7987
|
+
*/
|
|
7988
|
+
set itemKey(value) {
|
|
7989
|
+
if (isString(value)) {
|
|
7990
|
+
this._keyGetter = getter(value);
|
|
7991
|
+
}
|
|
7992
|
+
else {
|
|
7993
|
+
this._keyGetter = value;
|
|
7994
|
+
}
|
|
7995
|
+
}
|
|
7996
|
+
get keyGetter() {
|
|
7997
|
+
return this._keyGetter || this.gantt.idGetter;
|
|
7998
|
+
}
|
|
7999
|
+
ngOnDestroy() {
|
|
8000
|
+
this.unsubscribeSelection();
|
|
8001
|
+
}
|
|
8002
|
+
isSelected(dataItem) {
|
|
8003
|
+
return this.state.has(this.keyGetter(dataItem));
|
|
8004
|
+
}
|
|
8005
|
+
selectionChange({ action, items }) {
|
|
8006
|
+
this.state.clear();
|
|
8007
|
+
if (action === 'select') {
|
|
8008
|
+
items.forEach(item => this.state.add(this.keyGetter(item)));
|
|
8009
|
+
}
|
|
8010
|
+
this.emitSelectedItemsChange();
|
|
8011
|
+
}
|
|
8012
|
+
emitSelectedItemsChange() {
|
|
8013
|
+
this.lastChange = Array.from(this.state);
|
|
8014
|
+
this.selectedKeysChange.emit(this.lastChange);
|
|
8015
|
+
}
|
|
8016
|
+
subscribeSelection() {
|
|
8017
|
+
this.unsubscribeSelection();
|
|
8018
|
+
this.selectionSubscription = this.gantt.selectionChange.subscribe(this.selectionChange);
|
|
8019
|
+
}
|
|
8020
|
+
unsubscribeSelection() {
|
|
8021
|
+
if (this.selectionSubscription) {
|
|
8022
|
+
this.selectionSubscription.unsubscribe();
|
|
8023
|
+
this.selectionSubscription = null;
|
|
8024
|
+
}
|
|
8025
|
+
}
|
|
8026
|
+
}
|
|
8027
|
+
SelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectableDirective, deps: [{ token: GanttComponent }], target: i0.ɵɵFactoryTarget.Directive });
|
|
8028
|
+
SelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: SelectableDirective, isStandalone: true, selector: "[kendoGanttSelectable]", inputs: { selectable: "selectable", selectedKeys: "selectedKeys", itemKey: "itemKey" }, outputs: { selectedKeysChange: "selectedKeysChange" }, exportAs: ["kendoGanttSelectable"], ngImport: i0 });
|
|
8029
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectableDirective, decorators: [{
|
|
8030
|
+
type: Directive,
|
|
8031
|
+
args: [{
|
|
8032
|
+
exportAs: 'kendoGanttSelectable',
|
|
8033
|
+
selector: '[kendoGanttSelectable]',
|
|
8034
|
+
standalone: true
|
|
8035
|
+
}]
|
|
8036
|
+
}], ctorParameters: function () { return [{ type: GanttComponent }]; }, propDecorators: { selectable: [{
|
|
8037
|
+
type: Input
|
|
8038
|
+
}], selectedKeys: [{
|
|
8039
|
+
type: Input
|
|
8040
|
+
}], selectedKeysChange: [{
|
|
8041
|
+
type: Output
|
|
8042
|
+
}], itemKey: [{
|
|
8043
|
+
type: Input
|
|
8044
|
+
}] } });
|
|
8045
|
+
|
|
8017
8046
|
/**
|
|
8018
8047
|
* Custom component messages override default component messages
|
|
8019
8048
|
* ([see example](slug:globalization_treelist#toc-custom-messages)).
|
|
@@ -8028,7 +8057,7 @@ class CustomMessagesComponent extends Messages {
|
|
|
8028
8057
|
}
|
|
8029
8058
|
}
|
|
8030
8059
|
CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8031
|
-
CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomMessagesComponent, selector: "kendo-gantt-messages", providers: [
|
|
8060
|
+
CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomMessagesComponent, isStandalone: true, selector: "kendo-gantt-messages", providers: [
|
|
8032
8061
|
{
|
|
8033
8062
|
provide: Messages,
|
|
8034
8063
|
useExisting: forwardRef(() => CustomMessagesComponent)
|
|
@@ -8044,74 +8073,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8044
8073
|
}
|
|
8045
8074
|
],
|
|
8046
8075
|
selector: 'kendo-gantt-messages',
|
|
8047
|
-
template:
|
|
8076
|
+
template: ``,
|
|
8077
|
+
standalone: true
|
|
8048
8078
|
}]
|
|
8049
8079
|
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
|
|
8050
8080
|
|
|
8051
|
-
|
|
8052
|
-
|
|
8053
|
-
|
|
8054
|
-
|
|
8055
|
-
InputsModule,
|
|
8056
|
-
DateInputsModule,
|
|
8057
|
-
ButtonsModule,
|
|
8058
|
-
SplitterModule,
|
|
8059
|
-
TreeListModule,
|
|
8060
|
-
ButtonsModule,
|
|
8061
|
-
DialogModule,
|
|
8062
|
-
EventsModule,
|
|
8063
|
-
PopupModule,
|
|
8064
|
-
DraggableModule,
|
|
8065
|
-
TabStripModule,
|
|
8066
|
-
GridModule,
|
|
8067
|
-
DropDownsModule,
|
|
8068
|
-
IconsModule,
|
|
8069
|
-
IntlModule,
|
|
8070
|
-
WatermarkModule
|
|
8071
|
-
];
|
|
8072
|
-
const DECLARATIONS = [
|
|
8081
|
+
/**
|
|
8082
|
+
* Utility array that contains all `@progress/kendo-angular-gantt` related components and directives
|
|
8083
|
+
*/
|
|
8084
|
+
const KENDO_GANTT = [
|
|
8073
8085
|
GanttComponent,
|
|
8074
8086
|
GanttFlatBindingDirective,
|
|
8075
8087
|
GanttHierarchyBindingDirective,
|
|
8076
|
-
GanttTaskComponent,
|
|
8077
|
-
GanttSummaryTaskComponent,
|
|
8078
|
-
GanttMilestoneTaskComponent,
|
|
8079
|
-
GanttTimelineComponent,
|
|
8080
|
-
GanttTasksTableBodyComponent,
|
|
8081
|
-
GanttHeaderTableBodyComponent,
|
|
8082
8088
|
GanttTaskContentTemplateDirective,
|
|
8083
8089
|
GanttTaskTemplateDirective,
|
|
8084
8090
|
GanttSummaryTaskTemplateDirective,
|
|
8085
8091
|
ToolbarTemplateDirective,
|
|
8086
|
-
ToolbarComponent,
|
|
8087
8092
|
ViewSelectorComponent,
|
|
8088
8093
|
GanttColumnComponent,
|
|
8089
8094
|
GanttColumnGroupComponent,
|
|
8090
8095
|
GanttSpanColumnComponent,
|
|
8091
|
-
FilterMenuTemplateDirective,
|
|
8092
8096
|
FilterCellTemplateDirective,
|
|
8097
|
+
FilterMenuTemplateDirective,
|
|
8093
8098
|
CellTemplateDirective,
|
|
8094
8099
|
EditTemplateDirective,
|
|
8095
8100
|
ColumnMenuTemplateDirective,
|
|
8096
8101
|
HeaderTemplateDirective,
|
|
8097
8102
|
FooterTemplateDirective,
|
|
8098
8103
|
GanttExpandableDirective,
|
|
8099
|
-
GanttDependencyDirective,
|
|
8100
8104
|
DependencyDragCreateDirective,
|
|
8101
8105
|
TimelineDayViewComponent,
|
|
8102
8106
|
TimelineWeekViewComponent,
|
|
8103
8107
|
TimelineMonthViewComponent,
|
|
8104
8108
|
TimelineYearViewComponent,
|
|
8105
8109
|
SelectableDirective,
|
|
8106
|
-
EditDialogComponent,
|
|
8107
8110
|
CustomMessagesComponent,
|
|
8108
|
-
|
|
8109
|
-
GanttAddTaskComponent,
|
|
8110
|
-
DragValidationTooltipComponent,
|
|
8111
|
-
TimelineScrollableDirective,
|
|
8112
|
-
DependenciesTableComponent,
|
|
8113
|
-
TaskFieldsComponent
|
|
8111
|
+
GanttAddTaskComponent
|
|
8114
8112
|
];
|
|
8113
|
+
|
|
8114
|
+
// IMPORTANT: NgModule export kept for backwards compatibility
|
|
8115
8115
|
/**
|
|
8116
8116
|
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
8117
8117
|
* definition for the Gantt component.
|
|
@@ -8146,126 +8146,71 @@ const DECLARATIONS = [
|
|
|
8146
8146
|
class GanttModule {
|
|
8147
8147
|
}
|
|
8148
8148
|
GanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8149
|
-
GanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: GanttModule,
|
|
8150
|
-
GanttFlatBindingDirective,
|
|
8151
|
-
GanttHierarchyBindingDirective,
|
|
8152
|
-
GanttTaskComponent,
|
|
8153
|
-
GanttSummaryTaskComponent,
|
|
8154
|
-
GanttMilestoneTaskComponent,
|
|
8155
|
-
GanttTimelineComponent,
|
|
8156
|
-
GanttTasksTableBodyComponent,
|
|
8157
|
-
GanttHeaderTableBodyComponent,
|
|
8158
|
-
GanttTaskContentTemplateDirective,
|
|
8159
|
-
GanttTaskTemplateDirective,
|
|
8160
|
-
GanttSummaryTaskTemplateDirective,
|
|
8161
|
-
ToolbarTemplateDirective,
|
|
8162
|
-
ToolbarComponent,
|
|
8163
|
-
ViewSelectorComponent,
|
|
8164
|
-
GanttColumnComponent,
|
|
8165
|
-
GanttColumnGroupComponent,
|
|
8166
|
-
GanttSpanColumnComponent,
|
|
8167
|
-
FilterMenuTemplateDirective,
|
|
8168
|
-
FilterCellTemplateDirective,
|
|
8169
|
-
CellTemplateDirective,
|
|
8170
|
-
EditTemplateDirective,
|
|
8171
|
-
ColumnMenuTemplateDirective,
|
|
8172
|
-
HeaderTemplateDirective,
|
|
8173
|
-
FooterTemplateDirective,
|
|
8174
|
-
GanttExpandableDirective,
|
|
8175
|
-
GanttDependencyDirective,
|
|
8176
|
-
DependencyDragCreateDirective,
|
|
8177
|
-
TimelineDayViewComponent,
|
|
8178
|
-
TimelineWeekViewComponent,
|
|
8179
|
-
TimelineMonthViewComponent,
|
|
8180
|
-
TimelineYearViewComponent,
|
|
8181
|
-
SelectableDirective,
|
|
8182
|
-
EditDialogComponent,
|
|
8183
|
-
CustomMessagesComponent,
|
|
8184
|
-
LocalizedMessagesDirective,
|
|
8185
|
-
GanttAddTaskComponent,
|
|
8186
|
-
DragValidationTooltipComponent,
|
|
8187
|
-
TimelineScrollableDirective,
|
|
8188
|
-
DependenciesTableComponent,
|
|
8189
|
-
TaskFieldsComponent], imports: [CommonModule,
|
|
8190
|
-
ReactiveFormsModule,
|
|
8191
|
-
LabelModule,
|
|
8192
|
-
InputsModule,
|
|
8193
|
-
DateInputsModule,
|
|
8194
|
-
ButtonsModule,
|
|
8195
|
-
SplitterModule,
|
|
8196
|
-
TreeListModule,
|
|
8197
|
-
ButtonsModule,
|
|
8198
|
-
DialogModule,
|
|
8199
|
-
EventsModule,
|
|
8200
|
-
PopupModule,
|
|
8201
|
-
DraggableModule,
|
|
8202
|
-
TabStripModule,
|
|
8203
|
-
GridModule,
|
|
8204
|
-
DropDownsModule,
|
|
8205
|
-
IconsModule,
|
|
8206
|
-
IntlModule,
|
|
8207
|
-
WatermarkModule], exports: [GanttComponent,
|
|
8208
|
-
GanttFlatBindingDirective,
|
|
8209
|
-
GanttHierarchyBindingDirective,
|
|
8210
|
-
GanttTaskComponent,
|
|
8211
|
-
GanttSummaryTaskComponent,
|
|
8212
|
-
GanttMilestoneTaskComponent,
|
|
8213
|
-
GanttTimelineComponent,
|
|
8214
|
-
GanttTasksTableBodyComponent,
|
|
8215
|
-
GanttHeaderTableBodyComponent,
|
|
8216
|
-
GanttTaskContentTemplateDirective,
|
|
8217
|
-
GanttTaskTemplateDirective,
|
|
8218
|
-
GanttSummaryTaskTemplateDirective,
|
|
8219
|
-
ToolbarTemplateDirective,
|
|
8220
|
-
ToolbarComponent,
|
|
8221
|
-
ViewSelectorComponent,
|
|
8222
|
-
GanttColumnComponent,
|
|
8223
|
-
GanttColumnGroupComponent,
|
|
8224
|
-
GanttSpanColumnComponent,
|
|
8225
|
-
FilterMenuTemplateDirective,
|
|
8226
|
-
FilterCellTemplateDirective,
|
|
8227
|
-
CellTemplateDirective,
|
|
8228
|
-
EditTemplateDirective,
|
|
8229
|
-
ColumnMenuTemplateDirective,
|
|
8230
|
-
HeaderTemplateDirective,
|
|
8231
|
-
FooterTemplateDirective,
|
|
8232
|
-
GanttExpandableDirective,
|
|
8233
|
-
GanttDependencyDirective,
|
|
8234
|
-
DependencyDragCreateDirective,
|
|
8235
|
-
TimelineDayViewComponent,
|
|
8236
|
-
TimelineWeekViewComponent,
|
|
8237
|
-
TimelineMonthViewComponent,
|
|
8238
|
-
TimelineYearViewComponent,
|
|
8239
|
-
SelectableDirective,
|
|
8240
|
-
EditDialogComponent,
|
|
8241
|
-
CustomMessagesComponent,
|
|
8242
|
-
LocalizedMessagesDirective,
|
|
8243
|
-
GanttAddTaskComponent,
|
|
8244
|
-
DragValidationTooltipComponent,
|
|
8245
|
-
TimelineScrollableDirective,
|
|
8246
|
-
DependenciesTableComponent,
|
|
8247
|
-
TaskFieldsComponent] });
|
|
8149
|
+
GanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: GanttModule, imports: [GanttComponent, GanttFlatBindingDirective, GanttHierarchyBindingDirective, GanttTaskContentTemplateDirective, GanttTaskTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, ViewSelectorComponent, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, FilterCellTemplateDirective, FilterMenuTemplateDirective, CellTemplateDirective, EditTemplateDirective, ColumnMenuTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, GanttExpandableDirective, DependencyDragCreateDirective, TimelineDayViewComponent, TimelineWeekViewComponent, TimelineMonthViewComponent, TimelineYearViewComponent, SelectableDirective, CustomMessagesComponent, GanttAddTaskComponent], exports: [GanttComponent, GanttFlatBindingDirective, GanttHierarchyBindingDirective, GanttTaskContentTemplateDirective, GanttTaskTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, ViewSelectorComponent, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, FilterCellTemplateDirective, FilterMenuTemplateDirective, CellTemplateDirective, EditTemplateDirective, ColumnMenuTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, GanttExpandableDirective, DependencyDragCreateDirective, TimelineDayViewComponent, TimelineWeekViewComponent, TimelineMonthViewComponent, TimelineYearViewComponent, SelectableDirective, CustomMessagesComponent, GanttAddTaskComponent] });
|
|
8248
8150
|
GanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttModule, providers: [{
|
|
8249
8151
|
provide: L10N_PREFIX,
|
|
8250
8152
|
useValue: 'kendo.gantt'
|
|
8251
|
-
},
|
|
8252
|
-
|
|
8253
|
-
|
|
8254
|
-
|
|
8153
|
+
},
|
|
8154
|
+
// InputsModule providers
|
|
8155
|
+
IconsService,
|
|
8156
|
+
PopupService,
|
|
8157
|
+
ResizeBatchService,
|
|
8158
|
+
DialogContainerService,
|
|
8159
|
+
DialogService,
|
|
8160
|
+
WindowService,
|
|
8161
|
+
WindowContainerService,
|
|
8162
|
+
// DateInputsModule providers
|
|
8163
|
+
CalendarDOMService,
|
|
8164
|
+
CenturyViewService,
|
|
8165
|
+
DecadeViewService,
|
|
8166
|
+
MonthViewService,
|
|
8167
|
+
YearViewService,
|
|
8168
|
+
WeekNamesService,
|
|
8169
|
+
NavigationService$1,
|
|
8170
|
+
TimePickerDOMService,
|
|
8171
|
+
HoursService,
|
|
8172
|
+
MinutesService,
|
|
8173
|
+
SecondsService,
|
|
8174
|
+
MillisecondsService,
|
|
8175
|
+
DayPeriodService,
|
|
8176
|
+
// TreeListModule providers
|
|
8177
|
+
ColumnResizingService
|
|
8178
|
+
], imports: [GanttComponent, ViewSelectorComponent, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, TimelineDayViewComponent, TimelineWeekViewComponent, TimelineMonthViewComponent, TimelineYearViewComponent, CustomMessagesComponent, GanttAddTaskComponent] });
|
|
8255
8179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttModule, decorators: [{
|
|
8256
8180
|
type: NgModule,
|
|
8257
8181
|
args: [{
|
|
8258
|
-
imports: [...
|
|
8259
|
-
|
|
8260
|
-
exports: [...DECLARATIONS],
|
|
8182
|
+
imports: [...KENDO_GANTT],
|
|
8183
|
+
exports: [...KENDO_GANTT],
|
|
8261
8184
|
entryComponents: [DragValidationTooltipComponent],
|
|
8262
8185
|
providers: [{
|
|
8263
8186
|
provide: L10N_PREFIX,
|
|
8264
8187
|
useValue: 'kendo.gantt'
|
|
8265
|
-
},
|
|
8266
|
-
|
|
8267
|
-
|
|
8268
|
-
|
|
8188
|
+
},
|
|
8189
|
+
// InputsModule providers
|
|
8190
|
+
IconsService,
|
|
8191
|
+
PopupService,
|
|
8192
|
+
ResizeBatchService,
|
|
8193
|
+
DialogContainerService,
|
|
8194
|
+
DialogService,
|
|
8195
|
+
WindowService,
|
|
8196
|
+
WindowContainerService,
|
|
8197
|
+
// DateInputsModule providers
|
|
8198
|
+
CalendarDOMService,
|
|
8199
|
+
CenturyViewService,
|
|
8200
|
+
DecadeViewService,
|
|
8201
|
+
MonthViewService,
|
|
8202
|
+
YearViewService,
|
|
8203
|
+
WeekNamesService,
|
|
8204
|
+
NavigationService$1,
|
|
8205
|
+
TimePickerDOMService,
|
|
8206
|
+
HoursService,
|
|
8207
|
+
MinutesService,
|
|
8208
|
+
SecondsService,
|
|
8209
|
+
MillisecondsService,
|
|
8210
|
+
DayPeriodService,
|
|
8211
|
+
// TreeListModule providers
|
|
8212
|
+
ColumnResizingService
|
|
8213
|
+
]
|
|
8269
8214
|
}]
|
|
8270
8215
|
}] });
|
|
8271
8216
|
|
|
@@ -8273,5 +8218,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8273
8218
|
* Generated bundle index. Do not edit.
|
|
8274
8219
|
*/
|
|
8275
8220
|
|
|
8276
|
-
export { CellCloseEvent, CellTemplateDirective, ColumnMenuTemplateDirective, CustomMessagesComponent, DependenciesTableComponent, DependencyDragCreateDirective, DependencyType, DragValidationTooltipComponent, EditDialogComponent, EditTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, FooterTemplateDirective, GanttAddTaskComponent, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttComponent, GanttDependencyDirective, GanttExpandableDirective, GanttFlatBindingDirective, GanttHeaderTableBodyComponent, GanttHierarchyBindingDirective, GanttMilestoneTaskComponent, GanttModule, GanttSpanColumnComponent, GanttSummaryTaskComponent, GanttSummaryTaskTemplateDirective, GanttTaskComponent, GanttTaskContentTemplateDirective, GanttTaskTemplateDirective, GanttTasksTableBodyComponent, GanttTimelineComponent, HeaderTemplateDirective, LocalizedMessagesDirective, SelectableDirective, TaskFieldsComponent, TimelineDayViewComponent, TimelineMonthViewComponent, TimelineScrollableDirective, TimelineWeekViewComponent, TimelineYearViewComponent, ToolbarComponent, ToolbarTemplateDirective, ViewSelectorComponent };
|
|
8221
|
+
export { CellCloseEvent, CellTemplateDirective, ColumnMenuTemplateDirective, CustomMessagesComponent, DependenciesTableComponent, DependencyDragCreateDirective, DependencyType, DragValidationTooltipComponent, EditDialogComponent, EditTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, FooterTemplateDirective, GanttAddTaskComponent, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttComponent, GanttDependencyDirective, GanttExpandableDirective, GanttFlatBindingDirective, GanttHeaderTableBodyComponent, GanttHierarchyBindingDirective, GanttMilestoneTaskComponent, GanttModule, GanttSpanColumnComponent, GanttSummaryTaskComponent, GanttSummaryTaskTemplateDirective, GanttTaskComponent, GanttTaskContentTemplateDirective, GanttTaskTemplateDirective, GanttTasksTableBodyComponent, GanttTimelineComponent, HeaderTemplateDirective, KENDO_GANTT, LocalizedMessagesDirective, SelectableDirective, TaskFieldsComponent, TimelineDayViewComponent, TimelineMonthViewComponent, TimelineScrollableDirective, TimelineWeekViewComponent, TimelineYearViewComponent, ToolbarComponent, ToolbarTemplateDirective, ViewSelectorComponent };
|
|
8277
8222
|
|