@progress/kendo-angular-gantt
Version:
Kendo UI Angular Gantt
226 lines (221 loc) • 12.4 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { ChangeDetectorRef, Component, Input } from '@angular/core';
import { LocalizationService } from '@progress/kendo-angular-l10n';
import { MappingService } from '../common/mapping.service';
import { DependencyType } from '../models/dependency-type.enum';
import { EditService } from './edit.service';
import { saveIcon, cancelOutlineIcon, trashIcon } from '@progress/kendo-svg-icons';
import { DependenciesTableComponent } from './dependencies-table.component';
import { TaskFieldsComponent } from './task-fields.component';
import { CustomMessagesComponent, DialogActionsComponent, DialogComponent } from '@progress/kendo-angular-dialog';
import { TabContentDirective, TabStripComponent, TabStripTabComponent } from '@progress/kendo-angular-layout';
import { ButtonComponent } from '@progress/kendo-angular-buttons';
import { TreeListSpacerComponent } from '@progress/kendo-angular-treelist';
import { EventsOutsideAngularDirective } from '@progress/kendo-angular-common';
import * as i0 from "@angular/core";
import * as i1 from "../common/mapping.service";
import * as i2 from "./edit.service";
import * as i3 from "@progress/kendo-angular-l10n";
/**
* @hidden
*/
export class EditDialogComponent {
mapper;
editService;
cdr;
localizationService;
data;
loadedTasks;
saveIcon = saveIcon;
cancelIcon = cancelOutlineIcon;
deleteIcon = trashIcon;
constructor(mapper, editService, cdr, localizationService) {
this.mapper = mapper;
this.editService = editService;
this.cdr = cdr;
this.localizationService = localizationService;
}
ngOnInit() {
this.editService.loadTasks(this.data).subscribe(value => {
this.loadedTasks = value;
});
}
get predecessors() {
return this.editService.predecessors;
}
set predecessors(items) {
this.editService.predecessors = items;
}
get successors() {
return this.editService.successors;
}
set successors(items) {
this.editService.successors = items;
}
getText(token) {
return this.localizationService.get(token);
}
getDependencyType(typeId) {
return DependencyType[typeId];
}
handleEditingResult(editResultType) {
this.editService.triggerEditEvent(editResultType);
}
handleTaskDelete() {
this.editService.taskDelete.next(this.editService.dataItem);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditDialogComponent, deps: [{ token: i1.MappingService }, { token: i2.EditService }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EditDialogComponent, isStandalone: true, selector: "kendo-gantt-edit-dialog", inputs: { data: "data" }, ngImport: i0, template: `
<kendo-dialog
[title]="getText('taskEditingDialogTitle')"
[width]="575"
[height]="470"
[autoFocusedElement]="'.k-actions .k-button-solid-primary'"
(close)="handleEditingResult('cancel')">
<kendo-dialog-messages
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
<kendo-tabstrip [keepTabContent]="true" [style.height.px]="345">
<kendo-tabstrip-tab [title]="getText('taskEditingGeneralTabTitle')" [selected]="true">
<ng-template kendoTabContent>
<kendo-gantt-task-fields></kendo-gantt-task-fields>
</ng-template>
</kendo-tabstrip-tab>
<kendo-tabstrip-tab [title]="getText('taskEditingPredecessorsTabTitle')">
<ng-template kendoTabContent>
<kendo-gantt-dependencies-table
[tasks]="loadedTasks"
[(dependencies)]="predecessors"
dependencyType="predecessor"
>
</kendo-gantt-dependencies-table>
</ng-template>
</kendo-tabstrip-tab>
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
<ng-template kendoTabContent>
<kendo-gantt-dependencies-table
[tasks]="loadedTasks"
[(dependencies)]="successors"
dependencyType="successor">
</kendo-gantt-dependencies-table>
</ng-template>
</kendo-tabstrip-tab>
</kendo-tabstrip>
<kendo-dialog-actions layout="start">
<button
kendoButton
themeColor="primary"
icon="save"
[svgIcon]="saveIcon"
(click)="handleEditingResult('save')"
>
{{ getText('saveButtonText') }}
</button>
<button
kendoButton
icon="cancel-outline"
[svgIcon]="cancelIcon"
(click)="handleEditingResult('cancel')"
>
{{ getText('cancelButtonText') }}
</button>
<kendo-treelist-spacer></kendo-treelist-spacer>
<button
kendoButton
themeColor="primary"
fillMode="flat"
icon="delete"
[svgIcon]="deleteIcon"
[kendoEventsOutsideAngular]="{
click: handleTaskDelete
}"
[scope]="this"
>
{{ getText('deleteButtonText') }}
</button>
</kendo-dialog-actions>
</kendo-dialog>
`, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "directive", type: CustomMessagesComponent, selector: "kendo-dialog-messages, kendo-window-messages" }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "size", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabContentDirective, selector: "[kendoTabContent]" }, { kind: "component", type: TaskFieldsComponent, selector: "kendo-gantt-task-fields" }, { kind: "component", type: DependenciesTableComponent, selector: "kendo-gantt-dependencies-table", inputs: ["tasks", "dependencies", "dependencyType"], outputs: ["dependenciesChange"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", 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: TreeListSpacerComponent, selector: "kendo-treelist-spacer", inputs: ["width"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditDialogComponent, decorators: [{
type: Component,
args: [{
selector: 'kendo-gantt-edit-dialog',
template: `
<kendo-dialog
[title]="getText('taskEditingDialogTitle')"
[width]="575"
[height]="470"
[autoFocusedElement]="'.k-actions .k-button-solid-primary'"
(close)="handleEditingResult('cancel')">
<kendo-dialog-messages
[closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
<kendo-tabstrip [keepTabContent]="true" [style.height.px]="345">
<kendo-tabstrip-tab [title]="getText('taskEditingGeneralTabTitle')" [selected]="true">
<ng-template kendoTabContent>
<kendo-gantt-task-fields></kendo-gantt-task-fields>
</ng-template>
</kendo-tabstrip-tab>
<kendo-tabstrip-tab [title]="getText('taskEditingPredecessorsTabTitle')">
<ng-template kendoTabContent>
<kendo-gantt-dependencies-table
[tasks]="loadedTasks"
[(dependencies)]="predecessors"
dependencyType="predecessor"
>
</kendo-gantt-dependencies-table>
</ng-template>
</kendo-tabstrip-tab>
<kendo-tabstrip-tab [title]="getText('taskEditingSuccessorsTabTitle')">
<ng-template kendoTabContent>
<kendo-gantt-dependencies-table
[tasks]="loadedTasks"
[(dependencies)]="successors"
dependencyType="successor">
</kendo-gantt-dependencies-table>
</ng-template>
</kendo-tabstrip-tab>
</kendo-tabstrip>
<kendo-dialog-actions layout="start">
<button
kendoButton
themeColor="primary"
icon="save"
[svgIcon]="saveIcon"
(click)="handleEditingResult('save')"
>
{{ getText('saveButtonText') }}
</button>
<button
kendoButton
icon="cancel-outline"
[svgIcon]="cancelIcon"
(click)="handleEditingResult('cancel')"
>
{{ getText('cancelButtonText') }}
</button>
<kendo-treelist-spacer></kendo-treelist-spacer>
<button
kendoButton
themeColor="primary"
fillMode="flat"
icon="delete"
[svgIcon]="deleteIcon"
[kendoEventsOutsideAngular]="{
click: handleTaskDelete
}"
[scope]="this"
>
{{ getText('deleteButtonText') }}
</button>
</kendo-dialog-actions>
</kendo-dialog>
`,
standalone: true,
imports: [DialogComponent, CustomMessagesComponent, TabStripComponent, TabStripTabComponent, TabContentDirective, TaskFieldsComponent, DependenciesTableComponent, DialogActionsComponent, ButtonComponent, TreeListSpacerComponent, EventsOutsideAngularDirective]
}]
}], ctorParameters: () => [{ type: i1.MappingService }, { type: i2.EditService }, { type: i0.ChangeDetectorRef }, { type: i3.LocalizationService }], propDecorators: { data: [{
type: Input
}] } });