@progress/kendo-angular-gantt 21.1.1-develop.2 → 21.2.0-develop.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/editing/task-fields.component.mjs +70 -55
- package/esm2022/gantt.component.mjs +562 -547
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/rendering/gantt-header-table-body.component.mjs +21 -10
- package/esm2022/rendering/gantt-milestone-task.component.mjs +43 -43
- package/esm2022/rendering/gantt-summary-task.component.mjs +79 -77
- package/esm2022/rendering/gantt-task.component.mjs +131 -127
- package/esm2022/rendering/gantt-tasks-table-body.component.mjs +86 -79
- package/esm2022/timeline/gantt-timeline.component.mjs +292 -270
- package/esm2022/toolbar/toolbar.component.mjs +35 -27
- package/esm2022/toolbar/view-selector.component.mjs +32 -25
- package/fesm2022/progress-kendo-angular-gantt.mjs +1355 -1259
- package/package.json +17 -17
- package/rendering/gantt-header-table-body.component.d.ts +1 -0
- package/schematics/ngAdd/index.js +7 -7
- package/timeline/gantt-timeline.component.d.ts +1 -0
|
@@ -8,14 +8,14 @@ import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent,
|
|
|
8
8
|
import { cloneDate, addWeeks, firstDayInWeek, addDays, lastDayOfMonth, getDate, firstDayOfMonth, addMonths, lastMonthOfYear, MS_PER_HOUR, MS_PER_DAY, isEqual } from '@progress/kendo-date-math';
|
|
9
9
|
import { Subject, Subscription, fromEvent, forkJoin, EMPTY, isObservable, of } from 'rxjs';
|
|
10
10
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
11
|
-
import { Keys, isDocumentAvailable, closestInScope, matchesClasses, isPresent as isPresent$1, EventsOutsideAngularDirective, DraggableDirective, PreventableEvent, anyChanged, closest, isFocusable, focusableSelector, isVisible, getLicenseMessage, shouldShowValidationUI, hasObservers,
|
|
11
|
+
import { Keys, isDocumentAvailable, closestInScope, matchesClasses, isPresent as isPresent$1, EventsOutsideAngularDirective, DraggableDirective, PreventableEvent, anyChanged, closest, isFocusable, focusableSelector, isVisible, getLicenseMessage, shouldShowValidationUI, hasObservers, normalizeKeys, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
12
12
|
import { map, distinctUntilChanged, take, switchMap, expand, reduce, filter } from 'rxjs/operators';
|
|
13
13
|
import { getter, touchEnabled } from '@progress/kendo-common';
|
|
14
14
|
import * as i1 from '@progress/kendo-angular-intl';
|
|
15
15
|
import { DatePipe, NumberPipe } from '@progress/kendo-angular-intl';
|
|
16
16
|
import { orderBy } from '@progress/kendo-data-query';
|
|
17
17
|
import { xIcon, plusIcon, minusIcon, saveIcon, cancelOutlineIcon, trashIcon } from '@progress/kendo-svg-icons';
|
|
18
|
-
import { NgClass,
|
|
18
|
+
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
19
19
|
import { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
|
|
20
20
|
import * as i6 from '@progress/kendo-angular-tooltip';
|
|
21
21
|
import { TooltipDirective, KENDO_TOOLTIP } from '@progress/kendo-angular-tooltip';
|
|
@@ -44,8 +44,8 @@ const packageMetadata = {
|
|
|
44
44
|
productName: 'Kendo UI for Angular',
|
|
45
45
|
productCode: 'KENDOUIANGULAR',
|
|
46
46
|
productCodes: ['KENDOUIANGULAR'],
|
|
47
|
-
publishDate:
|
|
48
|
-
version: '21.
|
|
47
|
+
publishDate: 1764593172,
|
|
48
|
+
version: '21.2.0-develop.10',
|
|
49
49
|
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'
|
|
50
50
|
};
|
|
51
51
|
|
|
@@ -2296,88 +2296,90 @@ class GanttTaskComponent extends GanttTaskBase {
|
|
|
2296
2296
|
this.editService.taskDelete.next(this.dataItem);
|
|
2297
2297
|
}
|
|
2298
2298
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTaskComponent, deps: [{ token: EditService }, { token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2299
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2299
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttTaskComponent, isStandalone: true, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
|
|
2300
2300
|
{
|
|
2301
2301
|
provide: GanttTaskBase,
|
|
2302
2302
|
useExisting: forwardRef(() => GanttTaskComponent)
|
|
2303
2303
|
}
|
|
2304
2304
|
], usesInheritance: true, ngImport: i0, template: `
|
|
2305
2305
|
<div
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2306
|
+
#task
|
|
2307
|
+
class="k-task k-task-single"
|
|
2308
|
+
role="treeitem"
|
|
2309
|
+
[ngClass]="taskClass(dataItem)"
|
|
2310
|
+
[style.width.px]="taskWidth"
|
|
2311
|
+
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
2312
|
+
[class.k-selected]="isSelected(dataItem)"
|
|
2313
|
+
[attr.aria-selected]="ariaSelected"
|
|
2314
|
+
[attr.aria-level]="level + 1"
|
|
2315
|
+
>
|
|
2316
|
+
@if (!taskTemplate) {
|
|
2317
|
+
<div
|
|
2318
|
+
class="k-task-complete"
|
|
2319
|
+
[style.width.px]="draggedCompletionWidth ?? completionOverlayWidth"
|
|
2320
|
+
aria-hidden="true"
|
|
2321
|
+
>
|
|
2322
|
+
</div>
|
|
2323
|
+
<div class="k-task-content">
|
|
2324
|
+
<div class="k-task-template">
|
|
2325
|
+
@if (!taskContentTemplate) {
|
|
2326
|
+
{{ mapper.extractFromTask(dataItem, 'title') }}
|
|
2327
|
+
} @else {
|
|
2328
|
+
<ng-template
|
|
2329
|
+
[ngTemplateOutlet]="taskContentTemplate"
|
|
2330
|
+
[ngTemplateOutletContext]="{ $implicit: dataItem }"
|
|
2331
|
+
></ng-template>
|
|
2332
|
+
}
|
|
2333
|
+
</div>
|
|
2334
|
+
<span
|
|
2335
|
+
class="k-task-actions"
|
|
2336
|
+
aria-hidden="true"
|
|
2321
2337
|
>
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
<div class="k-task-template">
|
|
2325
|
-
<ng-container *ngIf="!taskContentTemplate; else taskContent">
|
|
2326
|
-
{{ mapper.extractFromTask(dataItem, 'title') }}
|
|
2327
|
-
</ng-container>
|
|
2328
|
-
<ng-template
|
|
2329
|
-
#taskContent
|
|
2330
|
-
[ngTemplateOutlet]="taskContentTemplate"
|
|
2331
|
-
[ngTemplateOutletContext]="{ $implicit: dataItem }"
|
|
2332
|
-
>
|
|
2333
|
-
</ng-template>
|
|
2334
|
-
</div>
|
|
2335
|
-
<span
|
|
2336
|
-
class="k-task-actions"
|
|
2337
|
-
aria-hidden="true"
|
|
2338
|
-
>
|
|
2339
|
-
<span
|
|
2340
|
-
class="k-link k-task-delete"
|
|
2338
|
+
<span
|
|
2339
|
+
class="k-link k-task-delete"
|
|
2341
2340
|
[kendoEventsOutsideAngular]="{
|
|
2342
2341
|
click: onTaskDelete
|
|
2343
2342
|
}"
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2343
|
+
[scope]="this"
|
|
2344
|
+
>
|
|
2345
|
+
<kendo-icon-wrapper
|
|
2346
|
+
icon="x"
|
|
2347
|
+
[svgIcon]="xIcon"></kendo-icon-wrapper>
|
|
2348
|
+
</span>
|
|
2349
|
+
</span>
|
|
2350
|
+
@if (showDragHandles) {
|
|
2351
|
+
<span class="k-resize-handle k-resize-w"></span>
|
|
2352
|
+
<span class="k-resize-handle k-resize-e"></span>
|
|
2353
|
+
}
|
|
2354
|
+
</div>
|
|
2355
|
+
}
|
|
2356
|
+
@if (taskTemplate) {
|
|
2357
2357
|
<ng-template
|
|
2358
|
-
|
|
2359
|
-
[ngTemplateOutlet]="taskTemplate"
|
|
2358
|
+
[ngTemplateOutlet]="taskTemplate"
|
|
2360
2359
|
[ngTemplateOutletContext]="{
|
|
2361
2360
|
$implicit: dataItem,
|
|
2362
2361
|
elementWidth: taskWidth
|
|
2363
2362
|
}"
|
|
2364
2363
|
></ng-template>
|
|
2364
|
+
}
|
|
2365
2365
|
</div>
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2366
|
+
@if (showDragHandles) {
|
|
2367
|
+
<div class="k-task-draghandle"
|
|
2368
|
+
[style.left.px]="draggedCompletionWidth ?? completionOverlayWidth"></div>
|
|
2369
|
+
}
|
|
2370
|
+
@if (renderDependencyDragClues) {
|
|
2371
|
+
<div
|
|
2372
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
2373
|
+
[class.k-display-block]="touchEnabled"
|
|
2372
2374
|
>
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2375
|
+
</div>
|
|
2376
|
+
<div
|
|
2377
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
2378
|
+
[class.k-display-block]="touchEnabled"
|
|
2377
2379
|
>
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2380
|
+
</div>
|
|
2381
|
+
}
|
|
2382
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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"] }] });
|
|
2381
2383
|
}
|
|
2382
2384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTaskComponent, decorators: [{
|
|
2383
2385
|
type: Component,
|
|
@@ -2391,83 +2393,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2391
2393
|
],
|
|
2392
2394
|
template: `
|
|
2393
2395
|
<div
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2396
|
+
#task
|
|
2397
|
+
class="k-task k-task-single"
|
|
2398
|
+
role="treeitem"
|
|
2399
|
+
[ngClass]="taskClass(dataItem)"
|
|
2400
|
+
[style.width.px]="taskWidth"
|
|
2401
|
+
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
2402
|
+
[class.k-selected]="isSelected(dataItem)"
|
|
2403
|
+
[attr.aria-selected]="ariaSelected"
|
|
2404
|
+
[attr.aria-level]="level + 1"
|
|
2405
|
+
>
|
|
2406
|
+
@if (!taskTemplate) {
|
|
2407
|
+
<div
|
|
2408
|
+
class="k-task-complete"
|
|
2409
|
+
[style.width.px]="draggedCompletionWidth ?? completionOverlayWidth"
|
|
2410
|
+
aria-hidden="true"
|
|
2411
|
+
>
|
|
2412
|
+
</div>
|
|
2413
|
+
<div class="k-task-content">
|
|
2414
|
+
<div class="k-task-template">
|
|
2415
|
+
@if (!taskContentTemplate) {
|
|
2416
|
+
{{ mapper.extractFromTask(dataItem, 'title') }}
|
|
2417
|
+
} @else {
|
|
2418
|
+
<ng-template
|
|
2419
|
+
[ngTemplateOutlet]="taskContentTemplate"
|
|
2420
|
+
[ngTemplateOutletContext]="{ $implicit: dataItem }"
|
|
2421
|
+
></ng-template>
|
|
2422
|
+
}
|
|
2423
|
+
</div>
|
|
2424
|
+
<span
|
|
2425
|
+
class="k-task-actions"
|
|
2426
|
+
aria-hidden="true"
|
|
2409
2427
|
>
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
<div class="k-task-template">
|
|
2413
|
-
<ng-container *ngIf="!taskContentTemplate; else taskContent">
|
|
2414
|
-
{{ mapper.extractFromTask(dataItem, 'title') }}
|
|
2415
|
-
</ng-container>
|
|
2416
|
-
<ng-template
|
|
2417
|
-
#taskContent
|
|
2418
|
-
[ngTemplateOutlet]="taskContentTemplate"
|
|
2419
|
-
[ngTemplateOutletContext]="{ $implicit: dataItem }"
|
|
2420
|
-
>
|
|
2421
|
-
</ng-template>
|
|
2422
|
-
</div>
|
|
2423
|
-
<span
|
|
2424
|
-
class="k-task-actions"
|
|
2425
|
-
aria-hidden="true"
|
|
2426
|
-
>
|
|
2427
|
-
<span
|
|
2428
|
-
class="k-link k-task-delete"
|
|
2428
|
+
<span
|
|
2429
|
+
class="k-link k-task-delete"
|
|
2429
2430
|
[kendoEventsOutsideAngular]="{
|
|
2430
2431
|
click: onTaskDelete
|
|
2431
2432
|
}"
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2433
|
+
[scope]="this"
|
|
2434
|
+
>
|
|
2435
|
+
<kendo-icon-wrapper
|
|
2436
|
+
icon="x"
|
|
2437
|
+
[svgIcon]="xIcon"></kendo-icon-wrapper>
|
|
2438
|
+
</span>
|
|
2439
|
+
</span>
|
|
2440
|
+
@if (showDragHandles) {
|
|
2441
|
+
<span class="k-resize-handle k-resize-w"></span>
|
|
2442
|
+
<span class="k-resize-handle k-resize-e"></span>
|
|
2443
|
+
}
|
|
2444
|
+
</div>
|
|
2445
|
+
}
|
|
2446
|
+
@if (taskTemplate) {
|
|
2445
2447
|
<ng-template
|
|
2446
|
-
|
|
2447
|
-
[ngTemplateOutlet]="taskTemplate"
|
|
2448
|
+
[ngTemplateOutlet]="taskTemplate"
|
|
2448
2449
|
[ngTemplateOutletContext]="{
|
|
2449
2450
|
$implicit: dataItem,
|
|
2450
2451
|
elementWidth: taskWidth
|
|
2451
2452
|
}"
|
|
2452
2453
|
></ng-template>
|
|
2454
|
+
}
|
|
2453
2455
|
</div>
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2456
|
+
@if (showDragHandles) {
|
|
2457
|
+
<div class="k-task-draghandle"
|
|
2458
|
+
[style.left.px]="draggedCompletionWidth ?? completionOverlayWidth"></div>
|
|
2459
|
+
}
|
|
2460
|
+
@if (renderDependencyDragClues) {
|
|
2461
|
+
<div
|
|
2462
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
2463
|
+
[class.k-display-block]="touchEnabled"
|
|
2460
2464
|
>
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
+
</div>
|
|
2466
|
+
<div
|
|
2467
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
2468
|
+
[class.k-display-block]="touchEnabled"
|
|
2465
2469
|
>
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2470
|
+
</div>
|
|
2471
|
+
}
|
|
2472
|
+
`,
|
|
2469
2473
|
standalone: true,
|
|
2470
|
-
imports: [NgClass,
|
|
2474
|
+
imports: [NgClass, NgTemplateOutlet, EventsOutsideAngularDirective, IconWrapperComponent]
|
|
2471
2475
|
}]
|
|
2472
2476
|
}], ctorParameters: () => [{ type: EditService }, { type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }], propDecorators: { taskContentTemplate: [{
|
|
2473
2477
|
type: Input
|
|
@@ -2493,56 +2497,57 @@ class GanttSummaryTaskComponent extends GanttTaskBase {
|
|
|
2493
2497
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
|
|
2494
2498
|
}
|
|
2495
2499
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2496
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2500
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttSummaryTaskComponent, isStandalone: true, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
|
|
2497
2501
|
{
|
|
2498
2502
|
provide: GanttTaskBase,
|
|
2499
2503
|
useExisting: forwardRef(() => GanttSummaryTaskComponent)
|
|
2500
2504
|
}
|
|
2501
2505
|
], usesInheritance: true, ngImport: i0, template: `
|
|
2502
2506
|
<div
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2507
|
+
#task
|
|
2508
|
+
role="treeitem"
|
|
2509
|
+
class="k-task k-task-summary"
|
|
2510
|
+
[ngClass]="taskClass(dataItem)"
|
|
2511
|
+
[style.width.px]="taskWidth"
|
|
2512
|
+
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
2513
|
+
[class.k-selected]="isSelected(dataItem)"
|
|
2514
|
+
[attr.aria-selected]="ariaSelected"
|
|
2515
|
+
[attr.aria-expanded]="ariaExpanded"
|
|
2516
|
+
[attr.aria-level]="level + 1"
|
|
2517
|
+
>
|
|
2518
|
+
@if (!template) {
|
|
2519
|
+
<div
|
|
2520
|
+
class="k-task-summary-progress"
|
|
2521
|
+
[style.width.px]="taskWidth">
|
|
2522
|
+
<div
|
|
2523
|
+
class="k-task-summary-complete"
|
|
2524
|
+
[style.width.px]="completionOverlayWidth"
|
|
2520
2525
|
>
|
|
2521
|
-
|
|
2526
|
+
</div>
|
|
2522
2527
|
</div>
|
|
2528
|
+
} @else {
|
|
2523
2529
|
<ng-template
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
</ng-template>
|
|
2530
|
+
[ngTemplateOutlet]="template"
|
|
2531
|
+
[ngTemplateOutletContext]="{
|
|
2532
|
+
$implicit: dataItem,
|
|
2533
|
+
elementWidth: taskWidth
|
|
2534
|
+
}"
|
|
2535
|
+
></ng-template>
|
|
2536
|
+
}
|
|
2532
2537
|
</div>
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2538
|
+
@if (renderDependencyDragClues) {
|
|
2539
|
+
<div
|
|
2540
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
2541
|
+
[class.k-display-block]="touchEnabled"
|
|
2537
2542
|
>
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2543
|
+
</div>
|
|
2544
|
+
<div
|
|
2545
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
2546
|
+
[class.k-display-block]="touchEnabled"
|
|
2542
2547
|
>
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2548
|
+
</div>
|
|
2549
|
+
}
|
|
2550
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
2546
2551
|
}
|
|
2547
2552
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
|
|
2548
2553
|
type: Component,
|
|
@@ -2556,51 +2561,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2556
2561
|
],
|
|
2557
2562
|
template: `
|
|
2558
2563
|
<div
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2564
|
+
#task
|
|
2565
|
+
role="treeitem"
|
|
2566
|
+
class="k-task k-task-summary"
|
|
2567
|
+
[ngClass]="taskClass(dataItem)"
|
|
2568
|
+
[style.width.px]="taskWidth"
|
|
2569
|
+
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
2570
|
+
[class.k-selected]="isSelected(dataItem)"
|
|
2571
|
+
[attr.aria-selected]="ariaSelected"
|
|
2572
|
+
[attr.aria-expanded]="ariaExpanded"
|
|
2573
|
+
[attr.aria-level]="level + 1"
|
|
2574
|
+
>
|
|
2575
|
+
@if (!template) {
|
|
2576
|
+
<div
|
|
2577
|
+
class="k-task-summary-progress"
|
|
2578
|
+
[style.width.px]="taskWidth">
|
|
2579
|
+
<div
|
|
2580
|
+
class="k-task-summary-complete"
|
|
2581
|
+
[style.width.px]="completionOverlayWidth"
|
|
2576
2582
|
>
|
|
2577
|
-
|
|
2583
|
+
</div>
|
|
2578
2584
|
</div>
|
|
2585
|
+
} @else {
|
|
2579
2586
|
<ng-template
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
</ng-template>
|
|
2587
|
+
[ngTemplateOutlet]="template"
|
|
2588
|
+
[ngTemplateOutletContext]="{
|
|
2589
|
+
$implicit: dataItem,
|
|
2590
|
+
elementWidth: taskWidth
|
|
2591
|
+
}"
|
|
2592
|
+
></ng-template>
|
|
2593
|
+
}
|
|
2588
2594
|
</div>
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2595
|
+
@if (renderDependencyDragClues) {
|
|
2596
|
+
<div
|
|
2597
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
2598
|
+
[class.k-display-block]="touchEnabled"
|
|
2593
2599
|
>
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2600
|
+
</div>
|
|
2601
|
+
<div
|
|
2602
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
2603
|
+
[class.k-display-block]="touchEnabled"
|
|
2598
2604
|
>
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2605
|
+
</div>
|
|
2606
|
+
}
|
|
2607
|
+
`,
|
|
2602
2608
|
standalone: true,
|
|
2603
|
-
imports: [NgClass,
|
|
2609
|
+
imports: [NgClass, NgTemplateOutlet]
|
|
2604
2610
|
}]
|
|
2605
2611
|
}], ctorParameters: () => [{ type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }], propDecorators: { summaryWrapperClass: [{
|
|
2606
2612
|
type: HostBinding,
|
|
@@ -2621,36 +2627,36 @@ class GanttMilestoneTaskComponent extends GanttTaskBase {
|
|
|
2621
2627
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
|
|
2622
2628
|
}
|
|
2623
2629
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2624
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2630
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttMilestoneTaskComponent, isStandalone: true, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
|
|
2625
2631
|
{
|
|
2626
2632
|
provide: GanttTaskBase,
|
|
2627
2633
|
useExisting: forwardRef(() => GanttMilestoneTaskComponent)
|
|
2628
2634
|
}
|
|
2629
2635
|
], usesInheritance: true, ngImport: i0, template: `
|
|
2630
2636
|
<div
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2637
|
+
#task
|
|
2638
|
+
role="treeitem"
|
|
2639
|
+
class="k-task k-task-milestone"
|
|
2640
|
+
[ngClass]="taskClass(dataItem)"
|
|
2641
|
+
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
2642
|
+
[class.k-selected]="isSelected(dataItem)"
|
|
2643
|
+
[attr.aria-selected]="ariaSelected"
|
|
2644
|
+
[attr.aria-level]="level + 1"
|
|
2645
|
+
>
|
|
2640
2646
|
</div>
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2647
|
+
@if (renderDependencyDragClues) {
|
|
2648
|
+
<div
|
|
2649
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
2650
|
+
[class.k-display-block]="touchEnabled"
|
|
2645
2651
|
>
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2652
|
+
</div>
|
|
2653
|
+
<div
|
|
2654
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
2655
|
+
[class.k-display-block]="touchEnabled"
|
|
2650
2656
|
>
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2657
|
+
</div>
|
|
2658
|
+
}
|
|
2659
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
2654
2660
|
}
|
|
2655
2661
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
|
|
2656
2662
|
type: Component,
|
|
@@ -2664,31 +2670,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2664
2670
|
],
|
|
2665
2671
|
template: `
|
|
2666
2672
|
<div
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2673
|
+
#task
|
|
2674
|
+
role="treeitem"
|
|
2675
|
+
class="k-task k-task-milestone"
|
|
2676
|
+
[ngClass]="taskClass(dataItem)"
|
|
2677
|
+
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
2678
|
+
[class.k-selected]="isSelected(dataItem)"
|
|
2679
|
+
[attr.aria-selected]="ariaSelected"
|
|
2680
|
+
[attr.aria-level]="level + 1"
|
|
2681
|
+
>
|
|
2676
2682
|
</div>
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2683
|
+
@if (renderDependencyDragClues) {
|
|
2684
|
+
<div
|
|
2685
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
2686
|
+
[class.k-display-block]="touchEnabled"
|
|
2681
2687
|
>
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2688
|
+
</div>
|
|
2689
|
+
<div
|
|
2690
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
2691
|
+
[class.k-display-block]="touchEnabled"
|
|
2686
2692
|
>
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2693
|
+
</div>
|
|
2694
|
+
}
|
|
2695
|
+
`,
|
|
2690
2696
|
standalone: true,
|
|
2691
|
-
imports: [NgClass
|
|
2697
|
+
imports: [NgClass]
|
|
2692
2698
|
}]
|
|
2693
2699
|
}], ctorParameters: () => [{ type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }], propDecorators: { milestoneWrapperClass: [{
|
|
2694
2700
|
type: HostBinding,
|
|
@@ -2737,58 +2743,62 @@ class GanttTasksTableBodyComponent {
|
|
|
2737
2743
|
return mappedItem;
|
|
2738
2744
|
}
|
|
2739
2745
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTasksTableBodyComponent, deps: [{ token: DependencyDomService }, { token: MappingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2740
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2741
|
-
|
|
2746
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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" }, outputs: { taskPointerEnter: "taskPointerEnter", taskPointerLeave: "taskPointerLeave" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
|
|
2747
|
+
@for (item of rows; track trackBy($index, item); let index = $index) {
|
|
2748
|
+
<tr class="k-table-row" #timelineRow>
|
|
2742
2749
|
<td class="k-table-td">
|
|
2750
|
+
@if (isMileStone(item)) {
|
|
2743
2751
|
<kendo-gantt-milestone-task
|
|
2744
|
-
|
|
2752
|
+
[dataItem]="item.data"
|
|
2753
|
+
[level]="item.level"
|
|
2754
|
+
[activeView]="activeView"
|
|
2755
|
+
[taskClass]="taskClass"
|
|
2756
|
+
[selectable]="selectable"
|
|
2757
|
+
[isSelected]="isTaskSelected"
|
|
2758
|
+
[index]="index"
|
|
2759
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2760
|
+
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2761
|
+
(pointerleave)="taskPointerLeave.emit()"
|
|
2762
|
+
>
|
|
2763
|
+
</kendo-gantt-milestone-task>
|
|
2764
|
+
} @else {
|
|
2765
|
+
@if (item.hasChildren) {
|
|
2766
|
+
<kendo-gantt-summary-task
|
|
2745
2767
|
[dataItem]="item.data"
|
|
2746
2768
|
[level]="item.level"
|
|
2769
|
+
[template]="summaryTaskTemplate"
|
|
2747
2770
|
[activeView]="activeView"
|
|
2748
2771
|
[taskClass]="taskClass"
|
|
2749
2772
|
[selectable]="selectable"
|
|
2750
2773
|
[isSelected]="isTaskSelected"
|
|
2774
|
+
[isExpanded]="isExpanded"
|
|
2751
2775
|
[index]="index"
|
|
2752
2776
|
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2753
2777
|
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2754
2778
|
(pointerleave)="taskPointerLeave.emit()"
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
*ngIf="!item.hasChildren"
|
|
2775
|
-
[dataItem]="item.data"
|
|
2776
|
-
[level]="item.level"
|
|
2777
|
-
[taskContentTemplate]="taskContentTemplate"
|
|
2778
|
-
[taskTemplate]="taskTemplate"
|
|
2779
|
-
[activeView]="activeView"
|
|
2780
|
-
[taskClass]="taskClass"
|
|
2781
|
-
[selectable]="selectable"
|
|
2782
|
-
[isSelected]="isTaskSelected"
|
|
2783
|
-
[index]="index"
|
|
2784
|
-
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2785
|
-
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2786
|
-
(pointerleave)="taskPointerLeave.emit()"
|
|
2787
|
-
></kendo-gantt-task>
|
|
2788
|
-
</ng-template>
|
|
2779
|
+
></kendo-gantt-summary-task>
|
|
2780
|
+
}
|
|
2781
|
+
@if (!item.hasChildren) {
|
|
2782
|
+
<kendo-gantt-task
|
|
2783
|
+
[dataItem]="item.data"
|
|
2784
|
+
[level]="item.level"
|
|
2785
|
+
[taskContentTemplate]="taskContentTemplate"
|
|
2786
|
+
[taskTemplate]="taskTemplate"
|
|
2787
|
+
[activeView]="activeView"
|
|
2788
|
+
[taskClass]="taskClass"
|
|
2789
|
+
[selectable]="selectable"
|
|
2790
|
+
[isSelected]="isTaskSelected"
|
|
2791
|
+
[index]="index"
|
|
2792
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2793
|
+
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2794
|
+
(pointerleave)="taskPointerLeave.emit()"
|
|
2795
|
+
></kendo-gantt-task>
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2789
2798
|
</td>
|
|
2790
|
-
|
|
2791
|
-
|
|
2799
|
+
</tr>
|
|
2800
|
+
}
|
|
2801
|
+
`, isInline: true, dependencies: [{ 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"] }] });
|
|
2792
2802
|
}
|
|
2793
2803
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTasksTableBodyComponent, decorators: [{
|
|
2794
2804
|
type: Component,
|
|
@@ -2796,59 +2806,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2796
2806
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
2797
2807
|
selector: '[kendoGanttTasksTableBody]',
|
|
2798
2808
|
template: `
|
|
2799
|
-
|
|
2809
|
+
@for (item of rows; track trackBy($index, item); let index = $index) {
|
|
2810
|
+
<tr class="k-table-row" #timelineRow>
|
|
2800
2811
|
<td class="k-table-td">
|
|
2812
|
+
@if (isMileStone(item)) {
|
|
2801
2813
|
<kendo-gantt-milestone-task
|
|
2802
|
-
|
|
2814
|
+
[dataItem]="item.data"
|
|
2815
|
+
[level]="item.level"
|
|
2816
|
+
[activeView]="activeView"
|
|
2817
|
+
[taskClass]="taskClass"
|
|
2818
|
+
[selectable]="selectable"
|
|
2819
|
+
[isSelected]="isTaskSelected"
|
|
2820
|
+
[index]="index"
|
|
2821
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2822
|
+
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2823
|
+
(pointerleave)="taskPointerLeave.emit()"
|
|
2824
|
+
>
|
|
2825
|
+
</kendo-gantt-milestone-task>
|
|
2826
|
+
} @else {
|
|
2827
|
+
@if (item.hasChildren) {
|
|
2828
|
+
<kendo-gantt-summary-task
|
|
2803
2829
|
[dataItem]="item.data"
|
|
2804
2830
|
[level]="item.level"
|
|
2831
|
+
[template]="summaryTaskTemplate"
|
|
2805
2832
|
[activeView]="activeView"
|
|
2806
2833
|
[taskClass]="taskClass"
|
|
2807
2834
|
[selectable]="selectable"
|
|
2808
2835
|
[isSelected]="isTaskSelected"
|
|
2836
|
+
[isExpanded]="isExpanded"
|
|
2809
2837
|
[index]="index"
|
|
2810
2838
|
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2811
2839
|
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2812
2840
|
(pointerleave)="taskPointerLeave.emit()"
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
*ngIf="!item.hasChildren"
|
|
2833
|
-
[dataItem]="item.data"
|
|
2834
|
-
[level]="item.level"
|
|
2835
|
-
[taskContentTemplate]="taskContentTemplate"
|
|
2836
|
-
[taskTemplate]="taskTemplate"
|
|
2837
|
-
[activeView]="activeView"
|
|
2838
|
-
[taskClass]="taskClass"
|
|
2839
|
-
[selectable]="selectable"
|
|
2840
|
-
[isSelected]="isTaskSelected"
|
|
2841
|
-
[index]="index"
|
|
2842
|
-
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2843
|
-
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2844
|
-
(pointerleave)="taskPointerLeave.emit()"
|
|
2845
|
-
></kendo-gantt-task>
|
|
2846
|
-
</ng-template>
|
|
2841
|
+
></kendo-gantt-summary-task>
|
|
2842
|
+
}
|
|
2843
|
+
@if (!item.hasChildren) {
|
|
2844
|
+
<kendo-gantt-task
|
|
2845
|
+
[dataItem]="item.data"
|
|
2846
|
+
[level]="item.level"
|
|
2847
|
+
[taskContentTemplate]="taskContentTemplate"
|
|
2848
|
+
[taskTemplate]="taskTemplate"
|
|
2849
|
+
[activeView]="activeView"
|
|
2850
|
+
[taskClass]="taskClass"
|
|
2851
|
+
[selectable]="selectable"
|
|
2852
|
+
[isSelected]="isTaskSelected"
|
|
2853
|
+
[index]="index"
|
|
2854
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
2855
|
+
(pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
|
|
2856
|
+
(pointerleave)="taskPointerLeave.emit()"
|
|
2857
|
+
></kendo-gantt-task>
|
|
2858
|
+
}
|
|
2859
|
+
}
|
|
2847
2860
|
</td>
|
|
2848
|
-
|
|
2849
|
-
|
|
2861
|
+
</tr>
|
|
2862
|
+
}
|
|
2863
|
+
`,
|
|
2850
2864
|
standalone: true,
|
|
2851
|
-
imports: [
|
|
2865
|
+
imports: [GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskComponent]
|
|
2852
2866
|
}]
|
|
2853
2867
|
}], ctorParameters: () => [{ type: DependencyDomService }, { type: MappingService }], propDecorators: { timelineRow: [{
|
|
2854
2868
|
type: ViewChild,
|
|
@@ -3077,16 +3091,25 @@ class GanttHeaderTableBodyComponent {
|
|
|
3077
3091
|
tbodyClass = true;
|
|
3078
3092
|
groupSlots;
|
|
3079
3093
|
slots;
|
|
3094
|
+
trackBySlotIndex(index, item) {
|
|
3095
|
+
// Combine index with timestamp to ensure uniqueness
|
|
3096
|
+
// even when multiple slots have the same start time
|
|
3097
|
+
return `${index}-${item.start.getTime()}`;
|
|
3098
|
+
}
|
|
3080
3099
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3081
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
3100
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttHeaderTableBodyComponent, isStandalone: true, selector: "[kendoGanttHeaderTableBody]", inputs: { groupSlots: "groupSlots", slots: "slots" }, host: { properties: { "class.k-table-tbody": "this.tbodyClass" } }, ngImport: i0, template: `
|
|
3082
3101
|
<tr class="k-table-row">
|
|
3083
|
-
|
|
3102
|
+
@for (item of groupSlots; track trackBySlotIndex($index, item)) {
|
|
3103
|
+
<td [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
3104
|
+
}
|
|
3084
3105
|
</tr>
|
|
3085
3106
|
|
|
3086
3107
|
<tr class="k-table-row">
|
|
3087
|
-
|
|
3108
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3109
|
+
<td class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
|
|
3110
|
+
}
|
|
3088
3111
|
</tr>
|
|
3089
|
-
|
|
3112
|
+
`, isInline: true });
|
|
3090
3113
|
}
|
|
3091
3114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
|
|
3092
3115
|
type: Component,
|
|
@@ -3095,15 +3118,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3095
3118
|
selector: '[kendoGanttHeaderTableBody]',
|
|
3096
3119
|
template: `
|
|
3097
3120
|
<tr class="k-table-row">
|
|
3098
|
-
|
|
3121
|
+
@for (item of groupSlots; track trackBySlotIndex($index, item)) {
|
|
3122
|
+
<td [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
|
|
3123
|
+
}
|
|
3099
3124
|
</tr>
|
|
3100
3125
|
|
|
3101
3126
|
<tr class="k-table-row">
|
|
3102
|
-
|
|
3127
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3128
|
+
<td class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
|
|
3129
|
+
}
|
|
3103
3130
|
</tr>
|
|
3104
|
-
|
|
3105
|
-
standalone: true
|
|
3106
|
-
imports: [NgFor]
|
|
3131
|
+
`,
|
|
3132
|
+
standalone: true
|
|
3107
3133
|
}]
|
|
3108
3134
|
}], propDecorators: { tbodyClass: [{
|
|
3109
3135
|
type: HostBinding,
|
|
@@ -3318,6 +3344,8 @@ class GanttTimelineComponent {
|
|
|
3318
3344
|
const popupHeight = popupEl?.offsetHeight ?? 0;
|
|
3319
3345
|
const popupWidth = popupEl?.offsetWidth ?? 0;
|
|
3320
3346
|
const taskMove = !(this.taskDragService.leftDragHandle || this.taskDragService.rightDragHandle);
|
|
3347
|
+
// the theme does not provide zIndex for the marquee tooltip, thus it is applied here as an intentional exception
|
|
3348
|
+
this.popupRef && (this.popupRef.popupElement.style.zIndex += 1000000);
|
|
3321
3349
|
this.popupRef && (popup.margin = {
|
|
3322
3350
|
horizontal: taskMove ? taskRect.left - e.offset - this.taskDragService.tasksContainerRect.left - popupWidth / 2 : e.width - taskEl.nativeElement.clientWidth - popupWidth / 2,
|
|
3323
3351
|
vertical: (taskEl.nativeElement.clientHeight + popupHeight) / 2
|
|
@@ -3342,6 +3370,11 @@ class GanttTimelineComponent {
|
|
|
3342
3370
|
this.createTimeMarker();
|
|
3343
3371
|
}
|
|
3344
3372
|
}
|
|
3373
|
+
trackBySlotIndex(index, item) {
|
|
3374
|
+
// Combine index with timestamp to ensure uniqueness
|
|
3375
|
+
// even when multiple slots have the same start time
|
|
3376
|
+
return `${index}-${item.start.getTime()}`;
|
|
3377
|
+
}
|
|
3345
3378
|
ngAfterViewInit() {
|
|
3346
3379
|
this.currentTimeMarkerService.slots = this.slots;
|
|
3347
3380
|
this.currentTimeMarkerService.rows = this.rows;
|
|
@@ -3377,149 +3410,157 @@ class GanttTimelineComponent {
|
|
|
3377
3410
|
});
|
|
3378
3411
|
}
|
|
3379
3412
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: ScrollSyncService }, { token: DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: CurrentTimeMarkerService }, { token: GanttLocalizationService }, { token: TaskDragService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3380
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
3413
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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", customTooltipTemplate: "customTooltipTemplate", tooltipOptions: "tooltipOptions", 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: "tooltip", first: true, predicate: TooltipDirective, descendants: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
3381
3414
|
<div class="k-gantt-timeline k-grid k-grid-md">
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
</div>
|
|
3415
|
+
<div class="k-grid-header">
|
|
3416
|
+
<div #timelineHeaderWrap class="k-grid-header-wrap">
|
|
3417
|
+
<table
|
|
3418
|
+
class="k-table k-table-md k-grid-header-table"
|
|
3419
|
+
role="presentation"
|
|
3420
|
+
[style.width.px]="tableWidth"
|
|
3421
|
+
>
|
|
3422
|
+
<tbody
|
|
3423
|
+
kendoGanttHeaderTableBody
|
|
3424
|
+
[groupSlots]="groupSlots"
|
|
3425
|
+
[slots]="slots">
|
|
3426
|
+
</tbody>
|
|
3427
|
+
</table>
|
|
3396
3428
|
</div>
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3429
|
+
</div>
|
|
3430
|
+
<!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
|
|
3431
|
+
<div
|
|
3432
|
+
#timelineContent
|
|
3433
|
+
class="k-grid-content"
|
|
3434
|
+
tabindex="-1"
|
|
3435
|
+
role="tree"
|
|
3436
|
+
aria-roledescription="Timeline"
|
|
3437
|
+
kendoGanttTimelineScrollable
|
|
3438
|
+
[scrollSettings]="dragScrollSettings"
|
|
3439
|
+
kendoDraggable
|
|
3440
|
+
[enableDrag]="draggableEnabled"
|
|
3441
|
+
(kendoPress)="timelineContainerPress.emit($event)"
|
|
3442
|
+
(kendoDrag)="timelineContainerDrag.emit($event)"
|
|
3443
|
+
(kendoRelease)="timelineContainerRelease.emit($event)"
|
|
3411
3444
|
>
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
<div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3484
|
-
<ul class="k-reset">
|
|
3485
|
-
<li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3486
|
-
<li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3487
|
-
</ul>
|
|
3488
|
-
</div>
|
|
3489
|
-
</div>
|
|
3490
|
-
</ng-template>
|
|
3491
|
-
<ng-template #customTooltip>
|
|
3492
|
-
<ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
|
|
3493
|
-
</ng-template>
|
|
3494
|
-
<ng-template #resizingTooltip>
|
|
3495
|
-
<div class="k-tooltip-content">
|
|
3496
|
-
<div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3497
|
-
<div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3498
|
-
</div>
|
|
3499
|
-
</ng-template>
|
|
3500
|
-
<ng-template #completionRatioTooltip>
|
|
3501
|
-
<div class="k-tooltip-content">
|
|
3502
|
-
<div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3503
|
-
</div>
|
|
3504
|
-
</ng-template>
|
|
3505
|
-
|
|
3506
|
-
<svg class="k-gantt-dependencies-svg">
|
|
3507
|
-
<polyline
|
|
3508
|
-
*ngFor="let dependency of dependencies"
|
|
3509
|
-
kendoGanttDependency
|
|
3510
|
-
[dependency]="dependency"
|
|
3511
|
-
/>
|
|
3512
|
-
<polyline #dependencyDragCreatePolyline />
|
|
3513
|
-
</svg>
|
|
3514
|
-
<div class="k-marquee k-gantt-marquee" *ngIf="marquee.show" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
|
|
3515
|
-
<div class="k-marquee-color"></div>
|
|
3516
|
-
</div>
|
|
3517
|
-
<!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
|
|
3518
|
-
<ng-container #dragPopupContainer></ng-container>
|
|
3445
|
+
<div class="k-gantt-tables">
|
|
3446
|
+
<table
|
|
3447
|
+
class="k-table k-table-md k-grid-table k-gantt-rows"
|
|
3448
|
+
[style.width.px]="tableWidth"
|
|
3449
|
+
role="presentation"
|
|
3450
|
+
>
|
|
3451
|
+
<tbody class="k-table-tbody">
|
|
3452
|
+
@for (item of rows; track $index; let i = $index) {
|
|
3453
|
+
<tr
|
|
3454
|
+
class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
|
|
3455
|
+
<td class="k-table-td"></td>
|
|
3456
|
+
</tr>
|
|
3457
|
+
}
|
|
3458
|
+
</tbody>
|
|
3459
|
+
</table>
|
|
3460
|
+
|
|
3461
|
+
<table
|
|
3462
|
+
#timelineColumns
|
|
3463
|
+
class="k-table k-table-md k-gantt-columns"
|
|
3464
|
+
role="presentation"
|
|
3465
|
+
[style.width.px]="tableWidth"
|
|
3466
|
+
>
|
|
3467
|
+
<colgroup>
|
|
3468
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3469
|
+
<col>
|
|
3470
|
+
}
|
|
3471
|
+
</colgroup>
|
|
3472
|
+
|
|
3473
|
+
<tbody class="k-table-tbody">
|
|
3474
|
+
<tr class="k-table-row">
|
|
3475
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3476
|
+
<td
|
|
3477
|
+
class="k-table-td"
|
|
3478
|
+
[class.k-nonwork-hour]="isNonWorking(item)"></td>
|
|
3479
|
+
}
|
|
3480
|
+
</tr>
|
|
3481
|
+
</tbody>
|
|
3482
|
+
</table>
|
|
3483
|
+
|
|
3484
|
+
<table kendoTooltip
|
|
3485
|
+
#tooltip="kendoTooltip"
|
|
3486
|
+
[tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
|
|
3487
|
+
[position]="tooltipOptions.position"
|
|
3488
|
+
[callout]="!dragging"
|
|
3489
|
+
[tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
|
|
3490
|
+
filter=".k-task"
|
|
3491
|
+
[showOn]="dragging || completion ? 'none' : 'hover'"
|
|
3492
|
+
#tasksContainer
|
|
3493
|
+
class="k-table k-table-md k-gantt-tasks"
|
|
3494
|
+
role="presentation"
|
|
3495
|
+
[style.border-collapse]="'collapse'"
|
|
3496
|
+
[style.width.px]="tableWidth"
|
|
3497
|
+
>
|
|
3498
|
+
<tbody
|
|
3499
|
+
class="k-table-tbody"
|
|
3500
|
+
kendoGanttTasksTableBody
|
|
3501
|
+
[rows]="rows"
|
|
3502
|
+
[activeView]="activeView"
|
|
3503
|
+
[taskContentTemplate]="taskContentTemplate"
|
|
3504
|
+
[taskTemplate]="taskTemplate"
|
|
3505
|
+
[summaryTaskTemplate]="summaryTaskTemplate"
|
|
3506
|
+
[taskClass]="taskClass"
|
|
3507
|
+
[isExpanded]="isExpanded"
|
|
3508
|
+
[selectable]="selectable"
|
|
3509
|
+
[isTaskSelected]="isTaskSelected"
|
|
3510
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
3511
|
+
(taskPointerEnter)="task = $event"
|
|
3512
|
+
(taskPointerLeave)="task = null"
|
|
3513
|
+
>
|
|
3514
|
+
</tbody>
|
|
3515
|
+
</table>
|
|
3519
3516
|
</div>
|
|
3517
|
+
<ng-template #tooltipTemplate>
|
|
3518
|
+
<div class="k-task-content">
|
|
3519
|
+
<div class="k-task-details">
|
|
3520
|
+
<strong>{{task?.title}}</strong>
|
|
3521
|
+
<div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3522
|
+
<ul class="k-reset">
|
|
3523
|
+
<li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3524
|
+
<li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3525
|
+
</ul>
|
|
3526
|
+
</div>
|
|
3527
|
+
</div>
|
|
3528
|
+
</ng-template>
|
|
3529
|
+
<ng-template #customTooltip>
|
|
3530
|
+
<ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
|
|
3531
|
+
</ng-template>
|
|
3532
|
+
<ng-template #resizingTooltip>
|
|
3533
|
+
<div class="k-tooltip-content">
|
|
3534
|
+
<div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3535
|
+
<div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3536
|
+
</div>
|
|
3537
|
+
</ng-template>
|
|
3538
|
+
<ng-template #completionRatioTooltip>
|
|
3539
|
+
<div class="k-tooltip-content">
|
|
3540
|
+
<div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3541
|
+
</div>
|
|
3542
|
+
</ng-template>
|
|
3543
|
+
|
|
3544
|
+
<svg class="k-gantt-dependencies-svg">
|
|
3545
|
+
@for (dependency of dependencies; track dependency.id) {
|
|
3546
|
+
<polyline
|
|
3547
|
+
kendoGanttDependency
|
|
3548
|
+
[dependency]="dependency"
|
|
3549
|
+
/>
|
|
3550
|
+
}
|
|
3551
|
+
<polyline #dependencyDragCreatePolyline />
|
|
3552
|
+
</svg>
|
|
3553
|
+
@if (marquee.show) {
|
|
3554
|
+
<div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
|
|
3555
|
+
<div class="k-marquee-color"></div>
|
|
3556
|
+
</div>
|
|
3557
|
+
}
|
|
3558
|
+
<!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
|
|
3559
|
+
<ng-container #dragPopupContainer></ng-container>
|
|
3560
|
+
</div>
|
|
3520
3561
|
</div>
|
|
3521
3562
|
|
|
3522
|
-
|
|
3563
|
+
`, isInline: true, dependencies: [{ 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: "component", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"], outputs: ["taskPointerEnter", "taskPointerLeave"] }, { kind: "directive", type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "tooltipContentClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }, { kind: "pipe", type: DatePipe, name: "kendoDate" }, { kind: "pipe", type: NumberPipe, name: "kendoNumber" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
3523
3564
|
}
|
|
3524
3565
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTimelineComponent, decorators: [{
|
|
3525
3566
|
type: Component,
|
|
@@ -3527,151 +3568,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3527
3568
|
selector: 'kendo-gantt-timeline',
|
|
3528
3569
|
template: `
|
|
3529
3570
|
<div class="k-gantt-timeline k-grid k-grid-md">
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
</div>
|
|
3571
|
+
<div class="k-grid-header">
|
|
3572
|
+
<div #timelineHeaderWrap class="k-grid-header-wrap">
|
|
3573
|
+
<table
|
|
3574
|
+
class="k-table k-table-md k-grid-header-table"
|
|
3575
|
+
role="presentation"
|
|
3576
|
+
[style.width.px]="tableWidth"
|
|
3577
|
+
>
|
|
3578
|
+
<tbody
|
|
3579
|
+
kendoGanttHeaderTableBody
|
|
3580
|
+
[groupSlots]="groupSlots"
|
|
3581
|
+
[slots]="slots">
|
|
3582
|
+
</tbody>
|
|
3583
|
+
</table>
|
|
3544
3584
|
</div>
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3585
|
+
</div>
|
|
3586
|
+
<!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
|
|
3587
|
+
<div
|
|
3588
|
+
#timelineContent
|
|
3589
|
+
class="k-grid-content"
|
|
3590
|
+
tabindex="-1"
|
|
3591
|
+
role="tree"
|
|
3592
|
+
aria-roledescription="Timeline"
|
|
3593
|
+
kendoGanttTimelineScrollable
|
|
3594
|
+
[scrollSettings]="dragScrollSettings"
|
|
3595
|
+
kendoDraggable
|
|
3596
|
+
[enableDrag]="draggableEnabled"
|
|
3597
|
+
(kendoPress)="timelineContainerPress.emit($event)"
|
|
3598
|
+
(kendoDrag)="timelineContainerDrag.emit($event)"
|
|
3599
|
+
(kendoRelease)="timelineContainerRelease.emit($event)"
|
|
3559
3600
|
>
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
<div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3632
|
-
<ul class="k-reset">
|
|
3633
|
-
<li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3634
|
-
<li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3635
|
-
</ul>
|
|
3636
|
-
</div>
|
|
3637
|
-
</div>
|
|
3638
|
-
</ng-template>
|
|
3639
|
-
<ng-template #customTooltip>
|
|
3640
|
-
<ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
|
|
3641
|
-
</ng-template>
|
|
3642
|
-
<ng-template #resizingTooltip>
|
|
3643
|
-
<div class="k-tooltip-content">
|
|
3644
|
-
<div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3645
|
-
<div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3646
|
-
</div>
|
|
3647
|
-
</ng-template>
|
|
3648
|
-
<ng-template #completionRatioTooltip>
|
|
3649
|
-
<div class="k-tooltip-content">
|
|
3650
|
-
<div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3651
|
-
</div>
|
|
3652
|
-
</ng-template>
|
|
3653
|
-
|
|
3654
|
-
<svg class="k-gantt-dependencies-svg">
|
|
3655
|
-
<polyline
|
|
3656
|
-
*ngFor="let dependency of dependencies"
|
|
3657
|
-
kendoGanttDependency
|
|
3658
|
-
[dependency]="dependency"
|
|
3659
|
-
/>
|
|
3660
|
-
<polyline #dependencyDragCreatePolyline />
|
|
3661
|
-
</svg>
|
|
3662
|
-
<div class="k-marquee k-gantt-marquee" *ngIf="marquee.show" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
|
|
3663
|
-
<div class="k-marquee-color"></div>
|
|
3664
|
-
</div>
|
|
3665
|
-
<!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
|
|
3666
|
-
<ng-container #dragPopupContainer></ng-container>
|
|
3601
|
+
<div class="k-gantt-tables">
|
|
3602
|
+
<table
|
|
3603
|
+
class="k-table k-table-md k-grid-table k-gantt-rows"
|
|
3604
|
+
[style.width.px]="tableWidth"
|
|
3605
|
+
role="presentation"
|
|
3606
|
+
>
|
|
3607
|
+
<tbody class="k-table-tbody">
|
|
3608
|
+
@for (item of rows; track $index; let i = $index) {
|
|
3609
|
+
<tr
|
|
3610
|
+
class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
|
|
3611
|
+
<td class="k-table-td"></td>
|
|
3612
|
+
</tr>
|
|
3613
|
+
}
|
|
3614
|
+
</tbody>
|
|
3615
|
+
</table>
|
|
3616
|
+
|
|
3617
|
+
<table
|
|
3618
|
+
#timelineColumns
|
|
3619
|
+
class="k-table k-table-md k-gantt-columns"
|
|
3620
|
+
role="presentation"
|
|
3621
|
+
[style.width.px]="tableWidth"
|
|
3622
|
+
>
|
|
3623
|
+
<colgroup>
|
|
3624
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3625
|
+
<col>
|
|
3626
|
+
}
|
|
3627
|
+
</colgroup>
|
|
3628
|
+
|
|
3629
|
+
<tbody class="k-table-tbody">
|
|
3630
|
+
<tr class="k-table-row">
|
|
3631
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3632
|
+
<td
|
|
3633
|
+
class="k-table-td"
|
|
3634
|
+
[class.k-nonwork-hour]="isNonWorking(item)"></td>
|
|
3635
|
+
}
|
|
3636
|
+
</tr>
|
|
3637
|
+
</tbody>
|
|
3638
|
+
</table>
|
|
3639
|
+
|
|
3640
|
+
<table kendoTooltip
|
|
3641
|
+
#tooltip="kendoTooltip"
|
|
3642
|
+
[tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
|
|
3643
|
+
[position]="tooltipOptions.position"
|
|
3644
|
+
[callout]="!dragging"
|
|
3645
|
+
[tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
|
|
3646
|
+
filter=".k-task"
|
|
3647
|
+
[showOn]="dragging || completion ? 'none' : 'hover'"
|
|
3648
|
+
#tasksContainer
|
|
3649
|
+
class="k-table k-table-md k-gantt-tasks"
|
|
3650
|
+
role="presentation"
|
|
3651
|
+
[style.border-collapse]="'collapse'"
|
|
3652
|
+
[style.width.px]="tableWidth"
|
|
3653
|
+
>
|
|
3654
|
+
<tbody
|
|
3655
|
+
class="k-table-tbody"
|
|
3656
|
+
kendoGanttTasksTableBody
|
|
3657
|
+
[rows]="rows"
|
|
3658
|
+
[activeView]="activeView"
|
|
3659
|
+
[taskContentTemplate]="taskContentTemplate"
|
|
3660
|
+
[taskTemplate]="taskTemplate"
|
|
3661
|
+
[summaryTaskTemplate]="summaryTaskTemplate"
|
|
3662
|
+
[taskClass]="taskClass"
|
|
3663
|
+
[isExpanded]="isExpanded"
|
|
3664
|
+
[selectable]="selectable"
|
|
3665
|
+
[isTaskSelected]="isTaskSelected"
|
|
3666
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
3667
|
+
(taskPointerEnter)="task = $event"
|
|
3668
|
+
(taskPointerLeave)="task = null"
|
|
3669
|
+
>
|
|
3670
|
+
</tbody>
|
|
3671
|
+
</table>
|
|
3667
3672
|
</div>
|
|
3673
|
+
<ng-template #tooltipTemplate>
|
|
3674
|
+
<div class="k-task-content">
|
|
3675
|
+
<div class="k-task-details">
|
|
3676
|
+
<strong>{{task?.title}}</strong>
|
|
3677
|
+
<div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3678
|
+
<ul class="k-reset">
|
|
3679
|
+
<li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3680
|
+
<li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3681
|
+
</ul>
|
|
3682
|
+
</div>
|
|
3683
|
+
</div>
|
|
3684
|
+
</ng-template>
|
|
3685
|
+
<ng-template #customTooltip>
|
|
3686
|
+
<ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
|
|
3687
|
+
</ng-template>
|
|
3688
|
+
<ng-template #resizingTooltip>
|
|
3689
|
+
<div class="k-tooltip-content">
|
|
3690
|
+
<div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3691
|
+
<div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3692
|
+
</div>
|
|
3693
|
+
</ng-template>
|
|
3694
|
+
<ng-template #completionRatioTooltip>
|
|
3695
|
+
<div class="k-tooltip-content">
|
|
3696
|
+
<div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3697
|
+
</div>
|
|
3698
|
+
</ng-template>
|
|
3699
|
+
|
|
3700
|
+
<svg class="k-gantt-dependencies-svg">
|
|
3701
|
+
@for (dependency of dependencies; track dependency.id) {
|
|
3702
|
+
<polyline
|
|
3703
|
+
kendoGanttDependency
|
|
3704
|
+
[dependency]="dependency"
|
|
3705
|
+
/>
|
|
3706
|
+
}
|
|
3707
|
+
<polyline #dependencyDragCreatePolyline />
|
|
3708
|
+
</svg>
|
|
3709
|
+
@if (marquee.show) {
|
|
3710
|
+
<div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
|
|
3711
|
+
<div class="k-marquee-color"></div>
|
|
3712
|
+
</div>
|
|
3713
|
+
}
|
|
3714
|
+
<!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
|
|
3715
|
+
<ng-container #dragPopupContainer></ng-container>
|
|
3716
|
+
</div>
|
|
3668
3717
|
</div>
|
|
3669
3718
|
|
|
3670
|
-
|
|
3719
|
+
`,
|
|
3671
3720
|
standalone: true,
|
|
3672
3721
|
encapsulation: ViewEncapsulation.None,
|
|
3673
|
-
imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective,
|
|
3674
|
-
GanttDependencyDirective, KENDO_TOOLTIP, NgIf, DatePipe, NumberPipe, NgTemplateOutlet],
|
|
3722
|
+
imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, GanttTasksTableBodyComponent, GanttDependencyDirective, KENDO_TOOLTIP, DatePipe, NumberPipe, NgTemplateOutlet],
|
|
3675
3723
|
}]
|
|
3676
3724
|
}], ctorParameters: () => [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }, { type: GanttLocalizationService }, { type: TaskDragService, decorators: [{
|
|
3677
3725
|
type: Optional
|
|
@@ -4813,37 +4861,45 @@ class TaskFieldsComponent {
|
|
|
4813
4861
|
return this.localizationService.get(token);
|
|
4814
4862
|
}
|
|
4815
4863
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TaskFieldsComponent, deps: [{ token: MappingService }, { token: EditService }, { token: GanttLocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4816
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
4864
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TaskFieldsComponent, isStandalone: true, selector: "kendo-gantt-task-fields", ngImport: i0, template: `
|
|
4817
4865
|
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4866
|
+
@if (formGroup.get(mapper.taskFields.title)) {
|
|
4867
|
+
<kendo-formfield>
|
|
4868
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4869
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4821
4870
|
</kendo-formfield>
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
<kendo-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
<kendo-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
|
|
4871
|
+
}
|
|
4872
|
+
<div class="k-hstack">
|
|
4873
|
+
@if (formGroup.get(mapper.taskFields.start)) {
|
|
4874
|
+
<kendo-formfield [style.width.%]="49">
|
|
4875
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4876
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4877
|
+
</kendo-formfield>
|
|
4878
|
+
}
|
|
4879
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4880
|
+
@if (formGroup.get(mapper.taskFields.end)) {
|
|
4881
|
+
<kendo-formfield [style.width.%]="49">
|
|
4882
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4883
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4884
|
+
</kendo-formfield>
|
|
4885
|
+
}
|
|
4886
|
+
</div>
|
|
4887
|
+
@if (formGroup.get(mapper.taskFields.completionRatio)) {
|
|
4888
|
+
<kendo-formfield [style.width.%]="49">
|
|
4889
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4890
|
+
<kendo-numerictextbox
|
|
4891
|
+
#completionRatio
|
|
4892
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4893
|
+
[min]="0"
|
|
4894
|
+
[max]="1"
|
|
4895
|
+
[decimals]="2"
|
|
4896
|
+
format="p2"
|
|
4897
|
+
[step]="0.01"
|
|
4898
|
+
></kendo-numerictextbox>
|
|
4844
4899
|
</kendo-formfield>
|
|
4900
|
+
}
|
|
4845
4901
|
</form>
|
|
4846
|
-
|
|
4902
|
+
`, 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: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { 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", "adaptiveTitle", "adaptiveSubtitle", "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", 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"] }] });
|
|
4847
4903
|
}
|
|
4848
4904
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TaskFieldsComponent, decorators: [{
|
|
4849
4905
|
type: Component,
|
|
@@ -4851,37 +4907,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4851
4907
|
selector: 'kendo-gantt-task-fields',
|
|
4852
4908
|
template: `
|
|
4853
4909
|
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4910
|
+
@if (formGroup.get(mapper.taskFields.title)) {
|
|
4911
|
+
<kendo-formfield>
|
|
4912
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4913
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4857
4914
|
</kendo-formfield>
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
<kendo-
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
<kendo-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4915
|
+
}
|
|
4916
|
+
<div class="k-hstack">
|
|
4917
|
+
@if (formGroup.get(mapper.taskFields.start)) {
|
|
4918
|
+
<kendo-formfield [style.width.%]="49">
|
|
4919
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4920
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4921
|
+
</kendo-formfield>
|
|
4922
|
+
}
|
|
4923
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4924
|
+
@if (formGroup.get(mapper.taskFields.end)) {
|
|
4925
|
+
<kendo-formfield [style.width.%]="49">
|
|
4926
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4927
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4928
|
+
</kendo-formfield>
|
|
4929
|
+
}
|
|
4930
|
+
</div>
|
|
4931
|
+
@if (formGroup.get(mapper.taskFields.completionRatio)) {
|
|
4932
|
+
<kendo-formfield [style.width.%]="49">
|
|
4933
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4934
|
+
<kendo-numerictextbox
|
|
4935
|
+
#completionRatio
|
|
4936
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4937
|
+
[min]="0"
|
|
4938
|
+
[max]="1"
|
|
4939
|
+
[decimals]="2"
|
|
4940
|
+
format="p2"
|
|
4941
|
+
[step]="0.01"
|
|
4942
|
+
></kendo-numerictextbox>
|
|
4880
4943
|
</kendo-formfield>
|
|
4944
|
+
}
|
|
4881
4945
|
</form>
|
|
4882
|
-
|
|
4946
|
+
`,
|
|
4883
4947
|
standalone: true,
|
|
4884
|
-
imports: [ReactiveFormsModule,
|
|
4948
|
+
imports: [ReactiveFormsModule, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
|
|
4885
4949
|
}]
|
|
4886
4950
|
}], ctorParameters: () => [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }] });
|
|
4887
4951
|
|
|
@@ -5157,22 +5221,26 @@ class ViewSelectorComponent {
|
|
|
5157
5221
|
this.activeViewChange.emit(event.target.value);
|
|
5158
5222
|
}
|
|
5159
5223
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewSelectorComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5160
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
5224
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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: `
|
|
5161
5225
|
<select
|
|
5162
|
-
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
|
|
5166
|
-
|
|
5226
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
5227
|
+
aria-label="View Selector"
|
|
5228
|
+
[value]="activeView"
|
|
5229
|
+
(change)="onActiveViewChange($event)">
|
|
5230
|
+
@for (view of views; track view) {
|
|
5231
|
+
<option [value]="view">{{getViewTypeText(view)}}</option>
|
|
5232
|
+
}
|
|
5167
5233
|
</select>
|
|
5168
5234
|
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5235
|
+
@for (view of views; track view) {
|
|
5236
|
+
<button
|
|
5237
|
+
kendoButton
|
|
5238
|
+
type="button"
|
|
5239
|
+
[selected]="view === activeView"
|
|
5240
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
5241
|
+
}
|
|
5174
5242
|
</kendo-buttongroup>
|
|
5175
|
-
|
|
5243
|
+
`, isInline: true, dependencies: [{ 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]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
5176
5244
|
}
|
|
5177
5245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewSelectorComponent, decorators: [{
|
|
5178
5246
|
type: Component,
|
|
@@ -5180,22 +5248,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5180
5248
|
selector: 'kendo-gantt-view-selector',
|
|
5181
5249
|
template: `
|
|
5182
5250
|
<select
|
|
5183
|
-
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5251
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
5252
|
+
aria-label="View Selector"
|
|
5253
|
+
[value]="activeView"
|
|
5254
|
+
(change)="onActiveViewChange($event)">
|
|
5255
|
+
@for (view of views; track view) {
|
|
5256
|
+
<option [value]="view">{{getViewTypeText(view)}}</option>
|
|
5257
|
+
}
|
|
5188
5258
|
</select>
|
|
5189
5259
|
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5260
|
+
@for (view of views; track view) {
|
|
5261
|
+
<button
|
|
5262
|
+
kendoButton
|
|
5263
|
+
type="button"
|
|
5264
|
+
[selected]="view === activeView"
|
|
5265
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
5266
|
+
}
|
|
5195
5267
|
</kendo-buttongroup>
|
|
5196
|
-
|
|
5268
|
+
`,
|
|
5197
5269
|
standalone: true,
|
|
5198
|
-
imports: [
|
|
5270
|
+
imports: [ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
|
|
5199
5271
|
}]
|
|
5200
5272
|
}], ctorParameters: () => [{ type: i1$1.LocalizationService }], propDecorators: { hostClass: [{
|
|
5201
5273
|
type: HostBinding,
|
|
@@ -5399,23 +5471,27 @@ class ToolbarComponent {
|
|
|
5399
5471
|
}
|
|
5400
5472
|
}
|
|
5401
5473
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, deps: [{ token: i0.ElementRef }, { token: ToolbarNavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5402
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
<
|
|
5474
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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-gantt-toolbar": "this.hostClasses", "class.k-toolbar": "this.hostClasses", "class.k-toolbar-md": "this.hostClasses", "class.k-toolbar-solid": "this.hostClasses" } }, providers: [ToolbarNavigationService], ngImport: i0, template: `
|
|
5475
|
+
@if (!renderTemplate) {
|
|
5476
|
+
@if (showAddTask) {
|
|
5477
|
+
<kendo-gantt-add-task></kendo-gantt-add-task>
|
|
5478
|
+
}
|
|
5479
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
5480
|
+
@if (showViewSelector) {
|
|
5406
5481
|
<kendo-gantt-view-selector
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5482
|
+
[views]="views"
|
|
5483
|
+
[activeView]="activeView"
|
|
5484
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
5485
|
+
}
|
|
5486
|
+
}
|
|
5487
|
+
@if (renderTemplate) {
|
|
5488
|
+
<ng-template
|
|
5414
5489
|
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
5415
5490
|
[ngTemplateOutletContext]="context"
|
|
5416
5491
|
>
|
|
5417
|
-
|
|
5418
|
-
|
|
5492
|
+
</ng-template>
|
|
5493
|
+
}
|
|
5494
|
+
`, isInline: true, dependencies: [{ 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"] }] });
|
|
5419
5495
|
}
|
|
5420
5496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
5421
5497
|
type: Component,
|
|
@@ -5423,24 +5499,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5423
5499
|
selector: 'kendo-gantt-toolbar',
|
|
5424
5500
|
providers: [ToolbarNavigationService],
|
|
5425
5501
|
template: `
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
<
|
|
5502
|
+
@if (!renderTemplate) {
|
|
5503
|
+
@if (showAddTask) {
|
|
5504
|
+
<kendo-gantt-add-task></kendo-gantt-add-task>
|
|
5505
|
+
}
|
|
5506
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
5507
|
+
@if (showViewSelector) {
|
|
5429
5508
|
<kendo-gantt-view-selector
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5509
|
+
[views]="views"
|
|
5510
|
+
[activeView]="activeView"
|
|
5511
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
5512
|
+
}
|
|
5513
|
+
}
|
|
5514
|
+
@if (renderTemplate) {
|
|
5515
|
+
<ng-template
|
|
5437
5516
|
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
5438
5517
|
[ngTemplateOutletContext]="context"
|
|
5439
5518
|
>
|
|
5440
|
-
|
|
5441
|
-
|
|
5519
|
+
</ng-template>
|
|
5520
|
+
}
|
|
5521
|
+
`,
|
|
5442
5522
|
standalone: true,
|
|
5443
|
-
imports: [
|
|
5523
|
+
imports: [GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
|
|
5444
5524
|
}]
|
|
5445
5525
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ToolbarNavigationService }], propDecorators: { role: [{
|
|
5446
5526
|
type: HostBinding,
|
|
@@ -7212,7 +7292,7 @@ class GanttComponent {
|
|
|
7212
7292
|
handleKeydown(event) {
|
|
7213
7293
|
const { target, altKey } = event;
|
|
7214
7294
|
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
7215
|
-
const code =
|
|
7295
|
+
const code = normalizeKeys(event);
|
|
7216
7296
|
const isTimelineActive = this.timeline.timelineContent.nativeElement.contains(target);
|
|
7217
7297
|
if (isTimelineActive) {
|
|
7218
7298
|
if (isArrowUpDownKey(code)) {
|
|
@@ -7295,7 +7375,7 @@ class GanttComponent {
|
|
|
7295
7375
|
}
|
|
7296
7376
|
}
|
|
7297
7377
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", 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 }, { token: i1.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
7298
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
7378
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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", taskTooltipOptions: "taskTooltipOptions" }, 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: [
|
|
7299
7379
|
GanttLocalizationService,
|
|
7300
7380
|
LocalizationService,
|
|
7301
7381
|
{
|
|
@@ -7325,211 +7405,211 @@ class GanttComponent {
|
|
|
7325
7405
|
CurrentTimeMarkerService
|
|
7326
7406
|
], queries: [{ propertyName: "taskContentTemplate", first: true, predicate: GanttTaskContentTemplateDirective, descendants: true }, { propertyName: "taskTemplate", first: true, predicate: GanttTaskTemplateDirective, descendants: true }, { propertyName: "taskTooltipTemplate", first: true, predicate: GanttTaskTooltipTemplateDirective, descendants: true }, { propertyName: "summaryTaskTemplate", first: true, predicate: GanttSummaryTaskTemplateDirective, descendants: true }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columns", predicate: GanttColumnBase }, { propertyName: "views", predicate: ViewBase }], viewQueries: [{ propertyName: "treeList", first: true, predicate: TreeListComponent, descendants: true, static: true }, { propertyName: "timeline", first: true, predicate: GanttTimelineComponent, descendants: true }], exportAs: ["kendoGantt"], usesOnChanges: true, ngImport: i0, template: `
|
|
7327
7407
|
<ng-container kendoGanttLocalizedMessages
|
|
7328
|
-
|
|
7329
|
-
|
|
7408
|
+
i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
|
|
7409
|
+
taskEditingGeneralTabTitle="General"
|
|
7330
7410
|
|
|
7331
|
-
|
|
7332
|
-
|
|
7411
|
+
i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
|
|
7412
|
+
taskEditingPredecessorsTabTitle="Predecessors"
|
|
7333
7413
|
|
|
7334
|
-
|
|
7335
|
-
|
|
7414
|
+
i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
|
|
7415
|
+
taskEditingSuccessorsTabTitle="Successors"
|
|
7336
7416
|
|
|
7337
|
-
|
|
7338
|
-
|
|
7417
|
+
i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7418
|
+
taskEditingDependenciesAddButtonText="Add"
|
|
7339
7419
|
|
|
7340
|
-
|
|
7341
|
-
|
|
7420
|
+
i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7421
|
+
taskEditingDependenciesRemoveButtonText="Remove"
|
|
7342
7422
|
|
|
7343
|
-
|
|
7344
|
-
|
|
7423
|
+
i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7424
|
+
taskEditingDependenciesGridNameColumnTitle="Task Title"
|
|
7345
7425
|
|
|
7346
|
-
|
|
7347
|
-
|
|
7426
|
+
i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7427
|
+
taskEditingDependenciesGridTypeColumnTitle="Type"
|
|
7348
7428
|
|
|
7349
|
-
|
|
7350
|
-
|
|
7429
|
+
i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
|
|
7430
|
+
taskDeleteLabel="Delete"
|
|
7351
7431
|
|
|
7352
|
-
|
|
7353
|
-
|
|
7432
|
+
i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
|
|
7433
|
+
taskEditingDialogTitle="Editing Task"
|
|
7354
7434
|
|
|
7355
|
-
|
|
7356
|
-
|
|
7435
|
+
i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
|
|
7436
|
+
taskEditingDialogCloseTitle="Close"
|
|
7357
7437
|
|
|
7358
|
-
|
|
7359
|
-
|
|
7438
|
+
i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
|
|
7439
|
+
confirmationDialogCloseTitle="Close"
|
|
7360
7440
|
|
|
7361
|
-
|
|
7362
|
-
|
|
7441
|
+
i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
|
|
7442
|
+
confirmationDialogTitle="Delete Task"
|
|
7363
7443
|
|
|
7364
|
-
|
|
7365
|
-
|
|
7444
|
+
i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
|
|
7445
|
+
confirmationDialogContent="Are you sure you want to delete this task?"
|
|
7366
7446
|
|
|
7367
|
-
|
|
7368
|
-
|
|
7447
|
+
i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
|
|
7448
|
+
deleteButtonText="Delete"
|
|
7369
7449
|
|
|
7370
|
-
|
|
7371
|
-
|
|
7450
|
+
i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
|
|
7451
|
+
cancelButtonText="Cancel"
|
|
7372
7452
|
|
|
7373
|
-
|
|
7374
|
-
|
|
7453
|
+
i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
|
|
7454
|
+
saveButtonText="Save"
|
|
7375
7455
|
|
|
7376
|
-
|
|
7377
|
-
|
|
7456
|
+
i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
|
|
7457
|
+
titleFieldInputLabel="Title"
|
|
7378
7458
|
|
|
7379
|
-
|
|
7380
|
-
|
|
7459
|
+
i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
|
|
7460
|
+
startFieldInputLabel="Start"
|
|
7381
7461
|
|
|
7382
|
-
|
|
7383
|
-
|
|
7462
|
+
i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
|
|
7463
|
+
endFieldInputLabel="End"
|
|
7384
7464
|
|
|
7385
|
-
|
|
7386
|
-
|
|
7465
|
+
i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
|
|
7466
|
+
completionRatioFieldInputLabel="Progress"
|
|
7387
7467
|
|
|
7388
|
-
|
|
7389
|
-
|
|
7468
|
+
i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
|
|
7469
|
+
dayViewText="Day"
|
|
7390
7470
|
|
|
7391
|
-
|
|
7392
|
-
|
|
7471
|
+
i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
|
|
7472
|
+
weekViewText="Week"
|
|
7393
7473
|
|
|
7394
|
-
|
|
7395
|
-
|
|
7474
|
+
i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
|
|
7475
|
+
monthViewText="Month"
|
|
7396
7476
|
|
|
7397
|
-
|
|
7398
|
-
|
|
7477
|
+
i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
|
|
7478
|
+
yearViewText="Year"
|
|
7399
7479
|
|
|
7400
|
-
|
|
7401
|
-
|
|
7480
|
+
i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
|
|
7481
|
+
addTaskText="Add Task"
|
|
7402
7482
|
|
|
7403
|
-
|
|
7404
|
-
|
|
7483
|
+
i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
|
|
7484
|
+
addChildText="Add Child"
|
|
7405
7485
|
|
|
7406
|
-
|
|
7407
|
-
|
|
7486
|
+
i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
|
|
7487
|
+
addAboveText="Add Above"
|
|
7408
7488
|
|
|
7409
|
-
|
|
7410
|
-
|
|
7489
|
+
i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
|
|
7490
|
+
addBelowText="Add Below"
|
|
7411
7491
|
|
|
7412
|
-
|
|
7413
|
-
|
|
7492
|
+
i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
|
|
7493
|
+
noRecords="No records available."
|
|
7414
7494
|
|
|
7415
|
-
|
|
7416
|
-
|
|
7495
|
+
i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
|
|
7496
|
+
filter="Filter"
|
|
7417
7497
|
|
|
7418
|
-
|
|
7419
|
-
|
|
7498
|
+
i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
|
|
7499
|
+
filterEqOperator="Is equal to"
|
|
7420
7500
|
|
|
7421
|
-
|
|
7422
|
-
|
|
7501
|
+
i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
|
|
7502
|
+
filterNotEqOperator="Is not equal to"
|
|
7423
7503
|
|
|
7424
|
-
|
|
7425
|
-
|
|
7504
|
+
i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
|
|
7505
|
+
filterIsNullOperator="Is null"
|
|
7426
7506
|
|
|
7427
|
-
|
|
7428
|
-
|
|
7507
|
+
i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
7508
|
+
filterIsNotNullOperator="Is not null"
|
|
7429
7509
|
|
|
7430
|
-
|
|
7431
|
-
|
|
7510
|
+
i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
7511
|
+
filterIsEmptyOperator="Is empty"
|
|
7432
7512
|
|
|
7433
|
-
|
|
7434
|
-
|
|
7513
|
+
i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
7514
|
+
filterIsNotEmptyOperator="Is not empty"
|
|
7435
7515
|
|
|
7436
|
-
|
|
7437
|
-
|
|
7516
|
+
i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
|
|
7517
|
+
filterStartsWithOperator="Starts with"
|
|
7438
7518
|
|
|
7439
|
-
|
|
7440
|
-
|
|
7519
|
+
i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
|
|
7520
|
+
filterContainsOperator="Contains"
|
|
7441
7521
|
|
|
7442
|
-
|
|
7443
|
-
|
|
7522
|
+
i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
7523
|
+
filterNotContainsOperator="Does not contain"
|
|
7444
7524
|
|
|
7445
|
-
|
|
7446
|
-
|
|
7525
|
+
i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
|
|
7526
|
+
filterEndsWithOperator="Ends with"
|
|
7447
7527
|
|
|
7448
|
-
|
|
7449
|
-
|
|
7528
|
+
i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
|
|
7529
|
+
filterGteOperator="Is greater than or equal to"
|
|
7450
7530
|
|
|
7451
|
-
|
|
7452
|
-
|
|
7531
|
+
i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
|
|
7532
|
+
filterGtOperator="Is greater than"
|
|
7453
7533
|
|
|
7454
|
-
|
|
7455
|
-
|
|
7534
|
+
i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
|
|
7535
|
+
filterLteOperator="Is less than or equal to"
|
|
7456
7536
|
|
|
7457
|
-
|
|
7458
|
-
|
|
7537
|
+
i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
|
|
7538
|
+
filterLtOperator="Is less than"
|
|
7459
7539
|
|
|
7460
|
-
|
|
7461
|
-
|
|
7540
|
+
i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
7541
|
+
filterIsTrue="Is True"
|
|
7462
7542
|
|
|
7463
|
-
|
|
7464
|
-
|
|
7543
|
+
i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
7544
|
+
filterIsFalse="Is False"
|
|
7465
7545
|
|
|
7466
|
-
|
|
7467
|
-
|
|
7546
|
+
i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
|
|
7547
|
+
filterBooleanAll="(All)"
|
|
7468
7548
|
|
|
7469
|
-
|
|
7470
|
-
|
|
7549
|
+
i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
7550
|
+
filterAfterOrEqualOperator="Is after or equal to"
|
|
7471
7551
|
|
|
7472
|
-
|
|
7473
|
-
|
|
7552
|
+
i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
|
|
7553
|
+
filterAfterOperator="Is after"
|
|
7474
7554
|
|
|
7475
|
-
|
|
7476
|
-
|
|
7555
|
+
i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
|
|
7556
|
+
filterBeforeOperator="Is before"
|
|
7477
7557
|
|
|
7478
|
-
|
|
7479
|
-
|
|
7558
|
+
i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
7559
|
+
filterBeforeOrEqualOperator="Is before or equal to"
|
|
7480
7560
|
|
|
7481
|
-
|
|
7482
|
-
|
|
7561
|
+
i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
|
|
7562
|
+
filterFilterButton="Filter"
|
|
7483
7563
|
|
|
7484
|
-
|
|
7485
|
-
|
|
7564
|
+
i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
|
|
7565
|
+
filterClearButton="Clear"
|
|
7486
7566
|
|
|
7487
|
-
|
|
7488
|
-
|
|
7567
|
+
i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
|
|
7568
|
+
filterAndLogic="And"
|
|
7489
7569
|
|
|
7490
|
-
|
|
7491
|
-
|
|
7570
|
+
i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
|
|
7571
|
+
filterOrLogic="Or"
|
|
7492
7572
|
|
|
7493
|
-
|
|
7494
|
-
|
|
7573
|
+
i18n-loading="kendo.gantt.loading|The loading text"
|
|
7574
|
+
loading="Loading"
|
|
7495
7575
|
|
|
7496
|
-
|
|
7497
|
-
|
|
7576
|
+
i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
|
|
7577
|
+
columnMenu="Column Menu"
|
|
7498
7578
|
|
|
7499
|
-
|
|
7500
|
-
|
|
7579
|
+
i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
|
|
7580
|
+
columns="Columns"
|
|
7501
7581
|
|
|
7502
|
-
|
|
7503
|
-
|
|
7582
|
+
i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
|
|
7583
|
+
lock-disabled="Lock"
|
|
7504
7584
|
|
|
7505
|
-
|
|
7506
|
-
|
|
7585
|
+
i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
|
|
7586
|
+
unlock-disabled="Unlock"
|
|
7507
7587
|
|
|
7508
|
-
|
|
7509
|
-
|
|
7588
|
+
i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
|
|
7589
|
+
sortable="Sortable"
|
|
7510
7590
|
|
|
7511
|
-
|
|
7512
|
-
|
|
7591
|
+
i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
7592
|
+
sortAscending="Sort Ascending"
|
|
7513
7593
|
|
|
7514
|
-
|
|
7515
|
-
|
|
7594
|
+
i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
|
|
7595
|
+
sortDescending="Sort Descending"
|
|
7516
7596
|
|
|
7517
|
-
|
|
7518
|
-
|
|
7597
|
+
i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
|
|
7598
|
+
sortedDefault="Not Sorted"
|
|
7519
7599
|
|
|
7520
|
-
|
|
7521
|
-
|
|
7600
|
+
i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
7601
|
+
columnsApply="Apply"
|
|
7522
7602
|
|
|
7523
|
-
|
|
7524
|
-
|
|
7603
|
+
i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
7604
|
+
columnsReset="Reset"
|
|
7525
7605
|
|
|
7526
|
-
|
|
7527
|
-
|
|
7606
|
+
i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
|
|
7607
|
+
tooltipStartDateText="Start"
|
|
7528
7608
|
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7609
|
+
i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
|
|
7610
|
+
tooltipEndDateText="End"></ng-container>
|
|
7611
|
+
@if (showToolbar('top')) {
|
|
7612
|
+
<kendo-gantt-toolbar
|
|
7533
7613
|
[attr.aria-label]="toolbarAriaLabel"
|
|
7534
7614
|
[showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
|
|
7535
7615
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -7539,142 +7619,144 @@ class GanttComponent {
|
|
|
7539
7619
|
class="k-gantt-header"
|
|
7540
7620
|
position="top"
|
|
7541
7621
|
[navigable]="navigable"
|
|
7542
|
-
|
|
7622
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
7623
|
+
}
|
|
7543
7624
|
<div class="k-gantt-content">
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7625
|
+
<kendo-splitter [style.border]="0">
|
|
7626
|
+
<kendo-splitter-pane
|
|
7627
|
+
class="k-gantt-treelist k-gantt-treelist-scrollable"
|
|
7628
|
+
[collapsible]="treeListPaneOptions?.collapsible"
|
|
7629
|
+
[collapsed]="treeListPaneOptions?.collapsed"
|
|
7630
|
+
(collapsedChange)="onTreeListCollapsedChange($event)"
|
|
7631
|
+
[scrollable]="false">
|
|
7632
|
+
<kendo-treelist
|
|
7633
|
+
[idField]="taskIdField"
|
|
7634
|
+
[columns]="columns"
|
|
7635
|
+
[data]="data"
|
|
7636
|
+
[hasChildren]="hasChildren"
|
|
7637
|
+
[fetchChildren]="fetchChildren"
|
|
7638
|
+
[navigable]="navigable"
|
|
7639
|
+
[isExpanded]="isExpanded"
|
|
7640
|
+
[autoSize]="columnsAutoSize"
|
|
7641
|
+
[columnMenu]="columnMenu"
|
|
7642
|
+
[reorderable]="columnsReorderable"
|
|
7643
|
+
[resizable]="columnsResizable"
|
|
7644
|
+
[rowClass]="rowClass"
|
|
7645
|
+
[isSelected]="isSelected"
|
|
7646
|
+
[selectable]="selectable"
|
|
7647
|
+
[sortable]="sortable"
|
|
7648
|
+
[sort]="sort"
|
|
7649
|
+
[filterable]="filterMenu"
|
|
7650
|
+
[filter]="filter"
|
|
7651
|
+
(filterChange)="filterChange.emit($event)"
|
|
7652
|
+
(sortChange)="sortChange.emit($event)"
|
|
7572
7653
|
(dataStateChange)="dataStateChange.emit({
|
|
7573
7654
|
filter: $event.filter,
|
|
7574
7655
|
sort: $event.sort
|
|
7575
7656
|
})"
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7657
|
+
(expandStateChange)="expandStateChange.emit($event)"
|
|
7658
|
+
(expand)="rowExpand.emit({ dataItem: $event.dataItem })"
|
|
7659
|
+
(collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
|
|
7660
|
+
(columnReorder)="columnReorder.emit($event)"
|
|
7661
|
+
(columnResize)="columnResize.emit($event)"
|
|
7662
|
+
(columnVisibilityChange)="handleColumnVisibilityChange($event)"
|
|
7663
|
+
(columnLockedChange)="columnLockedChange.emit($event)"
|
|
7664
|
+
(selectionChange)="handleTreeListSelectionChange($event)"
|
|
7665
|
+
(cellClick)="handleTreeListCellClick($event)"
|
|
7666
|
+
(cellClose)="handleCellClose($event)"
|
|
7586
7667
|
[kendoEventsOutsideAngular]="{
|
|
7587
7668
|
dblclick: handleTreeListDoubleClick
|
|
7588
7669
|
}"
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
|
|
7592
|
-
|
|
7593
|
-
|
|
7594
|
-
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
|
|
7602
|
-
|
|
7603
|
-
|
|
7604
|
-
|
|
7605
|
-
|
|
7606
|
-
|
|
7607
|
-
|
|
7608
|
-
|
|
7609
|
-
|
|
7610
|
-
|
|
7611
|
-
|
|
7612
|
-
|
|
7613
|
-
|
|
7614
|
-
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
|
|
7618
|
-
|
|
7619
|
-
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7645
|
-
|
|
7646
|
-
|
|
7647
|
-
|
|
7648
|
-
|
|
7649
|
-
|
|
7650
|
-
|
|
7651
|
-
|
|
7652
|
-
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
7656
|
-
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7661
|
-
|
|
7662
|
-
|
|
7670
|
+
[scope]="this"
|
|
7671
|
+
>
|
|
7672
|
+
<kendo-treelist-messages
|
|
7673
|
+
[noRecords]="getText('noRecords')"
|
|
7674
|
+
[filter]="getText('filter')"
|
|
7675
|
+
[filterEqOperator]="getText('filterEqOperator')"
|
|
7676
|
+
[filterNotEqOperator]="getText('filterNotEqOperator')"
|
|
7677
|
+
[filterIsNullOperator]="getText('filterIsNullOperator')"
|
|
7678
|
+
[filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
|
|
7679
|
+
[filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
|
|
7680
|
+
[filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
|
|
7681
|
+
[filterStartsWithOperator]="getText('filterStartsWithOperator')"
|
|
7682
|
+
[filterContainsOperator]="getText('filterContainsOperator')"
|
|
7683
|
+
[filterNotContainsOperator]="getText('filterNotContainsOperator')"
|
|
7684
|
+
[filterEndsWithOperator]="getText('filterEndsWithOperator')"
|
|
7685
|
+
[filterGteOperator]="getText('filterGteOperator')"
|
|
7686
|
+
[filterGtOperator]="getText('filterGtOperator')"
|
|
7687
|
+
[filterLteOperator]="getText('filterLteOperator')"
|
|
7688
|
+
[filterLtOperator]="getText('filterLtOperator')"
|
|
7689
|
+
[filterIsTrue]="getText('filterIsTrue')"
|
|
7690
|
+
[filterIsFalse]="getText('filterIsFalse')"
|
|
7691
|
+
[filterBooleanAll]="getText('filterBooleanAll')"
|
|
7692
|
+
[filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
|
|
7693
|
+
[filterAfterOperator]="getText('filterAfterOperator')"
|
|
7694
|
+
[filterBeforeOperator]="getText('filterBeforeOperator')"
|
|
7695
|
+
[filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
|
|
7696
|
+
[filterFilterButton]="getText('filterFilterButton')"
|
|
7697
|
+
[filterClearButton]="getText('filterClearButton')"
|
|
7698
|
+
[filterAndLogic]="getText('filterAndLogic')"
|
|
7699
|
+
[filterOrLogic]="getText('filterOrLogic')"
|
|
7700
|
+
[loading]="getText('loading')"
|
|
7701
|
+
[columnMenu]="getText('columnMenu')"
|
|
7702
|
+
[columns]="getText('columns')"
|
|
7703
|
+
[sortable]="getText('sortable')"
|
|
7704
|
+
[sortAscending]="getText('sortAscending')"
|
|
7705
|
+
[sortDescending]="getText('sortDescending')"
|
|
7706
|
+
[sortedAscending]="getText('sortedAscending')"
|
|
7707
|
+
[sortedDescending]="getText('sortedDescending')"
|
|
7708
|
+
[sortedDefault]="getText('sortedDefault')"
|
|
7709
|
+
[columnsApply]="getText('columnsApply')"
|
|
7710
|
+
[columnsReset]="getText('columnsReset')"
|
|
7711
|
+
>
|
|
7712
|
+
</kendo-treelist-messages>
|
|
7713
|
+
</kendo-treelist>
|
|
7714
|
+
</kendo-splitter-pane>
|
|
7715
|
+
<kendo-splitter-pane
|
|
7716
|
+
[collapsible]="timelinePaneOptions?.collapsible"
|
|
7717
|
+
[resizable]="timelinePaneOptions?.resizable"
|
|
7718
|
+
[collapsed]="timelinePaneOptions?.collapsed"
|
|
7719
|
+
[min]="timelinePaneOptions?.min"
|
|
7720
|
+
[max]="timelinePaneOptions?.max"
|
|
7721
|
+
[size]="timelinePaneOptions?.size"
|
|
7722
|
+
(collapsedChange)="onTimelineCollapsedChange($event)"
|
|
7723
|
+
(sizeChange)="onTimelinePaneSizeChange($event)"
|
|
7724
|
+
[scrollable]="false"
|
|
7725
|
+
class="k-gantt-timeline-pane">
|
|
7726
|
+
@if (views && views.length) {
|
|
7727
|
+
<kendo-gantt-timeline
|
|
7728
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
7729
|
+
[dragScrollSettings]="dragScrollSettings"
|
|
7730
|
+
[rows]="viewItems"
|
|
7731
|
+
[slots]="timelineSlots"
|
|
7732
|
+
[currentTimeMarker]="activeViewCurrentTimeMarker"
|
|
7733
|
+
[groupSlots]="timelineGroupSlots"
|
|
7734
|
+
[tableWidth]="tableWidth"
|
|
7735
|
+
[activeView]="activeView"
|
|
7736
|
+
[taskContentTemplate]="taskContentTemplate?.templateRef"
|
|
7737
|
+
[taskTemplate]="taskTemplate?.templateRef"
|
|
7738
|
+
[summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
|
|
7739
|
+
[taskClass]="taskClass"
|
|
7740
|
+
[dependencies]="dependencies"
|
|
7741
|
+
[isExpanded]="isExpanded"
|
|
7742
|
+
[selectable]="selectable"
|
|
7743
|
+
[isTaskSelected]="isTaskSelected"
|
|
7663
7744
|
[kendoEventsOutsideAngular]="{
|
|
7664
7745
|
click: handleTimelineClick,
|
|
7665
7746
|
contextmenu: handleTimelineRightClick,
|
|
7666
7747
|
dblclick: handleTimelineDblClick,
|
|
7667
7748
|
mousedown: handleTimelineMouseDown
|
|
7668
7749
|
}"
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
</kendo-splitter>
|
|
7750
|
+
[customTooltipTemplate]="taskTooltipTemplate"
|
|
7751
|
+
[tooltipOptions]="taskTooltipOptions"
|
|
7752
|
+
[scope]="this"
|
|
7753
|
+
></kendo-gantt-timeline>
|
|
7754
|
+
}
|
|
7755
|
+
</kendo-splitter-pane>
|
|
7756
|
+
</kendo-splitter>
|
|
7675
7757
|
</div>
|
|
7676
|
-
|
|
7677
|
-
|
|
7758
|
+
@if (showToolbar('bottom')) {
|
|
7759
|
+
<kendo-gantt-toolbar
|
|
7678
7760
|
[attr.aria-label]="toolbarAriaLabel"
|
|
7679
7761
|
[showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
|
|
7680
7762
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -7683,27 +7765,33 @@ class GanttComponent {
|
|
|
7683
7765
|
[activeView]="activeView"
|
|
7684
7766
|
[navigable]="navigable"
|
|
7685
7767
|
class="k-gantt-footer"
|
|
7686
|
-
position="bottom"
|
|
7687
|
-
|
|
7688
|
-
|
|
7768
|
+
position="bottom"
|
|
7769
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
7770
|
+
}
|
|
7771
|
+
@if (showEditingDialog) {
|
|
7772
|
+
<kendo-gantt-edit-dialog
|
|
7689
7773
|
[data]="data">
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7774
|
+
</kendo-gantt-edit-dialog>
|
|
7775
|
+
}
|
|
7776
|
+
@if (showConfirmationDialog) {
|
|
7777
|
+
<kendo-dialog
|
|
7693
7778
|
[width]="575"
|
|
7694
7779
|
[height]="170"
|
|
7695
7780
|
[title]="getText('confirmationDialogTitle')"
|
|
7696
7781
|
(close)="handleConfirmationDialogClose()">
|
|
7697
7782
|
<span>{{ getText('confirmationDialogContent') }}</span>
|
|
7698
7783
|
<kendo-dialog-actions layout="start">
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7784
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
7785
|
+
<button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
|
|
7786
|
+
<button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
|
|
7702
7787
|
</kendo-dialog-actions>
|
|
7703
|
-
|
|
7788
|
+
</kendo-dialog>
|
|
7789
|
+
}
|
|
7704
7790
|
|
|
7705
|
-
|
|
7706
|
-
|
|
7791
|
+
@if (showLicenseWatermark) {
|
|
7792
|
+
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
7793
|
+
}
|
|
7794
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { 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", "splitterBarClass"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { kind: "component", type: SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "splitterBarAttributes", "splitterBarClass", "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", "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", "customTooltipTemplate", "tooltipOptions", "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", inputs: ["width"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }] });
|
|
7707
7795
|
}
|
|
7708
7796
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttComponent, decorators: [{
|
|
7709
7797
|
type: Component,
|
|
@@ -7741,211 +7829,211 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7741
7829
|
],
|
|
7742
7830
|
template: `
|
|
7743
7831
|
<ng-container kendoGanttLocalizedMessages
|
|
7744
|
-
|
|
7745
|
-
|
|
7832
|
+
i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
|
|
7833
|
+
taskEditingGeneralTabTitle="General"
|
|
7746
7834
|
|
|
7747
|
-
|
|
7748
|
-
|
|
7835
|
+
i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
|
|
7836
|
+
taskEditingPredecessorsTabTitle="Predecessors"
|
|
7749
7837
|
|
|
7750
|
-
|
|
7751
|
-
|
|
7838
|
+
i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
|
|
7839
|
+
taskEditingSuccessorsTabTitle="Successors"
|
|
7752
7840
|
|
|
7753
|
-
|
|
7754
|
-
|
|
7841
|
+
i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7842
|
+
taskEditingDependenciesAddButtonText="Add"
|
|
7755
7843
|
|
|
7756
|
-
|
|
7757
|
-
|
|
7844
|
+
i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7845
|
+
taskEditingDependenciesRemoveButtonText="Remove"
|
|
7758
7846
|
|
|
7759
|
-
|
|
7760
|
-
|
|
7847
|
+
i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7848
|
+
taskEditingDependenciesGridNameColumnTitle="Task Title"
|
|
7761
7849
|
|
|
7762
|
-
|
|
7763
|
-
|
|
7850
|
+
i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7851
|
+
taskEditingDependenciesGridTypeColumnTitle="Type"
|
|
7764
7852
|
|
|
7765
|
-
|
|
7766
|
-
|
|
7853
|
+
i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
|
|
7854
|
+
taskDeleteLabel="Delete"
|
|
7767
7855
|
|
|
7768
|
-
|
|
7769
|
-
|
|
7856
|
+
i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
|
|
7857
|
+
taskEditingDialogTitle="Editing Task"
|
|
7770
7858
|
|
|
7771
|
-
|
|
7772
|
-
|
|
7859
|
+
i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
|
|
7860
|
+
taskEditingDialogCloseTitle="Close"
|
|
7773
7861
|
|
|
7774
|
-
|
|
7775
|
-
|
|
7862
|
+
i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
|
|
7863
|
+
confirmationDialogCloseTitle="Close"
|
|
7776
7864
|
|
|
7777
|
-
|
|
7778
|
-
|
|
7865
|
+
i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
|
|
7866
|
+
confirmationDialogTitle="Delete Task"
|
|
7779
7867
|
|
|
7780
|
-
|
|
7781
|
-
|
|
7868
|
+
i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
|
|
7869
|
+
confirmationDialogContent="Are you sure you want to delete this task?"
|
|
7782
7870
|
|
|
7783
|
-
|
|
7784
|
-
|
|
7871
|
+
i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
|
|
7872
|
+
deleteButtonText="Delete"
|
|
7785
7873
|
|
|
7786
|
-
|
|
7787
|
-
|
|
7874
|
+
i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
|
|
7875
|
+
cancelButtonText="Cancel"
|
|
7788
7876
|
|
|
7789
|
-
|
|
7790
|
-
|
|
7877
|
+
i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
|
|
7878
|
+
saveButtonText="Save"
|
|
7791
7879
|
|
|
7792
|
-
|
|
7793
|
-
|
|
7880
|
+
i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
|
|
7881
|
+
titleFieldInputLabel="Title"
|
|
7794
7882
|
|
|
7795
|
-
|
|
7796
|
-
|
|
7883
|
+
i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
|
|
7884
|
+
startFieldInputLabel="Start"
|
|
7797
7885
|
|
|
7798
|
-
|
|
7799
|
-
|
|
7886
|
+
i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
|
|
7887
|
+
endFieldInputLabel="End"
|
|
7800
7888
|
|
|
7801
|
-
|
|
7802
|
-
|
|
7889
|
+
i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
|
|
7890
|
+
completionRatioFieldInputLabel="Progress"
|
|
7803
7891
|
|
|
7804
|
-
|
|
7805
|
-
|
|
7892
|
+
i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
|
|
7893
|
+
dayViewText="Day"
|
|
7806
7894
|
|
|
7807
|
-
|
|
7808
|
-
|
|
7895
|
+
i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
|
|
7896
|
+
weekViewText="Week"
|
|
7809
7897
|
|
|
7810
|
-
|
|
7811
|
-
|
|
7898
|
+
i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
|
|
7899
|
+
monthViewText="Month"
|
|
7812
7900
|
|
|
7813
|
-
|
|
7814
|
-
|
|
7901
|
+
i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
|
|
7902
|
+
yearViewText="Year"
|
|
7815
7903
|
|
|
7816
|
-
|
|
7817
|
-
|
|
7904
|
+
i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
|
|
7905
|
+
addTaskText="Add Task"
|
|
7818
7906
|
|
|
7819
|
-
|
|
7820
|
-
|
|
7907
|
+
i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
|
|
7908
|
+
addChildText="Add Child"
|
|
7821
7909
|
|
|
7822
|
-
|
|
7823
|
-
|
|
7910
|
+
i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
|
|
7911
|
+
addAboveText="Add Above"
|
|
7824
7912
|
|
|
7825
|
-
|
|
7826
|
-
|
|
7913
|
+
i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
|
|
7914
|
+
addBelowText="Add Below"
|
|
7827
7915
|
|
|
7828
|
-
|
|
7829
|
-
|
|
7916
|
+
i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
|
|
7917
|
+
noRecords="No records available."
|
|
7830
7918
|
|
|
7831
|
-
|
|
7832
|
-
|
|
7919
|
+
i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
|
|
7920
|
+
filter="Filter"
|
|
7833
7921
|
|
|
7834
|
-
|
|
7835
|
-
|
|
7922
|
+
i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
|
|
7923
|
+
filterEqOperator="Is equal to"
|
|
7836
7924
|
|
|
7837
|
-
|
|
7838
|
-
|
|
7925
|
+
i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
|
|
7926
|
+
filterNotEqOperator="Is not equal to"
|
|
7839
7927
|
|
|
7840
|
-
|
|
7841
|
-
|
|
7928
|
+
i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
|
|
7929
|
+
filterIsNullOperator="Is null"
|
|
7842
7930
|
|
|
7843
|
-
|
|
7844
|
-
|
|
7931
|
+
i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
7932
|
+
filterIsNotNullOperator="Is not null"
|
|
7845
7933
|
|
|
7846
|
-
|
|
7847
|
-
|
|
7934
|
+
i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
7935
|
+
filterIsEmptyOperator="Is empty"
|
|
7848
7936
|
|
|
7849
|
-
|
|
7850
|
-
|
|
7937
|
+
i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
7938
|
+
filterIsNotEmptyOperator="Is not empty"
|
|
7851
7939
|
|
|
7852
|
-
|
|
7853
|
-
|
|
7940
|
+
i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
|
|
7941
|
+
filterStartsWithOperator="Starts with"
|
|
7854
7942
|
|
|
7855
|
-
|
|
7856
|
-
|
|
7943
|
+
i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
|
|
7944
|
+
filterContainsOperator="Contains"
|
|
7857
7945
|
|
|
7858
|
-
|
|
7859
|
-
|
|
7946
|
+
i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
7947
|
+
filterNotContainsOperator="Does not contain"
|
|
7860
7948
|
|
|
7861
|
-
|
|
7862
|
-
|
|
7949
|
+
i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
|
|
7950
|
+
filterEndsWithOperator="Ends with"
|
|
7863
7951
|
|
|
7864
|
-
|
|
7865
|
-
|
|
7952
|
+
i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
|
|
7953
|
+
filterGteOperator="Is greater than or equal to"
|
|
7866
7954
|
|
|
7867
|
-
|
|
7868
|
-
|
|
7955
|
+
i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
|
|
7956
|
+
filterGtOperator="Is greater than"
|
|
7869
7957
|
|
|
7870
|
-
|
|
7871
|
-
|
|
7958
|
+
i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
|
|
7959
|
+
filterLteOperator="Is less than or equal to"
|
|
7872
7960
|
|
|
7873
|
-
|
|
7874
|
-
|
|
7961
|
+
i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
|
|
7962
|
+
filterLtOperator="Is less than"
|
|
7875
7963
|
|
|
7876
|
-
|
|
7877
|
-
|
|
7964
|
+
i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
7965
|
+
filterIsTrue="Is True"
|
|
7878
7966
|
|
|
7879
|
-
|
|
7880
|
-
|
|
7967
|
+
i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
7968
|
+
filterIsFalse="Is False"
|
|
7881
7969
|
|
|
7882
|
-
|
|
7883
|
-
|
|
7970
|
+
i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
|
|
7971
|
+
filterBooleanAll="(All)"
|
|
7884
7972
|
|
|
7885
|
-
|
|
7886
|
-
|
|
7973
|
+
i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
7974
|
+
filterAfterOrEqualOperator="Is after or equal to"
|
|
7887
7975
|
|
|
7888
|
-
|
|
7889
|
-
|
|
7976
|
+
i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
|
|
7977
|
+
filterAfterOperator="Is after"
|
|
7890
7978
|
|
|
7891
|
-
|
|
7892
|
-
|
|
7979
|
+
i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
|
|
7980
|
+
filterBeforeOperator="Is before"
|
|
7893
7981
|
|
|
7894
|
-
|
|
7895
|
-
|
|
7982
|
+
i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
7983
|
+
filterBeforeOrEqualOperator="Is before or equal to"
|
|
7896
7984
|
|
|
7897
|
-
|
|
7898
|
-
|
|
7985
|
+
i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
|
|
7986
|
+
filterFilterButton="Filter"
|
|
7899
7987
|
|
|
7900
|
-
|
|
7901
|
-
|
|
7988
|
+
i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
|
|
7989
|
+
filterClearButton="Clear"
|
|
7902
7990
|
|
|
7903
|
-
|
|
7904
|
-
|
|
7991
|
+
i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
|
|
7992
|
+
filterAndLogic="And"
|
|
7905
7993
|
|
|
7906
|
-
|
|
7907
|
-
|
|
7994
|
+
i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
|
|
7995
|
+
filterOrLogic="Or"
|
|
7908
7996
|
|
|
7909
|
-
|
|
7910
|
-
|
|
7997
|
+
i18n-loading="kendo.gantt.loading|The loading text"
|
|
7998
|
+
loading="Loading"
|
|
7911
7999
|
|
|
7912
|
-
|
|
7913
|
-
|
|
8000
|
+
i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
|
|
8001
|
+
columnMenu="Column Menu"
|
|
7914
8002
|
|
|
7915
|
-
|
|
7916
|
-
|
|
8003
|
+
i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
|
|
8004
|
+
columns="Columns"
|
|
7917
8005
|
|
|
7918
|
-
|
|
7919
|
-
|
|
8006
|
+
i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
|
|
8007
|
+
lock-disabled="Lock"
|
|
7920
8008
|
|
|
7921
|
-
|
|
7922
|
-
|
|
8009
|
+
i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
|
|
8010
|
+
unlock-disabled="Unlock"
|
|
7923
8011
|
|
|
7924
|
-
|
|
7925
|
-
|
|
8012
|
+
i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
|
|
8013
|
+
sortable="Sortable"
|
|
7926
8014
|
|
|
7927
|
-
|
|
7928
|
-
|
|
8015
|
+
i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
8016
|
+
sortAscending="Sort Ascending"
|
|
7929
8017
|
|
|
7930
|
-
|
|
7931
|
-
|
|
8018
|
+
i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
|
|
8019
|
+
sortDescending="Sort Descending"
|
|
7932
8020
|
|
|
7933
|
-
|
|
7934
|
-
|
|
8021
|
+
i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
|
|
8022
|
+
sortedDefault="Not Sorted"
|
|
7935
8023
|
|
|
7936
|
-
|
|
7937
|
-
|
|
8024
|
+
i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
8025
|
+
columnsApply="Apply"
|
|
7938
8026
|
|
|
7939
|
-
|
|
7940
|
-
|
|
8027
|
+
i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
8028
|
+
columnsReset="Reset"
|
|
7941
8029
|
|
|
7942
|
-
|
|
7943
|
-
|
|
8030
|
+
i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
|
|
8031
|
+
tooltipStartDateText="Start"
|
|
7944
8032
|
|
|
7945
|
-
|
|
7946
|
-
|
|
7947
|
-
|
|
7948
|
-
|
|
8033
|
+
i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
|
|
8034
|
+
tooltipEndDateText="End"></ng-container>
|
|
8035
|
+
@if (showToolbar('top')) {
|
|
8036
|
+
<kendo-gantt-toolbar
|
|
7949
8037
|
[attr.aria-label]="toolbarAriaLabel"
|
|
7950
8038
|
[showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
|
|
7951
8039
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -7955,142 +8043,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7955
8043
|
class="k-gantt-header"
|
|
7956
8044
|
position="top"
|
|
7957
8045
|
[navigable]="navigable"
|
|
7958
|
-
|
|
8046
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
8047
|
+
}
|
|
7959
8048
|
<div class="k-gantt-content">
|
|
7960
|
-
|
|
7961
|
-
|
|
7962
|
-
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
|
|
7966
|
-
|
|
7967
|
-
|
|
7968
|
-
|
|
7969
|
-
|
|
7970
|
-
|
|
7971
|
-
|
|
7972
|
-
|
|
7973
|
-
|
|
7974
|
-
|
|
7975
|
-
|
|
7976
|
-
|
|
7977
|
-
|
|
7978
|
-
|
|
7979
|
-
|
|
7980
|
-
|
|
7981
|
-
|
|
7982
|
-
|
|
7983
|
-
|
|
7984
|
-
|
|
7985
|
-
|
|
7986
|
-
|
|
7987
|
-
|
|
8049
|
+
<kendo-splitter [style.border]="0">
|
|
8050
|
+
<kendo-splitter-pane
|
|
8051
|
+
class="k-gantt-treelist k-gantt-treelist-scrollable"
|
|
8052
|
+
[collapsible]="treeListPaneOptions?.collapsible"
|
|
8053
|
+
[collapsed]="treeListPaneOptions?.collapsed"
|
|
8054
|
+
(collapsedChange)="onTreeListCollapsedChange($event)"
|
|
8055
|
+
[scrollable]="false">
|
|
8056
|
+
<kendo-treelist
|
|
8057
|
+
[idField]="taskIdField"
|
|
8058
|
+
[columns]="columns"
|
|
8059
|
+
[data]="data"
|
|
8060
|
+
[hasChildren]="hasChildren"
|
|
8061
|
+
[fetchChildren]="fetchChildren"
|
|
8062
|
+
[navigable]="navigable"
|
|
8063
|
+
[isExpanded]="isExpanded"
|
|
8064
|
+
[autoSize]="columnsAutoSize"
|
|
8065
|
+
[columnMenu]="columnMenu"
|
|
8066
|
+
[reorderable]="columnsReorderable"
|
|
8067
|
+
[resizable]="columnsResizable"
|
|
8068
|
+
[rowClass]="rowClass"
|
|
8069
|
+
[isSelected]="isSelected"
|
|
8070
|
+
[selectable]="selectable"
|
|
8071
|
+
[sortable]="sortable"
|
|
8072
|
+
[sort]="sort"
|
|
8073
|
+
[filterable]="filterMenu"
|
|
8074
|
+
[filter]="filter"
|
|
8075
|
+
(filterChange)="filterChange.emit($event)"
|
|
8076
|
+
(sortChange)="sortChange.emit($event)"
|
|
7988
8077
|
(dataStateChange)="dataStateChange.emit({
|
|
7989
8078
|
filter: $event.filter,
|
|
7990
8079
|
sort: $event.sort
|
|
7991
8080
|
})"
|
|
7992
|
-
|
|
7993
|
-
|
|
7994
|
-
|
|
7995
|
-
|
|
7996
|
-
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
|
|
8081
|
+
(expandStateChange)="expandStateChange.emit($event)"
|
|
8082
|
+
(expand)="rowExpand.emit({ dataItem: $event.dataItem })"
|
|
8083
|
+
(collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
|
|
8084
|
+
(columnReorder)="columnReorder.emit($event)"
|
|
8085
|
+
(columnResize)="columnResize.emit($event)"
|
|
8086
|
+
(columnVisibilityChange)="handleColumnVisibilityChange($event)"
|
|
8087
|
+
(columnLockedChange)="columnLockedChange.emit($event)"
|
|
8088
|
+
(selectionChange)="handleTreeListSelectionChange($event)"
|
|
8089
|
+
(cellClick)="handleTreeListCellClick($event)"
|
|
8090
|
+
(cellClose)="handleCellClose($event)"
|
|
8002
8091
|
[kendoEventsOutsideAngular]="{
|
|
8003
8092
|
dblclick: handleTreeListDoubleClick
|
|
8004
8093
|
}"
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
8018
|
-
|
|
8019
|
-
|
|
8020
|
-
|
|
8021
|
-
|
|
8022
|
-
|
|
8023
|
-
|
|
8024
|
-
|
|
8025
|
-
|
|
8026
|
-
|
|
8027
|
-
|
|
8028
|
-
|
|
8029
|
-
|
|
8030
|
-
|
|
8031
|
-
|
|
8032
|
-
|
|
8033
|
-
|
|
8034
|
-
|
|
8035
|
-
|
|
8036
|
-
|
|
8037
|
-
|
|
8038
|
-
|
|
8039
|
-
|
|
8040
|
-
|
|
8041
|
-
|
|
8042
|
-
|
|
8043
|
-
|
|
8044
|
-
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8049
|
-
|
|
8050
|
-
|
|
8051
|
-
|
|
8052
|
-
|
|
8053
|
-
|
|
8054
|
-
|
|
8055
|
-
|
|
8056
|
-
|
|
8057
|
-
|
|
8058
|
-
|
|
8059
|
-
|
|
8060
|
-
|
|
8061
|
-
|
|
8062
|
-
|
|
8063
|
-
|
|
8064
|
-
|
|
8065
|
-
|
|
8066
|
-
|
|
8067
|
-
|
|
8068
|
-
|
|
8069
|
-
|
|
8070
|
-
|
|
8071
|
-
|
|
8072
|
-
|
|
8073
|
-
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
|
|
8094
|
+
[scope]="this"
|
|
8095
|
+
>
|
|
8096
|
+
<kendo-treelist-messages
|
|
8097
|
+
[noRecords]="getText('noRecords')"
|
|
8098
|
+
[filter]="getText('filter')"
|
|
8099
|
+
[filterEqOperator]="getText('filterEqOperator')"
|
|
8100
|
+
[filterNotEqOperator]="getText('filterNotEqOperator')"
|
|
8101
|
+
[filterIsNullOperator]="getText('filterIsNullOperator')"
|
|
8102
|
+
[filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
|
|
8103
|
+
[filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
|
|
8104
|
+
[filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
|
|
8105
|
+
[filterStartsWithOperator]="getText('filterStartsWithOperator')"
|
|
8106
|
+
[filterContainsOperator]="getText('filterContainsOperator')"
|
|
8107
|
+
[filterNotContainsOperator]="getText('filterNotContainsOperator')"
|
|
8108
|
+
[filterEndsWithOperator]="getText('filterEndsWithOperator')"
|
|
8109
|
+
[filterGteOperator]="getText('filterGteOperator')"
|
|
8110
|
+
[filterGtOperator]="getText('filterGtOperator')"
|
|
8111
|
+
[filterLteOperator]="getText('filterLteOperator')"
|
|
8112
|
+
[filterLtOperator]="getText('filterLtOperator')"
|
|
8113
|
+
[filterIsTrue]="getText('filterIsTrue')"
|
|
8114
|
+
[filterIsFalse]="getText('filterIsFalse')"
|
|
8115
|
+
[filterBooleanAll]="getText('filterBooleanAll')"
|
|
8116
|
+
[filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
|
|
8117
|
+
[filterAfterOperator]="getText('filterAfterOperator')"
|
|
8118
|
+
[filterBeforeOperator]="getText('filterBeforeOperator')"
|
|
8119
|
+
[filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
|
|
8120
|
+
[filterFilterButton]="getText('filterFilterButton')"
|
|
8121
|
+
[filterClearButton]="getText('filterClearButton')"
|
|
8122
|
+
[filterAndLogic]="getText('filterAndLogic')"
|
|
8123
|
+
[filterOrLogic]="getText('filterOrLogic')"
|
|
8124
|
+
[loading]="getText('loading')"
|
|
8125
|
+
[columnMenu]="getText('columnMenu')"
|
|
8126
|
+
[columns]="getText('columns')"
|
|
8127
|
+
[sortable]="getText('sortable')"
|
|
8128
|
+
[sortAscending]="getText('sortAscending')"
|
|
8129
|
+
[sortDescending]="getText('sortDescending')"
|
|
8130
|
+
[sortedAscending]="getText('sortedAscending')"
|
|
8131
|
+
[sortedDescending]="getText('sortedDescending')"
|
|
8132
|
+
[sortedDefault]="getText('sortedDefault')"
|
|
8133
|
+
[columnsApply]="getText('columnsApply')"
|
|
8134
|
+
[columnsReset]="getText('columnsReset')"
|
|
8135
|
+
>
|
|
8136
|
+
</kendo-treelist-messages>
|
|
8137
|
+
</kendo-treelist>
|
|
8138
|
+
</kendo-splitter-pane>
|
|
8139
|
+
<kendo-splitter-pane
|
|
8140
|
+
[collapsible]="timelinePaneOptions?.collapsible"
|
|
8141
|
+
[resizable]="timelinePaneOptions?.resizable"
|
|
8142
|
+
[collapsed]="timelinePaneOptions?.collapsed"
|
|
8143
|
+
[min]="timelinePaneOptions?.min"
|
|
8144
|
+
[max]="timelinePaneOptions?.max"
|
|
8145
|
+
[size]="timelinePaneOptions?.size"
|
|
8146
|
+
(collapsedChange)="onTimelineCollapsedChange($event)"
|
|
8147
|
+
(sizeChange)="onTimelinePaneSizeChange($event)"
|
|
8148
|
+
[scrollable]="false"
|
|
8149
|
+
class="k-gantt-timeline-pane">
|
|
8150
|
+
@if (views && views.length) {
|
|
8151
|
+
<kendo-gantt-timeline
|
|
8152
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
8153
|
+
[dragScrollSettings]="dragScrollSettings"
|
|
8154
|
+
[rows]="viewItems"
|
|
8155
|
+
[slots]="timelineSlots"
|
|
8156
|
+
[currentTimeMarker]="activeViewCurrentTimeMarker"
|
|
8157
|
+
[groupSlots]="timelineGroupSlots"
|
|
8158
|
+
[tableWidth]="tableWidth"
|
|
8159
|
+
[activeView]="activeView"
|
|
8160
|
+
[taskContentTemplate]="taskContentTemplate?.templateRef"
|
|
8161
|
+
[taskTemplate]="taskTemplate?.templateRef"
|
|
8162
|
+
[summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
|
|
8163
|
+
[taskClass]="taskClass"
|
|
8164
|
+
[dependencies]="dependencies"
|
|
8165
|
+
[isExpanded]="isExpanded"
|
|
8166
|
+
[selectable]="selectable"
|
|
8167
|
+
[isTaskSelected]="isTaskSelected"
|
|
8079
8168
|
[kendoEventsOutsideAngular]="{
|
|
8080
8169
|
click: handleTimelineClick,
|
|
8081
8170
|
contextmenu: handleTimelineRightClick,
|
|
8082
8171
|
dblclick: handleTimelineDblClick,
|
|
8083
8172
|
mousedown: handleTimelineMouseDown
|
|
8084
8173
|
}"
|
|
8085
|
-
|
|
8086
|
-
|
|
8087
|
-
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
</kendo-splitter>
|
|
8174
|
+
[customTooltipTemplate]="taskTooltipTemplate"
|
|
8175
|
+
[tooltipOptions]="taskTooltipOptions"
|
|
8176
|
+
[scope]="this"
|
|
8177
|
+
></kendo-gantt-timeline>
|
|
8178
|
+
}
|
|
8179
|
+
</kendo-splitter-pane>
|
|
8180
|
+
</kendo-splitter>
|
|
8091
8181
|
</div>
|
|
8092
|
-
|
|
8093
|
-
|
|
8182
|
+
@if (showToolbar('bottom')) {
|
|
8183
|
+
<kendo-gantt-toolbar
|
|
8094
8184
|
[attr.aria-label]="toolbarAriaLabel"
|
|
8095
8185
|
[showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
|
|
8096
8186
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -8099,29 +8189,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8099
8189
|
[activeView]="activeView"
|
|
8100
8190
|
[navigable]="navigable"
|
|
8101
8191
|
class="k-gantt-footer"
|
|
8102
|
-
position="bottom"
|
|
8103
|
-
|
|
8104
|
-
|
|
8192
|
+
position="bottom"
|
|
8193
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
8194
|
+
}
|
|
8195
|
+
@if (showEditingDialog) {
|
|
8196
|
+
<kendo-gantt-edit-dialog
|
|
8105
8197
|
[data]="data">
|
|
8106
|
-
|
|
8107
|
-
|
|
8108
|
-
|
|
8198
|
+
</kendo-gantt-edit-dialog>
|
|
8199
|
+
}
|
|
8200
|
+
@if (showConfirmationDialog) {
|
|
8201
|
+
<kendo-dialog
|
|
8109
8202
|
[width]="575"
|
|
8110
8203
|
[height]="170"
|
|
8111
8204
|
[title]="getText('confirmationDialogTitle')"
|
|
8112
8205
|
(close)="handleConfirmationDialogClose()">
|
|
8113
8206
|
<span>{{ getText('confirmationDialogContent') }}</span>
|
|
8114
8207
|
<kendo-dialog-actions layout="start">
|
|
8115
|
-
|
|
8116
|
-
|
|
8117
|
-
|
|
8208
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
8209
|
+
<button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
|
|
8210
|
+
<button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
|
|
8118
8211
|
</kendo-dialog-actions>
|
|
8119
|
-
|
|
8212
|
+
</kendo-dialog>
|
|
8213
|
+
}
|
|
8120
8214
|
|
|
8121
|
-
|
|
8122
|
-
|
|
8215
|
+
@if (showLicenseWatermark) {
|
|
8216
|
+
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
8217
|
+
}
|
|
8218
|
+
`,
|
|
8123
8219
|
standalone: true,
|
|
8124
|
-
imports: [LocalizedMessagesDirective,
|
|
8220
|
+
imports: [LocalizedMessagesDirective, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
|
|
8125
8221
|
}]
|
|
8126
8222
|
}], ctorParameters: () => [{ 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 }, { type: i1.IntlService }, { type: undefined, decorators: [{
|
|
8127
8223
|
type: Inject,
|