@progress/kendo-angular-gantt 21.1.1-develop.2 → 21.2.0-develop.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/editing/task-fields.component.mjs +70 -55
- package/esm2022/gantt.component.mjs +560 -545
- 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 +290 -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 +1351 -1257
- 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
|
@@ -15,7 +15,7 @@ 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: 1764002481,
|
|
48
|
+
version: '21.2.0-develop.2',
|
|
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,
|
|
@@ -3342,6 +3368,11 @@ class GanttTimelineComponent {
|
|
|
3342
3368
|
this.createTimeMarker();
|
|
3343
3369
|
}
|
|
3344
3370
|
}
|
|
3371
|
+
trackBySlotIndex(index, item) {
|
|
3372
|
+
// Combine index with timestamp to ensure uniqueness
|
|
3373
|
+
// even when multiple slots have the same start time
|
|
3374
|
+
return `${index}-${item.start.getTime()}`;
|
|
3375
|
+
}
|
|
3345
3376
|
ngAfterViewInit() {
|
|
3346
3377
|
this.currentTimeMarkerService.slots = this.slots;
|
|
3347
3378
|
this.currentTimeMarkerService.rows = this.rows;
|
|
@@ -3377,149 +3408,157 @@ class GanttTimelineComponent {
|
|
|
3377
3408
|
});
|
|
3378
3409
|
}
|
|
3379
3410
|
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: "
|
|
3411
|
+
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
3412
|
<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>
|
|
3413
|
+
<div class="k-grid-header">
|
|
3414
|
+
<div #timelineHeaderWrap class="k-grid-header-wrap">
|
|
3415
|
+
<table
|
|
3416
|
+
class="k-table k-table-md k-grid-header-table"
|
|
3417
|
+
role="presentation"
|
|
3418
|
+
[style.width.px]="tableWidth"
|
|
3419
|
+
>
|
|
3420
|
+
<tbody
|
|
3421
|
+
kendoGanttHeaderTableBody
|
|
3422
|
+
[groupSlots]="groupSlots"
|
|
3423
|
+
[slots]="slots">
|
|
3424
|
+
</tbody>
|
|
3425
|
+
</table>
|
|
3396
3426
|
</div>
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3427
|
+
</div>
|
|
3428
|
+
<!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
|
|
3429
|
+
<div
|
|
3430
|
+
#timelineContent
|
|
3431
|
+
class="k-grid-content"
|
|
3432
|
+
tabindex="-1"
|
|
3433
|
+
role="tree"
|
|
3434
|
+
aria-roledescription="Timeline"
|
|
3435
|
+
kendoGanttTimelineScrollable
|
|
3436
|
+
[scrollSettings]="dragScrollSettings"
|
|
3437
|
+
kendoDraggable
|
|
3438
|
+
[enableDrag]="draggableEnabled"
|
|
3439
|
+
(kendoPress)="timelineContainerPress.emit($event)"
|
|
3440
|
+
(kendoDrag)="timelineContainerDrag.emit($event)"
|
|
3441
|
+
(kendoRelease)="timelineContainerRelease.emit($event)"
|
|
3411
3442
|
>
|
|
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>
|
|
3443
|
+
<div class="k-gantt-tables">
|
|
3444
|
+
<table
|
|
3445
|
+
class="k-table k-table-md k-grid-table k-gantt-rows"
|
|
3446
|
+
[style.width.px]="tableWidth"
|
|
3447
|
+
role="presentation"
|
|
3448
|
+
>
|
|
3449
|
+
<tbody class="k-table-tbody">
|
|
3450
|
+
@for (item of rows; track $index; let i = $index) {
|
|
3451
|
+
<tr
|
|
3452
|
+
class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
|
|
3453
|
+
<td class="k-table-td"></td>
|
|
3454
|
+
</tr>
|
|
3455
|
+
}
|
|
3456
|
+
</tbody>
|
|
3457
|
+
</table>
|
|
3458
|
+
|
|
3459
|
+
<table
|
|
3460
|
+
#timelineColumns
|
|
3461
|
+
class="k-table k-table-md k-gantt-columns"
|
|
3462
|
+
role="presentation"
|
|
3463
|
+
[style.width.px]="tableWidth"
|
|
3464
|
+
>
|
|
3465
|
+
<colgroup>
|
|
3466
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3467
|
+
<col>
|
|
3468
|
+
}
|
|
3469
|
+
</colgroup>
|
|
3470
|
+
|
|
3471
|
+
<tbody class="k-table-tbody">
|
|
3472
|
+
<tr class="k-table-row">
|
|
3473
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3474
|
+
<td
|
|
3475
|
+
class="k-table-td"
|
|
3476
|
+
[class.k-nonwork-hour]="isNonWorking(item)"></td>
|
|
3477
|
+
}
|
|
3478
|
+
</tr>
|
|
3479
|
+
</tbody>
|
|
3480
|
+
</table>
|
|
3481
|
+
|
|
3482
|
+
<table kendoTooltip
|
|
3483
|
+
#tooltip="kendoTooltip"
|
|
3484
|
+
[tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
|
|
3485
|
+
[position]="tooltipOptions.position"
|
|
3486
|
+
[callout]="!dragging"
|
|
3487
|
+
[tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
|
|
3488
|
+
filter=".k-task"
|
|
3489
|
+
[showOn]="dragging || completion ? 'none' : 'hover'"
|
|
3490
|
+
#tasksContainer
|
|
3491
|
+
class="k-table k-table-md k-gantt-tasks"
|
|
3492
|
+
role="presentation"
|
|
3493
|
+
[style.border-collapse]="'collapse'"
|
|
3494
|
+
[style.width.px]="tableWidth"
|
|
3495
|
+
>
|
|
3496
|
+
<tbody
|
|
3497
|
+
class="k-table-tbody"
|
|
3498
|
+
kendoGanttTasksTableBody
|
|
3499
|
+
[rows]="rows"
|
|
3500
|
+
[activeView]="activeView"
|
|
3501
|
+
[taskContentTemplate]="taskContentTemplate"
|
|
3502
|
+
[taskTemplate]="taskTemplate"
|
|
3503
|
+
[summaryTaskTemplate]="summaryTaskTemplate"
|
|
3504
|
+
[taskClass]="taskClass"
|
|
3505
|
+
[isExpanded]="isExpanded"
|
|
3506
|
+
[selectable]="selectable"
|
|
3507
|
+
[isTaskSelected]="isTaskSelected"
|
|
3508
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
3509
|
+
(taskPointerEnter)="task = $event"
|
|
3510
|
+
(taskPointerLeave)="task = null"
|
|
3511
|
+
>
|
|
3512
|
+
</tbody>
|
|
3513
|
+
</table>
|
|
3519
3514
|
</div>
|
|
3515
|
+
<ng-template #tooltipTemplate>
|
|
3516
|
+
<div class="k-task-content">
|
|
3517
|
+
<div class="k-task-details">
|
|
3518
|
+
<strong>{{task?.title}}</strong>
|
|
3519
|
+
<div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3520
|
+
<ul class="k-reset">
|
|
3521
|
+
<li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3522
|
+
<li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3523
|
+
</ul>
|
|
3524
|
+
</div>
|
|
3525
|
+
</div>
|
|
3526
|
+
</ng-template>
|
|
3527
|
+
<ng-template #customTooltip>
|
|
3528
|
+
<ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
|
|
3529
|
+
</ng-template>
|
|
3530
|
+
<ng-template #resizingTooltip>
|
|
3531
|
+
<div class="k-tooltip-content">
|
|
3532
|
+
<div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3533
|
+
<div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3534
|
+
</div>
|
|
3535
|
+
</ng-template>
|
|
3536
|
+
<ng-template #completionRatioTooltip>
|
|
3537
|
+
<div class="k-tooltip-content">
|
|
3538
|
+
<div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3539
|
+
</div>
|
|
3540
|
+
</ng-template>
|
|
3541
|
+
|
|
3542
|
+
<svg class="k-gantt-dependencies-svg">
|
|
3543
|
+
@for (dependency of dependencies; track dependency.id) {
|
|
3544
|
+
<polyline
|
|
3545
|
+
kendoGanttDependency
|
|
3546
|
+
[dependency]="dependency"
|
|
3547
|
+
/>
|
|
3548
|
+
}
|
|
3549
|
+
<polyline #dependencyDragCreatePolyline />
|
|
3550
|
+
</svg>
|
|
3551
|
+
@if (marquee.show) {
|
|
3552
|
+
<div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
|
|
3553
|
+
<div class="k-marquee-color"></div>
|
|
3554
|
+
</div>
|
|
3555
|
+
}
|
|
3556
|
+
<!-- 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 -->
|
|
3557
|
+
<ng-container #dragPopupContainer></ng-container>
|
|
3558
|
+
</div>
|
|
3520
3559
|
</div>
|
|
3521
3560
|
|
|
3522
|
-
|
|
3561
|
+
`, 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
3562
|
}
|
|
3524
3563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTimelineComponent, decorators: [{
|
|
3525
3564
|
type: Component,
|
|
@@ -3527,151 +3566,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3527
3566
|
selector: 'kendo-gantt-timeline',
|
|
3528
3567
|
template: `
|
|
3529
3568
|
<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>
|
|
3569
|
+
<div class="k-grid-header">
|
|
3570
|
+
<div #timelineHeaderWrap class="k-grid-header-wrap">
|
|
3571
|
+
<table
|
|
3572
|
+
class="k-table k-table-md k-grid-header-table"
|
|
3573
|
+
role="presentation"
|
|
3574
|
+
[style.width.px]="tableWidth"
|
|
3575
|
+
>
|
|
3576
|
+
<tbody
|
|
3577
|
+
kendoGanttHeaderTableBody
|
|
3578
|
+
[groupSlots]="groupSlots"
|
|
3579
|
+
[slots]="slots">
|
|
3580
|
+
</tbody>
|
|
3581
|
+
</table>
|
|
3544
3582
|
</div>
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3583
|
+
</div>
|
|
3584
|
+
<!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
|
|
3585
|
+
<div
|
|
3586
|
+
#timelineContent
|
|
3587
|
+
class="k-grid-content"
|
|
3588
|
+
tabindex="-1"
|
|
3589
|
+
role="tree"
|
|
3590
|
+
aria-roledescription="Timeline"
|
|
3591
|
+
kendoGanttTimelineScrollable
|
|
3592
|
+
[scrollSettings]="dragScrollSettings"
|
|
3593
|
+
kendoDraggable
|
|
3594
|
+
[enableDrag]="draggableEnabled"
|
|
3595
|
+
(kendoPress)="timelineContainerPress.emit($event)"
|
|
3596
|
+
(kendoDrag)="timelineContainerDrag.emit($event)"
|
|
3597
|
+
(kendoRelease)="timelineContainerRelease.emit($event)"
|
|
3559
3598
|
>
|
|
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>
|
|
3599
|
+
<div class="k-gantt-tables">
|
|
3600
|
+
<table
|
|
3601
|
+
class="k-table k-table-md k-grid-table k-gantt-rows"
|
|
3602
|
+
[style.width.px]="tableWidth"
|
|
3603
|
+
role="presentation"
|
|
3604
|
+
>
|
|
3605
|
+
<tbody class="k-table-tbody">
|
|
3606
|
+
@for (item of rows; track $index; let i = $index) {
|
|
3607
|
+
<tr
|
|
3608
|
+
class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
|
|
3609
|
+
<td class="k-table-td"></td>
|
|
3610
|
+
</tr>
|
|
3611
|
+
}
|
|
3612
|
+
</tbody>
|
|
3613
|
+
</table>
|
|
3614
|
+
|
|
3615
|
+
<table
|
|
3616
|
+
#timelineColumns
|
|
3617
|
+
class="k-table k-table-md k-gantt-columns"
|
|
3618
|
+
role="presentation"
|
|
3619
|
+
[style.width.px]="tableWidth"
|
|
3620
|
+
>
|
|
3621
|
+
<colgroup>
|
|
3622
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3623
|
+
<col>
|
|
3624
|
+
}
|
|
3625
|
+
</colgroup>
|
|
3626
|
+
|
|
3627
|
+
<tbody class="k-table-tbody">
|
|
3628
|
+
<tr class="k-table-row">
|
|
3629
|
+
@for (item of slots; track trackBySlotIndex($index, item)) {
|
|
3630
|
+
<td
|
|
3631
|
+
class="k-table-td"
|
|
3632
|
+
[class.k-nonwork-hour]="isNonWorking(item)"></td>
|
|
3633
|
+
}
|
|
3634
|
+
</tr>
|
|
3635
|
+
</tbody>
|
|
3636
|
+
</table>
|
|
3637
|
+
|
|
3638
|
+
<table kendoTooltip
|
|
3639
|
+
#tooltip="kendoTooltip"
|
|
3640
|
+
[tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
|
|
3641
|
+
[position]="tooltipOptions.position"
|
|
3642
|
+
[callout]="!dragging"
|
|
3643
|
+
[tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
|
|
3644
|
+
filter=".k-task"
|
|
3645
|
+
[showOn]="dragging || completion ? 'none' : 'hover'"
|
|
3646
|
+
#tasksContainer
|
|
3647
|
+
class="k-table k-table-md k-gantt-tasks"
|
|
3648
|
+
role="presentation"
|
|
3649
|
+
[style.border-collapse]="'collapse'"
|
|
3650
|
+
[style.width.px]="tableWidth"
|
|
3651
|
+
>
|
|
3652
|
+
<tbody
|
|
3653
|
+
class="k-table-tbody"
|
|
3654
|
+
kendoGanttTasksTableBody
|
|
3655
|
+
[rows]="rows"
|
|
3656
|
+
[activeView]="activeView"
|
|
3657
|
+
[taskContentTemplate]="taskContentTemplate"
|
|
3658
|
+
[taskTemplate]="taskTemplate"
|
|
3659
|
+
[summaryTaskTemplate]="summaryTaskTemplate"
|
|
3660
|
+
[taskClass]="taskClass"
|
|
3661
|
+
[isExpanded]="isExpanded"
|
|
3662
|
+
[selectable]="selectable"
|
|
3663
|
+
[isTaskSelected]="isTaskSelected"
|
|
3664
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
3665
|
+
(taskPointerEnter)="task = $event"
|
|
3666
|
+
(taskPointerLeave)="task = null"
|
|
3667
|
+
>
|
|
3668
|
+
</tbody>
|
|
3669
|
+
</table>
|
|
3667
3670
|
</div>
|
|
3671
|
+
<ng-template #tooltipTemplate>
|
|
3672
|
+
<div class="k-task-content">
|
|
3673
|
+
<div class="k-task-details">
|
|
3674
|
+
<strong>{{task?.title}}</strong>
|
|
3675
|
+
<div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3676
|
+
<ul class="k-reset">
|
|
3677
|
+
<li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3678
|
+
<li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
|
|
3679
|
+
</ul>
|
|
3680
|
+
</div>
|
|
3681
|
+
</div>
|
|
3682
|
+
</ng-template>
|
|
3683
|
+
<ng-template #customTooltip>
|
|
3684
|
+
<ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
|
|
3685
|
+
</ng-template>
|
|
3686
|
+
<ng-template #resizingTooltip>
|
|
3687
|
+
<div class="k-tooltip-content">
|
|
3688
|
+
<div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3689
|
+
<div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
|
|
3690
|
+
</div>
|
|
3691
|
+
</ng-template>
|
|
3692
|
+
<ng-template #completionRatioTooltip>
|
|
3693
|
+
<div class="k-tooltip-content">
|
|
3694
|
+
<div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
|
|
3695
|
+
</div>
|
|
3696
|
+
</ng-template>
|
|
3697
|
+
|
|
3698
|
+
<svg class="k-gantt-dependencies-svg">
|
|
3699
|
+
@for (dependency of dependencies; track dependency.id) {
|
|
3700
|
+
<polyline
|
|
3701
|
+
kendoGanttDependency
|
|
3702
|
+
[dependency]="dependency"
|
|
3703
|
+
/>
|
|
3704
|
+
}
|
|
3705
|
+
<polyline #dependencyDragCreatePolyline />
|
|
3706
|
+
</svg>
|
|
3707
|
+
@if (marquee.show) {
|
|
3708
|
+
<div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
|
|
3709
|
+
<div class="k-marquee-color"></div>
|
|
3710
|
+
</div>
|
|
3711
|
+
}
|
|
3712
|
+
<!-- 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 -->
|
|
3713
|
+
<ng-container #dragPopupContainer></ng-container>
|
|
3714
|
+
</div>
|
|
3668
3715
|
</div>
|
|
3669
3716
|
|
|
3670
|
-
|
|
3717
|
+
`,
|
|
3671
3718
|
standalone: true,
|
|
3672
3719
|
encapsulation: ViewEncapsulation.None,
|
|
3673
|
-
imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective,
|
|
3674
|
-
GanttDependencyDirective, KENDO_TOOLTIP, NgIf, DatePipe, NumberPipe, NgTemplateOutlet],
|
|
3720
|
+
imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, GanttTasksTableBodyComponent, GanttDependencyDirective, KENDO_TOOLTIP, DatePipe, NumberPipe, NgTemplateOutlet],
|
|
3675
3721
|
}]
|
|
3676
3722
|
}], ctorParameters: () => [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }, { type: GanttLocalizationService }, { type: TaskDragService, decorators: [{
|
|
3677
3723
|
type: Optional
|
|
@@ -4813,37 +4859,45 @@ class TaskFieldsComponent {
|
|
|
4813
4859
|
return this.localizationService.get(token);
|
|
4814
4860
|
}
|
|
4815
4861
|
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: "
|
|
4862
|
+
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
4863
|
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4864
|
+
@if (formGroup.get(mapper.taskFields.title)) {
|
|
4865
|
+
<kendo-formfield>
|
|
4866
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4867
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4821
4868
|
</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
|
-
|
|
4869
|
+
}
|
|
4870
|
+
<div class="k-hstack">
|
|
4871
|
+
@if (formGroup.get(mapper.taskFields.start)) {
|
|
4872
|
+
<kendo-formfield [style.width.%]="49">
|
|
4873
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4874
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4875
|
+
</kendo-formfield>
|
|
4876
|
+
}
|
|
4877
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4878
|
+
@if (formGroup.get(mapper.taskFields.end)) {
|
|
4879
|
+
<kendo-formfield [style.width.%]="49">
|
|
4880
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4881
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4882
|
+
</kendo-formfield>
|
|
4883
|
+
}
|
|
4884
|
+
</div>
|
|
4885
|
+
@if (formGroup.get(mapper.taskFields.completionRatio)) {
|
|
4886
|
+
<kendo-formfield [style.width.%]="49">
|
|
4887
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4888
|
+
<kendo-numerictextbox
|
|
4889
|
+
#completionRatio
|
|
4890
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4891
|
+
[min]="0"
|
|
4892
|
+
[max]="1"
|
|
4893
|
+
[decimals]="2"
|
|
4894
|
+
format="p2"
|
|
4895
|
+
[step]="0.01"
|
|
4896
|
+
></kendo-numerictextbox>
|
|
4844
4897
|
</kendo-formfield>
|
|
4898
|
+
}
|
|
4845
4899
|
</form>
|
|
4846
|
-
|
|
4900
|
+
`, 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
4901
|
}
|
|
4848
4902
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TaskFieldsComponent, decorators: [{
|
|
4849
4903
|
type: Component,
|
|
@@ -4851,37 +4905,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4851
4905
|
selector: 'kendo-gantt-task-fields',
|
|
4852
4906
|
template: `
|
|
4853
4907
|
<form class="k-form k-form-md" [formGroup]="formGroup">
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4908
|
+
@if (formGroup.get(mapper.taskFields.title)) {
|
|
4909
|
+
<kendo-formfield>
|
|
4910
|
+
<kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
|
|
4911
|
+
<input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
|
|
4857
4912
|
</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
|
-
|
|
4913
|
+
}
|
|
4914
|
+
<div class="k-hstack">
|
|
4915
|
+
@if (formGroup.get(mapper.taskFields.start)) {
|
|
4916
|
+
<kendo-formfield [style.width.%]="49">
|
|
4917
|
+
<kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
|
|
4918
|
+
<kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
|
|
4919
|
+
</kendo-formfield>
|
|
4920
|
+
}
|
|
4921
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
4922
|
+
@if (formGroup.get(mapper.taskFields.end)) {
|
|
4923
|
+
<kendo-formfield [style.width.%]="49">
|
|
4924
|
+
<kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
|
|
4925
|
+
<kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
|
|
4926
|
+
</kendo-formfield>
|
|
4927
|
+
}
|
|
4928
|
+
</div>
|
|
4929
|
+
@if (formGroup.get(mapper.taskFields.completionRatio)) {
|
|
4930
|
+
<kendo-formfield [style.width.%]="49">
|
|
4931
|
+
<kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
|
|
4932
|
+
<kendo-numerictextbox
|
|
4933
|
+
#completionRatio
|
|
4934
|
+
[formControlName]="mapper.taskFields.completionRatio"
|
|
4935
|
+
[min]="0"
|
|
4936
|
+
[max]="1"
|
|
4937
|
+
[decimals]="2"
|
|
4938
|
+
format="p2"
|
|
4939
|
+
[step]="0.01"
|
|
4940
|
+
></kendo-numerictextbox>
|
|
4880
4941
|
</kendo-formfield>
|
|
4942
|
+
}
|
|
4881
4943
|
</form>
|
|
4882
|
-
|
|
4944
|
+
`,
|
|
4883
4945
|
standalone: true,
|
|
4884
|
-
imports: [ReactiveFormsModule,
|
|
4946
|
+
imports: [ReactiveFormsModule, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
|
|
4885
4947
|
}]
|
|
4886
4948
|
}], ctorParameters: () => [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }] });
|
|
4887
4949
|
|
|
@@ -5157,22 +5219,26 @@ class ViewSelectorComponent {
|
|
|
5157
5219
|
this.activeViewChange.emit(event.target.value);
|
|
5158
5220
|
}
|
|
5159
5221
|
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: "
|
|
5222
|
+
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
5223
|
<select
|
|
5162
|
-
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
|
|
5166
|
-
|
|
5224
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
5225
|
+
aria-label="View Selector"
|
|
5226
|
+
[value]="activeView"
|
|
5227
|
+
(change)="onActiveViewChange($event)">
|
|
5228
|
+
@for (view of views; track view) {
|
|
5229
|
+
<option [value]="view">{{getViewTypeText(view)}}</option>
|
|
5230
|
+
}
|
|
5167
5231
|
</select>
|
|
5168
5232
|
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5233
|
+
@for (view of views; track view) {
|
|
5234
|
+
<button
|
|
5235
|
+
kendoButton
|
|
5236
|
+
type="button"
|
|
5237
|
+
[selected]="view === activeView"
|
|
5238
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
5239
|
+
}
|
|
5174
5240
|
</kendo-buttongroup>
|
|
5175
|
-
|
|
5241
|
+
`, 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
5242
|
}
|
|
5177
5243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewSelectorComponent, decorators: [{
|
|
5178
5244
|
type: Component,
|
|
@@ -5180,22 +5246,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5180
5246
|
selector: 'kendo-gantt-view-selector',
|
|
5181
5247
|
template: `
|
|
5182
5248
|
<select
|
|
5183
|
-
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5249
|
+
class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
|
|
5250
|
+
aria-label="View Selector"
|
|
5251
|
+
[value]="activeView"
|
|
5252
|
+
(change)="onActiveViewChange($event)">
|
|
5253
|
+
@for (view of views; track view) {
|
|
5254
|
+
<option [value]="view">{{getViewTypeText(view)}}</option>
|
|
5255
|
+
}
|
|
5188
5256
|
</select>
|
|
5189
5257
|
<kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5258
|
+
@for (view of views; track view) {
|
|
5259
|
+
<button
|
|
5260
|
+
kendoButton
|
|
5261
|
+
type="button"
|
|
5262
|
+
[selected]="view === activeView"
|
|
5263
|
+
(click)="onClick(view)">{{getViewTypeText(view)}}</button>
|
|
5264
|
+
}
|
|
5195
5265
|
</kendo-buttongroup>
|
|
5196
|
-
|
|
5266
|
+
`,
|
|
5197
5267
|
standalone: true,
|
|
5198
|
-
imports: [
|
|
5268
|
+
imports: [ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
|
|
5199
5269
|
}]
|
|
5200
5270
|
}], ctorParameters: () => [{ type: i1$1.LocalizationService }], propDecorators: { hostClass: [{
|
|
5201
5271
|
type: HostBinding,
|
|
@@ -5399,23 +5469,27 @@ class ToolbarComponent {
|
|
|
5399
5469
|
}
|
|
5400
5470
|
}
|
|
5401
5471
|
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
|
-
<
|
|
5472
|
+
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: `
|
|
5473
|
+
@if (!renderTemplate) {
|
|
5474
|
+
@if (showAddTask) {
|
|
5475
|
+
<kendo-gantt-add-task></kendo-gantt-add-task>
|
|
5476
|
+
}
|
|
5477
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
5478
|
+
@if (showViewSelector) {
|
|
5406
5479
|
<kendo-gantt-view-selector
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5480
|
+
[views]="views"
|
|
5481
|
+
[activeView]="activeView"
|
|
5482
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
5483
|
+
}
|
|
5484
|
+
}
|
|
5485
|
+
@if (renderTemplate) {
|
|
5486
|
+
<ng-template
|
|
5414
5487
|
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
5415
5488
|
[ngTemplateOutletContext]="context"
|
|
5416
5489
|
>
|
|
5417
|
-
|
|
5418
|
-
|
|
5490
|
+
</ng-template>
|
|
5491
|
+
}
|
|
5492
|
+
`, 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
5493
|
}
|
|
5420
5494
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
5421
5495
|
type: Component,
|
|
@@ -5423,24 +5497,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5423
5497
|
selector: 'kendo-gantt-toolbar',
|
|
5424
5498
|
providers: [ToolbarNavigationService],
|
|
5425
5499
|
template: `
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
<
|
|
5500
|
+
@if (!renderTemplate) {
|
|
5501
|
+
@if (showAddTask) {
|
|
5502
|
+
<kendo-gantt-add-task></kendo-gantt-add-task>
|
|
5503
|
+
}
|
|
5504
|
+
<span class="k-spacer k-toolbar-spacer"></span>
|
|
5505
|
+
@if (showViewSelector) {
|
|
5429
5506
|
<kendo-gantt-view-selector
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5507
|
+
[views]="views"
|
|
5508
|
+
[activeView]="activeView"
|
|
5509
|
+
(activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
|
|
5510
|
+
}
|
|
5511
|
+
}
|
|
5512
|
+
@if (renderTemplate) {
|
|
5513
|
+
<ng-template
|
|
5437
5514
|
[ngTemplateOutlet]="toolbarTemplateRef"
|
|
5438
5515
|
[ngTemplateOutletContext]="context"
|
|
5439
5516
|
>
|
|
5440
|
-
|
|
5441
|
-
|
|
5517
|
+
</ng-template>
|
|
5518
|
+
}
|
|
5519
|
+
`,
|
|
5442
5520
|
standalone: true,
|
|
5443
|
-
imports: [
|
|
5521
|
+
imports: [GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
|
|
5444
5522
|
}]
|
|
5445
5523
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ToolbarNavigationService }], propDecorators: { role: [{
|
|
5446
5524
|
type: HostBinding,
|
|
@@ -7295,7 +7373,7 @@ class GanttComponent {
|
|
|
7295
7373
|
}
|
|
7296
7374
|
}
|
|
7297
7375
|
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: "
|
|
7376
|
+
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
7377
|
GanttLocalizationService,
|
|
7300
7378
|
LocalizationService,
|
|
7301
7379
|
{
|
|
@@ -7325,211 +7403,211 @@ class GanttComponent {
|
|
|
7325
7403
|
CurrentTimeMarkerService
|
|
7326
7404
|
], 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
7405
|
<ng-container kendoGanttLocalizedMessages
|
|
7328
|
-
|
|
7329
|
-
|
|
7406
|
+
i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
|
|
7407
|
+
taskEditingGeneralTabTitle="General"
|
|
7330
7408
|
|
|
7331
|
-
|
|
7332
|
-
|
|
7409
|
+
i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
|
|
7410
|
+
taskEditingPredecessorsTabTitle="Predecessors"
|
|
7333
7411
|
|
|
7334
|
-
|
|
7335
|
-
|
|
7412
|
+
i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
|
|
7413
|
+
taskEditingSuccessorsTabTitle="Successors"
|
|
7336
7414
|
|
|
7337
|
-
|
|
7338
|
-
|
|
7415
|
+
i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7416
|
+
taskEditingDependenciesAddButtonText="Add"
|
|
7339
7417
|
|
|
7340
|
-
|
|
7341
|
-
|
|
7418
|
+
i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7419
|
+
taskEditingDependenciesRemoveButtonText="Remove"
|
|
7342
7420
|
|
|
7343
|
-
|
|
7344
|
-
|
|
7421
|
+
i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7422
|
+
taskEditingDependenciesGridNameColumnTitle="Task Title"
|
|
7345
7423
|
|
|
7346
|
-
|
|
7347
|
-
|
|
7424
|
+
i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7425
|
+
taskEditingDependenciesGridTypeColumnTitle="Type"
|
|
7348
7426
|
|
|
7349
|
-
|
|
7350
|
-
|
|
7427
|
+
i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
|
|
7428
|
+
taskDeleteLabel="Delete"
|
|
7351
7429
|
|
|
7352
|
-
|
|
7353
|
-
|
|
7430
|
+
i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
|
|
7431
|
+
taskEditingDialogTitle="Editing Task"
|
|
7354
7432
|
|
|
7355
|
-
|
|
7356
|
-
|
|
7433
|
+
i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
|
|
7434
|
+
taskEditingDialogCloseTitle="Close"
|
|
7357
7435
|
|
|
7358
|
-
|
|
7359
|
-
|
|
7436
|
+
i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
|
|
7437
|
+
confirmationDialogCloseTitle="Close"
|
|
7360
7438
|
|
|
7361
|
-
|
|
7362
|
-
|
|
7439
|
+
i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
|
|
7440
|
+
confirmationDialogTitle="Delete Task"
|
|
7363
7441
|
|
|
7364
|
-
|
|
7365
|
-
|
|
7442
|
+
i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
|
|
7443
|
+
confirmationDialogContent="Are you sure you want to delete this task?"
|
|
7366
7444
|
|
|
7367
|
-
|
|
7368
|
-
|
|
7445
|
+
i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
|
|
7446
|
+
deleteButtonText="Delete"
|
|
7369
7447
|
|
|
7370
|
-
|
|
7371
|
-
|
|
7448
|
+
i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
|
|
7449
|
+
cancelButtonText="Cancel"
|
|
7372
7450
|
|
|
7373
|
-
|
|
7374
|
-
|
|
7451
|
+
i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
|
|
7452
|
+
saveButtonText="Save"
|
|
7375
7453
|
|
|
7376
|
-
|
|
7377
|
-
|
|
7454
|
+
i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
|
|
7455
|
+
titleFieldInputLabel="Title"
|
|
7378
7456
|
|
|
7379
|
-
|
|
7380
|
-
|
|
7457
|
+
i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
|
|
7458
|
+
startFieldInputLabel="Start"
|
|
7381
7459
|
|
|
7382
|
-
|
|
7383
|
-
|
|
7460
|
+
i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
|
|
7461
|
+
endFieldInputLabel="End"
|
|
7384
7462
|
|
|
7385
|
-
|
|
7386
|
-
|
|
7463
|
+
i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
|
|
7464
|
+
completionRatioFieldInputLabel="Progress"
|
|
7387
7465
|
|
|
7388
|
-
|
|
7389
|
-
|
|
7466
|
+
i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
|
|
7467
|
+
dayViewText="Day"
|
|
7390
7468
|
|
|
7391
|
-
|
|
7392
|
-
|
|
7469
|
+
i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
|
|
7470
|
+
weekViewText="Week"
|
|
7393
7471
|
|
|
7394
|
-
|
|
7395
|
-
|
|
7472
|
+
i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
|
|
7473
|
+
monthViewText="Month"
|
|
7396
7474
|
|
|
7397
|
-
|
|
7398
|
-
|
|
7475
|
+
i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
|
|
7476
|
+
yearViewText="Year"
|
|
7399
7477
|
|
|
7400
|
-
|
|
7401
|
-
|
|
7478
|
+
i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
|
|
7479
|
+
addTaskText="Add Task"
|
|
7402
7480
|
|
|
7403
|
-
|
|
7404
|
-
|
|
7481
|
+
i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
|
|
7482
|
+
addChildText="Add Child"
|
|
7405
7483
|
|
|
7406
|
-
|
|
7407
|
-
|
|
7484
|
+
i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
|
|
7485
|
+
addAboveText="Add Above"
|
|
7408
7486
|
|
|
7409
|
-
|
|
7410
|
-
|
|
7487
|
+
i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
|
|
7488
|
+
addBelowText="Add Below"
|
|
7411
7489
|
|
|
7412
|
-
|
|
7413
|
-
|
|
7490
|
+
i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
|
|
7491
|
+
noRecords="No records available."
|
|
7414
7492
|
|
|
7415
|
-
|
|
7416
|
-
|
|
7493
|
+
i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
|
|
7494
|
+
filter="Filter"
|
|
7417
7495
|
|
|
7418
|
-
|
|
7419
|
-
|
|
7496
|
+
i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
|
|
7497
|
+
filterEqOperator="Is equal to"
|
|
7420
7498
|
|
|
7421
|
-
|
|
7422
|
-
|
|
7499
|
+
i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
|
|
7500
|
+
filterNotEqOperator="Is not equal to"
|
|
7423
7501
|
|
|
7424
|
-
|
|
7425
|
-
|
|
7502
|
+
i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
|
|
7503
|
+
filterIsNullOperator="Is null"
|
|
7426
7504
|
|
|
7427
|
-
|
|
7428
|
-
|
|
7505
|
+
i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
7506
|
+
filterIsNotNullOperator="Is not null"
|
|
7429
7507
|
|
|
7430
|
-
|
|
7431
|
-
|
|
7508
|
+
i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
7509
|
+
filterIsEmptyOperator="Is empty"
|
|
7432
7510
|
|
|
7433
|
-
|
|
7434
|
-
|
|
7511
|
+
i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
7512
|
+
filterIsNotEmptyOperator="Is not empty"
|
|
7435
7513
|
|
|
7436
|
-
|
|
7437
|
-
|
|
7514
|
+
i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
|
|
7515
|
+
filterStartsWithOperator="Starts with"
|
|
7438
7516
|
|
|
7439
|
-
|
|
7440
|
-
|
|
7517
|
+
i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
|
|
7518
|
+
filterContainsOperator="Contains"
|
|
7441
7519
|
|
|
7442
|
-
|
|
7443
|
-
|
|
7520
|
+
i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
7521
|
+
filterNotContainsOperator="Does not contain"
|
|
7444
7522
|
|
|
7445
|
-
|
|
7446
|
-
|
|
7523
|
+
i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
|
|
7524
|
+
filterEndsWithOperator="Ends with"
|
|
7447
7525
|
|
|
7448
|
-
|
|
7449
|
-
|
|
7526
|
+
i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
|
|
7527
|
+
filterGteOperator="Is greater than or equal to"
|
|
7450
7528
|
|
|
7451
|
-
|
|
7452
|
-
|
|
7529
|
+
i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
|
|
7530
|
+
filterGtOperator="Is greater than"
|
|
7453
7531
|
|
|
7454
|
-
|
|
7455
|
-
|
|
7532
|
+
i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
|
|
7533
|
+
filterLteOperator="Is less than or equal to"
|
|
7456
7534
|
|
|
7457
|
-
|
|
7458
|
-
|
|
7535
|
+
i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
|
|
7536
|
+
filterLtOperator="Is less than"
|
|
7459
7537
|
|
|
7460
|
-
|
|
7461
|
-
|
|
7538
|
+
i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
7539
|
+
filterIsTrue="Is True"
|
|
7462
7540
|
|
|
7463
|
-
|
|
7464
|
-
|
|
7541
|
+
i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
7542
|
+
filterIsFalse="Is False"
|
|
7465
7543
|
|
|
7466
|
-
|
|
7467
|
-
|
|
7544
|
+
i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
|
|
7545
|
+
filterBooleanAll="(All)"
|
|
7468
7546
|
|
|
7469
|
-
|
|
7470
|
-
|
|
7547
|
+
i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
7548
|
+
filterAfterOrEqualOperator="Is after or equal to"
|
|
7471
7549
|
|
|
7472
|
-
|
|
7473
|
-
|
|
7550
|
+
i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
|
|
7551
|
+
filterAfterOperator="Is after"
|
|
7474
7552
|
|
|
7475
|
-
|
|
7476
|
-
|
|
7553
|
+
i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
|
|
7554
|
+
filterBeforeOperator="Is before"
|
|
7477
7555
|
|
|
7478
|
-
|
|
7479
|
-
|
|
7556
|
+
i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
7557
|
+
filterBeforeOrEqualOperator="Is before or equal to"
|
|
7480
7558
|
|
|
7481
|
-
|
|
7482
|
-
|
|
7559
|
+
i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
|
|
7560
|
+
filterFilterButton="Filter"
|
|
7483
7561
|
|
|
7484
|
-
|
|
7485
|
-
|
|
7562
|
+
i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
|
|
7563
|
+
filterClearButton="Clear"
|
|
7486
7564
|
|
|
7487
|
-
|
|
7488
|
-
|
|
7565
|
+
i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
|
|
7566
|
+
filterAndLogic="And"
|
|
7489
7567
|
|
|
7490
|
-
|
|
7491
|
-
|
|
7568
|
+
i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
|
|
7569
|
+
filterOrLogic="Or"
|
|
7492
7570
|
|
|
7493
|
-
|
|
7494
|
-
|
|
7571
|
+
i18n-loading="kendo.gantt.loading|The loading text"
|
|
7572
|
+
loading="Loading"
|
|
7495
7573
|
|
|
7496
|
-
|
|
7497
|
-
|
|
7574
|
+
i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
|
|
7575
|
+
columnMenu="Column Menu"
|
|
7498
7576
|
|
|
7499
|
-
|
|
7500
|
-
|
|
7577
|
+
i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
|
|
7578
|
+
columns="Columns"
|
|
7501
7579
|
|
|
7502
|
-
|
|
7503
|
-
|
|
7580
|
+
i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
|
|
7581
|
+
lock-disabled="Lock"
|
|
7504
7582
|
|
|
7505
|
-
|
|
7506
|
-
|
|
7583
|
+
i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
|
|
7584
|
+
unlock-disabled="Unlock"
|
|
7507
7585
|
|
|
7508
|
-
|
|
7509
|
-
|
|
7586
|
+
i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
|
|
7587
|
+
sortable="Sortable"
|
|
7510
7588
|
|
|
7511
|
-
|
|
7512
|
-
|
|
7589
|
+
i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
7590
|
+
sortAscending="Sort Ascending"
|
|
7513
7591
|
|
|
7514
|
-
|
|
7515
|
-
|
|
7592
|
+
i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
|
|
7593
|
+
sortDescending="Sort Descending"
|
|
7516
7594
|
|
|
7517
|
-
|
|
7518
|
-
|
|
7595
|
+
i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
|
|
7596
|
+
sortedDefault="Not Sorted"
|
|
7519
7597
|
|
|
7520
|
-
|
|
7521
|
-
|
|
7598
|
+
i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
7599
|
+
columnsApply="Apply"
|
|
7522
7600
|
|
|
7523
|
-
|
|
7524
|
-
|
|
7601
|
+
i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
7602
|
+
columnsReset="Reset"
|
|
7525
7603
|
|
|
7526
|
-
|
|
7527
|
-
|
|
7604
|
+
i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
|
|
7605
|
+
tooltipStartDateText="Start"
|
|
7528
7606
|
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7607
|
+
i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
|
|
7608
|
+
tooltipEndDateText="End"></ng-container>
|
|
7609
|
+
@if (showToolbar('top')) {
|
|
7610
|
+
<kendo-gantt-toolbar
|
|
7533
7611
|
[attr.aria-label]="toolbarAriaLabel"
|
|
7534
7612
|
[showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
|
|
7535
7613
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -7539,142 +7617,144 @@ class GanttComponent {
|
|
|
7539
7617
|
class="k-gantt-header"
|
|
7540
7618
|
position="top"
|
|
7541
7619
|
[navigable]="navigable"
|
|
7542
|
-
|
|
7620
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
7621
|
+
}
|
|
7543
7622
|
<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
|
-
|
|
7623
|
+
<kendo-splitter [style.border]="0">
|
|
7624
|
+
<kendo-splitter-pane
|
|
7625
|
+
class="k-gantt-treelist k-gantt-treelist-scrollable"
|
|
7626
|
+
[collapsible]="treeListPaneOptions?.collapsible"
|
|
7627
|
+
[collapsed]="treeListPaneOptions?.collapsed"
|
|
7628
|
+
(collapsedChange)="onTreeListCollapsedChange($event)"
|
|
7629
|
+
[scrollable]="false">
|
|
7630
|
+
<kendo-treelist
|
|
7631
|
+
[idField]="taskIdField"
|
|
7632
|
+
[columns]="columns"
|
|
7633
|
+
[data]="data"
|
|
7634
|
+
[hasChildren]="hasChildren"
|
|
7635
|
+
[fetchChildren]="fetchChildren"
|
|
7636
|
+
[navigable]="navigable"
|
|
7637
|
+
[isExpanded]="isExpanded"
|
|
7638
|
+
[autoSize]="columnsAutoSize"
|
|
7639
|
+
[columnMenu]="columnMenu"
|
|
7640
|
+
[reorderable]="columnsReorderable"
|
|
7641
|
+
[resizable]="columnsResizable"
|
|
7642
|
+
[rowClass]="rowClass"
|
|
7643
|
+
[isSelected]="isSelected"
|
|
7644
|
+
[selectable]="selectable"
|
|
7645
|
+
[sortable]="sortable"
|
|
7646
|
+
[sort]="sort"
|
|
7647
|
+
[filterable]="filterMenu"
|
|
7648
|
+
[filter]="filter"
|
|
7649
|
+
(filterChange)="filterChange.emit($event)"
|
|
7650
|
+
(sortChange)="sortChange.emit($event)"
|
|
7572
7651
|
(dataStateChange)="dataStateChange.emit({
|
|
7573
7652
|
filter: $event.filter,
|
|
7574
7653
|
sort: $event.sort
|
|
7575
7654
|
})"
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7655
|
+
(expandStateChange)="expandStateChange.emit($event)"
|
|
7656
|
+
(expand)="rowExpand.emit({ dataItem: $event.dataItem })"
|
|
7657
|
+
(collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
|
|
7658
|
+
(columnReorder)="columnReorder.emit($event)"
|
|
7659
|
+
(columnResize)="columnResize.emit($event)"
|
|
7660
|
+
(columnVisibilityChange)="handleColumnVisibilityChange($event)"
|
|
7661
|
+
(columnLockedChange)="columnLockedChange.emit($event)"
|
|
7662
|
+
(selectionChange)="handleTreeListSelectionChange($event)"
|
|
7663
|
+
(cellClick)="handleTreeListCellClick($event)"
|
|
7664
|
+
(cellClose)="handleCellClose($event)"
|
|
7586
7665
|
[kendoEventsOutsideAngular]="{
|
|
7587
7666
|
dblclick: handleTreeListDoubleClick
|
|
7588
7667
|
}"
|
|
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
|
-
|
|
7668
|
+
[scope]="this"
|
|
7669
|
+
>
|
|
7670
|
+
<kendo-treelist-messages
|
|
7671
|
+
[noRecords]="getText('noRecords')"
|
|
7672
|
+
[filter]="getText('filter')"
|
|
7673
|
+
[filterEqOperator]="getText('filterEqOperator')"
|
|
7674
|
+
[filterNotEqOperator]="getText('filterNotEqOperator')"
|
|
7675
|
+
[filterIsNullOperator]="getText('filterIsNullOperator')"
|
|
7676
|
+
[filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
|
|
7677
|
+
[filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
|
|
7678
|
+
[filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
|
|
7679
|
+
[filterStartsWithOperator]="getText('filterStartsWithOperator')"
|
|
7680
|
+
[filterContainsOperator]="getText('filterContainsOperator')"
|
|
7681
|
+
[filterNotContainsOperator]="getText('filterNotContainsOperator')"
|
|
7682
|
+
[filterEndsWithOperator]="getText('filterEndsWithOperator')"
|
|
7683
|
+
[filterGteOperator]="getText('filterGteOperator')"
|
|
7684
|
+
[filterGtOperator]="getText('filterGtOperator')"
|
|
7685
|
+
[filterLteOperator]="getText('filterLteOperator')"
|
|
7686
|
+
[filterLtOperator]="getText('filterLtOperator')"
|
|
7687
|
+
[filterIsTrue]="getText('filterIsTrue')"
|
|
7688
|
+
[filterIsFalse]="getText('filterIsFalse')"
|
|
7689
|
+
[filterBooleanAll]="getText('filterBooleanAll')"
|
|
7690
|
+
[filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
|
|
7691
|
+
[filterAfterOperator]="getText('filterAfterOperator')"
|
|
7692
|
+
[filterBeforeOperator]="getText('filterBeforeOperator')"
|
|
7693
|
+
[filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
|
|
7694
|
+
[filterFilterButton]="getText('filterFilterButton')"
|
|
7695
|
+
[filterClearButton]="getText('filterClearButton')"
|
|
7696
|
+
[filterAndLogic]="getText('filterAndLogic')"
|
|
7697
|
+
[filterOrLogic]="getText('filterOrLogic')"
|
|
7698
|
+
[loading]="getText('loading')"
|
|
7699
|
+
[columnMenu]="getText('columnMenu')"
|
|
7700
|
+
[columns]="getText('columns')"
|
|
7701
|
+
[sortable]="getText('sortable')"
|
|
7702
|
+
[sortAscending]="getText('sortAscending')"
|
|
7703
|
+
[sortDescending]="getText('sortDescending')"
|
|
7704
|
+
[sortedAscending]="getText('sortedAscending')"
|
|
7705
|
+
[sortedDescending]="getText('sortedDescending')"
|
|
7706
|
+
[sortedDefault]="getText('sortedDefault')"
|
|
7707
|
+
[columnsApply]="getText('columnsApply')"
|
|
7708
|
+
[columnsReset]="getText('columnsReset')"
|
|
7709
|
+
>
|
|
7710
|
+
</kendo-treelist-messages>
|
|
7711
|
+
</kendo-treelist>
|
|
7712
|
+
</kendo-splitter-pane>
|
|
7713
|
+
<kendo-splitter-pane
|
|
7714
|
+
[collapsible]="timelinePaneOptions?.collapsible"
|
|
7715
|
+
[resizable]="timelinePaneOptions?.resizable"
|
|
7716
|
+
[collapsed]="timelinePaneOptions?.collapsed"
|
|
7717
|
+
[min]="timelinePaneOptions?.min"
|
|
7718
|
+
[max]="timelinePaneOptions?.max"
|
|
7719
|
+
[size]="timelinePaneOptions?.size"
|
|
7720
|
+
(collapsedChange)="onTimelineCollapsedChange($event)"
|
|
7721
|
+
(sizeChange)="onTimelinePaneSizeChange($event)"
|
|
7722
|
+
[scrollable]="false"
|
|
7723
|
+
class="k-gantt-timeline-pane">
|
|
7724
|
+
@if (views && views.length) {
|
|
7725
|
+
<kendo-gantt-timeline
|
|
7726
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
7727
|
+
[dragScrollSettings]="dragScrollSettings"
|
|
7728
|
+
[rows]="viewItems"
|
|
7729
|
+
[slots]="timelineSlots"
|
|
7730
|
+
[currentTimeMarker]="activeViewCurrentTimeMarker"
|
|
7731
|
+
[groupSlots]="timelineGroupSlots"
|
|
7732
|
+
[tableWidth]="tableWidth"
|
|
7733
|
+
[activeView]="activeView"
|
|
7734
|
+
[taskContentTemplate]="taskContentTemplate?.templateRef"
|
|
7735
|
+
[taskTemplate]="taskTemplate?.templateRef"
|
|
7736
|
+
[summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
|
|
7737
|
+
[taskClass]="taskClass"
|
|
7738
|
+
[dependencies]="dependencies"
|
|
7739
|
+
[isExpanded]="isExpanded"
|
|
7740
|
+
[selectable]="selectable"
|
|
7741
|
+
[isTaskSelected]="isTaskSelected"
|
|
7663
7742
|
[kendoEventsOutsideAngular]="{
|
|
7664
7743
|
click: handleTimelineClick,
|
|
7665
7744
|
contextmenu: handleTimelineRightClick,
|
|
7666
7745
|
dblclick: handleTimelineDblClick,
|
|
7667
7746
|
mousedown: handleTimelineMouseDown
|
|
7668
7747
|
}"
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
</kendo-splitter>
|
|
7748
|
+
[customTooltipTemplate]="taskTooltipTemplate"
|
|
7749
|
+
[tooltipOptions]="taskTooltipOptions"
|
|
7750
|
+
[scope]="this"
|
|
7751
|
+
></kendo-gantt-timeline>
|
|
7752
|
+
}
|
|
7753
|
+
</kendo-splitter-pane>
|
|
7754
|
+
</kendo-splitter>
|
|
7675
7755
|
</div>
|
|
7676
|
-
|
|
7677
|
-
|
|
7756
|
+
@if (showToolbar('bottom')) {
|
|
7757
|
+
<kendo-gantt-toolbar
|
|
7678
7758
|
[attr.aria-label]="toolbarAriaLabel"
|
|
7679
7759
|
[showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
|
|
7680
7760
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -7683,27 +7763,33 @@ class GanttComponent {
|
|
|
7683
7763
|
[activeView]="activeView"
|
|
7684
7764
|
[navigable]="navigable"
|
|
7685
7765
|
class="k-gantt-footer"
|
|
7686
|
-
position="bottom"
|
|
7687
|
-
|
|
7688
|
-
|
|
7766
|
+
position="bottom"
|
|
7767
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
7768
|
+
}
|
|
7769
|
+
@if (showEditingDialog) {
|
|
7770
|
+
<kendo-gantt-edit-dialog
|
|
7689
7771
|
[data]="data">
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7772
|
+
</kendo-gantt-edit-dialog>
|
|
7773
|
+
}
|
|
7774
|
+
@if (showConfirmationDialog) {
|
|
7775
|
+
<kendo-dialog
|
|
7693
7776
|
[width]="575"
|
|
7694
7777
|
[height]="170"
|
|
7695
7778
|
[title]="getText('confirmationDialogTitle')"
|
|
7696
7779
|
(close)="handleConfirmationDialogClose()">
|
|
7697
7780
|
<span>{{ getText('confirmationDialogContent') }}</span>
|
|
7698
7781
|
<kendo-dialog-actions layout="start">
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7782
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
7783
|
+
<button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
|
|
7784
|
+
<button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
|
|
7702
7785
|
</kendo-dialog-actions>
|
|
7703
|
-
|
|
7786
|
+
</kendo-dialog>
|
|
7787
|
+
}
|
|
7704
7788
|
|
|
7705
|
-
|
|
7706
|
-
|
|
7789
|
+
@if (showLicenseWatermark) {
|
|
7790
|
+
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
7791
|
+
}
|
|
7792
|
+
`, 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
7793
|
}
|
|
7708
7794
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttComponent, decorators: [{
|
|
7709
7795
|
type: Component,
|
|
@@ -7741,211 +7827,211 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7741
7827
|
],
|
|
7742
7828
|
template: `
|
|
7743
7829
|
<ng-container kendoGanttLocalizedMessages
|
|
7744
|
-
|
|
7745
|
-
|
|
7830
|
+
i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
|
|
7831
|
+
taskEditingGeneralTabTitle="General"
|
|
7746
7832
|
|
|
7747
|
-
|
|
7748
|
-
|
|
7833
|
+
i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
|
|
7834
|
+
taskEditingPredecessorsTabTitle="Predecessors"
|
|
7749
7835
|
|
|
7750
|
-
|
|
7751
|
-
|
|
7836
|
+
i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
|
|
7837
|
+
taskEditingSuccessorsTabTitle="Successors"
|
|
7752
7838
|
|
|
7753
|
-
|
|
7754
|
-
|
|
7839
|
+
i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7840
|
+
taskEditingDependenciesAddButtonText="Add"
|
|
7755
7841
|
|
|
7756
|
-
|
|
7757
|
-
|
|
7842
|
+
i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
|
|
7843
|
+
taskEditingDependenciesRemoveButtonText="Remove"
|
|
7758
7844
|
|
|
7759
|
-
|
|
7760
|
-
|
|
7845
|
+
i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7846
|
+
taskEditingDependenciesGridNameColumnTitle="Task Title"
|
|
7761
7847
|
|
|
7762
|
-
|
|
7763
|
-
|
|
7848
|
+
i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
|
|
7849
|
+
taskEditingDependenciesGridTypeColumnTitle="Type"
|
|
7764
7850
|
|
|
7765
|
-
|
|
7766
|
-
|
|
7851
|
+
i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
|
|
7852
|
+
taskDeleteLabel="Delete"
|
|
7767
7853
|
|
|
7768
|
-
|
|
7769
|
-
|
|
7854
|
+
i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
|
|
7855
|
+
taskEditingDialogTitle="Editing Task"
|
|
7770
7856
|
|
|
7771
|
-
|
|
7772
|
-
|
|
7857
|
+
i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
|
|
7858
|
+
taskEditingDialogCloseTitle="Close"
|
|
7773
7859
|
|
|
7774
|
-
|
|
7775
|
-
|
|
7860
|
+
i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
|
|
7861
|
+
confirmationDialogCloseTitle="Close"
|
|
7776
7862
|
|
|
7777
|
-
|
|
7778
|
-
|
|
7863
|
+
i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
|
|
7864
|
+
confirmationDialogTitle="Delete Task"
|
|
7779
7865
|
|
|
7780
|
-
|
|
7781
|
-
|
|
7866
|
+
i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
|
|
7867
|
+
confirmationDialogContent="Are you sure you want to delete this task?"
|
|
7782
7868
|
|
|
7783
|
-
|
|
7784
|
-
|
|
7869
|
+
i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
|
|
7870
|
+
deleteButtonText="Delete"
|
|
7785
7871
|
|
|
7786
|
-
|
|
7787
|
-
|
|
7872
|
+
i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
|
|
7873
|
+
cancelButtonText="Cancel"
|
|
7788
7874
|
|
|
7789
|
-
|
|
7790
|
-
|
|
7875
|
+
i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
|
|
7876
|
+
saveButtonText="Save"
|
|
7791
7877
|
|
|
7792
|
-
|
|
7793
|
-
|
|
7878
|
+
i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
|
|
7879
|
+
titleFieldInputLabel="Title"
|
|
7794
7880
|
|
|
7795
|
-
|
|
7796
|
-
|
|
7881
|
+
i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
|
|
7882
|
+
startFieldInputLabel="Start"
|
|
7797
7883
|
|
|
7798
|
-
|
|
7799
|
-
|
|
7884
|
+
i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
|
|
7885
|
+
endFieldInputLabel="End"
|
|
7800
7886
|
|
|
7801
|
-
|
|
7802
|
-
|
|
7887
|
+
i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
|
|
7888
|
+
completionRatioFieldInputLabel="Progress"
|
|
7803
7889
|
|
|
7804
|
-
|
|
7805
|
-
|
|
7890
|
+
i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
|
|
7891
|
+
dayViewText="Day"
|
|
7806
7892
|
|
|
7807
|
-
|
|
7808
|
-
|
|
7893
|
+
i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
|
|
7894
|
+
weekViewText="Week"
|
|
7809
7895
|
|
|
7810
|
-
|
|
7811
|
-
|
|
7896
|
+
i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
|
|
7897
|
+
monthViewText="Month"
|
|
7812
7898
|
|
|
7813
|
-
|
|
7814
|
-
|
|
7899
|
+
i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
|
|
7900
|
+
yearViewText="Year"
|
|
7815
7901
|
|
|
7816
|
-
|
|
7817
|
-
|
|
7902
|
+
i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
|
|
7903
|
+
addTaskText="Add Task"
|
|
7818
7904
|
|
|
7819
|
-
|
|
7820
|
-
|
|
7905
|
+
i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
|
|
7906
|
+
addChildText="Add Child"
|
|
7821
7907
|
|
|
7822
|
-
|
|
7823
|
-
|
|
7908
|
+
i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
|
|
7909
|
+
addAboveText="Add Above"
|
|
7824
7910
|
|
|
7825
|
-
|
|
7826
|
-
|
|
7911
|
+
i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
|
|
7912
|
+
addBelowText="Add Below"
|
|
7827
7913
|
|
|
7828
|
-
|
|
7829
|
-
|
|
7914
|
+
i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
|
|
7915
|
+
noRecords="No records available."
|
|
7830
7916
|
|
|
7831
|
-
|
|
7832
|
-
|
|
7917
|
+
i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
|
|
7918
|
+
filter="Filter"
|
|
7833
7919
|
|
|
7834
|
-
|
|
7835
|
-
|
|
7920
|
+
i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
|
|
7921
|
+
filterEqOperator="Is equal to"
|
|
7836
7922
|
|
|
7837
|
-
|
|
7838
|
-
|
|
7923
|
+
i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
|
|
7924
|
+
filterNotEqOperator="Is not equal to"
|
|
7839
7925
|
|
|
7840
|
-
|
|
7841
|
-
|
|
7926
|
+
i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
|
|
7927
|
+
filterIsNullOperator="Is null"
|
|
7842
7928
|
|
|
7843
|
-
|
|
7844
|
-
|
|
7929
|
+
i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
7930
|
+
filterIsNotNullOperator="Is not null"
|
|
7845
7931
|
|
|
7846
|
-
|
|
7847
|
-
|
|
7932
|
+
i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
7933
|
+
filterIsEmptyOperator="Is empty"
|
|
7848
7934
|
|
|
7849
|
-
|
|
7850
|
-
|
|
7935
|
+
i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
7936
|
+
filterIsNotEmptyOperator="Is not empty"
|
|
7851
7937
|
|
|
7852
|
-
|
|
7853
|
-
|
|
7938
|
+
i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
|
|
7939
|
+
filterStartsWithOperator="Starts with"
|
|
7854
7940
|
|
|
7855
|
-
|
|
7856
|
-
|
|
7941
|
+
i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
|
|
7942
|
+
filterContainsOperator="Contains"
|
|
7857
7943
|
|
|
7858
|
-
|
|
7859
|
-
|
|
7944
|
+
i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
7945
|
+
filterNotContainsOperator="Does not contain"
|
|
7860
7946
|
|
|
7861
|
-
|
|
7862
|
-
|
|
7947
|
+
i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
|
|
7948
|
+
filterEndsWithOperator="Ends with"
|
|
7863
7949
|
|
|
7864
|
-
|
|
7865
|
-
|
|
7950
|
+
i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
|
|
7951
|
+
filterGteOperator="Is greater than or equal to"
|
|
7866
7952
|
|
|
7867
|
-
|
|
7868
|
-
|
|
7953
|
+
i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
|
|
7954
|
+
filterGtOperator="Is greater than"
|
|
7869
7955
|
|
|
7870
|
-
|
|
7871
|
-
|
|
7956
|
+
i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
|
|
7957
|
+
filterLteOperator="Is less than or equal to"
|
|
7872
7958
|
|
|
7873
|
-
|
|
7874
|
-
|
|
7959
|
+
i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
|
|
7960
|
+
filterLtOperator="Is less than"
|
|
7875
7961
|
|
|
7876
|
-
|
|
7877
|
-
|
|
7962
|
+
i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
7963
|
+
filterIsTrue="Is True"
|
|
7878
7964
|
|
|
7879
|
-
|
|
7880
|
-
|
|
7965
|
+
i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
7966
|
+
filterIsFalse="Is False"
|
|
7881
7967
|
|
|
7882
|
-
|
|
7883
|
-
|
|
7968
|
+
i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
|
|
7969
|
+
filterBooleanAll="(All)"
|
|
7884
7970
|
|
|
7885
|
-
|
|
7886
|
-
|
|
7971
|
+
i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
7972
|
+
filterAfterOrEqualOperator="Is after or equal to"
|
|
7887
7973
|
|
|
7888
|
-
|
|
7889
|
-
|
|
7974
|
+
i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
|
|
7975
|
+
filterAfterOperator="Is after"
|
|
7890
7976
|
|
|
7891
|
-
|
|
7892
|
-
|
|
7977
|
+
i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
|
|
7978
|
+
filterBeforeOperator="Is before"
|
|
7893
7979
|
|
|
7894
|
-
|
|
7895
|
-
|
|
7980
|
+
i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
7981
|
+
filterBeforeOrEqualOperator="Is before or equal to"
|
|
7896
7982
|
|
|
7897
|
-
|
|
7898
|
-
|
|
7983
|
+
i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
|
|
7984
|
+
filterFilterButton="Filter"
|
|
7899
7985
|
|
|
7900
|
-
|
|
7901
|
-
|
|
7986
|
+
i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
|
|
7987
|
+
filterClearButton="Clear"
|
|
7902
7988
|
|
|
7903
|
-
|
|
7904
|
-
|
|
7989
|
+
i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
|
|
7990
|
+
filterAndLogic="And"
|
|
7905
7991
|
|
|
7906
|
-
|
|
7907
|
-
|
|
7992
|
+
i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
|
|
7993
|
+
filterOrLogic="Or"
|
|
7908
7994
|
|
|
7909
|
-
|
|
7910
|
-
|
|
7995
|
+
i18n-loading="kendo.gantt.loading|The loading text"
|
|
7996
|
+
loading="Loading"
|
|
7911
7997
|
|
|
7912
|
-
|
|
7913
|
-
|
|
7998
|
+
i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
|
|
7999
|
+
columnMenu="Column Menu"
|
|
7914
8000
|
|
|
7915
|
-
|
|
7916
|
-
|
|
8001
|
+
i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
|
|
8002
|
+
columns="Columns"
|
|
7917
8003
|
|
|
7918
|
-
|
|
7919
|
-
|
|
8004
|
+
i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
|
|
8005
|
+
lock-disabled="Lock"
|
|
7920
8006
|
|
|
7921
|
-
|
|
7922
|
-
|
|
8007
|
+
i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
|
|
8008
|
+
unlock-disabled="Unlock"
|
|
7923
8009
|
|
|
7924
|
-
|
|
7925
|
-
|
|
8010
|
+
i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
|
|
8011
|
+
sortable="Sortable"
|
|
7926
8012
|
|
|
7927
|
-
|
|
7928
|
-
|
|
8013
|
+
i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
8014
|
+
sortAscending="Sort Ascending"
|
|
7929
8015
|
|
|
7930
|
-
|
|
7931
|
-
|
|
8016
|
+
i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
|
|
8017
|
+
sortDescending="Sort Descending"
|
|
7932
8018
|
|
|
7933
|
-
|
|
7934
|
-
|
|
8019
|
+
i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
|
|
8020
|
+
sortedDefault="Not Sorted"
|
|
7935
8021
|
|
|
7936
|
-
|
|
7937
|
-
|
|
8022
|
+
i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
8023
|
+
columnsApply="Apply"
|
|
7938
8024
|
|
|
7939
|
-
|
|
7940
|
-
|
|
8025
|
+
i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
8026
|
+
columnsReset="Reset"
|
|
7941
8027
|
|
|
7942
|
-
|
|
7943
|
-
|
|
8028
|
+
i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
|
|
8029
|
+
tooltipStartDateText="Start"
|
|
7944
8030
|
|
|
7945
|
-
|
|
7946
|
-
|
|
7947
|
-
|
|
7948
|
-
|
|
8031
|
+
i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
|
|
8032
|
+
tooltipEndDateText="End"></ng-container>
|
|
8033
|
+
@if (showToolbar('top')) {
|
|
8034
|
+
<kendo-gantt-toolbar
|
|
7949
8035
|
[attr.aria-label]="toolbarAriaLabel"
|
|
7950
8036
|
[showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
|
|
7951
8037
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -7955,142 +8041,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7955
8041
|
class="k-gantt-header"
|
|
7956
8042
|
position="top"
|
|
7957
8043
|
[navigable]="navigable"
|
|
7958
|
-
|
|
8044
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
8045
|
+
}
|
|
7959
8046
|
<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
|
-
|
|
8047
|
+
<kendo-splitter [style.border]="0">
|
|
8048
|
+
<kendo-splitter-pane
|
|
8049
|
+
class="k-gantt-treelist k-gantt-treelist-scrollable"
|
|
8050
|
+
[collapsible]="treeListPaneOptions?.collapsible"
|
|
8051
|
+
[collapsed]="treeListPaneOptions?.collapsed"
|
|
8052
|
+
(collapsedChange)="onTreeListCollapsedChange($event)"
|
|
8053
|
+
[scrollable]="false">
|
|
8054
|
+
<kendo-treelist
|
|
8055
|
+
[idField]="taskIdField"
|
|
8056
|
+
[columns]="columns"
|
|
8057
|
+
[data]="data"
|
|
8058
|
+
[hasChildren]="hasChildren"
|
|
8059
|
+
[fetchChildren]="fetchChildren"
|
|
8060
|
+
[navigable]="navigable"
|
|
8061
|
+
[isExpanded]="isExpanded"
|
|
8062
|
+
[autoSize]="columnsAutoSize"
|
|
8063
|
+
[columnMenu]="columnMenu"
|
|
8064
|
+
[reorderable]="columnsReorderable"
|
|
8065
|
+
[resizable]="columnsResizable"
|
|
8066
|
+
[rowClass]="rowClass"
|
|
8067
|
+
[isSelected]="isSelected"
|
|
8068
|
+
[selectable]="selectable"
|
|
8069
|
+
[sortable]="sortable"
|
|
8070
|
+
[sort]="sort"
|
|
8071
|
+
[filterable]="filterMenu"
|
|
8072
|
+
[filter]="filter"
|
|
8073
|
+
(filterChange)="filterChange.emit($event)"
|
|
8074
|
+
(sortChange)="sortChange.emit($event)"
|
|
7988
8075
|
(dataStateChange)="dataStateChange.emit({
|
|
7989
8076
|
filter: $event.filter,
|
|
7990
8077
|
sort: $event.sort
|
|
7991
8078
|
})"
|
|
7992
|
-
|
|
7993
|
-
|
|
7994
|
-
|
|
7995
|
-
|
|
7996
|
-
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
|
|
8079
|
+
(expandStateChange)="expandStateChange.emit($event)"
|
|
8080
|
+
(expand)="rowExpand.emit({ dataItem: $event.dataItem })"
|
|
8081
|
+
(collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
|
|
8082
|
+
(columnReorder)="columnReorder.emit($event)"
|
|
8083
|
+
(columnResize)="columnResize.emit($event)"
|
|
8084
|
+
(columnVisibilityChange)="handleColumnVisibilityChange($event)"
|
|
8085
|
+
(columnLockedChange)="columnLockedChange.emit($event)"
|
|
8086
|
+
(selectionChange)="handleTreeListSelectionChange($event)"
|
|
8087
|
+
(cellClick)="handleTreeListCellClick($event)"
|
|
8088
|
+
(cellClose)="handleCellClose($event)"
|
|
8002
8089
|
[kendoEventsOutsideAngular]="{
|
|
8003
8090
|
dblclick: handleTreeListDoubleClick
|
|
8004
8091
|
}"
|
|
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
|
-
|
|
8092
|
+
[scope]="this"
|
|
8093
|
+
>
|
|
8094
|
+
<kendo-treelist-messages
|
|
8095
|
+
[noRecords]="getText('noRecords')"
|
|
8096
|
+
[filter]="getText('filter')"
|
|
8097
|
+
[filterEqOperator]="getText('filterEqOperator')"
|
|
8098
|
+
[filterNotEqOperator]="getText('filterNotEqOperator')"
|
|
8099
|
+
[filterIsNullOperator]="getText('filterIsNullOperator')"
|
|
8100
|
+
[filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
|
|
8101
|
+
[filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
|
|
8102
|
+
[filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
|
|
8103
|
+
[filterStartsWithOperator]="getText('filterStartsWithOperator')"
|
|
8104
|
+
[filterContainsOperator]="getText('filterContainsOperator')"
|
|
8105
|
+
[filterNotContainsOperator]="getText('filterNotContainsOperator')"
|
|
8106
|
+
[filterEndsWithOperator]="getText('filterEndsWithOperator')"
|
|
8107
|
+
[filterGteOperator]="getText('filterGteOperator')"
|
|
8108
|
+
[filterGtOperator]="getText('filterGtOperator')"
|
|
8109
|
+
[filterLteOperator]="getText('filterLteOperator')"
|
|
8110
|
+
[filterLtOperator]="getText('filterLtOperator')"
|
|
8111
|
+
[filterIsTrue]="getText('filterIsTrue')"
|
|
8112
|
+
[filterIsFalse]="getText('filterIsFalse')"
|
|
8113
|
+
[filterBooleanAll]="getText('filterBooleanAll')"
|
|
8114
|
+
[filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
|
|
8115
|
+
[filterAfterOperator]="getText('filterAfterOperator')"
|
|
8116
|
+
[filterBeforeOperator]="getText('filterBeforeOperator')"
|
|
8117
|
+
[filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
|
|
8118
|
+
[filterFilterButton]="getText('filterFilterButton')"
|
|
8119
|
+
[filterClearButton]="getText('filterClearButton')"
|
|
8120
|
+
[filterAndLogic]="getText('filterAndLogic')"
|
|
8121
|
+
[filterOrLogic]="getText('filterOrLogic')"
|
|
8122
|
+
[loading]="getText('loading')"
|
|
8123
|
+
[columnMenu]="getText('columnMenu')"
|
|
8124
|
+
[columns]="getText('columns')"
|
|
8125
|
+
[sortable]="getText('sortable')"
|
|
8126
|
+
[sortAscending]="getText('sortAscending')"
|
|
8127
|
+
[sortDescending]="getText('sortDescending')"
|
|
8128
|
+
[sortedAscending]="getText('sortedAscending')"
|
|
8129
|
+
[sortedDescending]="getText('sortedDescending')"
|
|
8130
|
+
[sortedDefault]="getText('sortedDefault')"
|
|
8131
|
+
[columnsApply]="getText('columnsApply')"
|
|
8132
|
+
[columnsReset]="getText('columnsReset')"
|
|
8133
|
+
>
|
|
8134
|
+
</kendo-treelist-messages>
|
|
8135
|
+
</kendo-treelist>
|
|
8136
|
+
</kendo-splitter-pane>
|
|
8137
|
+
<kendo-splitter-pane
|
|
8138
|
+
[collapsible]="timelinePaneOptions?.collapsible"
|
|
8139
|
+
[resizable]="timelinePaneOptions?.resizable"
|
|
8140
|
+
[collapsed]="timelinePaneOptions?.collapsed"
|
|
8141
|
+
[min]="timelinePaneOptions?.min"
|
|
8142
|
+
[max]="timelinePaneOptions?.max"
|
|
8143
|
+
[size]="timelinePaneOptions?.size"
|
|
8144
|
+
(collapsedChange)="onTimelineCollapsedChange($event)"
|
|
8145
|
+
(sizeChange)="onTimelinePaneSizeChange($event)"
|
|
8146
|
+
[scrollable]="false"
|
|
8147
|
+
class="k-gantt-timeline-pane">
|
|
8148
|
+
@if (views && views.length) {
|
|
8149
|
+
<kendo-gantt-timeline
|
|
8150
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
8151
|
+
[dragScrollSettings]="dragScrollSettings"
|
|
8152
|
+
[rows]="viewItems"
|
|
8153
|
+
[slots]="timelineSlots"
|
|
8154
|
+
[currentTimeMarker]="activeViewCurrentTimeMarker"
|
|
8155
|
+
[groupSlots]="timelineGroupSlots"
|
|
8156
|
+
[tableWidth]="tableWidth"
|
|
8157
|
+
[activeView]="activeView"
|
|
8158
|
+
[taskContentTemplate]="taskContentTemplate?.templateRef"
|
|
8159
|
+
[taskTemplate]="taskTemplate?.templateRef"
|
|
8160
|
+
[summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
|
|
8161
|
+
[taskClass]="taskClass"
|
|
8162
|
+
[dependencies]="dependencies"
|
|
8163
|
+
[isExpanded]="isExpanded"
|
|
8164
|
+
[selectable]="selectable"
|
|
8165
|
+
[isTaskSelected]="isTaskSelected"
|
|
8079
8166
|
[kendoEventsOutsideAngular]="{
|
|
8080
8167
|
click: handleTimelineClick,
|
|
8081
8168
|
contextmenu: handleTimelineRightClick,
|
|
8082
8169
|
dblclick: handleTimelineDblClick,
|
|
8083
8170
|
mousedown: handleTimelineMouseDown
|
|
8084
8171
|
}"
|
|
8085
|
-
|
|
8086
|
-
|
|
8087
|
-
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
</kendo-splitter>
|
|
8172
|
+
[customTooltipTemplate]="taskTooltipTemplate"
|
|
8173
|
+
[tooltipOptions]="taskTooltipOptions"
|
|
8174
|
+
[scope]="this"
|
|
8175
|
+
></kendo-gantt-timeline>
|
|
8176
|
+
}
|
|
8177
|
+
</kendo-splitter-pane>
|
|
8178
|
+
</kendo-splitter>
|
|
8091
8179
|
</div>
|
|
8092
|
-
|
|
8093
|
-
|
|
8180
|
+
@if (showToolbar('bottom')) {
|
|
8181
|
+
<kendo-gantt-toolbar
|
|
8094
8182
|
[attr.aria-label]="toolbarAriaLabel"
|
|
8095
8183
|
[showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
|
|
8096
8184
|
[showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
|
|
@@ -8099,29 +8187,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8099
8187
|
[activeView]="activeView"
|
|
8100
8188
|
[navigable]="navigable"
|
|
8101
8189
|
class="k-gantt-footer"
|
|
8102
|
-
position="bottom"
|
|
8103
|
-
|
|
8104
|
-
|
|
8190
|
+
position="bottom"
|
|
8191
|
+
(activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
|
|
8192
|
+
}
|
|
8193
|
+
@if (showEditingDialog) {
|
|
8194
|
+
<kendo-gantt-edit-dialog
|
|
8105
8195
|
[data]="data">
|
|
8106
|
-
|
|
8107
|
-
|
|
8108
|
-
|
|
8196
|
+
</kendo-gantt-edit-dialog>
|
|
8197
|
+
}
|
|
8198
|
+
@if (showConfirmationDialog) {
|
|
8199
|
+
<kendo-dialog
|
|
8109
8200
|
[width]="575"
|
|
8110
8201
|
[height]="170"
|
|
8111
8202
|
[title]="getText('confirmationDialogTitle')"
|
|
8112
8203
|
(close)="handleConfirmationDialogClose()">
|
|
8113
8204
|
<span>{{ getText('confirmationDialogContent') }}</span>
|
|
8114
8205
|
<kendo-dialog-actions layout="start">
|
|
8115
|
-
|
|
8116
|
-
|
|
8117
|
-
|
|
8206
|
+
<kendo-treelist-spacer></kendo-treelist-spacer>
|
|
8207
|
+
<button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
|
|
8208
|
+
<button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
|
|
8118
8209
|
</kendo-dialog-actions>
|
|
8119
|
-
|
|
8210
|
+
</kendo-dialog>
|
|
8211
|
+
}
|
|
8120
8212
|
|
|
8121
|
-
|
|
8122
|
-
|
|
8213
|
+
@if (showLicenseWatermark) {
|
|
8214
|
+
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
8215
|
+
}
|
|
8216
|
+
`,
|
|
8123
8217
|
standalone: true,
|
|
8124
|
-
imports: [LocalizedMessagesDirective,
|
|
8218
|
+
imports: [LocalizedMessagesDirective, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
|
|
8125
8219
|
}]
|
|
8126
8220
|
}], 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
8221
|
type: Inject,
|