@yuuvis/bpm-management-app 1.0.0 → 1.0.1
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.
|
@@ -15,7 +15,7 @@ import * as i6 from '@yuuvis/material/layout';
|
|
|
15
15
|
import { YmtLayoutModule } from '@yuuvis/material/layout';
|
|
16
16
|
import * as i7 from '@yuuvis/material/panes';
|
|
17
17
|
import { YmtPanesModule } from '@yuuvis/material/panes';
|
|
18
|
-
import * as i5$
|
|
18
|
+
import * as i5$2 from '@yuuvis/client-shell';
|
|
19
19
|
import { YuvClientShellModule } from '@yuuvis/client-shell';
|
|
20
20
|
import * as i2$2 from '@angular/material/button';
|
|
21
21
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -23,7 +23,7 @@ import * as i4 from '@angular/material/tooltip';
|
|
|
23
23
|
import { MatTooltipModule, MatTooltip } from '@angular/material/tooltip';
|
|
24
24
|
import * as i4$1 from '@angular/material/table';
|
|
25
25
|
import { MatTableModule } from '@angular/material/table';
|
|
26
|
-
import * as i5 from '@angular/material/paginator';
|
|
26
|
+
import * as i5$1 from '@angular/material/paginator';
|
|
27
27
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
28
28
|
import { MatSortModule } from '@angular/material/sort';
|
|
29
29
|
import { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details';
|
|
@@ -45,7 +45,8 @@ import { MatMenuModule } from '@angular/material/menu';
|
|
|
45
45
|
import { MatDividerModule } from '@angular/material/divider';
|
|
46
46
|
import * as i1$1 from '@angular/forms';
|
|
47
47
|
import { FormGroup, FormControl, ReactiveFormsModule, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
48
|
-
import
|
|
48
|
+
import * as i5 from '@yuuvis/client-framework/datepicker';
|
|
49
|
+
import { YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';
|
|
49
50
|
import { MatProgressBar } from '@angular/material/progress-bar';
|
|
50
51
|
import { MatCardModule } from '@angular/material/card';
|
|
51
52
|
import * as i1$3 from '@angular/material/progress-spinner';
|
|
@@ -489,6 +490,9 @@ class YuvBpmAdminService {
|
|
|
489
490
|
};
|
|
490
491
|
return this.#backendService.patch(`${this.bpmApiBase}/tasks/${taskId}`, body, ApiBase.none);
|
|
491
492
|
}
|
|
493
|
+
setTaskCandidates(taskId, body) {
|
|
494
|
+
return this.#backendService.post(`${this.bpmApiBase}/tasks/${taskId}/candidates`, body, ApiBase.none);
|
|
495
|
+
}
|
|
492
496
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvBpmAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
493
497
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvBpmAdminService, providedIn: 'root' });
|
|
494
498
|
}
|
|
@@ -892,6 +896,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
892
896
|
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], enableMultiselect: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableMultiselect", required: false }] }] } });
|
|
893
897
|
|
|
894
898
|
class DateFilterComponent {
|
|
899
|
+
translateService = inject(TranslateService);
|
|
895
900
|
tooltip;
|
|
896
901
|
placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
897
902
|
operators = input([FILTER_OPERATORS.BEFORE], ...(ngDevMode ? [{ debugName: "operators" }] : /* istanbul ignore next */ []));
|
|
@@ -1036,7 +1041,7 @@ class DateFilterComponent {
|
|
|
1036
1041
|
useExisting: forwardRef(() => DateFilterComponent),
|
|
1037
1042
|
multi: true
|
|
1038
1043
|
}
|
|
1039
|
-
], viewQueries: [{ propertyName: "tooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n
|
|
1044
|
+
], viewQueries: [{ propertyName: "tooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n <div class=\"filter-operator-anchor\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n </div>\n\n @if (isBetweenMode()) {\n <div class=\"date-range\">\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n\n <yuv-datepicker\n [formControl]=\"endDateControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n </div>\n } @else {\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n }\n</div>\n", styles: [".filter-input-group{display:flex;align-items:flex-start;gap:4px;width:100%;opacity:.6;transition:opacity .2s ease-in-out}.filter-input-group.active{opacity:1}.filter-operator-anchor{height:40px;display:flex;align-items:center;flex-shrink:0}.date-range{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}:host ::ng-deep yuv-datepicker{flex:1;min-width:0;height:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: YuvDatepickerModule }, { kind: "component", type: i5.DatepickerComponent, selector: "yuv-datepicker", inputs: ["calendar", "readonly", "hour12", "locale", "labels", "withTime", "onlyFutureDates", "minDate", "maxDate", "disabled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1040
1045
|
}
|
|
1041
1046
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DateFilterComponent, decorators: [{
|
|
1042
1047
|
type: Component,
|
|
@@ -1053,14 +1058,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
1053
1058
|
MatDividerModule,
|
|
1054
1059
|
TranslatePipe,
|
|
1055
1060
|
MatTooltipModule,
|
|
1056
|
-
|
|
1061
|
+
YuvDatepickerModule
|
|
1057
1062
|
], providers: [
|
|
1058
1063
|
{
|
|
1059
1064
|
provide: NG_VALUE_ACCESSOR,
|
|
1060
1065
|
useExisting: forwardRef(() => DateFilterComponent),
|
|
1061
1066
|
multi: true
|
|
1062
1067
|
}
|
|
1063
|
-
], template: "<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n
|
|
1068
|
+
], template: "<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n <div class=\"filter-operator-anchor\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n </div>\n\n @if (isBetweenMode()) {\n <div class=\"date-range\">\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n\n <yuv-datepicker\n [formControl]=\"endDateControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n </div>\n } @else {\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n }\n</div>\n", styles: [".filter-input-group{display:flex;align-items:flex-start;gap:4px;width:100%;opacity:.6;transition:opacity .2s ease-in-out}.filter-input-group.active{opacity:1}.filter-operator-anchor{height:40px;display:flex;align-items:center;flex-shrink:0}.date-range{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}:host ::ng-deep yuv-datepicker{flex:1;min-width:0;height:40px}\n"] }]
|
|
1064
1069
|
}], propDecorators: { tooltip: [{
|
|
1065
1070
|
type: ViewChild,
|
|
1066
1071
|
args: [MatTooltip]
|
|
@@ -1166,7 +1171,7 @@ class BpmTableComponent {
|
|
|
1166
1171
|
this.filtersChange.emit(currentFilters);
|
|
1167
1172
|
}
|
|
1168
1173
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BpmTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1169
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BpmTableComponent, isStandalone: true, selector: "ymbpm-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, enableFilters: { classPropertyName: "enableFilters", publicName: "enableFilters", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, selectedRow: { classPropertyName: "selectedRow", publicName: "selectedRow", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filtersChange: "filtersChange", pageChange: "pageChange", rowSelected: "rowSelected" }, ngImport: i0, template: "<div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource()\" class=\"bpm-table mat-elevation-z8\">\n @for (column of columns(); track column.name) {\n <ng-container [matColumnDef]=column.name>\n <!-- Header cell -->\n <th mat-header-cell *matHeaderCellDef>\n <div class=\"header-cell-content\">\n <div class=\"header-title\">\n <span>{{column.displayName | translate}}</span>\n @if (enableFilters() && column.filter && hasActiveFilter(column.name)) {\n <div class=\"header-actions\">\n <mat-icon class=\"filter-active-icon\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.activeFilter' | translate\">{{icons.filterActive}}</mat-icon>\n <button mat-icon-button \n class=\"filter-clear-btn\"\n (click)=\"clearColumnFilter(column.name)\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.clearOne' | translate\">\n <mat-icon>{{icons.cancel}}</mat-icon>\n </button>\n </div>\n }\n </div>\n \n <!-- Filter inputs -->\n @if (enableFilters() && column.filter && getFilterControl(column.name)) {\n <div class=\"filter-container\">\n @switch (column.filter.type) {\n @case (FILTER_TYPES.TEXT) {\n <ymbpm-text-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-text-filter>\n }\n @case (FILTER_TYPES.NUMBER) {\n <ymbpm-number-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-number-filter>\n }\n @case (FILTER_TYPES.SELECT) {\n <ymbpm-select-filter [formControl]=\"getFilterControl(column.name)\" [options]=\"column.filter.options || []\" [enableMultiselect]=\"column.filter.enableMultiselect || false\"></ymbpm-select-filter>\n }\n @case (FILTER_TYPES.DATE) {\n <ymbpm-date-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-date-filter>\n }\n }\n </div>\n }\n \n </div>\n </th>\n \n <!-- Data cells -->\n @if (column.template) {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ $implicit: element }\"></ng-container>\n </div>\n </td>\n } @else {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n {{element[column.name]}}\n </div>\n </td>\n }\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns();\" \n (click)=\"selectRow(row)\" \n [class.selected-row]=\"isSelected(row)\" \n class=\"process-row\">\n </tr>\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" [attr.colspan]=\"displayedColumns().length\">\n <p class=\"no-items-label\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n </td>\n </tr>\n</table>\n</div>\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n<div class=\"footer\">\n <mat-paginator class=\"paginator\" [length]=\"pagination()?.total\" [pageSize]=\"pagination()?.pageSize\" [pageSizeOptions]=\"pageSizes\" aria-label=\"Select page\"\n (page)=\"pageChange.emit($event)\"></mat-paginator>\n</div>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);--split-gutter-background-color: var(--ymt-outline-variant);height:100%;width:100%;overflow:hidden;display:flex;flex-flow:column}:host .table-container{flex:1;overflow:auto;width:100%;position:relative}:host .bpm-table{width:100%;height:auto;table-layout:fixed;border-collapse:collapse}:host .bpm-table ::ng-deep .mat-mdc-header-cell{width:170px;min-width:170px;padding:2px;box-sizing:border-box;border-right:1px solid var(--ymt-outline-variant);vertical-align:top}:host .bpm-table .mat-mdc-cell{padding:6px;box-sizing:border-box;border-right:1px solid var(--ymt-outline-variant);vertical-align:middle}:host .bpm-table .mat-mdc-cell:last-child{border-right:none}:host .bpm-table .mat-mdc-cell .cell-content{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-break:break-word;overflow-wrap:break-word;max-height:75px}:host .bpm-table .mat-mdc-cell ::ng-deep .mat-icon{height:25px;width:25px;font-size:25px;vertical-align:middle}:host .process-row{cursor:pointer}:host .process-row:hover{background-color:var(--ymt-surface-container-high)}:host .selected-row{background-color:var(--ymt-selection-background)!important}:host .clear-filters-btn{display:flex;align-items:center;gap:4px}:host .no-items-label{text-align:center;color:var(--ymt-on-surface);font-style:italic;margin:32px 0}:host .header-cell-content{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;padding:0 4px 8px;width:100%;height:100%;min-height:56px;box-sizing:border-box}:host .header-title{display:flex;height:20px;align-items:center;margin-bottom:0;gap:4px;font-weight:500}:host .header-actions{display:flex;align-items:center;gap:4px}:host .filter-active-icon{font-size:16px;height:16px;width:16px;color:var(--ymt-primary)}:host .filter-clear-btn{height:16px;width:16px;padding:0;line-height:16px;display:flex;align-items:center;justify-content:center}:host .filter-clear-btn mat-icon{font-size:16px;height:16px;width:16px}:host .filter-container{margin-top:auto;width:100%;min-width:0;min-height:40px}:host ::ng-deep .filter-options-btn{background-color:var(--ymt-surface-container);border:1px solid var(--ymt-outline);border-radius:var(--ymt-corner-s)}:host .footer{display:flex;align-items:center;padding:0 16px;border-top:2px solid var(--ymt-outline-variant);box-sizing:border-box}:host .footer .paginator{margin-left:auto}@media(max-width:768px){:host .header-cell-content{min-height:100px}:host .filter-field{min-width:60px;font-size:11px}:host .filter-options-btn,:host .filter-clear-btn{min-width:24px;width:24px;height:24px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i4$1.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: TextFilterComponent, selector: "ymbpm-text-filter", inputs: ["operators"] }, { kind: "component", type: DateFilterComponent, selector: "ymbpm-date-filter", inputs: ["placeholder", "operators"] }, { kind: "component", type: SelectFilterComponent, selector: "ymbpm-select-filter", inputs: ["options", "enableMultiselect"] }, { kind: "component", type: NumberFilterComponent, selector: "ymbpm-number-filter", inputs: ["operators"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1174
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BpmTableComponent, isStandalone: true, selector: "ymbpm-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, enableFilters: { classPropertyName: "enableFilters", publicName: "enableFilters", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, selectedRow: { classPropertyName: "selectedRow", publicName: "selectedRow", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filtersChange: "filtersChange", pageChange: "pageChange", rowSelected: "rowSelected" }, ngImport: i0, template: "<div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource()\" class=\"bpm-table mat-elevation-z8\">\n @for (column of columns(); track column.name) {\n <ng-container [matColumnDef]=column.name>\n <!-- Header cell -->\n <th mat-header-cell *matHeaderCellDef>\n <div class=\"header-cell-content\">\n <div class=\"header-title\">\n <span>{{column.displayName | translate}}</span>\n @if (enableFilters() && column.filter && hasActiveFilter(column.name)) {\n <div class=\"header-actions\">\n <mat-icon class=\"filter-active-icon\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.activeFilter' | translate\">{{icons.filterActive}}</mat-icon>\n <button mat-icon-button \n class=\"filter-clear-btn\"\n (click)=\"clearColumnFilter(column.name)\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.clearOne' | translate\">\n <mat-icon>{{icons.cancel}}</mat-icon>\n </button>\n </div>\n }\n </div>\n \n <!-- Filter inputs -->\n @if (enableFilters() && column.filter && getFilterControl(column.name)) {\n <div class=\"filter-container\">\n @switch (column.filter.type) {\n @case (FILTER_TYPES.TEXT) {\n <ymbpm-text-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-text-filter>\n }\n @case (FILTER_TYPES.NUMBER) {\n <ymbpm-number-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-number-filter>\n }\n @case (FILTER_TYPES.SELECT) {\n <ymbpm-select-filter [formControl]=\"getFilterControl(column.name)\" [options]=\"column.filter.options || []\" [enableMultiselect]=\"column.filter.enableMultiselect || false\"></ymbpm-select-filter>\n }\n @case (FILTER_TYPES.DATE) {\n <ymbpm-date-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-date-filter>\n }\n }\n </div>\n }\n \n </div>\n </th>\n \n <!-- Data cells -->\n @if (column.template) {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ $implicit: element }\"></ng-container>\n </div>\n </td>\n } @else {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n {{element[column.name]}}\n </div>\n </td>\n }\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns();\" \n (click)=\"selectRow(row)\" \n [class.selected-row]=\"isSelected(row)\" \n class=\"process-row\">\n </tr>\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" [attr.colspan]=\"displayedColumns().length\">\n <p class=\"no-items-label\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n </td>\n </tr>\n</table>\n</div>\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n<div class=\"footer\">\n <mat-paginator class=\"paginator\" [length]=\"pagination()?.total\" [pageSize]=\"pagination()?.pageSize\" [pageSizeOptions]=\"pageSizes\" aria-label=\"Select page\"\n (page)=\"pageChange.emit($event)\"></mat-paginator>\n</div>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);--split-gutter-background-color: var(--ymt-outline-variant);height:100%;width:100%;overflow:hidden;display:flex;flex-flow:column}:host .table-container{flex:1;overflow:auto;width:100%;position:relative}:host .bpm-table{width:100%;height:auto;table-layout:fixed;border-collapse:collapse}:host .bpm-table ::ng-deep .mat-mdc-header-cell{width:170px;min-width:170px;padding:2px;box-sizing:border-box;border-right:1px solid var(--ymt-outline-variant);vertical-align:top}:host .bpm-table .mat-mdc-cell{padding:6px;box-sizing:border-box;border-right:1px solid var(--ymt-outline-variant);vertical-align:middle}:host .bpm-table .mat-mdc-cell:last-child{border-right:none}:host .bpm-table .mat-mdc-cell .cell-content{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-break:break-word;overflow-wrap:break-word;max-height:75px}:host .bpm-table .mat-mdc-cell ::ng-deep .mat-icon{height:25px;width:25px;font-size:25px;vertical-align:middle}:host .process-row{cursor:pointer}:host .process-row:hover{background-color:var(--ymt-surface-container-high)}:host .selected-row{background-color:var(--ymt-selection-background)!important}:host .clear-filters-btn{display:flex;align-items:center;gap:4px}:host .no-items-label{text-align:center;color:var(--ymt-on-surface);font-style:italic;margin:32px 0}:host .header-cell-content{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;padding:0 4px 8px;width:100%;height:100%;min-height:56px;box-sizing:border-box}:host .header-title{display:flex;height:20px;align-items:center;margin-bottom:0;gap:4px;font-weight:500}:host .header-actions{display:flex;align-items:center;gap:4px}:host .filter-active-icon{font-size:16px;height:16px;width:16px;color:var(--ymt-primary)}:host .filter-clear-btn{height:16px;width:16px;padding:0;line-height:16px;display:flex;align-items:center;justify-content:center}:host .filter-clear-btn mat-icon{font-size:16px;height:16px;width:16px}:host .filter-container{margin-top:auto;width:100%;min-width:0;min-height:40px}:host ::ng-deep .filter-options-btn{background-color:var(--ymt-surface-container);border:1px solid var(--ymt-outline);border-radius:var(--ymt-corner-s)}:host .footer{display:flex;align-items:center;padding:0 16px;border-top:2px solid var(--ymt-outline-variant);box-sizing:border-box}:host .footer .paginator{margin-left:auto}@media(max-width:768px){:host .header-cell-content{min-height:100px}:host .filter-field{min-width:60px;font-size:11px}:host .filter-options-btn,:host .filter-clear-btn{min-width:24px;width:24px;height:24px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i4$1.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i5$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: TextFilterComponent, selector: "ymbpm-text-filter", inputs: ["operators"] }, { kind: "component", type: DateFilterComponent, selector: "ymbpm-date-filter", inputs: ["placeholder", "operators"] }, { kind: "component", type: SelectFilterComponent, selector: "ymbpm-select-filter", inputs: ["options", "enableMultiselect"] }, { kind: "component", type: NumberFilterComponent, selector: "ymbpm-number-filter", inputs: ["operators"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1170
1175
|
}
|
|
1171
1176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BpmTableComponent, decorators: [{
|
|
1172
1177
|
type: Component,
|
|
@@ -1463,7 +1468,7 @@ class YuvDeploymentsPageComponent {
|
|
|
1463
1468
|
return this.filter ? Object.keys(this.filter).length > 0 : false;
|
|
1464
1469
|
}
|
|
1465
1470
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvDeploymentsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1466
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvDeploymentsPageComponent, isStandalone: true, selector: "ymbpm-deployments-page", viewQueries: [{ propertyName: "deploymentDetailsComponent", first: true, predicate: DeploymentDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\"\n [columns]=\"displayedColumns\"\n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDeployment = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDeployment ? 'inventory_2' : undefined\" [title]=\"selectedDeployment ? (selectedDeployment.name || '<unnamed>') : ''\" [subtitle]=\"selectedDeployment ? selectedDeployment.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDeployment) {\n <ymbpm-deployment-details [deploymentId]=\"selectedDeployment?.id\"></ymbpm-deployment-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$
|
|
1471
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvDeploymentsPageComponent, isStandalone: true, selector: "ymbpm-deployments-page", viewQueries: [{ propertyName: "deploymentDetailsComponent", first: true, predicate: DeploymentDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\"\n [columns]=\"displayedColumns\"\n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDeployment = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDeployment ? 'inventory_2' : undefined\" [title]=\"selectedDeployment ? (selectedDeployment.name || '<unnamed>') : ''\" [subtitle]=\"selectedDeployment ? selectedDeployment.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDeployment) {\n <ymbpm-deployment-details [deploymentId]=\"selectedDeployment?.id\"></ymbpm-deployment-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$2.YuvAppHeaderSlotDirective, selector: "ng-template[yuvAppHeaderSlot]", inputs: ["yuvAppHeaderSlot"] }, { kind: "ngmodule", type: YuvMasterDetailsModule }, { kind: "ngmodule", type: YuvOverflowMenuModule }, { kind: "component", type: BpmTableComponent, selector: "ymbpm-table", inputs: ["columns", "dataSource", "enableFilters", "pagination", "selectedRow", "busy"], outputs: ["filtersChange", "pageChange", "rowSelected"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: DeploymentDetailsComponent, selector: "ymbpm-deployment-details", inputs: ["deploymentId"] }, { kind: "ngmodule", type: YmtLayoutModule }, { kind: "component", type: i6.MasterDetailsLayoutComponent, selector: "ymt-master-details-layout", inputs: ["layoutSettingsID", "options", "direction", "gutterSize", "detailsActive"], outputs: ["detailsActiveChange"] }, { kind: "directive", type: i6.YmtLayoutPaneDirective, selector: "[ymtLayoutPane]", inputs: ["role", "topBarActions"] }, { kind: "ngmodule", type: YmtPanesModule }, { kind: "component", type: i7.YmtPaneHeaderComponent, selector: "ymt-pane-header", inputs: ["title", "icon", "subtitle", "actions", "badges"] }, { kind: "component", type: i7.YmtPaneBodyComponent, selector: "ymt-pane-body" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1467
1472
|
}
|
|
1468
1473
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvDeploymentsPageComponent, decorators: [{
|
|
1469
1474
|
type: Component,
|
|
@@ -1832,7 +1837,7 @@ class YuvProcessDefinitionsPageComponent {
|
|
|
1832
1837
|
});
|
|
1833
1838
|
}
|
|
1834
1839
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvProcessDefinitionsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1835
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvProcessDefinitionsPageComponent, isStandalone: true, selector: "ymbpm-processdefinitions-page", viewQueries: [{ propertyName: "processDefinitionDetailsComponent", first: true, predicate: ProcessDefinitionDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }, { propertyName: "showOnlyLatestCheckbox", first: true, predicate: ["showOnlyLatestCheckbox"], descendants: true }, { propertyName: "globalTemplate", first: true, predicate: ["globalTemplate"], descendants: true, static: true }, { propertyName: "statusTemplate", first: true, predicate: ["statusTemplate"], descendants: true, static: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableTableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onTableFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDefinition = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDefinition ? 'flowchart' : undefined\" [title]=\"selectedDefinition ? (selectedDefinition.name || '<unnamed>') : ''\" [subtitle]=\"selectedDefinition ? selectedDefinition.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDefinition) {\n <ymbpm-process-definition-details [processDefinitionId]=\"selectedDefinition?.id\"></ymbpm-process-definition-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"filter-actions\"> \n <mat-checkbox #showOnlyLatestCheckbox (change)=\"this.onTableFiltersChange(null)\" [checked]=\"true\">{{'yuv.app.bpm-management.processdefinitions.filter.onlyLatest' | translate}}</mat-checkbox>\n </div>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableTableFilters\" [disabled]=\"!hasActiveTableFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #globalTemplate let-processDefinition>\n @if (processDefinition.global) {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.GLOBAL.label | translate\">{{icons[ProcessDefinitionScope.GLOBAL.icon]}}</mat-icon>\n } @else {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.TENANT.label | translate\">{{icons[ProcessDefinitionScope.TENANT.icon]}}</mat-icon>\n }\n</ng-template>\n\n<ng-template #statusTemplate let-processDefinition>\n @if (processDefinition.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessDefinitionStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessDefinitionStatus.ACTIVE.label | translate}}</span>\n }\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .table-actions{border-color:var(--ymt-outline-variant);border-width:0 0 0 1px;border-style:solid}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$
|
|
1840
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvProcessDefinitionsPageComponent, isStandalone: true, selector: "ymbpm-processdefinitions-page", viewQueries: [{ propertyName: "processDefinitionDetailsComponent", first: true, predicate: ProcessDefinitionDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }, { propertyName: "showOnlyLatestCheckbox", first: true, predicate: ["showOnlyLatestCheckbox"], descendants: true }, { propertyName: "globalTemplate", first: true, predicate: ["globalTemplate"], descendants: true, static: true }, { propertyName: "statusTemplate", first: true, predicate: ["statusTemplate"], descendants: true, static: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableTableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onTableFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDefinition = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDefinition ? 'flowchart' : undefined\" [title]=\"selectedDefinition ? (selectedDefinition.name || '<unnamed>') : ''\" [subtitle]=\"selectedDefinition ? selectedDefinition.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDefinition) {\n <ymbpm-process-definition-details [processDefinitionId]=\"selectedDefinition?.id\"></ymbpm-process-definition-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"filter-actions\"> \n <mat-checkbox #showOnlyLatestCheckbox (change)=\"this.onTableFiltersChange(null)\" [checked]=\"true\">{{'yuv.app.bpm-management.processdefinitions.filter.onlyLatest' | translate}}</mat-checkbox>\n </div>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableTableFilters\" [disabled]=\"!hasActiveTableFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #globalTemplate let-processDefinition>\n @if (processDefinition.global) {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.GLOBAL.label | translate\">{{icons[ProcessDefinitionScope.GLOBAL.icon]}}</mat-icon>\n } @else {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.TENANT.label | translate\">{{icons[ProcessDefinitionScope.TENANT.icon]}}</mat-icon>\n }\n</ng-template>\n\n<ng-template #statusTemplate let-processDefinition>\n @if (processDefinition.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessDefinitionStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessDefinitionStatus.ACTIVE.label | translate}}</span>\n }\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .table-actions{border-color:var(--ymt-outline-variant);border-width:0 0 0 1px;border-style:solid}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$2.YuvAppHeaderSlotDirective, selector: "ng-template[yuvAppHeaderSlot]", inputs: ["yuvAppHeaderSlot"] }, { kind: "ngmodule", type: YuvMasterDetailsModule }, { kind: "ngmodule", type: YuvOverflowMenuModule }, { kind: "component", type: i6$1.OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems", "vertical"] }, { kind: "component", type: BpmTableComponent, selector: "ymbpm-table", inputs: ["columns", "dataSource", "enableFilters", "pagination", "selectedRow", "busy"], outputs: ["filtersChange", "pageChange", "rowSelected"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: ProcessDefinitionDetailsComponent, selector: "ymbpm-process-definition-details", inputs: ["processDefinitionId"] }, { kind: "ngmodule", type: YmtLayoutModule }, { kind: "component", type: i6.MasterDetailsLayoutComponent, selector: "ymt-master-details-layout", inputs: ["layoutSettingsID", "options", "direction", "gutterSize", "detailsActive"], outputs: ["detailsActiveChange"] }, { kind: "directive", type: i6.YmtLayoutPaneDirective, selector: "[ymtLayoutPane]", inputs: ["role", "topBarActions"] }, { kind: "ngmodule", type: YmtPanesModule }, { kind: "component", type: i7.YmtPaneHeaderComponent, selector: "ymt-pane-header", inputs: ["title", "icon", "subtitle", "actions", "badges"] }, { kind: "component", type: i7.YmtPaneBodyComponent, selector: "ymt-pane-body" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1836
1841
|
}
|
|
1837
1842
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvProcessDefinitionsPageComponent, decorators: [{
|
|
1838
1843
|
type: Component,
|
|
@@ -2172,7 +2177,7 @@ class YuvProcessesPageComponent {
|
|
|
2172
2177
|
}
|
|
2173
2178
|
}
|
|
2174
2179
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvProcessesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2175
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvProcessesPageComponent, isStandalone: true, selector: "ymbpm-processes-page", viewQueries: [{ propertyName: "processDetailsComponent", first: true, predicate: ProcessDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }, { propertyName: "statusTemplate", first: true, predicate: ["statusTemplate"], descendants: true, static: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedProcess = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedProcess ? 'timeline' : undefined\" [title]=\"selectedProcess ? (selectedProcess.name || '<unnamed>') : ''\" [subtitle]=\"selectedProcess ? selectedProcess.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedProcess) {\n <ymbpm-process-details [processInstanceId]=\"selectedProcess?.id\"></ymbpm-process-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-process>\n @if (process.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ProcessStatus.COMPLETED.label | translate}}</span>\n } @else if (process.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$
|
|
2180
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvProcessesPageComponent, isStandalone: true, selector: "ymbpm-processes-page", viewQueries: [{ propertyName: "processDetailsComponent", first: true, predicate: ProcessDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }, { propertyName: "statusTemplate", first: true, predicate: ["statusTemplate"], descendants: true, static: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedProcess = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedProcess ? 'timeline' : undefined\" [title]=\"selectedProcess ? (selectedProcess.name || '<unnamed>') : ''\" [subtitle]=\"selectedProcess ? selectedProcess.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedProcess) {\n <ymbpm-process-details [processInstanceId]=\"selectedProcess?.id\"></ymbpm-process-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-process>\n @if (process.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ProcessStatus.COMPLETED.label | translate}}</span>\n } @else if (process.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$2.YuvAppHeaderSlotDirective, selector: "ng-template[yuvAppHeaderSlot]", inputs: ["yuvAppHeaderSlot"] }, { kind: "ngmodule", type: YuvMasterDetailsModule }, { kind: "ngmodule", type: YuvOverflowMenuModule }, { kind: "component", type: BpmTableComponent, selector: "ymbpm-table", inputs: ["columns", "dataSource", "enableFilters", "pagination", "selectedRow", "busy"], outputs: ["filtersChange", "pageChange", "rowSelected"] }, { kind: "component", type: ProcessDetailsComponent, selector: "ymbpm-process-details", inputs: ["processInstanceId"] }, { kind: "ngmodule", type: YmtLayoutModule }, { kind: "component", type: i6.MasterDetailsLayoutComponent, selector: "ymt-master-details-layout", inputs: ["layoutSettingsID", "options", "direction", "gutterSize", "detailsActive"], outputs: ["detailsActiveChange"] }, { kind: "directive", type: i6.YmtLayoutPaneDirective, selector: "[ymtLayoutPane]", inputs: ["role", "topBarActions"] }, { kind: "ngmodule", type: YmtPanesModule }, { kind: "component", type: i7.YmtPaneHeaderComponent, selector: "ymt-pane-header", inputs: ["title", "icon", "subtitle", "actions", "badges"] }, { kind: "component", type: i7.YmtPaneBodyComponent, selector: "ymt-pane-body" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2176
2181
|
}
|
|
2177
2182
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvProcessesPageComponent, decorators: [{
|
|
2178
2183
|
type: Component,
|
|
@@ -2367,6 +2372,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
2367
2372
|
], standalone: true, template: "<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.assign.label' | translate\">\n <main >\n <mat-label>{{ 'yuv.app.bpm-management.task.actions.assign.assignee.label' | translate }}</mat-label>\n <yuv-organization [formControl]=\"userControl\" [excludeMe]='false' />\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\" [disabled]=\"this.userControl.touched && this.userControl.dirty\">\n {{ 'yuv.app.bpm-management.task.actions.assign.confirm' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host{display:contents}:host main{padding:var(--ymt-spacing-m)}:host yuv-organization{border:var(--ymt-outline-width) solid var(--ymt-outline);border-radius:var(--ymt-corner-s);padding:var(--ymt-spacing-xs)}\n"] }]
|
|
2368
2373
|
}] });
|
|
2369
2374
|
|
|
2375
|
+
class TaskCandidatesOverlayComponent {
|
|
2376
|
+
#dialogRef = inject((MatDialogRef));
|
|
2377
|
+
data = inject(MAT_DIALOG_DATA);
|
|
2378
|
+
usersControl = new FormControl(this.data.currentUsers?.length ? this.data.currentUsers : null);
|
|
2379
|
+
rolesControl = new FormControl(this.data.currentRoles?.length ? this.data.currentRoles : null);
|
|
2380
|
+
close() {
|
|
2381
|
+
this.#dialogRef.close();
|
|
2382
|
+
}
|
|
2383
|
+
confirm() {
|
|
2384
|
+
const usersValue = this.usersControl.value;
|
|
2385
|
+
const rolesValue = this.rolesControl.value;
|
|
2386
|
+
const result = {
|
|
2387
|
+
users: Array.isArray(usersValue) ? usersValue.filter(Boolean) : usersValue ? [usersValue] : [],
|
|
2388
|
+
roles: Array.isArray(rolesValue) ? rolesValue.filter(Boolean) : rolesValue ? [rolesValue] : []
|
|
2389
|
+
};
|
|
2390
|
+
this.#dialogRef.close(result);
|
|
2391
|
+
}
|
|
2392
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TaskCandidatesOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2393
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: TaskCandidatesOverlayComponent, isStandalone: true, selector: "ymbpm-task-candidates-overlay", ngImport: i0, template: "<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.editCandidates.label' | translate\">\n <main>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}</label>\n <yuv-organization [formControl]=\"usersControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[user]']\" />\n </div>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}</label>\n <yuv-organization [formControl]=\"rolesControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[role]']\" />\n </div>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.cancel.label' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.confirm.label' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host{display:contents}:host main{padding:var(--ymt-spacing-m);display:flex;flex-direction:column;gap:var(--ymt-spacing-m)}:host .field-group{display:flex;flex-direction:column;gap:var(--ymt-spacing-xs)}:host .field-label{font-family:var(--ymt-font-body-subtle-font);font-size:var(--ymt-font-body-subtle-size);font-weight:var(--ymt-font-body-subtle-weight);color:var(--ymt-on-surface-type-subtle)}:host yuv-organization{border:var(--ymt-outline-width) solid var(--ymt-outline);border-radius:var(--ymt-corner-s);padding:var(--ymt-spacing-xs);min-width:0;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: OrganizationComponent, selector: "yuv-organization", inputs: ["situation", "multiselect", "classifications", "readonly", "excludeMe", "withMetadata"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitle", "headertitel"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2394
|
+
}
|
|
2395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TaskCandidatesOverlayComponent, decorators: [{
|
|
2396
|
+
type: Component,
|
|
2397
|
+
args: [{ selector: 'ymbpm-task-candidates-overlay', standalone: true, imports: [
|
|
2398
|
+
CommonModule,
|
|
2399
|
+
ReactiveFormsModule,
|
|
2400
|
+
MatDialogModule,
|
|
2401
|
+
MatButtonModule,
|
|
2402
|
+
TranslatePipe,
|
|
2403
|
+
OrganizationComponent,
|
|
2404
|
+
DialogComponent,
|
|
2405
|
+
YmtButtonDirective
|
|
2406
|
+
], template: "<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.editCandidates.label' | translate\">\n <main>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}</label>\n <yuv-organization [formControl]=\"usersControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[user]']\" />\n </div>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}</label>\n <yuv-organization [formControl]=\"rolesControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[role]']\" />\n </div>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.cancel.label' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.confirm.label' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host{display:contents}:host main{padding:var(--ymt-spacing-m);display:flex;flex-direction:column;gap:var(--ymt-spacing-m)}:host .field-group{display:flex;flex-direction:column;gap:var(--ymt-spacing-xs)}:host .field-label{font-family:var(--ymt-font-body-subtle-font);font-size:var(--ymt-font-body-subtle-size);font-weight:var(--ymt-font-body-subtle-weight);color:var(--ymt-on-surface-type-subtle)}:host yuv-organization{border:var(--ymt-outline-width) solid var(--ymt-outline);border-radius:var(--ymt-corner-s);padding:var(--ymt-spacing-xs);min-width:0;overflow:hidden}\n"] }]
|
|
2407
|
+
}] });
|
|
2408
|
+
|
|
2370
2409
|
class YuvTasksPageComponent {
|
|
2371
2410
|
layoutSettingsID = APP_ID + '#root.layout.settings';
|
|
2372
2411
|
#logger = inject(Logger);
|
|
@@ -2518,24 +2557,33 @@ class YuvTasksPageComponent {
|
|
|
2518
2557
|
}
|
|
2519
2558
|
}
|
|
2520
2559
|
#updateActions(obj) {
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2560
|
+
if (!obj) {
|
|
2561
|
+
this.actions = [];
|
|
2562
|
+
return;
|
|
2563
|
+
}
|
|
2564
|
+
this.actions = [
|
|
2565
|
+
{
|
|
2566
|
+
id: 'yuv.app.bpm-management.task.actions.assign',
|
|
2567
|
+
icon: APP_ICONS.assign,
|
|
2568
|
+
label: this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.label'),
|
|
2569
|
+
disabled: obj.assignee != null || obj.endTime != null,
|
|
2570
|
+
callback: () => this.assign(),
|
|
2571
|
+
},
|
|
2572
|
+
{
|
|
2573
|
+
id: 'yuv.app.bpm-management.task.actions.unassign',
|
|
2574
|
+
icon: APP_ICONS.unassign,
|
|
2575
|
+
label: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),
|
|
2576
|
+
disabled: obj.assignee == null || obj.endTime != null,
|
|
2577
|
+
callback: () => this.unassign(),
|
|
2578
|
+
},
|
|
2579
|
+
{
|
|
2580
|
+
id: 'yuv.app.bpm-management.task.actions.editCandidates',
|
|
2581
|
+
icon: 'manage_accounts',
|
|
2582
|
+
label: this.#translateService.instant('yuv.app.bpm-management.task.actions.editCandidates.label'),
|
|
2583
|
+
disabled: obj.endTime != null,
|
|
2584
|
+
callback: () => this.editCandidates(),
|
|
2585
|
+
}
|
|
2586
|
+
];
|
|
2539
2587
|
}
|
|
2540
2588
|
unassign() {
|
|
2541
2589
|
const task = this.selection().selected.at(0);
|
|
@@ -2593,8 +2641,33 @@ class YuvTasksPageComponent {
|
|
|
2593
2641
|
}
|
|
2594
2642
|
});
|
|
2595
2643
|
}
|
|
2644
|
+
editCandidates() {
|
|
2645
|
+
const task = this.selection().selected.at(0);
|
|
2646
|
+
if (!task)
|
|
2647
|
+
return;
|
|
2648
|
+
const detailTask = this.taskDetailsComponent?.task();
|
|
2649
|
+
const currentUsers = detailTask?.identityLinks?.candidates?.users ?? [];
|
|
2650
|
+
const currentRoles = detailTask?.identityLinks?.candidates?.roles ?? [];
|
|
2651
|
+
this.#dialog.open(TaskCandidatesOverlayComponent, {
|
|
2652
|
+
width: '600px',
|
|
2653
|
+
maxWidth: '95vw',
|
|
2654
|
+
data: { currentUsers: [...currentUsers], currentRoles: [...currentRoles] }
|
|
2655
|
+
}).afterClosed().subscribe((result) => {
|
|
2656
|
+
if (result === undefined)
|
|
2657
|
+
return;
|
|
2658
|
+
this.#bpmAdminSerice.setTaskCandidates(task.id, result).subscribe({
|
|
2659
|
+
next: () => {
|
|
2660
|
+
this.#notificationService.success(this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.success'));
|
|
2661
|
+
this.taskDetailsComponent?.loadTaskDetails();
|
|
2662
|
+
},
|
|
2663
|
+
error: () => {
|
|
2664
|
+
this.#notificationService.error(this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.error'));
|
|
2665
|
+
}
|
|
2666
|
+
});
|
|
2667
|
+
});
|
|
2668
|
+
}
|
|
2596
2669
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvTasksPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2597
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvTasksPageComponent, isStandalone: true, selector: "ymbpm-tasks-page", viewQueries: [{ propertyName: "taskDetailsComponent", first: true, predicate: TaskDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }, { propertyName: "statusTemplate", first: true, predicate: ["statusTemplate"], descendants: true, static: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\"\n [busy]=\"busy()\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n \n <ng-template ymtLayoutPane role=\"details\">\n @let selectedTask = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedTask ? 'task' : undefined\" [title]=\"selectedTask ? (selectedTask.name || '<unnamed>') : ''\" [subtitle]=\"selectedTask ? selectedTask.id : ''\" [actions]=\"listActions\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedTask) {\n <ymbpm-task-details [taskId]=\"selectedTask?.id\"></ymbpm-task-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-task>\n @if (task.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{TaskStatus.COMPLETED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{TaskStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$
|
|
2670
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: YuvTasksPageComponent, isStandalone: true, selector: "ymbpm-tasks-page", viewQueries: [{ propertyName: "taskDetailsComponent", first: true, predicate: TaskDetailsComponent, descendants: true }, { propertyName: "bpmTableComponent", first: true, predicate: BpmTableComponent, descendants: true }, { propertyName: "statusTemplate", first: true, predicate: ["statusTemplate"], descendants: true, static: true }], ngImport: i0, template: "<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\"\n [busy]=\"busy()\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n \n <ng-template ymtLayoutPane role=\"details\">\n @let selectedTask = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedTask ? 'task' : undefined\" [title]=\"selectedTask ? (selectedTask.name || '<unnamed>') : ''\" [subtitle]=\"selectedTask ? selectedTask.id : ''\" [actions]=\"listActions\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedTask) {\n <ymbpm-task-details [taskId]=\"selectedTask?.id\"></ymbpm-task-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-task>\n @if (task.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{TaskStatus.COMPLETED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{TaskStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>", styles: [":host{--mat-table-row-item-outline-color: var(--ymt-outline-variant);height:100%;overflow:hidden;display:flex;flex-flow:column}:host ymt-master-details-layout{height:100%;padding:1rem}:host ymt-master-details-layout .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:auto}:host ymt-master-details-layout .detailsPaneContainer .no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}:host ymt-master-details-layout .detailsPaneContainer .no-selection mat-icon{font-size:48px;width:48px;height:48px;margin-bottom:var(--ymt-spacing-m);opacity:.5}:host ymt-master-details-layout .detailsPaneContainer .no-selection p{font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i5$2.YuvAppHeaderSlotDirective, selector: "ng-template[yuvAppHeaderSlot]", inputs: ["yuvAppHeaderSlot"] }, { kind: "ngmodule", type: YuvMasterDetailsModule }, { kind: "ngmodule", type: YuvOverflowMenuModule }, { kind: "component", type: i6$1.OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems", "vertical"] }, { kind: "component", type: BpmTableComponent, selector: "ymbpm-table", inputs: ["columns", "dataSource", "enableFilters", "pagination", "selectedRow", "busy"], outputs: ["filtersChange", "pageChange", "rowSelected"] }, { kind: "component", type: TaskDetailsComponent, selector: "ymbpm-task-details", inputs: ["taskId"] }, { kind: "ngmodule", type: YmtLayoutModule }, { kind: "component", type: i6.MasterDetailsLayoutComponent, selector: "ymt-master-details-layout", inputs: ["layoutSettingsID", "options", "direction", "gutterSize", "detailsActive"], outputs: ["detailsActiveChange"] }, { kind: "directive", type: i6.YmtLayoutPaneDirective, selector: "[ymtLayoutPane]", inputs: ["role", "topBarActions"] }, { kind: "ngmodule", type: YmtPanesModule }, { kind: "component", type: i7.YmtPaneHeaderComponent, selector: "ymt-pane-header", inputs: ["title", "icon", "subtitle", "actions", "badges"] }, { kind: "component", type: i7.YmtPaneBodyComponent, selector: "ymt-pane-body" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2598
2671
|
}
|
|
2599
2672
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: YuvTasksPageComponent, decorators: [{
|
|
2600
2673
|
type: Component,
|