@progress/kendo-angular-gantt 16.5.0 → 16.6.0-develop.2
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/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 +14 -15
- package/esm2020/gantt.module.mjs +90 -214
- 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 +6 -4
- package/esm2020/rendering/gantt-summary-task.component.mjs +6 -4
- package/esm2020/rendering/gantt-task.component.mjs +8 -6
- 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 +1803 -1840
- package/fesm2020/progress-kendo-angular-gantt.mjs +1950 -1987
- 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 +1 -1
- package/rendering/gantt-summary-task.component.d.ts +1 -1
- package/rendering/gantt-task.component.d.ts +1 -1
- 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
|
@@ -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, InjectionToken, Inject, LOCALE_ID, EventEmitter,
|
|
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, InjectionToken, 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: 1721847330,
|
|
44
|
+
version: '16.6.0-develop.2',
|
|
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,82 +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
|
-
|
|
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
|
+
}] } });
|
|
736
836
|
|
|
737
837
|
/**
|
|
738
838
|
* @hidden
|
|
@@ -1227,6 +1327,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1227
1327
|
type: Injectable
|
|
1228
1328
|
}] });
|
|
1229
1329
|
|
|
1330
|
+
/**
|
|
1331
|
+
* @hidden
|
|
1332
|
+
*/
|
|
1333
|
+
class ScrollSyncService {
|
|
1334
|
+
constructor(ngZone) {
|
|
1335
|
+
this.ngZone = ngZone;
|
|
1336
|
+
this.changes = new Subject();
|
|
1337
|
+
this.elements = [];
|
|
1338
|
+
this.subscriptions = new Subscription();
|
|
1339
|
+
this.subscriptions.add(this.changes.subscribe(args => {
|
|
1340
|
+
this.scroll(args);
|
|
1341
|
+
}));
|
|
1342
|
+
}
|
|
1343
|
+
registerElement(el, sourceType) {
|
|
1344
|
+
this.elements.push({ element: el, sourceType });
|
|
1345
|
+
if (sourceType === "timeline" || sourceType === "treelist") {
|
|
1346
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1347
|
+
const obs = fromEvent(el, 'scroll').pipe(map(({ target: { scrollTop, scrollLeft } }) => ({
|
|
1348
|
+
scrollTop,
|
|
1349
|
+
scrollLeft,
|
|
1350
|
+
sourceType
|
|
1351
|
+
})));
|
|
1352
|
+
const comparisonFn = sourceType === 'timeline' ?
|
|
1353
|
+
(x, y) => (x.scrollTop === y.scrollTop) && (x.scrollLeft === y.scrollLeft) :
|
|
1354
|
+
(x, y) => (x.scrollTop === y.scrollTop);
|
|
1355
|
+
this.subscriptions.add(obs.pipe(distinctUntilChanged(comparisonFn))
|
|
1356
|
+
.subscribe((event) => this.changes.next(event)));
|
|
1357
|
+
});
|
|
1358
|
+
}
|
|
1359
|
+
}
|
|
1360
|
+
ngOnDestroy() {
|
|
1361
|
+
this.subscriptions.unsubscribe();
|
|
1362
|
+
this.elements = null;
|
|
1363
|
+
}
|
|
1364
|
+
syncScrollTop(sourceType, targetType) {
|
|
1365
|
+
const source = this.elements.find(element => element.sourceType === sourceType);
|
|
1366
|
+
const target = this.elements.find(element => element.sourceType === targetType);
|
|
1367
|
+
// Need to wait for the splitter pane's content to be rendered
|
|
1368
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => target.element.scrollTop = source.element.scrollTop);
|
|
1369
|
+
}
|
|
1370
|
+
resetTimelineScrollLeft() {
|
|
1371
|
+
const source = this.elements.find(element => element.sourceType === 'timeline');
|
|
1372
|
+
source.element.scrollLeft = 0;
|
|
1373
|
+
}
|
|
1374
|
+
scroll({ scrollTop, scrollLeft, sourceType }) {
|
|
1375
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1376
|
+
if (sourceType === 'timeline') {
|
|
1377
|
+
const header = this.elements.find(element => element.sourceType === 'header').element;
|
|
1378
|
+
header.scrollLeft = scrollLeft;
|
|
1379
|
+
if (!this.syncingTimeline) {
|
|
1380
|
+
this.syncingTreeList = true;
|
|
1381
|
+
const treelist = this.elements.find(element => element.sourceType === 'treelist').element;
|
|
1382
|
+
treelist.scrollTop = scrollTop;
|
|
1383
|
+
}
|
|
1384
|
+
this.syncingTimeline = false;
|
|
1385
|
+
}
|
|
1386
|
+
if (sourceType === 'treelist') {
|
|
1387
|
+
if (!this.syncingTreeList) {
|
|
1388
|
+
this.syncingTimeline = true;
|
|
1389
|
+
const timeline = this.elements.find(element => element.sourceType === 'timeline').element;
|
|
1390
|
+
timeline.scrollTop = scrollTop;
|
|
1391
|
+
}
|
|
1392
|
+
this.syncingTreeList = false;
|
|
1393
|
+
}
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
ScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollSyncService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1398
|
+
ScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollSyncService });
|
|
1399
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollSyncService, decorators: [{
|
|
1400
|
+
type: Injectable
|
|
1401
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
1402
|
+
|
|
1230
1403
|
/**
|
|
1231
1404
|
* @hidden
|
|
1232
1405
|
*/
|
|
@@ -1760,7 +1933,7 @@ class GanttTaskComponent extends GanttTaskBase {
|
|
|
1760
1933
|
}
|
|
1761
1934
|
}
|
|
1762
1935
|
GanttTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskComponent, deps: [{ token: EditService }, { token: TOUCH_ENABLED }, { token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
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: [
|
|
1936
|
+
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
1937
|
{
|
|
1765
1938
|
provide: GanttTaskBase,
|
|
1766
1939
|
useExisting: forwardRef(() => GanttTaskComponent)
|
|
@@ -1836,7 +2009,7 @@ GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
1836
2009
|
>
|
|
1837
2010
|
</div>
|
|
1838
2011
|
</ng-container>
|
|
1839
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2012
|
+
`, 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
2013
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskComponent, decorators: [{
|
|
1841
2014
|
type: Component,
|
|
1842
2015
|
args: [{
|
|
@@ -1918,7 +2091,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1918
2091
|
>
|
|
1919
2092
|
</div>
|
|
1920
2093
|
</ng-container>
|
|
1921
|
-
|
|
2094
|
+
`,
|
|
2095
|
+
standalone: true,
|
|
2096
|
+
imports: [NgClass, NgIf, NgTemplateOutlet, EventsOutsideAngularDirective, IconWrapperComponent]
|
|
1922
2097
|
}]
|
|
1923
2098
|
}], ctorParameters: function () {
|
|
1924
2099
|
return [{ type: EditService }, { type: undefined, decorators: [{
|
|
@@ -1948,7 +2123,7 @@ class GanttSummaryTaskComponent extends GanttTaskBase {
|
|
|
1948
2123
|
}
|
|
1949
2124
|
}
|
|
1950
2125
|
GanttSummaryTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: TOUCH_ENABLED }, { token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
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: [
|
|
2126
|
+
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
2127
|
{
|
|
1953
2128
|
provide: GanttTaskBase,
|
|
1954
2129
|
useExisting: forwardRef(() => GanttSummaryTaskComponent)
|
|
@@ -1997,7 +2172,7 @@ GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
1997
2172
|
>
|
|
1998
2173
|
</div>
|
|
1999
2174
|
</ng-container>
|
|
2000
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2175
|
+
`, 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
2176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
|
|
2002
2177
|
type: Component,
|
|
2003
2178
|
args: [{
|
|
@@ -2052,7 +2227,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2052
2227
|
>
|
|
2053
2228
|
</div>
|
|
2054
2229
|
</ng-container>
|
|
2055
|
-
|
|
2230
|
+
`,
|
|
2231
|
+
standalone: true,
|
|
2232
|
+
imports: [NgClass, NgIf, NgTemplateOutlet]
|
|
2056
2233
|
}]
|
|
2057
2234
|
}], ctorParameters: function () {
|
|
2058
2235
|
return [{ type: undefined, decorators: [{
|
|
@@ -2079,7 +2256,7 @@ class GanttMilestoneTaskComponent extends GanttTaskBase {
|
|
|
2079
2256
|
}
|
|
2080
2257
|
}
|
|
2081
2258
|
GanttMilestoneTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: TOUCH_ENABLED }, { token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
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: [
|
|
2259
|
+
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
2260
|
{
|
|
2084
2261
|
provide: GanttTaskBase,
|
|
2085
2262
|
useExisting: forwardRef(() => GanttMilestoneTaskComponent)
|
|
@@ -2108,7 +2285,7 @@ GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
|
|
|
2108
2285
|
>
|
|
2109
2286
|
</div>
|
|
2110
2287
|
</ng-container>
|
|
2111
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2288
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2112
2289
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
|
|
2113
2290
|
type: Component,
|
|
2114
2291
|
args: [{
|
|
@@ -2143,7 +2320,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2143
2320
|
>
|
|
2144
2321
|
</div>
|
|
2145
2322
|
</ng-container>
|
|
2146
|
-
|
|
2323
|
+
`,
|
|
2324
|
+
standalone: true,
|
|
2325
|
+
imports: [NgClass, NgIf]
|
|
2147
2326
|
}]
|
|
2148
2327
|
}], ctorParameters: function () {
|
|
2149
2328
|
return [{ type: undefined, decorators: [{
|
|
@@ -2175,7 +2354,7 @@ class GanttTasksTableBodyComponent {
|
|
|
2175
2354
|
}
|
|
2176
2355
|
}
|
|
2177
2356
|
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: `
|
|
2357
|
+
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
2358
|
<tr class="k-table-row" #timelineRow *ngFor="let item of rows; let index = index">
|
|
2180
2359
|
<td class="k-table-td">
|
|
2181
2360
|
<kendo-gantt-milestone-task
|
|
@@ -2222,7 +2401,7 @@ GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
|
|
|
2222
2401
|
</ng-template>
|
|
2223
2402
|
</td>
|
|
2224
2403
|
</tr>
|
|
2225
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2404
|
+
`, 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
2405
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTasksTableBodyComponent, decorators: [{
|
|
2227
2406
|
type: Component,
|
|
2228
2407
|
args: [{
|
|
@@ -2275,7 +2454,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2275
2454
|
</ng-template>
|
|
2276
2455
|
</td>
|
|
2277
2456
|
</tr>
|
|
2278
|
-
|
|
2457
|
+
`,
|
|
2458
|
+
standalone: true,
|
|
2459
|
+
imports: [NgFor, NgIf, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskComponent]
|
|
2279
2460
|
}]
|
|
2280
2461
|
}], ctorParameters: function () { return [{ type: DependencyDomService }, { type: MappingService }]; }, propDecorators: { timelineRow: [{
|
|
2281
2462
|
type: ViewChild,
|
|
@@ -2305,442 +2486,139 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2305
2486
|
/**
|
|
2306
2487
|
* @hidden
|
|
2307
2488
|
*/
|
|
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
|
-
}] } });
|
|
2489
|
+
var ScrollDirection;
|
|
2490
|
+
(function (ScrollDirection) {
|
|
2491
|
+
ScrollDirection[ScrollDirection["Backwards"] = -1] = "Backwards";
|
|
2492
|
+
ScrollDirection[ScrollDirection["Forward"] = 1] = "Forward";
|
|
2493
|
+
})(ScrollDirection || (ScrollDirection = {}));
|
|
2494
|
+
/**
|
|
2495
|
+
* @hidden
|
|
2496
|
+
*/
|
|
2497
|
+
var ScrollAxis;
|
|
2498
|
+
(function (ScrollAxis) {
|
|
2499
|
+
ScrollAxis["Vertical"] = "scrollTop";
|
|
2500
|
+
ScrollAxis["Horizontal"] = "scrollLeft";
|
|
2501
|
+
})(ScrollAxis || (ScrollAxis = {}));
|
|
2346
2502
|
|
|
2347
2503
|
/**
|
|
2348
2504
|
* @hidden
|
|
2349
2505
|
*
|
|
2350
|
-
*
|
|
2506
|
+
* Checks if the beginning of the scrollable element is reached (top/left).
|
|
2507
|
+
* Floors the top value.
|
|
2351
2508
|
*/
|
|
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
|
-
};
|
|
2509
|
+
const isUpperLimitReached = (element, axis) => Math.floor(element[axis]) <= 0;
|
|
2368
2510
|
/**
|
|
2369
2511
|
* @hidden
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2512
|
+
*
|
|
2513
|
+
* Checks if the end of the scrollable element is reached (bottom/right).
|
|
2514
|
+
* Ceils the top value.
|
|
2515
|
+
*/
|
|
2516
|
+
const isBottomLimitReached = (element, axis) => {
|
|
2517
|
+
const elementSize = axis === ScrollAxis.Horizontal ?
|
|
2518
|
+
element.scrollWidth - element.clientWidth :
|
|
2519
|
+
element.scrollHeight - element.clientHeight;
|
|
2520
|
+
return Math.ceil(element[axis]) >= elementSize;
|
|
2378
2521
|
};
|
|
2379
2522
|
/**
|
|
2380
2523
|
* @hidden
|
|
2524
|
+
*
|
|
2525
|
+
* Scrolls the element in the given direction by the provided step in the provided scroll axis.
|
|
2526
|
+
*
|
|
2527
|
+
* If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),
|
|
2528
|
+
* increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.
|
|
2529
|
+
*
|
|
2530
|
+
* Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.
|
|
2381
2531
|
*/
|
|
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));
|
|
2532
|
+
const scrollElement = (element, step, direction, scrollAxis) => {
|
|
2533
|
+
if (!(isPresent(element) && isDocumentAvailable())) {
|
|
2534
|
+
return;
|
|
2411
2535
|
}
|
|
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));
|
|
2536
|
+
const initialScrollPosition = element[scrollAxis];
|
|
2537
|
+
let currentStep = step;
|
|
2538
|
+
let iterations = 0;
|
|
2539
|
+
while (initialScrollPosition === element[scrollAxis] &&
|
|
2540
|
+
!(direction === ScrollDirection.Backwards && isUpperLimitReached(element, scrollAxis)) &&
|
|
2541
|
+
!(direction === ScrollDirection.Forward && isBottomLimitReached(element, scrollAxis)) &&
|
|
2542
|
+
iterations < 20 // cut the operation short in 20 attempts - in case of a wild corner case
|
|
2543
|
+
) {
|
|
2544
|
+
element[scrollAxis] += (currentStep * direction);
|
|
2545
|
+
// try with a larger step if the current one doesn't update the scroll position successfully
|
|
2546
|
+
currentStep += 1;
|
|
2547
|
+
iterations += 1;
|
|
2457
2548
|
}
|
|
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
2549
|
};
|
|
2506
2550
|
/**
|
|
2507
2551
|
* @hidden
|
|
2508
2552
|
*
|
|
2509
|
-
*
|
|
2510
|
-
*
|
|
2553
|
+
* 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,
|
|
2554
|
+
* this function extracts the visible boundaries of the provided element - fall-backing to 0 when the top/left are below 0,
|
|
2555
|
+
* and fall-backing to the actual visible size of the container for bottom/right.
|
|
2511
2556
|
*/
|
|
2512
|
-
const
|
|
2513
|
-
|
|
2514
|
-
//
|
|
2515
|
-
const
|
|
2557
|
+
const getViewportBoundaries = (element) => {
|
|
2558
|
+
const elementRect = element.getBoundingClientRect();
|
|
2559
|
+
// if the beginning of the scrollable container is above/before the current viewport, fall-back to 0
|
|
2560
|
+
const topLimit = Math.max(elementRect.top, 0);
|
|
2561
|
+
const leftLimit = Math.max(elementRect.left, 0);
|
|
2562
|
+
// if the end of the scrollable container is beneath/after the current viewport, fall-back to its client height
|
|
2563
|
+
// 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
|
|
2564
|
+
const bottomLimit = topLimit + Math.min(elementRect.bottom, element.clientHeight);
|
|
2565
|
+
const rightLimit = leftLimit + Math.min(elementRect.right, element.clientWidth);
|
|
2516
2566
|
return {
|
|
2517
|
-
|
|
2518
|
-
|
|
2567
|
+
top: topLimit,
|
|
2568
|
+
bottom: bottomLimit,
|
|
2569
|
+
left: leftLimit,
|
|
2570
|
+
right: rightLimit
|
|
2519
2571
|
};
|
|
2520
2572
|
};
|
|
2573
|
+
|
|
2521
2574
|
/**
|
|
2522
2575
|
* @hidden
|
|
2523
2576
|
*
|
|
2524
|
-
*
|
|
2525
|
-
* The
|
|
2526
|
-
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/Coordinate_systems#standard_cssom_coordinate_systems
|
|
2577
|
+
* Notifies the timeline-scroll.directive to scroll into view to requested coordinates.
|
|
2578
|
+
* The scrolling is performed based on client (viewport) coordinates.
|
|
2527
2579
|
*/
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2580
|
+
class TimelineScrollService {
|
|
2581
|
+
constructor() {
|
|
2582
|
+
this.horizontalScroll = new Subject();
|
|
2583
|
+
this.verticalScroll = new Subject();
|
|
2584
|
+
this.scrollCancel = new Subject();
|
|
2585
|
+
}
|
|
2586
|
+
ngOnDestroy() {
|
|
2587
|
+
this.horizontalScroll.complete();
|
|
2588
|
+
this.verticalScroll.complete();
|
|
2589
|
+
this.scrollCancel.complete();
|
|
2590
|
+
}
|
|
2591
|
+
requestHorizontalScroll(clientTop) {
|
|
2592
|
+
this.horizontalScroll.next(clientTop);
|
|
2593
|
+
}
|
|
2594
|
+
requestVerticalScroll(clientLeft) {
|
|
2595
|
+
this.verticalScroll.next(clientLeft);
|
|
2596
|
+
}
|
|
2597
|
+
requestScrollCancel() {
|
|
2598
|
+
this.scrollCancel.next();
|
|
2599
|
+
}
|
|
2600
|
+
}
|
|
2601
|
+
TimelineScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2602
|
+
TimelineScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService });
|
|
2603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollService, decorators: [{
|
|
2604
|
+
type: Injectable
|
|
2605
|
+
}] });
|
|
2537
2606
|
|
|
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
2607
|
/**
|
|
2547
2608
|
* @hidden
|
|
2548
2609
|
*/
|
|
2549
|
-
class
|
|
2550
|
-
constructor(
|
|
2551
|
-
this.
|
|
2610
|
+
class TimelineScrollableDirective {
|
|
2611
|
+
constructor(timelineScrollableContainer, scrollService, zone) {
|
|
2612
|
+
this.timelineScrollableContainer = timelineScrollableContainer;
|
|
2613
|
+
this.scrollService = scrollService;
|
|
2552
2614
|
this.zone = zone;
|
|
2553
|
-
this.renderer = renderer;
|
|
2554
|
-
this.mapper = mapper;
|
|
2555
|
-
this.dependencyDomService = dependencyDomService;
|
|
2556
2615
|
this.subscriptions = new Subscription();
|
|
2557
|
-
this.subscriptions.add(
|
|
2558
|
-
.
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
this.
|
|
2562
|
-
.subscribe(
|
|
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;
|
|
2736
|
-
this.zone = zone;
|
|
2737
|
-
this.subscriptions = new Subscription();
|
|
2738
|
-
this.subscriptions.add(this.scrollService.horizontalScroll
|
|
2739
|
-
.subscribe(this.scrollHorizontallyTo.bind(this)));
|
|
2740
|
-
this.subscriptions.add(this.scrollService.verticalScroll
|
|
2741
|
-
.subscribe(this.scrollVerticallyTo.bind(this)));
|
|
2742
|
-
this.subscriptions.add(this.scrollService.scrollCancel
|
|
2743
|
-
.subscribe(this.cancelScroll.bind(this)));
|
|
2616
|
+
this.subscriptions.add(this.scrollService.horizontalScroll
|
|
2617
|
+
.subscribe(this.scrollHorizontallyTo.bind(this)));
|
|
2618
|
+
this.subscriptions.add(this.scrollService.verticalScroll
|
|
2619
|
+
.subscribe(this.scrollVerticallyTo.bind(this)));
|
|
2620
|
+
this.subscriptions.add(this.scrollService.scrollCancel
|
|
2621
|
+
.subscribe(this.cancelScroll.bind(this)));
|
|
2744
2622
|
}
|
|
2745
2623
|
ngOnDestroy() {
|
|
2746
2624
|
this.subscriptions.unsubscribe();
|
|
@@ -2781,11 +2659,12 @@ class TimelineScrollableDirective {
|
|
|
2781
2659
|
}
|
|
2782
2660
|
}
|
|
2783
2661
|
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 });
|
|
2662
|
+
TimelineScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TimelineScrollableDirective, isStandalone: true, selector: "[kendoGanttTimelineScrollable]", inputs: { scrollSettings: "scrollSettings" }, ngImport: i0 });
|
|
2785
2663
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimelineScrollableDirective, decorators: [{
|
|
2786
2664
|
type: Directive,
|
|
2787
2665
|
args: [{
|
|
2788
|
-
selector: '[kendoGanttTimelineScrollable]'
|
|
2666
|
+
selector: '[kendoGanttTimelineScrollable]',
|
|
2667
|
+
standalone: true
|
|
2789
2668
|
}]
|
|
2790
2669
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: TimelineScrollService }, { type: i0.NgZone }]; }, propDecorators: { scrollSettings: [{
|
|
2791
2670
|
type: Input
|
|
@@ -2794,86 +2673,207 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2794
2673
|
/**
|
|
2795
2674
|
* @hidden
|
|
2796
2675
|
*/
|
|
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
|
-
});
|
|
2676
|
+
class GanttHeaderTableBodyComponent {
|
|
2677
|
+
constructor() {
|
|
2678
|
+
this.tbodyClass = true;
|
|
2861
2679
|
}
|
|
2862
2680
|
}
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
<
|
|
2866
|
-
<
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2681
|
+
GanttHeaderTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2682
|
+
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: `
|
|
2683
|
+
<tr class="k-table-row">
|
|
2684
|
+
<td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
2685
|
+
</tr>
|
|
2686
|
+
|
|
2687
|
+
<tr class="k-table-row">
|
|
2688
|
+
<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>
|
|
2689
|
+
</tr>
|
|
2690
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
2691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
|
|
2692
|
+
type: Component,
|
|
2693
|
+
args: [{
|
|
2694
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
2695
|
+
selector: '[kendoGanttHeaderTableBody]',
|
|
2696
|
+
template: `
|
|
2697
|
+
<tr class="k-table-row">
|
|
2698
|
+
<td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
2699
|
+
</tr>
|
|
2700
|
+
|
|
2701
|
+
<tr class="k-table-row">
|
|
2702
|
+
<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>
|
|
2703
|
+
</tr>
|
|
2704
|
+
`,
|
|
2705
|
+
standalone: true,
|
|
2706
|
+
imports: [NgFor]
|
|
2707
|
+
}]
|
|
2708
|
+
}], propDecorators: { tbodyClass: [{
|
|
2709
|
+
type: HostBinding,
|
|
2710
|
+
args: ['class.k-table-tbody']
|
|
2711
|
+
}], groupSlots: [{
|
|
2712
|
+
type: Input
|
|
2713
|
+
}], slots: [{
|
|
2714
|
+
type: Input
|
|
2715
|
+
}] } });
|
|
2716
|
+
|
|
2717
|
+
const MS_PER_SECOND = 1000;
|
|
2718
|
+
const MS_PER_MINUTE = 60 * MS_PER_SECOND;
|
|
2719
|
+
/**
|
|
2720
|
+
* @hidden
|
|
2721
|
+
*/
|
|
2722
|
+
class CurrentTimeMarkerService {
|
|
2723
|
+
constructor(renderer, cdr) {
|
|
2724
|
+
this.renderer = renderer;
|
|
2725
|
+
this.cdr = cdr;
|
|
2726
|
+
this.slots = [];
|
|
2727
|
+
this.rows = [];
|
|
2728
|
+
this.now = new Date(Date.now());
|
|
2729
|
+
this.createTimeMarker = () => {
|
|
2730
|
+
if (!isDocumentAvailable()) {
|
|
2731
|
+
return;
|
|
2732
|
+
}
|
|
2733
|
+
this.removeTimeMarker();
|
|
2734
|
+
if (this.slotIndex >= 0) {
|
|
2735
|
+
this.now = new Date(Date.now());
|
|
2736
|
+
this.timeMarkerDiv = this.renderer.createElement('div');
|
|
2737
|
+
this.renderer.addClass(this.timeMarkerDiv, 'k-current-time');
|
|
2738
|
+
this.renderer.setStyle(this.timeMarkerDiv, 'width', '1px');
|
|
2739
|
+
this.renderer.setStyle(this.timeMarkerDiv, 'top', '0px');
|
|
2740
|
+
this.renderer.setStyle(this.timeMarkerDiv, `${this.rtl ? 'right' : 'left'}`, this.deltaOffset + 'px');
|
|
2741
|
+
this.renderer.appendChild(this.container.nativeElement, this.timeMarkerDiv);
|
|
2742
|
+
this.renderer.setStyle(this.timeMarkerDiv, 'height', this.height + 'px');
|
|
2743
|
+
this.currentTimeTimeout = setTimeout(this.createTimeMarker, this.interval || MS_PER_MINUTE);
|
|
2744
|
+
}
|
|
2745
|
+
};
|
|
2746
|
+
}
|
|
2747
|
+
get deltaOffset() {
|
|
2748
|
+
if (this.slotIndex >= 0) {
|
|
2749
|
+
const total = this.slots[this.slotIndex].end.getTime() - this.slots[this.slotIndex].start.getTime();
|
|
2750
|
+
if (total > 0) {
|
|
2751
|
+
const currentTimeValue = this.now.getTime() - this.slots[this.slotIndex].start.getTime();
|
|
2752
|
+
const fractionInsideCell = currentTimeValue / total;
|
|
2753
|
+
const deltaOffsetToSlot = this.slotIndex * this.slotWidth;
|
|
2754
|
+
const deltaOffsetInsideSlot = fractionInsideCell * this.slotWidth;
|
|
2755
|
+
return deltaOffsetToSlot + deltaOffsetInsideSlot;
|
|
2756
|
+
}
|
|
2757
|
+
return 0;
|
|
2758
|
+
}
|
|
2759
|
+
}
|
|
2760
|
+
get slotWidth() {
|
|
2761
|
+
var _a;
|
|
2762
|
+
return (_a = this.slots[0]) === null || _a === void 0 ? void 0 : _a.slotWidth;
|
|
2763
|
+
}
|
|
2764
|
+
get slotIndex() {
|
|
2765
|
+
return this.slots.indexOf(this.slots.find((slot) => slot.start <= this.now && slot.end > this.now));
|
|
2766
|
+
}
|
|
2767
|
+
get height() {
|
|
2768
|
+
return this.rows.length * this.rowHeight;
|
|
2769
|
+
}
|
|
2770
|
+
get interval() {
|
|
2771
|
+
var _a;
|
|
2772
|
+
if (typeof (this.currentTimeMarker) === 'boolean') {
|
|
2773
|
+
return MS_PER_MINUTE;
|
|
2774
|
+
}
|
|
2775
|
+
return ((_a = this.currentTimeMarker) === null || _a === void 0 ? void 0 : _a.updateInterval) || MS_PER_MINUTE;
|
|
2776
|
+
}
|
|
2777
|
+
ngOnDestroy() {
|
|
2778
|
+
clearTimeout(this.currentTimeTimeout);
|
|
2779
|
+
}
|
|
2780
|
+
removeTimeMarker() {
|
|
2781
|
+
if (this.timeMarkerDiv) {
|
|
2782
|
+
this.renderer.removeChild(this.container.nativeElement, this.timeMarkerDiv);
|
|
2783
|
+
clearTimeout(this.currentTimeTimeout);
|
|
2784
|
+
this.cdr.detectChanges();
|
|
2785
|
+
}
|
|
2786
|
+
}
|
|
2787
|
+
}
|
|
2788
|
+
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 });
|
|
2789
|
+
CurrentTimeMarkerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CurrentTimeMarkerService });
|
|
2790
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CurrentTimeMarkerService, decorators: [{
|
|
2791
|
+
type: Injectable
|
|
2792
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; } });
|
|
2793
|
+
|
|
2794
|
+
/**
|
|
2795
|
+
* @hidden
|
|
2796
|
+
*/
|
|
2797
|
+
class GanttTimelineComponent {
|
|
2798
|
+
constructor(scrollSyncService, dependencyDomService, renderer, zone, currentTimeMarkerService) {
|
|
2799
|
+
this.scrollSyncService = scrollSyncService;
|
|
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
|
+
});
|
|
2861
|
+
}
|
|
2862
|
+
}
|
|
2863
|
+
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 });
|
|
2864
|
+
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: `
|
|
2865
|
+
<div class="k-gantt-timeline k-grid k-grid-md">
|
|
2866
|
+
<div class="k-grid-header">
|
|
2867
|
+
<div #timelineHeaderWrap class="k-grid-header-wrap">
|
|
2868
|
+
<table
|
|
2869
|
+
class="k-table k-table-md k-grid-header-table"
|
|
2870
|
+
role="presentation"
|
|
2871
|
+
[style.width.px]="tableWidth"
|
|
2872
|
+
>
|
|
2873
|
+
<tbody
|
|
2874
|
+
kendoGanttHeaderTableBody
|
|
2875
|
+
[groupSlots]="groupSlots"
|
|
2876
|
+
[slots]="slots">
|
|
2877
2877
|
</tbody>
|
|
2878
2878
|
</table>
|
|
2879
2879
|
</div>
|
|
@@ -2964,7 +2964,7 @@ GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
2964
2964
|
<ng-container #dragPopupContainer></ng-container>
|
|
2965
2965
|
</div>
|
|
2966
2966
|
</div>
|
|
2967
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2967
|
+
`, 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
2968
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTimelineComponent, decorators: [{
|
|
2969
2969
|
type: Component,
|
|
2970
2970
|
args: [{
|
|
@@ -3072,7 +3072,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3072
3072
|
<ng-container #dragPopupContainer></ng-container>
|
|
3073
3073
|
</div>
|
|
3074
3074
|
</div>
|
|
3075
|
-
|
|
3075
|
+
`,
|
|
3076
|
+
standalone: true,
|
|
3077
|
+
imports: [TableDirective, GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, NgFor, GanttTasksTableBodyComponent, GanttDependencyDirective]
|
|
3076
3078
|
}]
|
|
3077
3079
|
}], ctorParameters: function () { return [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }]; }, propDecorators: { timelineContent: [{
|
|
3078
3080
|
type: ViewChild,
|
|
@@ -3203,11 +3205,12 @@ class CellTemplateDirective {
|
|
|
3203
3205
|
}
|
|
3204
3206
|
}
|
|
3205
3207
|
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 });
|
|
3208
|
+
CellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CellTemplateDirective, isStandalone: true, selector: "[kendoGanttCellTemplate]", ngImport: i0 });
|
|
3207
3209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CellTemplateDirective, decorators: [{
|
|
3208
3210
|
type: Directive,
|
|
3209
3211
|
args: [{
|
|
3210
|
-
selector: '[kendoGanttCellTemplate]'
|
|
3212
|
+
selector: '[kendoGanttCellTemplate]',
|
|
3213
|
+
standalone: true
|
|
3211
3214
|
}]
|
|
3212
3215
|
}], ctorParameters: function () {
|
|
3213
3216
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3231,11 +3234,12 @@ class ColumnMenuTemplateDirective {
|
|
|
3231
3234
|
}
|
|
3232
3235
|
}
|
|
3233
3236
|
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 });
|
|
3237
|
+
ColumnMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ColumnMenuTemplateDirective, isStandalone: true, selector: "[kendoGanttColumnMenuTemplate]", ngImport: i0 });
|
|
3235
3238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ColumnMenuTemplateDirective, decorators: [{
|
|
3236
3239
|
type: Directive,
|
|
3237
3240
|
args: [{
|
|
3238
|
-
selector: '[kendoGanttColumnMenuTemplate]'
|
|
3241
|
+
selector: '[kendoGanttColumnMenuTemplate]',
|
|
3242
|
+
standalone: true
|
|
3239
3243
|
}]
|
|
3240
3244
|
}], ctorParameters: function () {
|
|
3241
3245
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3258,11 +3262,12 @@ class FilterCellTemplateDirective {
|
|
|
3258
3262
|
}
|
|
3259
3263
|
}
|
|
3260
3264
|
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 });
|
|
3265
|
+
FilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilterCellTemplateDirective, isStandalone: true, selector: "[kendoGanttFilterCellTemplate]", ngImport: i0 });
|
|
3262
3266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterCellTemplateDirective, decorators: [{
|
|
3263
3267
|
type: Directive,
|
|
3264
3268
|
args: [{
|
|
3265
|
-
selector: '[kendoGanttFilterCellTemplate]'
|
|
3269
|
+
selector: '[kendoGanttFilterCellTemplate]',
|
|
3270
|
+
standalone: true
|
|
3266
3271
|
}]
|
|
3267
3272
|
}], ctorParameters: function () {
|
|
3268
3273
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3284,11 +3289,12 @@ class FilterMenuTemplateDirective {
|
|
|
3284
3289
|
}
|
|
3285
3290
|
}
|
|
3286
3291
|
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 });
|
|
3292
|
+
FilterMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FilterMenuTemplateDirective, isStandalone: true, selector: "[kendoGanttFilterMenuTemplate]", ngImport: i0 });
|
|
3288
3293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterMenuTemplateDirective, decorators: [{
|
|
3289
3294
|
type: Directive,
|
|
3290
3295
|
args: [{
|
|
3291
|
-
selector: '[kendoGanttFilterMenuTemplate]'
|
|
3296
|
+
selector: '[kendoGanttFilterMenuTemplate]',
|
|
3297
|
+
standalone: true
|
|
3292
3298
|
}]
|
|
3293
3299
|
}], ctorParameters: function () {
|
|
3294
3300
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3314,11 +3320,12 @@ class FooterTemplateDirective {
|
|
|
3314
3320
|
}
|
|
3315
3321
|
}
|
|
3316
3322
|
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 });
|
|
3323
|
+
FooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FooterTemplateDirective, isStandalone: true, selector: "[kendoGanttFooterTemplate]", ngImport: i0 });
|
|
3318
3324
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FooterTemplateDirective, decorators: [{
|
|
3319
3325
|
type: Directive,
|
|
3320
3326
|
args: [{
|
|
3321
|
-
selector: '[kendoGanttFooterTemplate]'
|
|
3327
|
+
selector: '[kendoGanttFooterTemplate]',
|
|
3328
|
+
standalone: true
|
|
3322
3329
|
}]
|
|
3323
3330
|
}], ctorParameters: function () {
|
|
3324
3331
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3342,11 +3349,12 @@ class HeaderTemplateDirective {
|
|
|
3342
3349
|
}
|
|
3343
3350
|
}
|
|
3344
3351
|
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 });
|
|
3352
|
+
HeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: HeaderTemplateDirective, isStandalone: true, selector: "[kendoGanttHeaderTemplate]", ngImport: i0 });
|
|
3346
3353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HeaderTemplateDirective, decorators: [{
|
|
3347
3354
|
type: Directive,
|
|
3348
3355
|
args: [{
|
|
3349
|
-
selector: '[kendoGanttHeaderTemplate]'
|
|
3356
|
+
selector: '[kendoGanttHeaderTemplate]',
|
|
3357
|
+
standalone: true
|
|
3350
3358
|
}]
|
|
3351
3359
|
}], ctorParameters: function () {
|
|
3352
3360
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3374,11 +3382,12 @@ class EditTemplateDirective {
|
|
|
3374
3382
|
}
|
|
3375
3383
|
}
|
|
3376
3384
|
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 });
|
|
3385
|
+
EditTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: EditTemplateDirective, isStandalone: true, selector: "[kendoGanttEditTemplate]", ngImport: i0 });
|
|
3378
3386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditTemplateDirective, decorators: [{
|
|
3379
3387
|
type: Directive,
|
|
3380
3388
|
args: [{
|
|
3381
|
-
selector: '[kendoGanttEditTemplate]'
|
|
3389
|
+
selector: '[kendoGanttEditTemplate]',
|
|
3390
|
+
standalone: true
|
|
3382
3391
|
}]
|
|
3383
3392
|
}], ctorParameters: function () {
|
|
3384
3393
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3430,7 +3439,7 @@ class GanttColumnComponent extends ColumnComponent {
|
|
|
3430
3439
|
}
|
|
3431
3440
|
}
|
|
3432
3441
|
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: [
|
|
3442
|
+
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
3443
|
{
|
|
3435
3444
|
provide: GanttColumnBase,
|
|
3436
3445
|
useExisting: forwardRef(() => GanttColumnComponent)
|
|
@@ -3446,7 +3455,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3446
3455
|
provide: GanttColumnBase,
|
|
3447
3456
|
useExisting: forwardRef(() => GanttColumnComponent)
|
|
3448
3457
|
}
|
|
3449
|
-
]
|
|
3458
|
+
],
|
|
3459
|
+
standalone: true
|
|
3450
3460
|
}]
|
|
3451
3461
|
}], ctorParameters: function () {
|
|
3452
3462
|
return [{ type: OptionChangesService }, { type: GanttColumnBase, decorators: [{
|
|
@@ -3544,7 +3554,7 @@ class GanttColumnGroupComponent extends ColumnGroupComponent {
|
|
|
3544
3554
|
}
|
|
3545
3555
|
}
|
|
3546
3556
|
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: [
|
|
3557
|
+
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
3558
|
{
|
|
3549
3559
|
provide: GanttColumnBase,
|
|
3550
3560
|
useExisting: forwardRef(() => GanttColumnGroupComponent)
|
|
@@ -3560,7 +3570,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3560
3570
|
provide: GanttColumnBase,
|
|
3561
3571
|
useExisting: forwardRef(() => GanttColumnGroupComponent)
|
|
3562
3572
|
}
|
|
3563
|
-
]
|
|
3573
|
+
],
|
|
3574
|
+
standalone: true
|
|
3564
3575
|
}]
|
|
3565
3576
|
}], ctorParameters: function () {
|
|
3566
3577
|
return [{ type: OptionChangesService }, { type: GanttColumnBase, decorators: [{
|
|
@@ -3649,7 +3660,7 @@ class GanttSpanColumnComponent extends SpanColumnComponent {
|
|
|
3649
3660
|
}
|
|
3650
3661
|
}
|
|
3651
3662
|
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: [
|
|
3663
|
+
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
3664
|
{
|
|
3654
3665
|
provide: GanttColumnBase,
|
|
3655
3666
|
useExisting: forwardRef(() => GanttSpanColumnComponent)
|
|
@@ -3665,7 +3676,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
3665
3676
|
provide: GanttColumnBase,
|
|
3666
3677
|
useExisting: forwardRef(() => GanttSpanColumnComponent)
|
|
3667
3678
|
}
|
|
3668
|
-
]
|
|
3679
|
+
],
|
|
3680
|
+
standalone: true
|
|
3669
3681
|
}]
|
|
3670
3682
|
}], ctorParameters: function () {
|
|
3671
3683
|
return [{ type: OptionChangesService }, { type: GanttColumnBase, decorators: [{
|
|
@@ -3809,11 +3821,12 @@ class GanttTaskTemplateDirective {
|
|
|
3809
3821
|
}
|
|
3810
3822
|
}
|
|
3811
3823
|
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 });
|
|
3824
|
+
GanttTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskTemplateDirective, isStandalone: true, selector: "[kendoGanttTaskTemplate]", ngImport: i0 });
|
|
3813
3825
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskTemplateDirective, decorators: [{
|
|
3814
3826
|
type: Directive,
|
|
3815
3827
|
args: [{
|
|
3816
|
-
selector: '[kendoGanttTaskTemplate]'
|
|
3828
|
+
selector: '[kendoGanttTaskTemplate]',
|
|
3829
|
+
standalone: true
|
|
3817
3830
|
}]
|
|
3818
3831
|
}], ctorParameters: function () {
|
|
3819
3832
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3856,11 +3869,12 @@ class GanttSummaryTaskTemplateDirective {
|
|
|
3856
3869
|
}
|
|
3857
3870
|
}
|
|
3858
3871
|
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 });
|
|
3872
|
+
GanttSummaryTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttSummaryTaskTemplateDirective, isStandalone: true, selector: "[kendoGanttSummaryTaskTemplate]", ngImport: i0 });
|
|
3860
3873
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttSummaryTaskTemplateDirective, decorators: [{
|
|
3861
3874
|
type: Directive,
|
|
3862
3875
|
args: [{
|
|
3863
|
-
selector: '[kendoGanttSummaryTaskTemplate]'
|
|
3876
|
+
selector: '[kendoGanttSummaryTaskTemplate]',
|
|
3877
|
+
standalone: true
|
|
3864
3878
|
}]
|
|
3865
3879
|
}], ctorParameters: function () {
|
|
3866
3880
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -3898,11 +3912,12 @@ class GanttTaskContentTemplateDirective {
|
|
|
3898
3912
|
}
|
|
3899
3913
|
}
|
|
3900
3914
|
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 });
|
|
3915
|
+
GanttTaskContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: GanttTaskContentTemplateDirective, isStandalone: true, selector: "[kendoGanttTaskContentTemplate]", ngImport: i0 });
|
|
3902
3916
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttTaskContentTemplateDirective, decorators: [{
|
|
3903
3917
|
type: Directive,
|
|
3904
3918
|
args: [{
|
|
3905
|
-
selector: '[kendoGanttTaskContentTemplate]'
|
|
3919
|
+
selector: '[kendoGanttTaskContentTemplate]',
|
|
3920
|
+
standalone: true
|
|
3906
3921
|
}]
|
|
3907
3922
|
}], ctorParameters: function () {
|
|
3908
3923
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -4019,11 +4034,12 @@ class ToolbarTemplateDirective {
|
|
|
4019
4034
|
}
|
|
4020
4035
|
}
|
|
4021
4036
|
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 });
|
|
4037
|
+
ToolbarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ToolbarTemplateDirective, isStandalone: true, selector: "[kendoGanttToolbarTemplate]", inputs: { position: "position" }, ngImport: i0 });
|
|
4023
4038
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarTemplateDirective, decorators: [{
|
|
4024
4039
|
type: Directive,
|
|
4025
4040
|
args: [{
|
|
4026
|
-
selector: '[kendoGanttToolbarTemplate]'
|
|
4041
|
+
selector: '[kendoGanttToolbarTemplate]',
|
|
4042
|
+
standalone: true
|
|
4027
4043
|
}]
|
|
4028
4044
|
}], ctorParameters: function () {
|
|
4029
4045
|
return [{ type: i0.TemplateRef, decorators: [{
|
|
@@ -4093,851 +4109,863 @@ const mapPath = (item) => ({
|
|
|
4093
4109
|
/**
|
|
4094
4110
|
* @hidden
|
|
4095
4111
|
*/
|
|
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) {
|
|
4112
|
+
class DependenciesTableComponent {
|
|
4113
|
+
constructor(mapper, editService, localizationService) {
|
|
4114
|
+
this.mapper = mapper;
|
|
4115
|
+
this.editService = editService;
|
|
4120
4116
|
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
|
-
}
|
|
4117
|
+
this.dependenciesChange = new EventEmitter();
|
|
4118
|
+
this.selectedKeys = [];
|
|
4119
|
+
this.formGroups = new FormArray([]);
|
|
4120
|
+
this.dependencyTypes = this.getDependencyTypes();
|
|
4121
|
+
this.plusIcon = plusIcon;
|
|
4122
|
+
this.minusIcon = minusIcon;
|
|
4139
4123
|
}
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
*/
|
|
4143
|
-
getViewTypeText(viewType) {
|
|
4144
|
-
return this.localizationService.get(`${viewType}ViewText`);
|
|
4124
|
+
get taskId() {
|
|
4125
|
+
return this.editService.dataItem.id;
|
|
4145
4126
|
}
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
this.
|
|
4127
|
+
// The target dependency id field
|
|
4128
|
+
// e.g. if Predecessors, we have the `fromId` which is the currently edited task,
|
|
4129
|
+
// while the `toId` is missing (needs to be selected by the user)
|
|
4130
|
+
get dependencyIdField() {
|
|
4131
|
+
return this.dependencyType === 'predecessor' ? 'fromId' : 'toId';
|
|
4132
|
+
}
|
|
4133
|
+
ngOnInit() {
|
|
4134
|
+
// generate the FormGroups per each Grid row
|
|
4135
|
+
if (this.formGroups.controls.length === 0) {
|
|
4136
|
+
const fields = this.mapper.dependencyFields;
|
|
4137
|
+
this.dependencies.forEach(item => {
|
|
4138
|
+
const formGroup = new FormGroup({
|
|
4139
|
+
[fields.id]: new FormControl(this.mapper.extractFromDependency(item, 'id')),
|
|
4140
|
+
[fields.fromId]: new FormControl(this.mapper.extractFromDependency(item, 'fromId'), Validators.required),
|
|
4141
|
+
[fields.toId]: new FormControl(this.mapper.extractFromDependency(item, 'toId'), Validators.required),
|
|
4142
|
+
[fields.type]: new FormControl(this.mapper.extractFromDependency(item, 'type'), Validators.required)
|
|
4143
|
+
});
|
|
4144
|
+
this.formGroups.push(formGroup);
|
|
4145
|
+
});
|
|
4146
|
+
}
|
|
4147
|
+
this.formGroups.valueChanges.subscribe(val => {
|
|
4148
|
+
this.formGroups.controls.forEach(control => {
|
|
4149
|
+
if (control.dirty) {
|
|
4150
|
+
this.editService.updateDependencies(control.value);
|
|
4151
|
+
}
|
|
4152
|
+
});
|
|
4153
|
+
this.dependenciesChange.emit(val);
|
|
4154
|
+
});
|
|
4155
|
+
}
|
|
4156
|
+
getFormControl(dataItemIndex, field) {
|
|
4157
|
+
// return the FormControl for the respective column editor
|
|
4158
|
+
return this.formGroups.controls
|
|
4159
|
+
.find((_control, index) => index === dataItemIndex)
|
|
4160
|
+
.get(this.mapper.dependencyFields[field]);
|
|
4161
|
+
}
|
|
4162
|
+
getText(token) {
|
|
4163
|
+
return this.localizationService.get(token);
|
|
4164
|
+
}
|
|
4165
|
+
getDependencyTypes() {
|
|
4166
|
+
const types = Object.keys(DependencyType)
|
|
4167
|
+
.filter(value => typeof DependencyType[value] === 'number')
|
|
4168
|
+
.map(type => {
|
|
4169
|
+
return {
|
|
4170
|
+
type,
|
|
4171
|
+
id: DependencyType[type]
|
|
4172
|
+
};
|
|
4173
|
+
});
|
|
4174
|
+
return types;
|
|
4175
|
+
}
|
|
4176
|
+
addHandler() {
|
|
4177
|
+
const fields = this.mapper.dependencyFields;
|
|
4178
|
+
const formGroup = new FormGroup({
|
|
4179
|
+
[fields.id]: new FormControl(),
|
|
4180
|
+
[fields.fromId]: new FormControl(this.dependencyIdField === 'toId' ? this.taskId : null, Validators.required),
|
|
4181
|
+
[fields.toId]: new FormControl(this.dependencyIdField === 'fromId' ? this.taskId : null, Validators.required),
|
|
4182
|
+
[fields.type]: new FormControl(null, Validators.required)
|
|
4183
|
+
});
|
|
4184
|
+
this.formGroups.push(formGroup);
|
|
4185
|
+
}
|
|
4186
|
+
removeHandler() {
|
|
4187
|
+
const [selectedIndex] = this.selectedKeys;
|
|
4188
|
+
const item = this.formGroups.at(selectedIndex).value;
|
|
4189
|
+
this.editService.deleteDependency(item);
|
|
4190
|
+
this.formGroups.removeAt(selectedIndex);
|
|
4151
4191
|
}
|
|
4152
4192
|
}
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
<
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
[
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4193
|
+
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 });
|
|
4194
|
+
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: `
|
|
4195
|
+
<kendo-grid
|
|
4196
|
+
[data]="dependencies"
|
|
4197
|
+
[selectable]="{ mode: 'single' }"
|
|
4198
|
+
[(selectedKeys)]="selectedKeys"
|
|
4199
|
+
kendoGridSelectBy
|
|
4200
|
+
[height]="275"
|
|
4201
|
+
>
|
|
4202
|
+
<ng-template kendoGridToolbarTemplate>
|
|
4203
|
+
<button
|
|
4204
|
+
kendoButton
|
|
4205
|
+
icon="plus"
|
|
4206
|
+
[svgIcon]="plusIcon"
|
|
4207
|
+
(click)="addHandler()"
|
|
4208
|
+
>
|
|
4209
|
+
{{ getText('taskEditingDependenciesAddButtonText') }}
|
|
4210
|
+
</button>
|
|
4211
|
+
<button
|
|
4212
|
+
kendoButton
|
|
4213
|
+
icon="minus"
|
|
4214
|
+
[svgIcon]="minusIcon"
|
|
4215
|
+
[disabled]="selectedKeys.length === 0"
|
|
4216
|
+
(click)="removeHandler()"
|
|
4217
|
+
>
|
|
4218
|
+
{{ getText('taskEditingDependenciesRemoveButtonText') }}
|
|
4219
|
+
</button>
|
|
4220
|
+
</ng-template>
|
|
4221
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridNameColumnTitle')" [field]="dependencyIdField">
|
|
4222
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4223
|
+
<kendo-dropdownlist
|
|
4224
|
+
[data]="tasks"
|
|
4225
|
+
textField="title"
|
|
4226
|
+
valueField="id"
|
|
4227
|
+
[valuePrimitive]="true"
|
|
4228
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4229
|
+
>
|
|
4230
|
+
</kendo-dropdownlist>
|
|
4231
|
+
</ng-template>
|
|
4232
|
+
</kendo-grid-column>
|
|
4233
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridTypeColumnTitle')" field="type">
|
|
4234
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4235
|
+
<kendo-dropdownlist
|
|
4236
|
+
[data]="dependencyTypes"
|
|
4237
|
+
textField="type"
|
|
4238
|
+
valueField="id"
|
|
4239
|
+
[valuePrimitive]="true"
|
|
4240
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4241
|
+
>
|
|
4242
|
+
</kendo-dropdownlist>
|
|
4243
|
+
</ng-template>
|
|
4244
|
+
</kendo-grid-column>
|
|
4245
|
+
</kendo-grid>
|
|
4246
|
+
`, 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"] }] });
|
|
4247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependenciesTableComponent, decorators: [{
|
|
4171
4248
|
type: Component,
|
|
4172
4249
|
args: [{
|
|
4173
|
-
selector: 'kendo-gantt-
|
|
4250
|
+
selector: 'kendo-gantt-dependencies-table',
|
|
4174
4251
|
template: `
|
|
4175
|
-
<
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
[
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4252
|
+
<kendo-grid
|
|
4253
|
+
[data]="dependencies"
|
|
4254
|
+
[selectable]="{ mode: 'single' }"
|
|
4255
|
+
[(selectedKeys)]="selectedKeys"
|
|
4256
|
+
kendoGridSelectBy
|
|
4257
|
+
[height]="275"
|
|
4258
|
+
>
|
|
4259
|
+
<ng-template kendoGridToolbarTemplate>
|
|
4260
|
+
<button
|
|
4261
|
+
kendoButton
|
|
4262
|
+
icon="plus"
|
|
4263
|
+
[svgIcon]="plusIcon"
|
|
4264
|
+
(click)="addHandler()"
|
|
4265
|
+
>
|
|
4266
|
+
{{ getText('taskEditingDependenciesAddButtonText') }}
|
|
4267
|
+
</button>
|
|
4268
|
+
<button
|
|
4269
|
+
kendoButton
|
|
4270
|
+
icon="minus"
|
|
4271
|
+
[svgIcon]="minusIcon"
|
|
4272
|
+
[disabled]="selectedKeys.length === 0"
|
|
4273
|
+
(click)="removeHandler()"
|
|
4274
|
+
>
|
|
4275
|
+
{{ getText('taskEditingDependenciesRemoveButtonText') }}
|
|
4276
|
+
</button>
|
|
4277
|
+
</ng-template>
|
|
4278
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridNameColumnTitle')" [field]="dependencyIdField">
|
|
4279
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4280
|
+
<kendo-dropdownlist
|
|
4281
|
+
[data]="tasks"
|
|
4282
|
+
textField="title"
|
|
4283
|
+
valueField="id"
|
|
4284
|
+
[valuePrimitive]="true"
|
|
4285
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4286
|
+
>
|
|
4287
|
+
</kendo-dropdownlist>
|
|
4288
|
+
</ng-template>
|
|
4289
|
+
</kendo-grid-column>
|
|
4290
|
+
<kendo-grid-column [title]="getText('taskEditingDependenciesGridTypeColumnTitle')" field="type">
|
|
4291
|
+
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4292
|
+
<kendo-dropdownlist
|
|
4293
|
+
[data]="dependencyTypes"
|
|
4294
|
+
textField="type"
|
|
4295
|
+
valueField="id"
|
|
4296
|
+
[valuePrimitive]="true"
|
|
4297
|
+
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4298
|
+
>
|
|
4299
|
+
</kendo-dropdownlist>
|
|
4300
|
+
</ng-template>
|
|
4301
|
+
</kendo-grid-column>
|
|
4302
|
+
</kendo-grid>
|
|
4303
|
+
`,
|
|
4304
|
+
standalone: true,
|
|
4305
|
+
imports: [GridComponent, SelectionDirective, ToolbarTemplateDirective$1, ButtonComponent, ColumnComponent$1, CellTemplateDirective$1, DropDownListComponent, ReactiveFormsModule]
|
|
4190
4306
|
}]
|
|
4191
|
-
}], ctorParameters: function () { return [{ type:
|
|
4192
|
-
type: HostBinding,
|
|
4193
|
-
args: ['class.k-gantt-views-wrapper']
|
|
4194
|
-
}], views: [{
|
|
4307
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }]; }, propDecorators: { tasks: [{
|
|
4195
4308
|
type: Input
|
|
4196
|
-
}],
|
|
4309
|
+
}], dependencies: [{
|
|
4197
4310
|
type: Input
|
|
4198
|
-
}],
|
|
4311
|
+
}], dependencyType: [{
|
|
4312
|
+
type: Input
|
|
4313
|
+
}], dependenciesChange: [{
|
|
4199
4314
|
type: Output
|
|
4200
4315
|
}] } });
|
|
4201
4316
|
|
|
4202
4317
|
/**
|
|
4203
|
-
*
|
|
4204
|
-
* Use it within a toolbar template to provide a custom icon or list of options.
|
|
4318
|
+
* @hidden
|
|
4205
4319
|
*/
|
|
4206
|
-
class
|
|
4207
|
-
constructor(
|
|
4208
|
-
this.
|
|
4320
|
+
class TaskFieldsComponent {
|
|
4321
|
+
constructor(mapper, editService, localizationService) {
|
|
4322
|
+
this.mapper = mapper;
|
|
4209
4323
|
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;
|
|
4324
|
+
this.localizationService = localizationService;
|
|
4235
4325
|
}
|
|
4236
4326
|
/**
|
|
4237
4327
|
* @hidden
|
|
4238
4328
|
*/
|
|
4239
|
-
|
|
4240
|
-
return this.
|
|
4329
|
+
get formGroup() {
|
|
4330
|
+
return this.editService.taskFormGroup;
|
|
4241
4331
|
}
|
|
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
|
-
});
|
|
4332
|
+
getText(token) {
|
|
4333
|
+
return this.localizationService.get(token);
|
|
4271
4334
|
}
|
|
4272
4335
|
}
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
<
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4336
|
+
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 });
|
|
4337
|
+
TaskFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TaskFieldsComponent, isStandalone: true, selector: "kendo-gantt-task-fields", ngImport: i0, template: `
|
|
4338
|
+
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4339
|
+
<kendo-formfield *ngIf="formGroup.get(mapper.taskFields.title)">
|
|
4340
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4341
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4342
|
+
</kendo-formfield>
|
|
4343
|
+
<div class="k-hstack">
|
|
4344
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.start)">
|
|
4345
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4346
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4347
|
+
</kendo-formfield>
|
|
4348
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4349
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.end)">
|
|
4350
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4351
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4352
|
+
</kendo-formfield>
|
|
4353
|
+
</div>
|
|
4354
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
|
|
4355
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4356
|
+
<kendo-numerictextbox
|
|
4357
|
+
#completionRatio
|
|
4358
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4359
|
+
[min]="0"
|
|
4360
|
+
[max]="1"
|
|
4361
|
+
[decimals]="2"
|
|
4362
|
+
format="p2"
|
|
4363
|
+
[step]="0.01"
|
|
4364
|
+
></kendo-numerictextbox>
|
|
4365
|
+
</kendo-formfield>
|
|
4366
|
+
</form>
|
|
4367
|
+
`, 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"] }] });
|
|
4368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TaskFieldsComponent, decorators: [{
|
|
4287
4369
|
type: Component,
|
|
4288
4370
|
args: [{
|
|
4289
|
-
selector: 'kendo-gantt-
|
|
4371
|
+
selector: 'kendo-gantt-task-fields',
|
|
4290
4372
|
template: `
|
|
4291
|
-
<
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4373
|
+
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4374
|
+
<kendo-formfield *ngIf="formGroup.get(mapper.taskFields.title)">
|
|
4375
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4376
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4377
|
+
</kendo-formfield>
|
|
4378
|
+
<div class="k-hstack">
|
|
4379
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.start)">
|
|
4380
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4381
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4382
|
+
</kendo-formfield>
|
|
4383
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4384
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.end)">
|
|
4385
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4386
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4387
|
+
</kendo-formfield>
|
|
4388
|
+
</div>
|
|
4389
|
+
<kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
|
|
4390
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4391
|
+
<kendo-numerictextbox
|
|
4392
|
+
#completionRatio
|
|
4393
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4394
|
+
[min]="0"
|
|
4395
|
+
[max]="1"
|
|
4396
|
+
[decimals]="2"
|
|
4397
|
+
format="p2"
|
|
4398
|
+
[step]="0.01"
|
|
4399
|
+
></kendo-numerictextbox>
|
|
4400
|
+
</kendo-formfield>
|
|
4401
|
+
</form>
|
|
4402
|
+
`,
|
|
4403
|
+
standalone: true,
|
|
4404
|
+
imports: [ReactiveFormsModule, NgIf, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
|
|
4302
4405
|
}]
|
|
4303
|
-
}], ctorParameters: function () { return [{ type:
|
|
4304
|
-
type: Input
|
|
4305
|
-
}], icon: [{
|
|
4306
|
-
type: Input
|
|
4307
|
-
}], svgIcon: [{
|
|
4308
|
-
type: Input
|
|
4309
|
-
}] } });
|
|
4406
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }]; } });
|
|
4310
4407
|
|
|
4311
4408
|
/**
|
|
4312
4409
|
* @hidden
|
|
4313
4410
|
*/
|
|
4314
|
-
class
|
|
4315
|
-
constructor(
|
|
4316
|
-
this.
|
|
4317
|
-
this.
|
|
4318
|
-
this.
|
|
4319
|
-
this.
|
|
4320
|
-
this.
|
|
4321
|
-
this.
|
|
4411
|
+
class EditDialogComponent {
|
|
4412
|
+
constructor(mapper, editService, cdr, localizationService) {
|
|
4413
|
+
this.mapper = mapper;
|
|
4414
|
+
this.editService = editService;
|
|
4415
|
+
this.cdr = cdr;
|
|
4416
|
+
this.localizationService = localizationService;
|
|
4417
|
+
this.saveIcon = saveIcon;
|
|
4418
|
+
this.cancelIcon = cancelOutlineIcon;
|
|
4419
|
+
this.deleteIcon = trashIcon;
|
|
4322
4420
|
}
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
if (targetIndex > -1) {
|
|
4328
|
-
this.navigationService.focusIndex = targetIndex;
|
|
4329
|
-
}
|
|
4330
|
-
this.navigationService.updateFocus();
|
|
4331
|
-
}
|
|
4421
|
+
ngOnInit() {
|
|
4422
|
+
this.editService.loadTasks(this.data).subscribe(value => {
|
|
4423
|
+
this.loadedTasks = value;
|
|
4424
|
+
});
|
|
4332
4425
|
}
|
|
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
|
-
}
|
|
4426
|
+
get predecessors() {
|
|
4427
|
+
return this.editService.predecessors;
|
|
4341
4428
|
}
|
|
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
|
-
}
|
|
4429
|
+
set predecessors(items) {
|
|
4430
|
+
this.editService.predecessors = items;
|
|
4350
4431
|
}
|
|
4351
|
-
|
|
4352
|
-
this.
|
|
4432
|
+
get successors() {
|
|
4433
|
+
return this.editService.successors;
|
|
4353
4434
|
}
|
|
4354
|
-
|
|
4355
|
-
|
|
4435
|
+
set successors(items) {
|
|
4436
|
+
this.editService.successors = items;
|
|
4356
4437
|
}
|
|
4357
|
-
|
|
4358
|
-
return this.
|
|
4438
|
+
getText(token) {
|
|
4439
|
+
return this.localizationService.get(token);
|
|
4359
4440
|
}
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
const templatePosition = ganttToolbarTemplate ? ganttToolbarTemplate.position : null;
|
|
4363
|
-
return ganttToolbarTemplate && (templatePosition === 'both' || templatePosition === this.position);
|
|
4441
|
+
getDependencyType(typeId) {
|
|
4442
|
+
return DependencyType[typeId];
|
|
4364
4443
|
}
|
|
4365
|
-
|
|
4366
|
-
this.
|
|
4444
|
+
handleEditingResult(editResultType) {
|
|
4445
|
+
this.editService.triggerEditEvent(editResultType);
|
|
4367
4446
|
}
|
|
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
|
-
}
|
|
4447
|
+
handleTaskDelete() {
|
|
4448
|
+
this.editService.taskDelete.next(this.editService.dataItem);
|
|
4376
4449
|
}
|
|
4377
4450
|
}
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
<
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4451
|
+
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 });
|
|
4452
|
+
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: `
|
|
4453
|
+
<kendo-dialog
|
|
4454
|
+
[title]="getText('taskEditingDialogTitle')"
|
|
4455
|
+
[width]="575"
|
|
4456
|
+
[height]="470"
|
|
4457
|
+
[autoFocusedElement]="'.k-actions .k-button-solid-primary'"
|
|
4458
|
+
(close)="handleEditingResult('cancel')">
|
|
4459
|
+
<kendo-dialog-messages
|
|
4460
|
+
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
|
|
4461
|
+
|
|
4462
|
+
<kendo-tabstrip [keepTabContent]="true" [style.height.px]="345">
|
|
4463
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingGeneralTabTitle')" [selected]="true">
|
|
4464
|
+
<ng-template kendoTabContent>
|
|
4465
|
+
<kendo-gantt-task-fields></kendo-gantt-task-fields>
|
|
4466
|
+
</ng-template>
|
|
4467
|
+
</kendo-tabstrip-tab>
|
|
4468
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingPredecessorsTabTitle')">
|
|
4469
|
+
<ng-template kendoTabContent>
|
|
4470
|
+
<kendo-gantt-dependencies-table
|
|
4471
|
+
[tasks]="loadedTasks"
|
|
4472
|
+
[(dependencies)]="predecessors"
|
|
4473
|
+
dependencyType="predecessor"
|
|
4474
|
+
>
|
|
4475
|
+
</kendo-gantt-dependencies-table>
|
|
4476
|
+
</ng-template>
|
|
4477
|
+
</kendo-tabstrip-tab>
|
|
4478
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
|
|
4479
|
+
<ng-template kendoTabContent>
|
|
4480
|
+
<kendo-gantt-dependencies-table
|
|
4481
|
+
[tasks]="loadedTasks"
|
|
4482
|
+
[(dependencies)]="successors"
|
|
4483
|
+
dependencyType="successor">
|
|
4484
|
+
</kendo-gantt-dependencies-table>
|
|
4485
|
+
</ng-template>
|
|
4486
|
+
</kendo-tabstrip-tab>
|
|
4487
|
+
</kendo-tabstrip>
|
|
4488
|
+
|
|
4489
|
+
<kendo-dialog-actions layout="start">
|
|
4490
|
+
<button
|
|
4491
|
+
kendoButton
|
|
4492
|
+
themeColor="primary"
|
|
4493
|
+
icon="save"
|
|
4494
|
+
[svgIcon]="saveIcon"
|
|
4495
|
+
(click)="handleEditingResult('save')"
|
|
4496
|
+
>
|
|
4497
|
+
{{ getText('saveButtonText') }}
|
|
4498
|
+
</button>
|
|
4499
|
+
<button
|
|
4500
|
+
kendoButton
|
|
4501
|
+
icon="cancel-outline"
|
|
4502
|
+
[svgIcon]="cancelIcon"
|
|
4503
|
+
(click)="handleEditingResult('cancel')"
|
|
4504
|
+
>
|
|
4505
|
+
{{ getText('cancelButtonText') }}
|
|
4506
|
+
</button>
|
|
4507
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4508
|
+
<button
|
|
4509
|
+
kendoButton
|
|
4510
|
+
themeColor="primary"
|
|
4511
|
+
fillMode="flat"
|
|
4512
|
+
icon="delete"
|
|
4513
|
+
[svgIcon]="deleteIcon"
|
|
4514
|
+
[kendoEventsOutsideAngular]="{
|
|
4515
|
+
click: handleTaskDelete
|
|
4516
|
+
}"
|
|
4517
|
+
[scope]="this"
|
|
4518
|
+
>
|
|
4519
|
+
{{ getText('deleteButtonText') }}
|
|
4520
|
+
</button>
|
|
4521
|
+
</kendo-dialog-actions>
|
|
4522
|
+
</kendo-dialog>
|
|
4523
|
+
`, 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"] }] });
|
|
4524
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EditDialogComponent, decorators: [{
|
|
4525
|
+
type: Component,
|
|
4526
|
+
args: [{
|
|
4527
|
+
selector: 'kendo-gantt-edit-dialog',
|
|
4528
|
+
template: `
|
|
4529
|
+
<kendo-dialog
|
|
4530
|
+
[title]="getText('taskEditingDialogTitle')"
|
|
4531
|
+
[width]="575"
|
|
4532
|
+
[height]="470"
|
|
4533
|
+
[autoFocusedElement]="'.k-actions .k-button-solid-primary'"
|
|
4534
|
+
(close)="handleEditingResult('cancel')">
|
|
4535
|
+
<kendo-dialog-messages
|
|
4536
|
+
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
|
|
4537
|
+
|
|
4538
|
+
<kendo-tabstrip [keepTabContent]="true" [style.height.px]="345">
|
|
4539
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingGeneralTabTitle')" [selected]="true">
|
|
4540
|
+
<ng-template kendoTabContent>
|
|
4541
|
+
<kendo-gantt-task-fields></kendo-gantt-task-fields>
|
|
4542
|
+
</ng-template>
|
|
4543
|
+
</kendo-tabstrip-tab>
|
|
4544
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingPredecessorsTabTitle')">
|
|
4545
|
+
<ng-template kendoTabContent>
|
|
4546
|
+
<kendo-gantt-dependencies-table
|
|
4547
|
+
[tasks]="loadedTasks"
|
|
4548
|
+
[(dependencies)]="predecessors"
|
|
4549
|
+
dependencyType="predecessor"
|
|
4550
|
+
>
|
|
4551
|
+
</kendo-gantt-dependencies-table>
|
|
4552
|
+
</ng-template>
|
|
4553
|
+
</kendo-tabstrip-tab>
|
|
4554
|
+
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
|
|
4555
|
+
<ng-template kendoTabContent>
|
|
4556
|
+
<kendo-gantt-dependencies-table
|
|
4557
|
+
[tasks]="loadedTasks"
|
|
4558
|
+
[(dependencies)]="successors"
|
|
4559
|
+
dependencyType="successor">
|
|
4560
|
+
</kendo-gantt-dependencies-table>
|
|
4561
|
+
</ng-template>
|
|
4562
|
+
</kendo-tabstrip-tab>
|
|
4563
|
+
</kendo-tabstrip>
|
|
4564
|
+
|
|
4565
|
+
<kendo-dialog-actions layout="start">
|
|
4566
|
+
<button
|
|
4567
|
+
kendoButton
|
|
4568
|
+
themeColor="primary"
|
|
4569
|
+
icon="save"
|
|
4570
|
+
[svgIcon]="saveIcon"
|
|
4571
|
+
(click)="handleEditingResult('save')"
|
|
4572
|
+
>
|
|
4573
|
+
{{ getText('saveButtonText') }}
|
|
4574
|
+
</button>
|
|
4575
|
+
<button
|
|
4576
|
+
kendoButton
|
|
4577
|
+
icon="cancel-outline"
|
|
4578
|
+
[svgIcon]="cancelIcon"
|
|
4579
|
+
(click)="handleEditingResult('cancel')"
|
|
4580
|
+
>
|
|
4581
|
+
{{ getText('cancelButtonText') }}
|
|
4582
|
+
</button>
|
|
4583
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4584
|
+
<button
|
|
4585
|
+
kendoButton
|
|
4586
|
+
themeColor="primary"
|
|
4587
|
+
fillMode="flat"
|
|
4588
|
+
icon="delete"
|
|
4589
|
+
[svgIcon]="deleteIcon"
|
|
4590
|
+
[kendoEventsOutsideAngular]="{
|
|
4591
|
+
click: handleTaskDelete
|
|
4592
|
+
}"
|
|
4593
|
+
[scope]="this"
|
|
4594
|
+
>
|
|
4595
|
+
{{ getText('deleteButtonText') }}
|
|
4596
|
+
</button>
|
|
4597
|
+
</kendo-dialog-actions>
|
|
4598
|
+
</kendo-dialog>
|
|
4599
|
+
`,
|
|
4600
|
+
standalone: true,
|
|
4601
|
+
imports: [DialogComponent, CustomMessagesComponent$1, TabStripComponent, TabStripTabComponent, TabContentDirective, TaskFieldsComponent, DependenciesTableComponent, DialogActionsComponent, ButtonComponent, TreeListSpacerComponent, EventsOutsideAngularDirective]
|
|
4602
|
+
}]
|
|
4603
|
+
}], ctorParameters: function () { return [{ type: MappingService }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: i1$1.LocalizationService }]; }, propDecorators: { data: [{
|
|
4449
4604
|
type: Input
|
|
4450
4605
|
}] } });
|
|
4451
4606
|
|
|
4452
4607
|
/**
|
|
4453
4608
|
* @hidden
|
|
4454
4609
|
*/
|
|
4455
|
-
class
|
|
4456
|
-
constructor(
|
|
4457
|
-
this.
|
|
4458
|
-
this.
|
|
4459
|
-
this.localizationService = localizationService;
|
|
4460
|
-
this.dependenciesChange = new EventEmitter();
|
|
4461
|
-
this.selectedKeys = [];
|
|
4462
|
-
this.formGroups = new FormArray([]);
|
|
4463
|
-
this.dependencyTypes = this.getDependencyTypes();
|
|
4464
|
-
this.plusIcon = plusIcon;
|
|
4465
|
-
this.minusIcon = minusIcon;
|
|
4466
|
-
}
|
|
4467
|
-
get taskId() {
|
|
4468
|
-
return this.editService.dataItem.id;
|
|
4469
|
-
}
|
|
4470
|
-
// The target dependency id field
|
|
4471
|
-
// e.g. if Predecessors, we have the `fromId` which is the currently edited task,
|
|
4472
|
-
// while the `toId` is missing (needs to be selected by the user)
|
|
4473
|
-
get dependencyIdField() {
|
|
4474
|
-
return this.dependencyType === 'predecessor' ? 'fromId' : 'toId';
|
|
4610
|
+
class ToolbarNavigationService {
|
|
4611
|
+
constructor(renderer) {
|
|
4612
|
+
this.renderer = renderer;
|
|
4613
|
+
this.focusIndex = 0;
|
|
4475
4614
|
}
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
const fields = this.mapper.dependencyFields;
|
|
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);
|
|
4615
|
+
updateFocus() {
|
|
4616
|
+
this.focusableContent.forEach(el => {
|
|
4617
|
+
this.renderer.setAttribute(el, 'tabindex', '-1');
|
|
4497
4618
|
});
|
|
4619
|
+
this.renderer.setAttribute(this.focusableContent[this.focusIndex], 'tabindex', '0');
|
|
4620
|
+
this.focusableContent[this.focusIndex].focus();
|
|
4498
4621
|
}
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4622
|
+
}
|
|
4623
|
+
ToolbarNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4624
|
+
ToolbarNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService });
|
|
4625
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarNavigationService, decorators: [{
|
|
4626
|
+
type: Injectable
|
|
4627
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
4628
|
+
|
|
4629
|
+
/**
|
|
4630
|
+
* The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
|
|
4631
|
+
*/
|
|
4632
|
+
class ViewSelectorComponent {
|
|
4633
|
+
constructor(localizationService) {
|
|
4634
|
+
this.localizationService = localizationService;
|
|
4635
|
+
this.hostClass = true;
|
|
4636
|
+
/**
|
|
4637
|
+
* The currently active view type.
|
|
4638
|
+
* @default 'week'
|
|
4639
|
+
*/
|
|
4640
|
+
this.activeView = 'week';
|
|
4641
|
+
/**
|
|
4642
|
+
* Fires each time the user selects a different view type. The event data contains the type of the newly selected view.
|
|
4643
|
+
*/
|
|
4644
|
+
this.activeViewChange = new EventEmitter();
|
|
4507
4645
|
}
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
};
|
|
4516
|
-
});
|
|
4517
|
-
return types;
|
|
4646
|
+
/**
|
|
4647
|
+
* @hidden
|
|
4648
|
+
*/
|
|
4649
|
+
onClick(viewType) {
|
|
4650
|
+
if (viewType !== this.activeView) {
|
|
4651
|
+
this.activeViewChange.emit(viewType);
|
|
4652
|
+
}
|
|
4518
4653
|
}
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
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);
|
|
4654
|
+
/**
|
|
4655
|
+
* @hidden
|
|
4656
|
+
*/
|
|
4657
|
+
getViewTypeText(viewType) {
|
|
4658
|
+
return this.localizationService.get(`${viewType}ViewText`);
|
|
4528
4659
|
}
|
|
4529
|
-
|
|
4530
|
-
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
this.
|
|
4660
|
+
/**
|
|
4661
|
+
* @hidden
|
|
4662
|
+
*/
|
|
4663
|
+
onActiveViewChange(event) {
|
|
4664
|
+
this.activeViewChange.emit(event.target.value);
|
|
4534
4665
|
}
|
|
4535
4666
|
}
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
<
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
[
|
|
4542
|
-
|
|
4543
|
-
[
|
|
4544
|
-
>
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
<button
|
|
4555
|
-
kendoButton
|
|
4556
|
-
icon="minus"
|
|
4557
|
-
[svgIcon]="minusIcon"
|
|
4558
|
-
[disabled]="selectedKeys.length === 0"
|
|
4559
|
-
(click)="removeHandler()"
|
|
4560
|
-
>
|
|
4561
|
-
{{ getText('taskEditingDependenciesRemoveButtonText') }}
|
|
4562
|
-
</button>
|
|
4563
|
-
</ng-template>
|
|
4564
|
-
<kendo-grid-column [title]="getText('taskEditingDependenciesGridNameColumnTitle')" [field]="dependencyIdField">
|
|
4565
|
-
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4566
|
-
<kendo-dropdownlist
|
|
4567
|
-
[data]="tasks"
|
|
4568
|
-
textField="title"
|
|
4569
|
-
valueField="id"
|
|
4570
|
-
[valuePrimitive]="true"
|
|
4571
|
-
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4572
|
-
>
|
|
4573
|
-
</kendo-dropdownlist>
|
|
4574
|
-
</ng-template>
|
|
4575
|
-
</kendo-grid-column>
|
|
4576
|
-
<kendo-grid-column [title]="getText('taskEditingDependenciesGridTypeColumnTitle')" field="type">
|
|
4577
|
-
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4578
|
-
<kendo-dropdownlist
|
|
4579
|
-
[data]="dependencyTypes"
|
|
4580
|
-
textField="type"
|
|
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: [{
|
|
4667
|
+
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 });
|
|
4668
|
+
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: `
|
|
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
|
+
`, 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"] }] });
|
|
4684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ViewSelectorComponent, decorators: [{
|
|
4591
4685
|
type: Component,
|
|
4592
4686
|
args: [{
|
|
4593
|
-
selector: 'kendo-gantt-
|
|
4687
|
+
selector: 'kendo-gantt-view-selector',
|
|
4594
4688
|
template: `
|
|
4595
|
-
<
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
[
|
|
4599
|
-
|
|
4600
|
-
[
|
|
4601
|
-
>
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
kendoButton
|
|
4613
|
-
icon="minus"
|
|
4614
|
-
[svgIcon]="minusIcon"
|
|
4615
|
-
[disabled]="selectedKeys.length === 0"
|
|
4616
|
-
(click)="removeHandler()"
|
|
4617
|
-
>
|
|
4618
|
-
{{ getText('taskEditingDependenciesRemoveButtonText') }}
|
|
4619
|
-
</button>
|
|
4620
|
-
</ng-template>
|
|
4621
|
-
<kendo-grid-column [title]="getText('taskEditingDependenciesGridNameColumnTitle')" [field]="dependencyIdField">
|
|
4622
|
-
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4623
|
-
<kendo-dropdownlist
|
|
4624
|
-
[data]="tasks"
|
|
4625
|
-
textField="title"
|
|
4626
|
-
valueField="id"
|
|
4627
|
-
[valuePrimitive]="true"
|
|
4628
|
-
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4629
|
-
>
|
|
4630
|
-
</kendo-dropdownlist>
|
|
4631
|
-
</ng-template>
|
|
4632
|
-
</kendo-grid-column>
|
|
4633
|
-
<kendo-grid-column [title]="getText('taskEditingDependenciesGridTypeColumnTitle')" field="type">
|
|
4634
|
-
<ng-template kendoGridCellTemplate let-dataItem="dataItem" let-column="column" let-rowIndex="rowIndex">
|
|
4635
|
-
<kendo-dropdownlist
|
|
4636
|
-
[data]="dependencyTypes"
|
|
4637
|
-
textField="type"
|
|
4638
|
-
valueField="id"
|
|
4639
|
-
[valuePrimitive]="true"
|
|
4640
|
-
[formControl]="getFormControl(rowIndex, column.field)"
|
|
4641
|
-
>
|
|
4642
|
-
</kendo-dropdownlist>
|
|
4643
|
-
</ng-template>
|
|
4644
|
-
</kendo-grid-column>
|
|
4645
|
-
</kendo-grid>
|
|
4646
|
-
`
|
|
4689
|
+
<select
|
|
4690
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
4691
|
+
aria-label="View Selector"
|
|
4692
|
+
[value]="activeView"
|
|
4693
|
+
(change)="onActiveViewChange($event)">
|
|
4694
|
+
<option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
|
|
4695
|
+
</select>
|
|
4696
|
+
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
4697
|
+
<button *ngFor="let view of views"
|
|
4698
|
+
kendoButton
|
|
4699
|
+
type="button"
|
|
4700
|
+
[selected]="view === activeView"
|
|
4701
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
4702
|
+
</kendo-buttongroup>
|
|
4703
|
+
`,
|
|
4704
|
+
standalone: true,
|
|
4705
|
+
imports: [NgFor, ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
|
|
4647
4706
|
}]
|
|
4648
|
-
}], ctorParameters: function () { return [{ type:
|
|
4649
|
-
type:
|
|
4650
|
-
|
|
4707
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
|
4708
|
+
type: HostBinding,
|
|
4709
|
+
args: ['class.k-gantt-views-wrapper']
|
|
4710
|
+
}], views: [{
|
|
4651
4711
|
type: Input
|
|
4652
|
-
}],
|
|
4712
|
+
}], activeView: [{
|
|
4653
4713
|
type: Input
|
|
4654
|
-
}],
|
|
4714
|
+
}], activeViewChange: [{
|
|
4655
4715
|
type: Output
|
|
4656
4716
|
}] } });
|
|
4657
4717
|
|
|
4658
4718
|
/**
|
|
4659
|
-
*
|
|
4719
|
+
* The UI for adding new items to the Gantt.
|
|
4720
|
+
* Use it within a toolbar template to provide a custom icon or list of options.
|
|
4660
4721
|
*/
|
|
4661
|
-
class
|
|
4662
|
-
constructor(
|
|
4663
|
-
this.mapper = mapper;
|
|
4664
|
-
this.editService = editService;
|
|
4722
|
+
class GanttAddTaskComponent {
|
|
4723
|
+
constructor(localizationService, editService, ngZone) {
|
|
4665
4724
|
this.localizationService = localizationService;
|
|
4725
|
+
this.editService = editService;
|
|
4726
|
+
this.ngZone = ngZone;
|
|
4727
|
+
/**
|
|
4728
|
+
* Sets the data of the DropDownButton.
|
|
4729
|
+
* > The data has to be provided in an array-like list.
|
|
4730
|
+
*/
|
|
4731
|
+
this.data = [{
|
|
4732
|
+
text: this.getText('addChildText'),
|
|
4733
|
+
type: 'addChild'
|
|
4734
|
+
}, {
|
|
4735
|
+
text: this.getText('addAboveText'),
|
|
4736
|
+
type: 'addAbove'
|
|
4737
|
+
}, {
|
|
4738
|
+
text: this.getText('addBelowText'),
|
|
4739
|
+
type: 'addBelow'
|
|
4740
|
+
}];
|
|
4741
|
+
/**
|
|
4742
|
+
* Defines the name of an existing icon in a Kendo UI theme.
|
|
4743
|
+
* @default 'plus'
|
|
4744
|
+
*/
|
|
4745
|
+
this.icon = 'plus';
|
|
4746
|
+
/**
|
|
4747
|
+
* Defines an [`SVGIcon`](slug:api_icons_svgicon) icon to be rendered inside the `GanttAddTaskComponent` using
|
|
4748
|
+
* a [`KendoSVGIcon`](slug:api_icons_svgiconcomponent) component.
|
|
4749
|
+
*/
|
|
4750
|
+
this.svgIcon = plusIcon;
|
|
4666
4751
|
}
|
|
4667
4752
|
/**
|
|
4668
4753
|
* @hidden
|
|
4669
4754
|
*/
|
|
4670
|
-
|
|
4671
|
-
return this.
|
|
4755
|
+
getText(message) {
|
|
4756
|
+
return this.localizationService.get(message);
|
|
4672
4757
|
}
|
|
4673
|
-
|
|
4674
|
-
|
|
4758
|
+
/**
|
|
4759
|
+
* @hidden
|
|
4760
|
+
*/
|
|
4761
|
+
handleOpen(e) {
|
|
4762
|
+
if (!this.editService.getSelectedItem()) {
|
|
4763
|
+
e.preventDefault();
|
|
4764
|
+
}
|
|
4765
|
+
}
|
|
4766
|
+
/**
|
|
4767
|
+
* @hidden
|
|
4768
|
+
*/
|
|
4769
|
+
handleMouseClick() {
|
|
4770
|
+
if (!this.editService.getSelectedItem()) {
|
|
4771
|
+
this.ngZone.run(() => {
|
|
4772
|
+
this.editService.addEvent.next({
|
|
4773
|
+
selectedItem: null,
|
|
4774
|
+
actionType: 'addTask'
|
|
4775
|
+
});
|
|
4776
|
+
});
|
|
4777
|
+
}
|
|
4778
|
+
}
|
|
4779
|
+
/**
|
|
4780
|
+
* @hidden
|
|
4781
|
+
*/
|
|
4782
|
+
handleItemClick(e) {
|
|
4783
|
+
this.editService.addEvent.next({
|
|
4784
|
+
actionType: e.type,
|
|
4785
|
+
selectedItem: null
|
|
4786
|
+
});
|
|
4675
4787
|
}
|
|
4676
4788
|
}
|
|
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: [{
|
|
4789
|
+
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 });
|
|
4790
|
+
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: `
|
|
4791
|
+
<kendo-dropdownbutton
|
|
4792
|
+
[data]="data"
|
|
4793
|
+
[icon]="icon"
|
|
4794
|
+
[svgIcon]="svgIcon"
|
|
4795
|
+
[kendoEventsOutsideAngular]="{ click: handleMouseClick }"
|
|
4796
|
+
[scope]="this"
|
|
4797
|
+
(itemClick)="handleItemClick($event)"
|
|
4798
|
+
(open)="handleOpen($event)">
|
|
4799
|
+
{{ getText('addTaskText') }}
|
|
4800
|
+
</kendo-dropdownbutton>
|
|
4801
|
+
`, 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"] }] });
|
|
4802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttAddTaskComponent, decorators: [{
|
|
4710
4803
|
type: Component,
|
|
4711
4804
|
args: [{
|
|
4712
|
-
selector: 'kendo-gantt-task
|
|
4805
|
+
selector: 'kendo-gantt-add-task',
|
|
4713
4806
|
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
|
-
`
|
|
4807
|
+
<kendo-dropdownbutton
|
|
4808
|
+
[data]="data"
|
|
4809
|
+
[icon]="icon"
|
|
4810
|
+
[svgIcon]="svgIcon"
|
|
4811
|
+
[kendoEventsOutsideAngular]="{ click: handleMouseClick }"
|
|
4812
|
+
[scope]="this"
|
|
4813
|
+
(itemClick)="handleItemClick($event)"
|
|
4814
|
+
(open)="handleOpen($event)">
|
|
4815
|
+
{{ getText('addTaskText') }}
|
|
4816
|
+
</kendo-dropdownbutton>
|
|
4817
|
+
`,
|
|
4818
|
+
standalone: true,
|
|
4819
|
+
imports: [DropDownButtonComponent, EventsOutsideAngularDirective]
|
|
4744
4820
|
}]
|
|
4745
|
-
}], ctorParameters: function () { return [{ type:
|
|
4821
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: EditService }, { type: i0.NgZone }]; }, propDecorators: { data: [{
|
|
4822
|
+
type: Input
|
|
4823
|
+
}], icon: [{
|
|
4824
|
+
type: Input
|
|
4825
|
+
}], svgIcon: [{
|
|
4826
|
+
type: Input
|
|
4827
|
+
}] } });
|
|
4746
4828
|
|
|
4747
4829
|
/**
|
|
4748
4830
|
* @hidden
|
|
4749
4831
|
*/
|
|
4750
|
-
class
|
|
4751
|
-
constructor(
|
|
4752
|
-
this.
|
|
4753
|
-
this.
|
|
4754
|
-
this.
|
|
4755
|
-
this.
|
|
4756
|
-
this.
|
|
4757
|
-
this.
|
|
4758
|
-
this.deleteIcon = trashIcon;
|
|
4832
|
+
class ToolbarComponent {
|
|
4833
|
+
constructor(hostEl, navigationService) {
|
|
4834
|
+
this.hostEl = hostEl;
|
|
4835
|
+
this.navigationService = navigationService;
|
|
4836
|
+
this.context = {};
|
|
4837
|
+
this.role = 'toolbar';
|
|
4838
|
+
this.toolbarSizingClass = true;
|
|
4839
|
+
this.activeViewChange = new EventEmitter();
|
|
4759
4840
|
}
|
|
4760
|
-
|
|
4761
|
-
|
|
4762
|
-
|
|
4763
|
-
|
|
4841
|
+
clickHandler(ev) {
|
|
4842
|
+
if (this.navigable) {
|
|
4843
|
+
const closestFocusable = closest(ev.target, isFocusable);
|
|
4844
|
+
const targetIndex = this.navigationService.focusableContent.indexOf(closestFocusable);
|
|
4845
|
+
if (targetIndex > -1) {
|
|
4846
|
+
this.navigationService.focusIndex = targetIndex;
|
|
4847
|
+
}
|
|
4848
|
+
this.navigationService.updateFocus();
|
|
4849
|
+
}
|
|
4764
4850
|
}
|
|
4765
|
-
|
|
4766
|
-
|
|
4851
|
+
arrowLeftListener() {
|
|
4852
|
+
if (this.navigable && isDocumentAvailable()) {
|
|
4853
|
+
this.navigationService.focusIndex--;
|
|
4854
|
+
if (this.navigationService.focusIndex < 0) {
|
|
4855
|
+
this.navigationService.focusIndex = this.navigationService.focusableContent.length - 1;
|
|
4856
|
+
}
|
|
4857
|
+
this.navigationService.updateFocus();
|
|
4858
|
+
}
|
|
4767
4859
|
}
|
|
4768
|
-
|
|
4769
|
-
this.
|
|
4860
|
+
arrowRightListener() {
|
|
4861
|
+
if (this.navigable && isDocumentAvailable()) {
|
|
4862
|
+
this.navigationService.focusIndex++;
|
|
4863
|
+
if (this.navigationService.focusIndex >= this.navigationService.focusableContent.length) {
|
|
4864
|
+
this.navigationService.focusIndex = 0;
|
|
4865
|
+
}
|
|
4866
|
+
this.navigationService.updateFocus();
|
|
4867
|
+
}
|
|
4770
4868
|
}
|
|
4771
|
-
|
|
4772
|
-
|
|
4869
|
+
set position(value) {
|
|
4870
|
+
this.context.position = this._position = value;
|
|
4773
4871
|
}
|
|
4774
|
-
|
|
4775
|
-
this.
|
|
4872
|
+
get position() {
|
|
4873
|
+
return this._position;
|
|
4776
4874
|
}
|
|
4777
|
-
|
|
4778
|
-
return this.
|
|
4875
|
+
get toolbarTemplateRef() {
|
|
4876
|
+
return this.toolbarTemplate ? this.toolbarTemplate.templateRef : undefined;
|
|
4779
4877
|
}
|
|
4780
|
-
|
|
4781
|
-
|
|
4878
|
+
get renderTemplate() {
|
|
4879
|
+
const ganttToolbarTemplate = this.toolbarTemplate;
|
|
4880
|
+
const templatePosition = ganttToolbarTemplate ? ganttToolbarTemplate.position : null;
|
|
4881
|
+
return ganttToolbarTemplate && (templatePosition === 'both' || templatePosition === this.position);
|
|
4782
4882
|
}
|
|
4783
|
-
|
|
4784
|
-
this.
|
|
4883
|
+
handleViewChange(view) {
|
|
4884
|
+
this.activeViewChange.emit(view);
|
|
4785
4885
|
}
|
|
4786
|
-
|
|
4787
|
-
|
|
4886
|
+
ngAfterViewInit() {
|
|
4887
|
+
if (isDocumentAvailable()) {
|
|
4888
|
+
const focusableElements = Array.from(this.hostEl.nativeElement.querySelectorAll(focusableSelector) || [])
|
|
4889
|
+
.filter(el => isVisible(el));
|
|
4890
|
+
if (focusableElements.length) {
|
|
4891
|
+
this.navigationService.focusableContent = focusableElements;
|
|
4892
|
+
}
|
|
4893
|
+
}
|
|
4788
4894
|
}
|
|
4789
4895
|
}
|
|
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: [{
|
|
4896
|
+
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 });
|
|
4897
|
+
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: `
|
|
4898
|
+
<ng-container *ngIf="!renderTemplate">
|
|
4899
|
+
<kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
|
|
4900
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
4901
|
+
<kendo-gantt-view-selector
|
|
4902
|
+
*ngIf="showViewSelector"
|
|
4903
|
+
[views]="views"
|
|
4904
|
+
[activeView]="activeView"
|
|
4905
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
4906
|
+
</ng-container>
|
|
4907
|
+
<ng-template
|
|
4908
|
+
*ngIf="renderTemplate"
|
|
4909
|
+
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
4910
|
+
[ngTemplateOutletContext]="context"
|
|
4911
|
+
>
|
|
4912
|
+
</ng-template>
|
|
4913
|
+
`, 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"] }] });
|
|
4914
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
4864
4915
|
type: Component,
|
|
4865
4916
|
args: [{
|
|
4866
|
-
selector: 'kendo-gantt-
|
|
4917
|
+
selector: 'kendo-gantt-toolbar',
|
|
4918
|
+
providers: [ToolbarNavigationService],
|
|
4867
4919
|
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
|
-
`
|
|
4920
|
+
<ng-container *ngIf="!renderTemplate">
|
|
4921
|
+
<kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
|
|
4922
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
4923
|
+
<kendo-gantt-view-selector
|
|
4924
|
+
*ngIf="showViewSelector"
|
|
4925
|
+
[views]="views"
|
|
4926
|
+
[activeView]="activeView"
|
|
4927
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
4928
|
+
</ng-container>
|
|
4929
|
+
<ng-template
|
|
4930
|
+
*ngIf="renderTemplate"
|
|
4931
|
+
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
4932
|
+
[ngTemplateOutletContext]="context"
|
|
4933
|
+
>
|
|
4934
|
+
</ng-template>
|
|
4935
|
+
`,
|
|
4936
|
+
standalone: true,
|
|
4937
|
+
imports: [NgIf, GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
|
|
4939
4938
|
}]
|
|
4940
|
-
}], ctorParameters: function () { return [{ type:
|
|
4939
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ToolbarNavigationService }]; }, propDecorators: { role: [{
|
|
4940
|
+
type: HostBinding,
|
|
4941
|
+
args: ['attr.role']
|
|
4942
|
+
}], toolbarSizingClass: [{
|
|
4943
|
+
type: HostBinding,
|
|
4944
|
+
args: ['class.k-toolbar-md']
|
|
4945
|
+
}], clickHandler: [{
|
|
4946
|
+
type: HostListener,
|
|
4947
|
+
args: ['click', ['$event']]
|
|
4948
|
+
}], arrowLeftListener: [{
|
|
4949
|
+
type: HostListener,
|
|
4950
|
+
args: ['keydown.arrowleft', ['$event']]
|
|
4951
|
+
}], arrowRightListener: [{
|
|
4952
|
+
type: HostListener,
|
|
4953
|
+
args: ['keydown.arrowright', ['$event']]
|
|
4954
|
+
}], activeViewChange: [{
|
|
4955
|
+
type: Output
|
|
4956
|
+
}], showAddTask: [{
|
|
4957
|
+
type: Input
|
|
4958
|
+
}], showViewSelector: [{
|
|
4959
|
+
type: Input
|
|
4960
|
+
}], views: [{
|
|
4961
|
+
type: Input
|
|
4962
|
+
}], activeView: [{
|
|
4963
|
+
type: Input
|
|
4964
|
+
}], toolbarTemplate: [{
|
|
4965
|
+
type: Input
|
|
4966
|
+
}], navigable: [{
|
|
4967
|
+
type: Input
|
|
4968
|
+
}], position: [{
|
|
4941
4969
|
type: Input
|
|
4942
4970
|
}] } });
|
|
4943
4971
|
|
|
@@ -5102,7 +5130,7 @@ class LocalizedMessagesDirective extends Messages {
|
|
|
5102
5130
|
}
|
|
5103
5131
|
}
|
|
5104
5132
|
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: [
|
|
5133
|
+
LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: LocalizedMessagesDirective, isStandalone: true, selector: "[kendoGanttLocalizedMessages]", providers: [
|
|
5106
5134
|
{
|
|
5107
5135
|
provide: Messages,
|
|
5108
5136
|
useExisting: forwardRef(() => LocalizedMessagesDirective)
|
|
@@ -5117,7 +5145,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
5117
5145
|
useExisting: forwardRef(() => LocalizedMessagesDirective)
|
|
5118
5146
|
}
|
|
5119
5147
|
],
|
|
5120
|
-
selector: '[kendoGanttLocalizedMessages]'
|
|
5148
|
+
selector: '[kendoGanttLocalizedMessages]',
|
|
5149
|
+
standalone: true
|
|
5121
5150
|
}]
|
|
5122
5151
|
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
|
|
5123
5152
|
|
|
@@ -6385,7 +6414,7 @@ class GanttComponent {
|
|
|
6385
6414
|
}
|
|
6386
6415
|
}
|
|
6387
6416
|
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: [
|
|
6417
|
+
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
6418
|
GanttLocalizationService,
|
|
6390
6419
|
LocalizationService,
|
|
6391
6420
|
{
|
|
@@ -6781,7 +6810,7 @@ GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
6781
6810
|
</kendo-dialog>
|
|
6782
6811
|
|
|
6783
6812
|
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
|
|
6784
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
6813
|
+
`, 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
6814
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttComponent, decorators: [{
|
|
6786
6815
|
type: Component,
|
|
6787
6816
|
args: [{
|
|
@@ -7184,7 +7213,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7184
7213
|
</kendo-dialog>
|
|
7185
7214
|
|
|
7186
7215
|
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
|
|
7187
|
-
|
|
7216
|
+
`,
|
|
7217
|
+
standalone: true,
|
|
7218
|
+
imports: [LocalizedMessagesDirective, NgIf, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
|
|
7188
7219
|
}]
|
|
7189
7220
|
}], 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
7221
|
type: ViewChild,
|
|
@@ -7278,252 +7309,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7278
7309
|
type: Input
|
|
7279
7310
|
}], taskClass: [{
|
|
7280
7311
|
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: [{
|
|
7312
|
+
}], rowClass: [{
|
|
7522
7313
|
type: Input
|
|
7523
|
-
}],
|
|
7524
|
-
type:
|
|
7525
|
-
}],
|
|
7314
|
+
}], isExpanded: [{
|
|
7315
|
+
type: Input
|
|
7316
|
+
}], columnsAutoSize: [{
|
|
7317
|
+
type: Input
|
|
7318
|
+
}], currentTimeMarker: [{
|
|
7319
|
+
type: Input
|
|
7320
|
+
}], columnMenu: [{
|
|
7321
|
+
type: Input
|
|
7322
|
+
}], columnsReorderable: [{
|
|
7323
|
+
type: Input
|
|
7324
|
+
}], columnsResizable: [{
|
|
7526
7325
|
type: Input
|
|
7326
|
+
}], dragScrollSettings: [{
|
|
7327
|
+
type: Input
|
|
7328
|
+
}], rowExpand: [{
|
|
7329
|
+
type: Output
|
|
7330
|
+
}], taskDblClick: [{
|
|
7331
|
+
type: Output
|
|
7332
|
+
}], cellDblClick: [{
|
|
7333
|
+
type: Output
|
|
7334
|
+
}], cellClose: [{
|
|
7335
|
+
type: Output
|
|
7336
|
+
}], taskDelete: [{
|
|
7337
|
+
type: Output
|
|
7338
|
+
}], rowCollapse: [{
|
|
7339
|
+
type: Output
|
|
7340
|
+
}], remove: [{
|
|
7341
|
+
type: Output
|
|
7342
|
+
}], cancel: [{
|
|
7343
|
+
type: Output
|
|
7344
|
+
}], save: [{
|
|
7345
|
+
type: Output
|
|
7346
|
+
}], taskAdd: [{
|
|
7347
|
+
type: Output
|
|
7348
|
+
}], dependencyAdd: [{
|
|
7349
|
+
type: Output
|
|
7350
|
+
}], sortChange: [{
|
|
7351
|
+
type: Output
|
|
7352
|
+
}], filterChange: [{
|
|
7353
|
+
type: Output
|
|
7354
|
+
}], dataStateChange: [{
|
|
7355
|
+
type: Output
|
|
7356
|
+
}], treeListPaneCollapsedChange: [{
|
|
7357
|
+
type: Output
|
|
7358
|
+
}], timelinePaneCollapsedChange: [{
|
|
7359
|
+
type: Output
|
|
7360
|
+
}], timelinePaneSizeChange: [{
|
|
7361
|
+
type: Output
|
|
7362
|
+
}], activeViewChange: [{
|
|
7363
|
+
type: Output
|
|
7364
|
+
}], columnResize: [{
|
|
7365
|
+
type: Output
|
|
7366
|
+
}], columnReorder: [{
|
|
7367
|
+
type: Output
|
|
7368
|
+
}], columnVisibilityChange: [{
|
|
7369
|
+
type: Output
|
|
7370
|
+
}], columnLockedChange: [{
|
|
7371
|
+
type: Output
|
|
7372
|
+
}], cellClick: [{
|
|
7373
|
+
type: Output
|
|
7374
|
+
}], taskClick: [{
|
|
7375
|
+
type: Output
|
|
7527
7376
|
}] } });
|
|
7528
7377
|
|
|
7529
7378
|
/**
|
|
@@ -7540,7 +7389,7 @@ class DragValidationTooltipComponent {
|
|
|
7540
7389
|
}
|
|
7541
7390
|
}
|
|
7542
7391
|
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: `
|
|
7392
|
+
DragValidationTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DragValidationTooltipComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
|
|
7544
7393
|
<div
|
|
7545
7394
|
class="k-tooltip k-gantt-tooltip-validation"
|
|
7546
7395
|
[class.k-gantt-tooltip-valid]="showValidityStatus && isValid"
|
|
@@ -7574,10 +7423,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7574
7423
|
<span class="k-gantt-tooltip-validation-value">{{ toTaskName }}</span>
|
|
7575
7424
|
</div>
|
|
7576
7425
|
</div>
|
|
7577
|
-
|
|
7426
|
+
`,
|
|
7427
|
+
standalone: true
|
|
7578
7428
|
}]
|
|
7579
7429
|
}] });
|
|
7580
7430
|
|
|
7431
|
+
/**
|
|
7432
|
+
* A directive which binds the Gantt to an array of objects by using
|
|
7433
|
+
* an ID and parent ID field to define the hierarchy.
|
|
7434
|
+
*
|
|
7435
|
+
* The directive encapsulates the in-memory handling of data operations such as sorting and filtering.
|
|
7436
|
+
*/
|
|
7437
|
+
class GanttFlatBindingDirective extends FlatBindingDirective {
|
|
7438
|
+
/**
|
|
7439
|
+
* @hidden
|
|
7440
|
+
*/
|
|
7441
|
+
set aggregate(value) {
|
|
7442
|
+
super.aggregate = value;
|
|
7443
|
+
}
|
|
7444
|
+
}
|
|
7445
|
+
GanttFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttFlatBindingDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7446
|
+
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 });
|
|
7447
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttFlatBindingDirective, decorators: [{
|
|
7448
|
+
type: Directive,
|
|
7449
|
+
args: [{
|
|
7450
|
+
selector: '[kendoGanttFlatBinding]',
|
|
7451
|
+
exportAs: 'kendoGanttFlatBinding',
|
|
7452
|
+
standalone: true
|
|
7453
|
+
}]
|
|
7454
|
+
}], propDecorators: { data: [{
|
|
7455
|
+
type: Input,
|
|
7456
|
+
args: ['kendoGanttFlatBinding']
|
|
7457
|
+
}] } });
|
|
7458
|
+
|
|
7459
|
+
/**
|
|
7460
|
+
* A directive which binds the Gantt to a tree of objects,
|
|
7461
|
+
* which encapsulates the in-memory handling of data operations such as sorting and filtering.
|
|
7462
|
+
*/
|
|
7463
|
+
class GanttHierarchyBindingDirective extends HierarchyBindingDirective {
|
|
7464
|
+
/**
|
|
7465
|
+
* @hidden
|
|
7466
|
+
*/
|
|
7467
|
+
set aggregate(value) {
|
|
7468
|
+
super.aggregate = value;
|
|
7469
|
+
}
|
|
7470
|
+
}
|
|
7471
|
+
GanttHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHierarchyBindingDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7472
|
+
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 });
|
|
7473
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttHierarchyBindingDirective, decorators: [{
|
|
7474
|
+
type: Directive,
|
|
7475
|
+
args: [{
|
|
7476
|
+
selector: '[kendoGanttHierarchyBinding]',
|
|
7477
|
+
exportAs: 'kendoGanttHierarchyBinding',
|
|
7478
|
+
standalone: true
|
|
7479
|
+
}]
|
|
7480
|
+
}], propDecorators: { data: [{
|
|
7481
|
+
type: Input,
|
|
7482
|
+
args: ['kendoGanttHierarchyBinding']
|
|
7483
|
+
}] } });
|
|
7484
|
+
|
|
7485
|
+
/**
|
|
7486
|
+
* A directive which controls the expanded state of the items.
|
|
7487
|
+
*/
|
|
7488
|
+
class GanttExpandableDirective extends ExpandableDirective {
|
|
7489
|
+
/**
|
|
7490
|
+
* Defines the item key that will be stored in the expandedKeys collection.
|
|
7491
|
+
* Defaults to the task data item ID field,
|
|
7492
|
+
* which is specified in the [`taskModelFields`]({% slug api_gantt_ganttcomponent %}#toc-taskmodelfields) object.
|
|
7493
|
+
*
|
|
7494
|
+
*/
|
|
7495
|
+
set expandBy(value) {
|
|
7496
|
+
super.expandBy = value;
|
|
7497
|
+
}
|
|
7498
|
+
}
|
|
7499
|
+
GanttExpandableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttExpandableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7500
|
+
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 });
|
|
7501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttExpandableDirective, decorators: [{
|
|
7502
|
+
type: Directive,
|
|
7503
|
+
args: [{
|
|
7504
|
+
exportAs: 'kendoGanttExpandable',
|
|
7505
|
+
selector: '[kendoGanttExpandable]',
|
|
7506
|
+
standalone: true
|
|
7507
|
+
}]
|
|
7508
|
+
}], propDecorators: { expandBy: [{
|
|
7509
|
+
type: Input
|
|
7510
|
+
}] } });
|
|
7511
|
+
|
|
7581
7512
|
/**
|
|
7582
7513
|
* When added to the .k-task-dot, the element will be kept with hover styles.
|
|
7583
7514
|
* Used for the drag clue from which the dragging has started.
|
|
@@ -7872,11 +7803,12 @@ class DependencyDragCreateDirective {
|
|
|
7872
7803
|
}
|
|
7873
7804
|
}
|
|
7874
7805
|
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 });
|
|
7806
|
+
DependencyDragCreateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DependencyDragCreateDirective, isStandalone: true, selector: "[kendoGanttDependencyDragCreate]", inputs: { displayValidationTooltip: "displayValidationTooltip" }, ngImport: i0 });
|
|
7876
7807
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DependencyDragCreateDirective, decorators: [{
|
|
7877
7808
|
type: Directive,
|
|
7878
7809
|
args: [{
|
|
7879
|
-
selector: '[kendoGanttDependencyDragCreate]'
|
|
7810
|
+
selector: '[kendoGanttDependencyDragCreate]',
|
|
7811
|
+
standalone: true
|
|
7880
7812
|
}]
|
|
7881
7813
|
}], ctorParameters: function () { return [{ type: GanttComponent }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: MappingService }, { type: i3.PopupService }, { type: TimelineScrollService }]; }, propDecorators: { displayValidationTooltip: [{
|
|
7882
7814
|
type: Input
|
|
@@ -7895,7 +7827,7 @@ class TimelineDayViewComponent extends ViewBase {
|
|
|
7895
7827
|
}
|
|
7896
7828
|
}
|
|
7897
7829
|
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: [
|
|
7830
|
+
TimelineDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineDayViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-day-view", providers: [
|
|
7899
7831
|
{
|
|
7900
7832
|
provide: ViewBase,
|
|
7901
7833
|
useExisting: forwardRef(() => TimelineDayViewComponent)
|
|
@@ -7911,7 +7843,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7911
7843
|
provide: ViewBase,
|
|
7912
7844
|
useExisting: forwardRef(() => TimelineDayViewComponent)
|
|
7913
7845
|
}
|
|
7914
|
-
]
|
|
7846
|
+
],
|
|
7847
|
+
standalone: true
|
|
7915
7848
|
}]
|
|
7916
7849
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
7917
7850
|
|
|
@@ -7928,7 +7861,7 @@ class TimelineWeekViewComponent extends ViewBase {
|
|
|
7928
7861
|
}
|
|
7929
7862
|
}
|
|
7930
7863
|
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: [
|
|
7864
|
+
TimelineWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineWeekViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-week-view", providers: [
|
|
7932
7865
|
{
|
|
7933
7866
|
provide: ViewBase,
|
|
7934
7867
|
useExisting: forwardRef(() => TimelineWeekViewComponent)
|
|
@@ -7944,7 +7877,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7944
7877
|
provide: ViewBase,
|
|
7945
7878
|
useExisting: forwardRef(() => TimelineWeekViewComponent)
|
|
7946
7879
|
}
|
|
7947
|
-
]
|
|
7880
|
+
],
|
|
7881
|
+
standalone: true
|
|
7948
7882
|
}]
|
|
7949
7883
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
7950
7884
|
|
|
@@ -7961,7 +7895,7 @@ class TimelineMonthViewComponent extends ViewBase {
|
|
|
7961
7895
|
}
|
|
7962
7896
|
}
|
|
7963
7897
|
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: [
|
|
7898
|
+
TimelineMonthViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineMonthViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-month-view", providers: [
|
|
7965
7899
|
{
|
|
7966
7900
|
provide: ViewBase,
|
|
7967
7901
|
useExisting: forwardRef(() => TimelineMonthViewComponent)
|
|
@@ -7977,7 +7911,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
7977
7911
|
provide: ViewBase,
|
|
7978
7912
|
useExisting: forwardRef(() => TimelineMonthViewComponent)
|
|
7979
7913
|
}
|
|
7980
|
-
]
|
|
7914
|
+
],
|
|
7915
|
+
standalone: true
|
|
7981
7916
|
}]
|
|
7982
7917
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
7983
7918
|
|
|
@@ -7994,7 +7929,7 @@ class TimelineYearViewComponent extends ViewBase {
|
|
|
7994
7929
|
}
|
|
7995
7930
|
}
|
|
7996
7931
|
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: [
|
|
7932
|
+
TimelineYearViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimelineYearViewComponent, isStandalone: true, selector: "kendo-gantt-timeline-year-view", providers: [
|
|
7998
7933
|
{
|
|
7999
7934
|
provide: ViewBase,
|
|
8000
7935
|
useExisting: forwardRef(() => TimelineYearViewComponent)
|
|
@@ -8010,10 +7945,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8010
7945
|
provide: ViewBase,
|
|
8011
7946
|
useExisting: forwardRef(() => TimelineYearViewComponent)
|
|
8012
7947
|
}
|
|
8013
|
-
]
|
|
7948
|
+
],
|
|
7949
|
+
standalone: true
|
|
8014
7950
|
}]
|
|
8015
7951
|
}], ctorParameters: function () { return [{ type: OptionChangesService }, { type: DependencyDomService }]; } });
|
|
8016
7952
|
|
|
7953
|
+
/**
|
|
7954
|
+
* A directive which handles the [`selectionChange`]({% slug api_gantt_ganttcomponent %}#toc-selectionchange) event of the Gantt
|
|
7955
|
+
* ([see example]({% slug selection_gantt %}#toc-built-in-directive))
|
|
7956
|
+
*/
|
|
7957
|
+
class SelectableDirective {
|
|
7958
|
+
constructor(gantt) {
|
|
7959
|
+
this.gantt = gantt;
|
|
7960
|
+
/**
|
|
7961
|
+
* Fires when the selected keys are changed.
|
|
7962
|
+
*/
|
|
7963
|
+
this.selectedKeysChange = new EventEmitter();
|
|
7964
|
+
this.state = new Set();
|
|
7965
|
+
this.isSelected = this.isSelected.bind(this);
|
|
7966
|
+
this.selectionChange = this.selectionChange.bind(this);
|
|
7967
|
+
this.selectable = true;
|
|
7968
|
+
}
|
|
7969
|
+
/**
|
|
7970
|
+
* @hidden
|
|
7971
|
+
*/
|
|
7972
|
+
set selectable(value) {
|
|
7973
|
+
if (value) {
|
|
7974
|
+
this.gantt.isSelected = this.isSelected;
|
|
7975
|
+
this.subscribeSelection();
|
|
7976
|
+
}
|
|
7977
|
+
else {
|
|
7978
|
+
this.gantt.isSelected = () => false;
|
|
7979
|
+
this.unsubscribeSelection();
|
|
7980
|
+
}
|
|
7981
|
+
this.gantt.selectable = value;
|
|
7982
|
+
this.gantt.updateView();
|
|
7983
|
+
}
|
|
7984
|
+
/**
|
|
7985
|
+
* Sets the selected keys.
|
|
7986
|
+
*/
|
|
7987
|
+
set selectedKeys(value) {
|
|
7988
|
+
if (isPresent(value) && value === this.lastChange) {
|
|
7989
|
+
return;
|
|
7990
|
+
}
|
|
7991
|
+
// prevent multiple items displayed as selected as multiple selection still not supported fully
|
|
7992
|
+
const keys = (value || []).slice(0, 1);
|
|
7993
|
+
this.state = new Set(keys);
|
|
7994
|
+
this.gantt.updateView();
|
|
7995
|
+
}
|
|
7996
|
+
/**
|
|
7997
|
+
* The field name or a function that specifies the data item unique key identifier.
|
|
7998
|
+
* By default, the string field `id` is used.
|
|
7999
|
+
*/
|
|
8000
|
+
set itemKey(value) {
|
|
8001
|
+
if (isString(value)) {
|
|
8002
|
+
this._keyGetter = getter(value);
|
|
8003
|
+
}
|
|
8004
|
+
else {
|
|
8005
|
+
this._keyGetter = value;
|
|
8006
|
+
}
|
|
8007
|
+
}
|
|
8008
|
+
get keyGetter() {
|
|
8009
|
+
return this._keyGetter || this.gantt.idGetter;
|
|
8010
|
+
}
|
|
8011
|
+
ngOnDestroy() {
|
|
8012
|
+
this.unsubscribeSelection();
|
|
8013
|
+
}
|
|
8014
|
+
isSelected(dataItem) {
|
|
8015
|
+
return this.state.has(this.keyGetter(dataItem));
|
|
8016
|
+
}
|
|
8017
|
+
selectionChange({ action, items }) {
|
|
8018
|
+
this.state.clear();
|
|
8019
|
+
if (action === 'select') {
|
|
8020
|
+
items.forEach(item => this.state.add(this.keyGetter(item)));
|
|
8021
|
+
}
|
|
8022
|
+
this.emitSelectedItemsChange();
|
|
8023
|
+
}
|
|
8024
|
+
emitSelectedItemsChange() {
|
|
8025
|
+
this.lastChange = Array.from(this.state);
|
|
8026
|
+
this.selectedKeysChange.emit(this.lastChange);
|
|
8027
|
+
}
|
|
8028
|
+
subscribeSelection() {
|
|
8029
|
+
this.unsubscribeSelection();
|
|
8030
|
+
this.selectionSubscription = this.gantt.selectionChange.subscribe(this.selectionChange);
|
|
8031
|
+
}
|
|
8032
|
+
unsubscribeSelection() {
|
|
8033
|
+
if (this.selectionSubscription) {
|
|
8034
|
+
this.selectionSubscription.unsubscribe();
|
|
8035
|
+
this.selectionSubscription = null;
|
|
8036
|
+
}
|
|
8037
|
+
}
|
|
8038
|
+
}
|
|
8039
|
+
SelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectableDirective, deps: [{ token: GanttComponent }], target: i0.ɵɵFactoryTarget.Directive });
|
|
8040
|
+
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 });
|
|
8041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectableDirective, decorators: [{
|
|
8042
|
+
type: Directive,
|
|
8043
|
+
args: [{
|
|
8044
|
+
exportAs: 'kendoGanttSelectable',
|
|
8045
|
+
selector: '[kendoGanttSelectable]',
|
|
8046
|
+
standalone: true
|
|
8047
|
+
}]
|
|
8048
|
+
}], ctorParameters: function () { return [{ type: GanttComponent }]; }, propDecorators: { selectable: [{
|
|
8049
|
+
type: Input
|
|
8050
|
+
}], selectedKeys: [{
|
|
8051
|
+
type: Input
|
|
8052
|
+
}], selectedKeysChange: [{
|
|
8053
|
+
type: Output
|
|
8054
|
+
}], itemKey: [{
|
|
8055
|
+
type: Input
|
|
8056
|
+
}] } });
|
|
8057
|
+
|
|
8017
8058
|
/**
|
|
8018
8059
|
* Custom component messages override default component messages
|
|
8019
8060
|
* ([see example](slug:globalization_treelist#toc-custom-messages)).
|
|
@@ -8028,7 +8069,7 @@ class CustomMessagesComponent extends Messages {
|
|
|
8028
8069
|
}
|
|
8029
8070
|
}
|
|
8030
8071
|
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: [
|
|
8072
|
+
CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomMessagesComponent, isStandalone: true, selector: "kendo-gantt-messages", providers: [
|
|
8032
8073
|
{
|
|
8033
8074
|
provide: Messages,
|
|
8034
8075
|
useExisting: forwardRef(() => CustomMessagesComponent)
|
|
@@ -8044,74 +8085,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8044
8085
|
}
|
|
8045
8086
|
],
|
|
8046
8087
|
selector: 'kendo-gantt-messages',
|
|
8047
|
-
template:
|
|
8088
|
+
template: ``,
|
|
8089
|
+
standalone: true
|
|
8048
8090
|
}]
|
|
8049
8091
|
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
|
|
8050
8092
|
|
|
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 = [
|
|
8093
|
+
/**
|
|
8094
|
+
* Utility array that contains all `@progress/kendo-angular-gantt` related components and directives
|
|
8095
|
+
*/
|
|
8096
|
+
const KENDO_GANTT = [
|
|
8073
8097
|
GanttComponent,
|
|
8074
8098
|
GanttFlatBindingDirective,
|
|
8075
8099
|
GanttHierarchyBindingDirective,
|
|
8076
|
-
GanttTaskComponent,
|
|
8077
|
-
GanttSummaryTaskComponent,
|
|
8078
|
-
GanttMilestoneTaskComponent,
|
|
8079
|
-
GanttTimelineComponent,
|
|
8080
|
-
GanttTasksTableBodyComponent,
|
|
8081
|
-
GanttHeaderTableBodyComponent,
|
|
8082
8100
|
GanttTaskContentTemplateDirective,
|
|
8083
8101
|
GanttTaskTemplateDirective,
|
|
8084
8102
|
GanttSummaryTaskTemplateDirective,
|
|
8085
8103
|
ToolbarTemplateDirective,
|
|
8086
|
-
ToolbarComponent,
|
|
8087
8104
|
ViewSelectorComponent,
|
|
8088
8105
|
GanttColumnComponent,
|
|
8089
8106
|
GanttColumnGroupComponent,
|
|
8090
8107
|
GanttSpanColumnComponent,
|
|
8091
|
-
FilterMenuTemplateDirective,
|
|
8092
8108
|
FilterCellTemplateDirective,
|
|
8109
|
+
FilterMenuTemplateDirective,
|
|
8093
8110
|
CellTemplateDirective,
|
|
8094
8111
|
EditTemplateDirective,
|
|
8095
8112
|
ColumnMenuTemplateDirective,
|
|
8096
8113
|
HeaderTemplateDirective,
|
|
8097
8114
|
FooterTemplateDirective,
|
|
8098
8115
|
GanttExpandableDirective,
|
|
8099
|
-
GanttDependencyDirective,
|
|
8100
8116
|
DependencyDragCreateDirective,
|
|
8101
8117
|
TimelineDayViewComponent,
|
|
8102
8118
|
TimelineWeekViewComponent,
|
|
8103
8119
|
TimelineMonthViewComponent,
|
|
8104
8120
|
TimelineYearViewComponent,
|
|
8105
8121
|
SelectableDirective,
|
|
8106
|
-
EditDialogComponent,
|
|
8107
8122
|
CustomMessagesComponent,
|
|
8108
|
-
|
|
8109
|
-
GanttAddTaskComponent,
|
|
8110
|
-
DragValidationTooltipComponent,
|
|
8111
|
-
TimelineScrollableDirective,
|
|
8112
|
-
DependenciesTableComponent,
|
|
8113
|
-
TaskFieldsComponent
|
|
8123
|
+
GanttAddTaskComponent
|
|
8114
8124
|
];
|
|
8125
|
+
|
|
8126
|
+
// IMPORTANT: NgModule export kept for backwards compatibility
|
|
8115
8127
|
/**
|
|
8116
8128
|
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
8117
8129
|
* definition for the Gantt component.
|
|
@@ -8146,118 +8158,44 @@ const DECLARATIONS = [
|
|
|
8146
8158
|
class GanttModule {
|
|
8147
8159
|
}
|
|
8148
8160
|
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] });
|
|
8161
|
+
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
8162
|
GanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttModule, providers: [{
|
|
8249
8163
|
provide: L10N_PREFIX,
|
|
8250
8164
|
useValue: 'kendo.gantt'
|
|
8251
8165
|
}, {
|
|
8252
8166
|
provide: TOUCH_ENABLED,
|
|
8253
8167
|
useValue: touchEnabled
|
|
8254
|
-
}
|
|
8168
|
+
},
|
|
8169
|
+
// InputsModule providers
|
|
8170
|
+
IconsService,
|
|
8171
|
+
PopupService,
|
|
8172
|
+
ResizeBatchService,
|
|
8173
|
+
DialogContainerService,
|
|
8174
|
+
DialogService,
|
|
8175
|
+
WindowService,
|
|
8176
|
+
WindowContainerService,
|
|
8177
|
+
// DateInputsModule providers
|
|
8178
|
+
CalendarDOMService,
|
|
8179
|
+
CenturyViewService,
|
|
8180
|
+
DecadeViewService,
|
|
8181
|
+
MonthViewService,
|
|
8182
|
+
YearViewService,
|
|
8183
|
+
WeekNamesService,
|
|
8184
|
+
NavigationService$1,
|
|
8185
|
+
TimePickerDOMService,
|
|
8186
|
+
HoursService,
|
|
8187
|
+
MinutesService,
|
|
8188
|
+
SecondsService,
|
|
8189
|
+
MillisecondsService,
|
|
8190
|
+
DayPeriodService,
|
|
8191
|
+
// TreeListModule providers
|
|
8192
|
+
ColumnResizingService
|
|
8193
|
+
], imports: [GanttComponent, ViewSelectorComponent, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, TimelineDayViewComponent, TimelineWeekViewComponent, TimelineMonthViewComponent, TimelineYearViewComponent, CustomMessagesComponent, GanttAddTaskComponent] });
|
|
8255
8194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GanttModule, decorators: [{
|
|
8256
8195
|
type: NgModule,
|
|
8257
8196
|
args: [{
|
|
8258
|
-
imports: [...
|
|
8259
|
-
|
|
8260
|
-
exports: [...DECLARATIONS],
|
|
8197
|
+
imports: [...KENDO_GANTT],
|
|
8198
|
+
exports: [...KENDO_GANTT],
|
|
8261
8199
|
entryComponents: [DragValidationTooltipComponent],
|
|
8262
8200
|
providers: [{
|
|
8263
8201
|
provide: L10N_PREFIX,
|
|
@@ -8265,7 +8203,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8265
8203
|
}, {
|
|
8266
8204
|
provide: TOUCH_ENABLED,
|
|
8267
8205
|
useValue: touchEnabled
|
|
8268
|
-
}
|
|
8206
|
+
},
|
|
8207
|
+
// InputsModule providers
|
|
8208
|
+
IconsService,
|
|
8209
|
+
PopupService,
|
|
8210
|
+
ResizeBatchService,
|
|
8211
|
+
DialogContainerService,
|
|
8212
|
+
DialogService,
|
|
8213
|
+
WindowService,
|
|
8214
|
+
WindowContainerService,
|
|
8215
|
+
// DateInputsModule providers
|
|
8216
|
+
CalendarDOMService,
|
|
8217
|
+
CenturyViewService,
|
|
8218
|
+
DecadeViewService,
|
|
8219
|
+
MonthViewService,
|
|
8220
|
+
YearViewService,
|
|
8221
|
+
WeekNamesService,
|
|
8222
|
+
NavigationService$1,
|
|
8223
|
+
TimePickerDOMService,
|
|
8224
|
+
HoursService,
|
|
8225
|
+
MinutesService,
|
|
8226
|
+
SecondsService,
|
|
8227
|
+
MillisecondsService,
|
|
8228
|
+
DayPeriodService,
|
|
8229
|
+
// TreeListModule providers
|
|
8230
|
+
ColumnResizingService
|
|
8231
|
+
]
|
|
8269
8232
|
}]
|
|
8270
8233
|
}] });
|
|
8271
8234
|
|
|
@@ -8273,5 +8236,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
8273
8236
|
* Generated bundle index. Do not edit.
|
|
8274
8237
|
*/
|
|
8275
8238
|
|
|
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 };
|
|
8239
|
+
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
8240
|
|