@yuuvis/app-inbox 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.
- package/extensions/lib/actions/start-process/start-adhoc/start-adhoc.component.d.ts +7 -2
- package/extensions/lib/actions/start-process/start-form/start-form.component.d.ts +3 -0
- package/fesm2022/yuuvis-app-inbox-extensions.mjs +18 -10
- package/fesm2022/yuuvis-app-inbox-extensions.mjs.map +1 -1
- package/fesm2022/yuuvis-app-inbox-shared.mjs +1 -1
- package/fesm2022/yuuvis-app-inbox-shared.mjs.map +1 -1
- package/fesm2022/yuuvis-app-inbox.mjs +274 -19
- package/fesm2022/yuuvis-app-inbox.mjs.map +1 -1
- package/lib/app-inbox.service.d.ts +5 -0
- package/lib/assets/i18n/de.json +20 -1
- package/lib/assets/i18n/en.json +20 -1
- package/lib/components/task/outcome-dialog/outcome-dialog.component.d.ts +25 -0
- package/lib/components/task/task-history/activity-list/activity-list.component.d.ts +38 -0
- package/lib/components/task/task-history/activity-list/activity-list.interface.d.ts +18 -0
- package/lib/components/task/task-history/task-history.component.d.ts +9 -0
- package/lib/components/task/task-history/task-history.interface.d.ts +23 -0
- package/lib/components/task/task.component.d.ts +9 -2
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
|
-
import { DmsObject } from '@yuuvis/client-core';
|
|
2
|
+
import { DmsObject, SystemService } from '@yuuvis/client-core';
|
|
3
3
|
import { ActionContext } from '@yuuvis/client-framework/actions';
|
|
4
4
|
import { SequenceItem } from '@yuuvis/client-framework/sequence-list';
|
|
5
|
+
import { ProcessDefinition } from '../start-process.component';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
interface AppTaskUserSettings {
|
|
7
8
|
templates: AdhocWorkflowDataItem[];
|
|
@@ -14,6 +15,7 @@ interface AdhocWorkflowDataItem {
|
|
|
14
15
|
}
|
|
15
16
|
export declare class StartAdhocComponent {
|
|
16
17
|
#private;
|
|
18
|
+
readonly system: SystemService;
|
|
17
19
|
private translate;
|
|
18
20
|
NEW_TEMPLATE_ID: string;
|
|
19
21
|
busy: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -21,7 +23,9 @@ export declare class StartAdhocComponent {
|
|
|
21
23
|
error: import("@angular/core").WritableSignal<string | undefined>;
|
|
22
24
|
actionContext: import("@angular/core").InputSignal<ActionContext | undefined>;
|
|
23
25
|
items: import("@angular/core").InputSignal<DmsObject[]>;
|
|
26
|
+
selectedProcess: import("@angular/core").InputSignal<ProcessDefinition | null | undefined>;
|
|
24
27
|
finished: import("@angular/core").OutputEmitterRef<void>;
|
|
28
|
+
onReset: import("@angular/core").OutputEmitterRef<void>;
|
|
25
29
|
form: FormGroup;
|
|
26
30
|
storedData: AppTaskUserSettings;
|
|
27
31
|
templateOptions: {
|
|
@@ -33,8 +37,9 @@ export declare class StartAdhocComponent {
|
|
|
33
37
|
constructor();
|
|
34
38
|
startAdhocFlow(): void;
|
|
35
39
|
saveTemplate(): void;
|
|
40
|
+
resetSelectedProcess(): void;
|
|
36
41
|
deleteTemplate(): void;
|
|
37
42
|
static ɵfac: i0.ɵɵFactoryDeclaration<StartAdhocComponent, never>;
|
|
38
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<StartAdhocComponent, "ymi-start-adhoc", never, { "actionContext": { "alias": "actionContext"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "finished": "finished"; }, never, never, true, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StartAdhocComponent, "ymi-start-adhoc", never, { "actionContext": { "alias": "actionContext"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "selectedProcess": { "alias": "selectedProcess"; "required": false; "isSignal": true; }; }, { "finished": "finished"; "onReset": "onReset"; }, never, never, true, never>;
|
|
39
44
|
}
|
|
40
45
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
1
2
|
import { FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions } from "@yuuvis/client-framework/object-form";
|
|
2
3
|
import { DmsObject, SystemService, TranslateService } from '@yuuvis/client-core';
|
|
3
4
|
import { ProcessDefinition } from '../start-process.component';
|
|
@@ -12,10 +13,12 @@ export declare class StartFormComponent {
|
|
|
12
13
|
startFormOptions: import("@angular/core").WritableSignal<ObjectFormOptions | undefined>;
|
|
13
14
|
disableControls: import("@angular/core").WritableSignal<boolean>;
|
|
14
15
|
startForm: import("@angular/core").Signal<ObjectFormComponent | undefined>;
|
|
16
|
+
elRef: ElementRef<any>;
|
|
15
17
|
finished: import("@angular/core").OutputEmitterRef<void>;
|
|
16
18
|
onReset: import("@angular/core").OutputEmitterRef<void>;
|
|
17
19
|
selectedProcessEffect: import("@angular/core").EffectRef;
|
|
18
20
|
onFormStatusChanged(evt: FormStatusChangedEvent): void;
|
|
21
|
+
onFormReady(): void;
|
|
19
22
|
startProcess(): void;
|
|
20
23
|
resetSelectedProcess(): void;
|
|
21
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<StartFormComponent, never>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, signal, input, viewChild, output, effect, untracked, Component, Injectable } from '@angular/core';
|
|
2
|
+
import { inject, signal, input, viewChild, ElementRef, output, effect, untracked, Component, Injectable } from '@angular/core';
|
|
3
3
|
import { AbstractContextAction, SelectionRange, ActionsService } from '@yuuvis/client-framework/actions';
|
|
4
4
|
import { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
5
5
|
import { TranslateService as TranslateService$1 } from '@ngx-translate/core';
|
|
@@ -19,7 +19,6 @@ import { YmtButtonDirective } from '@yuuvis/material';
|
|
|
19
19
|
import { ObjectFormComponent } from '@yuuvis/client-framework/object-form';
|
|
20
20
|
import { AppInboxUtils, APP_INBOX_ID, APP_INBOX_PROCESSES, TASK_VAR_APP_ID } from '@yuuvis/app-inbox/shared';
|
|
21
21
|
import { AppInboxService } from '@yuuvis/app-inbox';
|
|
22
|
-
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
23
22
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
24
23
|
import * as i5 from '@angular/forms';
|
|
25
24
|
import { FormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
@@ -44,6 +43,7 @@ class StartFormComponent {
|
|
|
44
43
|
startFormOptions = signal(undefined);
|
|
45
44
|
disableControls = signal(false);
|
|
46
45
|
startForm = viewChild(ObjectFormComponent);
|
|
46
|
+
elRef = inject((ElementRef));
|
|
47
47
|
finished = output();
|
|
48
48
|
onReset = output();
|
|
49
49
|
selectedProcessEffect = effect(() => {
|
|
@@ -53,7 +53,7 @@ class StartFormComponent {
|
|
|
53
53
|
this.#inboxService.getStartForm(p?.id).subscribe({
|
|
54
54
|
next: (res) => {
|
|
55
55
|
this.busy.set(false);
|
|
56
|
-
const formModel = AppInboxUtils.fixFormModel(res);
|
|
56
|
+
const formModel = AppInboxUtils.fixFormModel(res.model);
|
|
57
57
|
this.startFormOptions.set(formModel
|
|
58
58
|
? {
|
|
59
59
|
formModel,
|
|
@@ -72,6 +72,9 @@ class StartFormComponent {
|
|
|
72
72
|
onFormStatusChanged(evt) {
|
|
73
73
|
this.disableControls.set(evt.invalid);
|
|
74
74
|
}
|
|
75
|
+
onFormReady() {
|
|
76
|
+
this.elRef?.nativeElement.querySelector('textarea, input')?.focus();
|
|
77
|
+
}
|
|
75
78
|
startProcess() {
|
|
76
79
|
const process = this.selectedProcess();
|
|
77
80
|
const of = this.startForm();
|
|
@@ -107,7 +110,7 @@ class StartFormComponent {
|
|
|
107
110
|
this.onReset.emit();
|
|
108
111
|
}
|
|
109
112
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StartFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.14", type: StartFormComponent, isStandalone: true, selector: "ymi-start-form", inputs: { selectedProcess: { classPropertyName: "selectedProcess", publicName: "selectedProcess", isSignal: true, isRequired: false, transformFunction: null }, object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { finished: "finished", onReset: "onReset" }, viewQueries: [{ propertyName: "startForm", first: true, predicate: ObjectFormComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<main>\n <div class=\"header\">\n <button\n mat-icon-button\n [disabled]=\"busy()\"\n (click)=\"resetSelectedProcess()\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </div>\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <div class=\"form\">\n <yuv-object-form\n #startForm\n [formOptions]=\"startFormOptions()\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n</main>\n", styles: ["main{flex:1;overflow:hidden;min-height:200px}main mat-progress-bar{position:absolute;z-index:1;opacity:0}main mat-progress-bar.busy{opacity:1}main .header{flex:0 0 auto;display:flex;align-items:center;padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant)}main .header h3{margin:0}main .form{padding:var(--ymt-spacing-xs);flex:1;overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ObjectFormComponent, selector: "yuv-object-form", inputs: ["formOptions", "inert", "readonly", "elementExtensions", "isInnerTableForm"], outputs: ["statusChanged", "onFormReady"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.14", type: StartFormComponent, isStandalone: true, selector: "ymi-start-form", inputs: { selectedProcess: { classPropertyName: "selectedProcess", publicName: "selectedProcess", isSignal: true, isRequired: false, transformFunction: null }, object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { finished: "finished", onReset: "onReset" }, viewQueries: [{ propertyName: "startForm", first: true, predicate: ObjectFormComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<main>\n <div class=\"header\">\n <button\n mat-icon-button\n [disabled]=\"busy()\"\n (click)=\"resetSelectedProcess()\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </div>\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <div class=\"form\">\n <yuv-object-form\n #startForm\n #elRef\n [formOptions]=\"startFormOptions()\"\n (onFormReady)=\"onFormReady()\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n</main>\n", styles: ["main{flex:1;overflow:hidden;min-height:200px}main mat-progress-bar{position:absolute;z-index:1;opacity:0}main mat-progress-bar.busy{opacity:1}main .header{flex:0 0 auto;display:flex;align-items:center;padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant)}main .header h3{margin:0}main .form{padding:var(--ymt-spacing-xs);flex:1;overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ObjectFormComponent, selector: "yuv-object-form", inputs: ["formOptions", "inert", "readonly", "elementExtensions", "isInnerTableForm"], outputs: ["statusChanged", "onFormReady"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
111
114
|
}
|
|
112
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StartFormComponent, decorators: [{
|
|
113
116
|
type: Component,
|
|
@@ -118,7 +121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
118
121
|
MatIconButton,
|
|
119
122
|
MatProgressBar,
|
|
120
123
|
MatIconModule
|
|
121
|
-
], template: "<main>\n <div class=\"header\">\n <button\n mat-icon-button\n [disabled]=\"busy()\"\n (click)=\"resetSelectedProcess()\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </div>\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <div class=\"form\">\n <yuv-object-form\n #startForm\n [formOptions]=\"startFormOptions()\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n</main>\n", styles: ["main{flex:1;overflow:hidden;min-height:200px}main mat-progress-bar{position:absolute;z-index:1;opacity:0}main mat-progress-bar.busy{opacity:1}main .header{flex:0 0 auto;display:flex;align-items:center;padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant)}main .header h3{margin:0}main .form{padding:var(--ymt-spacing-xs);flex:1;overflow-y:auto}\n"] }]
|
|
124
|
+
], template: "<main>\n <div class=\"header\">\n <button\n mat-icon-button\n [disabled]=\"busy()\"\n (click)=\"resetSelectedProcess()\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </div>\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <div class=\"form\">\n <yuv-object-form\n #startForm\n #elRef\n [formOptions]=\"startFormOptions()\"\n (onFormReady)=\"onFormReady()\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n</main>\n", styles: ["main{flex:1;overflow:hidden;min-height:200px}main mat-progress-bar{position:absolute;z-index:1;opacity:0}main mat-progress-bar.busy{opacity:1}main .header{flex:0 0 auto;display:flex;align-items:center;padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant)}main .header h3{margin:0}main .form{padding:var(--ymt-spacing-xs);flex:1;overflow-y:auto}\n"] }]
|
|
122
125
|
}] });
|
|
123
126
|
|
|
124
127
|
class StartAdhocComponent {
|
|
@@ -126,6 +129,7 @@ class StartAdhocComponent {
|
|
|
126
129
|
#fb = inject(FormBuilder);
|
|
127
130
|
#inboxService = inject(AppInboxService);
|
|
128
131
|
#userStorage = inject(UserStorageService);
|
|
132
|
+
system = inject(SystemService);
|
|
129
133
|
#pendingChanges = inject(PendingChangesService);
|
|
130
134
|
translate = inject(TranslateService);
|
|
131
135
|
NEW_TEMPLATE_ID = 'new';
|
|
@@ -134,7 +138,9 @@ class StartAdhocComponent {
|
|
|
134
138
|
error = signal(undefined);
|
|
135
139
|
actionContext = input(undefined);
|
|
136
140
|
items = input.required();
|
|
141
|
+
selectedProcess = input();
|
|
137
142
|
finished = output();
|
|
143
|
+
onReset = output();
|
|
138
144
|
form = this.#fb.group({
|
|
139
145
|
id: [this.NEW_TEMPLATE_ID],
|
|
140
146
|
title: ['', Validators.required],
|
|
@@ -301,6 +307,9 @@ class StartAdhocComponent {
|
|
|
301
307
|
}
|
|
302
308
|
});
|
|
303
309
|
}
|
|
310
|
+
resetSelectedProcess() {
|
|
311
|
+
this.onReset.emit();
|
|
312
|
+
}
|
|
304
313
|
deleteTemplate() {
|
|
305
314
|
const id = this.form.get('id')?.value;
|
|
306
315
|
if (id === this.NEW_TEMPLATE_ID)
|
|
@@ -319,13 +328,12 @@ class StartAdhocComponent {
|
|
|
319
328
|
});
|
|
320
329
|
}
|
|
321
330
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StartAdhocComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
322
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: StartAdhocComponent, isStandalone: true, selector: "ymi-start-adhoc", inputs: { actionContext: { classPropertyName: "actionContext", publicName: "actionContext", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { finished: "finished" }, host: { properties: { "class.busy": "busy()" } }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n<form [formGroup]=\"form\"
|
|
331
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: StartAdhocComponent, isStandalone: true, selector: "ymi-start-adhoc", inputs: { actionContext: { classPropertyName: "actionContext", publicName: "actionContext", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, selectedProcess: { classPropertyName: "selectedProcess", publicName: "selectedProcess", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { finished: "finished", onReset: "onReset" }, host: { properties: { "class.busy": "busy()" } }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n<form [formGroup]=\"form\">\n <header class=\"header\">\n <button mat-icon-button [disabled]=\"busy()\" (click)=\"resetSelectedProcess()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </header>\n <main class=\"main\">\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.description' | translate }}</p>\n <div class=\"templateSelect\">\n <mat-select formControlName=\"id\" panelWidth=\"null\">\n @for (o of templateOptions; track $index) {\n <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n }\n </mat-select>\n @if (!form.pristine) {\n <button\n mat-icon-button\n type=\"button\"\n [ngClass]=\"{ nameNotUnique: form.valid && nameNotUnique() }\"\n [matTooltip]=\"\n nameNotUnique()\n ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save.not-unique.tooltip' | translate)\n : (form.value.id === NEW_TEMPLATE_ID ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save' | translate)\n : ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.save' | translate))\n \"\n [disabled]=\"form.invalid || nameNotUnique()\"\n class=\"icon save ymt-icon-button--size-s\"\n (click)=\"saveTemplate()\"\n >\n @if (form.value.id === NEW_TEMPLATE_ID) {\n <mat-icon>add</mat-icon>\n } @else {\n <mat-icon>save</mat-icon>\n }\n </button>\n }\n\n @if (form.value.id !== NEW_TEMPLATE_ID) {\n <button\n mat-icon-button\n class=\"icon delete ymt-icon-button--size-s\"\n type=\"button\"\n (click)=\"deleteTemplate()\"\n [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.delete' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n <div class=\"adhoc-workflow-container\">\n <mat-form-field>\n <mat-label>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.title' | translate }}</mat-label>\n <yuv-string [autofocus]=\"true\" [required]=\"true\" formControlName=\"title\"> </yuv-string>\n </mat-form-field>\n\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate }}</p>\n\n <yuv-sequence-list formControlName=\"tasklist\" [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate\"></yuv-sequence-list>\n\n <mat-checkbox formControlName=\"notifyInitiator\">\n {{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.notifyInitiator' | translate }}\n </mat-checkbox>\n\n @if (error()) {\n <p class=\"error\">{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.error.message' | translate }}</p>\n }\n </div>\n </main>\n</form>\n", styles: [":host{min-width:200px}:host .progress-bar{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0}:host:not(.busy) .progress-bar{opacity:0}:host form{min-width:300px}:host form header{flex:0 0 auto;display:flex;align-items:center;gap:var(--ymt-spacing-m);padding:var(--ymt-spacing-xs);border-block-end:1px solid var(--ymt-outline-variant)}:host form header h3{margin:0}:host form main.main{display:flex;flex-flow:column;height:100%;padding:var(--ymt-spacing-xs);padding-top:var(--ymt-spacing-xs)}:host form main.main .templateSelect{display:grid;grid-template-columns:1fr auto auto;grid-template-areas:\"select save delete\";gap:var(--ymt-spacing-xs);padding:var(--ymt-spacing-2xs);border:1px solid var(--ymt-outline-variant);border-radius:var(--ymt-corner-s);background-color:var(--ymt-surface);align-items:center}:host form main.main .templateSelect mat-select{grid-area:select;justify-self:start}:host form main.main .templateSelect button.save{grid-area:save;pointer-events:visible}:host form main.main .templateSelect button.delete{grid-area:delete;--icon-size: 18px}:host form main.main .templateSelect button:disabled:not(.nameNotUnique){opacity:0}:host form main.main .adhoc-workflow-container{flex:1;margin-block-start:var(--ymt-spacing-m);display:flex;flex-flow:column;max-height:25rem;overflow:hidden}:host form main.main .adhoc-workflow-container .error{background-color:var(--ymt-danger-container);color:var(--ymt-on-danger-container);padding:var(--ymt-spacing-xs);border-radius:var(--ymt-spacing-xs)}:host form main.main .adhoc-workflow-container mat-form-field{display:block;margin-top:1.5%}:host form main.main .adhoc-workflow-container yuv-sequence-list{display:block;margin:var(--ymt-spacing-3xl) auto;max-width:60ch;max-height:50%;overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: StringComponent, selector: "yuv-string", inputs: ["multiselect", "rows", "readonly", "autofocus", "classifications", "situation", "regex", "minLength", "maxLength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.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: SequenceListComponent, selector: "yuv-sequence-list", inputs: ["maxLength"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
|
|
323
332
|
}
|
|
324
333
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StartAdhocComponent, decorators: [{
|
|
325
334
|
type: Component,
|
|
326
335
|
args: [{ selector: 'ymi-start-adhoc', standalone: true, imports: [
|
|
327
336
|
CommonModule,
|
|
328
|
-
CdkTrapFocus,
|
|
329
337
|
MatIconModule,
|
|
330
338
|
MatButtonModule,
|
|
331
339
|
MatSelectModule,
|
|
@@ -340,7 +348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
340
348
|
StringComponent
|
|
341
349
|
], host: {
|
|
342
350
|
'[class.busy]': 'busy()'
|
|
343
|
-
}, template: "<mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n<form [formGroup]=\"form\"
|
|
351
|
+
}, template: "<mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n<form [formGroup]=\"form\">\n <header class=\"header\">\n <button mat-icon-button [disabled]=\"busy()\" (click)=\"resetSelectedProcess()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </header>\n <main class=\"main\">\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.description' | translate }}</p>\n <div class=\"templateSelect\">\n <mat-select formControlName=\"id\" panelWidth=\"null\">\n @for (o of templateOptions; track $index) {\n <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n }\n </mat-select>\n @if (!form.pristine) {\n <button\n mat-icon-button\n type=\"button\"\n [ngClass]=\"{ nameNotUnique: form.valid && nameNotUnique() }\"\n [matTooltip]=\"\n nameNotUnique()\n ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save.not-unique.tooltip' | translate)\n : (form.value.id === NEW_TEMPLATE_ID ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save' | translate)\n : ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.save' | translate))\n \"\n [disabled]=\"form.invalid || nameNotUnique()\"\n class=\"icon save ymt-icon-button--size-s\"\n (click)=\"saveTemplate()\"\n >\n @if (form.value.id === NEW_TEMPLATE_ID) {\n <mat-icon>add</mat-icon>\n } @else {\n <mat-icon>save</mat-icon>\n }\n </button>\n }\n\n @if (form.value.id !== NEW_TEMPLATE_ID) {\n <button\n mat-icon-button\n class=\"icon delete ymt-icon-button--size-s\"\n type=\"button\"\n (click)=\"deleteTemplate()\"\n [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.delete' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n <div class=\"adhoc-workflow-container\">\n <mat-form-field>\n <mat-label>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.title' | translate }}</mat-label>\n <yuv-string [autofocus]=\"true\" [required]=\"true\" formControlName=\"title\"> </yuv-string>\n </mat-form-field>\n\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate }}</p>\n\n <yuv-sequence-list formControlName=\"tasklist\" [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate\"></yuv-sequence-list>\n\n <mat-checkbox formControlName=\"notifyInitiator\">\n {{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.notifyInitiator' | translate }}\n </mat-checkbox>\n\n @if (error()) {\n <p class=\"error\">{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.error.message' | translate }}</p>\n }\n </div>\n </main>\n</form>\n", styles: [":host{min-width:200px}:host .progress-bar{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0}:host:not(.busy) .progress-bar{opacity:0}:host form{min-width:300px}:host form header{flex:0 0 auto;display:flex;align-items:center;gap:var(--ymt-spacing-m);padding:var(--ymt-spacing-xs);border-block-end:1px solid var(--ymt-outline-variant)}:host form header h3{margin:0}:host form main.main{display:flex;flex-flow:column;height:100%;padding:var(--ymt-spacing-xs);padding-top:var(--ymt-spacing-xs)}:host form main.main .templateSelect{display:grid;grid-template-columns:1fr auto auto;grid-template-areas:\"select save delete\";gap:var(--ymt-spacing-xs);padding:var(--ymt-spacing-2xs);border:1px solid var(--ymt-outline-variant);border-radius:var(--ymt-corner-s);background-color:var(--ymt-surface);align-items:center}:host form main.main .templateSelect mat-select{grid-area:select;justify-self:start}:host form main.main .templateSelect button.save{grid-area:save;pointer-events:visible}:host form main.main .templateSelect button.delete{grid-area:delete;--icon-size: 18px}:host form main.main .templateSelect button:disabled:not(.nameNotUnique){opacity:0}:host form main.main .adhoc-workflow-container{flex:1;margin-block-start:var(--ymt-spacing-m);display:flex;flex-flow:column;max-height:25rem;overflow:hidden}:host form main.main .adhoc-workflow-container .error{background-color:var(--ymt-danger-container);color:var(--ymt-on-danger-container);padding:var(--ymt-spacing-xs);border-radius:var(--ymt-spacing-xs)}:host form main.main .adhoc-workflow-container mat-form-field{display:block;margin-top:1.5%}:host form main.main .adhoc-workflow-container yuv-sequence-list{display:block;margin:var(--ymt-spacing-3xl) auto;max-width:60ch;max-height:50%;overflow-y:auto}\n"] }]
|
|
344
352
|
}], ctorParameters: () => [] });
|
|
345
353
|
|
|
346
354
|
class StartProcessComponent {
|
|
@@ -458,7 +466,7 @@ class StartProcessComponent {
|
|
|
458
466
|
.subscribe();
|
|
459
467
|
}
|
|
460
468
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StartProcessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
461
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: StartProcessComponent, isStandalone: true, selector: "ymi-start-process", inputs: { object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "startForm", first: true, predicate: StartFormComponent, descendants: true, isSignal: true }, { propertyName: "startAdhoc", first: true, predicate: StartAdhocComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<yuv-dialog\n [headertitel]=\"'io.yuuvis.app.inbox.action.start-process.label' | translate\"\n>\n <main>\n @if (startComponent === 'form') {\n
|
|
469
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: StartProcessComponent, isStandalone: true, selector: "ymi-start-process", inputs: { object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "startForm", first: true, predicate: StartFormComponent, descendants: true, isSignal: true }, { propertyName: "startAdhoc", first: true, predicate: StartAdhocComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<yuv-dialog\n [headertitel]=\"'io.yuuvis.app.inbox.action.start-process.label' | translate\"\n>\n <main>\n\n @let p = selectedProcess();\n @if (startComponent === 'form') {\n <ymi-start-form #startForm [selectedProcess]=\"p\" [object]=\"object()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-form>\n } @else if (startComponent === 'adhoc') {\n @let o = object();\n <ymi-start-adhoc #startAdhoc [selectedProcess]=\"p\" [items]=\"o ? [o] : []\" [actionContext]=\"context()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-adhoc>\n } @else if (processDefinitions().length > 0) {\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <!-- list of all available processes -->\n <yuv-list (itemSelect)=\"itemSelected($event)\" selectOnEnter=\"true\">\n @for (process of processDefinitions(); track process.id){\n <div yuvListItem>\n {{ system.getLocalizedLabel(process.key) || process.key }}\n <span class=\"desc\">{{ system.getLocalizedDescription(process.key) || process.description }}</span>\n </div>\n }\n </yuv-list>\n } @else {\n <p class=\"no-processes\">\n {{ \"io.yuuvis.app.inbox.actions.startProcess.noProcesses\" | translate }}\n </p>\n }\n \n </main>\n <footer>\n <button\n ymtButton=\"secondary\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"busy()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.cancel\" | translate }}\n </button>\n @if (this.startComponent === 'form' || this.startComponent === 'adhoc') {\n <button\n ymtButton=\"primary\"\n [disabled]=\"busy() || startAdhoc()?.form?.invalid || startAdhoc()?.form?.pristine\n || startForm()?.startForm()?.form?.invalid || startForm()?.startForm()?.form?.pristine\"\n (click)=\"start()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.start\" | translate }}\n </button>\n }\n </footer>\n\n</yuv-dialog>\n", styles: [":host{display:flex;flex-flow:column;height:100%}:host main{flex:1;overflow:hidden;height:100%}:host main mat-progress-bar{position:absolute;z-index:1;opacity:0}:host main mat-progress-bar.busy{opacity:1}:host main .header{flex:0 0 auto;display:flex;align-items:center;padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant)}:host main .header h3{margin:0}:host main .form{padding:var(--ymt-spacing-xs);flex:1;overflow-y:auto}:host main .no-processes{display:flex;padding:var(--ymt-spacing-m);font:var(--ymt-font-body);flex-direction:column;justify-content:center;align-items:center}:host [yuvListItem]{--list-item-hover-background: var(--ymt-focus-background);padding:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant);font:var(--ymt-font-title-small);cursor:pointer}:host [yuvListItem] span.desc:not(:empty){display:block;max-width:66ch;line-height:1.7em;font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { 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: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: StartFormComponent, selector: "ymi-start-form", inputs: ["selectedProcess", "object"], outputs: ["finished", "onReset"] }, { kind: "component", type: StartAdhocComponent, selector: "ymi-start-adhoc", inputs: ["actionContext", "items", "selectedProcess"], outputs: ["finished", "onReset"] }] });
|
|
462
470
|
}
|
|
463
471
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StartProcessComponent, decorators: [{
|
|
464
472
|
type: Component,
|
|
@@ -474,7 +482,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
474
482
|
MatProgressBar,
|
|
475
483
|
StartFormComponent,
|
|
476
484
|
StartAdhocComponent,
|
|
477
|
-
], template: "<yuv-dialog\n [headertitel]=\"'io.yuuvis.app.inbox.action.start-process.label' | translate\"\n>\n <main>\n @if (startComponent === 'form') {\n
|
|
485
|
+
], template: "<yuv-dialog\n [headertitel]=\"'io.yuuvis.app.inbox.action.start-process.label' | translate\"\n>\n <main>\n\n @let p = selectedProcess();\n @if (startComponent === 'form') {\n <ymi-start-form #startForm [selectedProcess]=\"p\" [object]=\"object()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-form>\n } @else if (startComponent === 'adhoc') {\n @let o = object();\n <ymi-start-adhoc #startAdhoc [selectedProcess]=\"p\" [items]=\"o ? [o] : []\" [actionContext]=\"context()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-adhoc>\n } @else if (processDefinitions().length > 0) {\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <!-- list of all available processes -->\n <yuv-list (itemSelect)=\"itemSelected($event)\" selectOnEnter=\"true\">\n @for (process of processDefinitions(); track process.id){\n <div yuvListItem>\n {{ system.getLocalizedLabel(process.key) || process.key }}\n <span class=\"desc\">{{ system.getLocalizedDescription(process.key) || process.description }}</span>\n </div>\n }\n </yuv-list>\n } @else {\n <p class=\"no-processes\">\n {{ \"io.yuuvis.app.inbox.actions.startProcess.noProcesses\" | translate }}\n </p>\n }\n \n </main>\n <footer>\n <button\n ymtButton=\"secondary\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"busy()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.cancel\" | translate }}\n </button>\n @if (this.startComponent === 'form' || this.startComponent === 'adhoc') {\n <button\n ymtButton=\"primary\"\n [disabled]=\"busy() || startAdhoc()?.form?.invalid || startAdhoc()?.form?.pristine\n || startForm()?.startForm()?.form?.invalid || startForm()?.startForm()?.form?.pristine\"\n (click)=\"start()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.start\" | translate }}\n </button>\n }\n </footer>\n\n</yuv-dialog>\n", styles: [":host{display:flex;flex-flow:column;height:100%}:host main{flex:1;overflow:hidden;height:100%}:host main mat-progress-bar{position:absolute;z-index:1;opacity:0}:host main mat-progress-bar.busy{opacity:1}:host main .header{flex:0 0 auto;display:flex;align-items:center;padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant)}:host main .header h3{margin:0}:host main .form{padding:var(--ymt-spacing-xs);flex:1;overflow-y:auto}:host main .no-processes{display:flex;padding:var(--ymt-spacing-m);font:var(--ymt-font-body);flex-direction:column;justify-content:center;align-items:center}:host [yuvListItem]{--list-item-hover-background: var(--ymt-focus-background);padding:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant);font:var(--ymt-font-title-small);cursor:pointer}:host [yuvListItem] span.desc:not(:empty){display:block;max-width:66ch;line-height:1.7em;font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle)}\n"] }]
|
|
478
486
|
}] });
|
|
479
487
|
|
|
480
488
|
class StartProcessAction extends AbstractContextAction {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-app-inbox-extensions.mjs","sources":["../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-form/start-form.component.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-form/start-form.component.html","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-adhoc/start-adhoc.component.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-adhoc/start-adhoc.component.html","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-process.component.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-process.component.html","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-process.action.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/services/extensions.service.ts","../../../../projects/yuuvis/app-inbox/extensions/src/yuuvis-app-inbox-extensions.ts"],"sourcesContent":["import {Component, effect, inject, input, output, signal, untracked, viewChild} from '@angular/core';\nimport {FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions} from \"@yuuvis/client-framework/object-form\";\nimport {\n DmsObject,\n NotificationService,\n SystemService,\n TranslateModule,\n TranslateService\n} from '@yuuvis/client-core';\nimport {AppInboxUtils, ProcessCreatePayload, ProcessVariable} from '@yuuvis/app-inbox/shared';\nimport {ProcessDefinition} from '../start-process.component';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatProgressBar} from '@angular/material/progress-bar';\nimport {finalize} from 'rxjs';\nimport {CommonModule} from '@angular/common';\nimport {AppInboxService} from '@yuuvis/app-inbox';\n\n@Component({\n selector: 'ymi-start-form',\n imports: [\n CommonModule,\n ObjectFormComponent,\n TranslateModule,\n MatIconButton,\n MatProgressBar,\n MatIconModule\n ],\n templateUrl: './start-form.component.html',\n styleUrl: './start-form.component.scss'\n})\nexport class StartFormComponent {\n\n #notificationService = inject(NotificationService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\n readonly #inboxService = inject(AppInboxService);\n\n busy = signal<boolean>(false);\n selectedProcess = input<ProcessDefinition | null>();\n object = input<DmsObject | null>();\n startFormOptions = signal<ObjectFormOptions | undefined>(undefined);\n disableControls = signal<boolean>(false);\n\n startForm = viewChild(ObjectFormComponent);\n\n finished = output();\n onReset = output();\n\n selectedProcessEffect = effect(() => {\n const p = this.selectedProcess();\n untracked(() => {\n this.busy.set(true);\n this.#inboxService.getStartForm(p?.id!).subscribe({\n next: (res) => {\n this.busy.set(false);\n const formModel = AppInboxUtils.fixFormModel(res);\n this.startFormOptions.set(\n formModel\n ? {\n formModel,\n data: {},\n }\n : undefined\n );\n },\n error: (err) => {\n this.busy.set(false);\n console.error('Error fetching start form:', err);\n this.startFormOptions.set(undefined);\n },\n });\n });\n });\n\n onFormStatusChanged(evt: FormStatusChangedEvent) {\n this.disableControls.set(evt.invalid);\n }\n\n startProcess() {\n const process = this.selectedProcess();\n const of = this.startForm();\n if (!of || !process) return;\n const formData: Record<string, unknown> = of.getFormData();\n const formElements: Record<string, unknown & { type: string }> =\n of.getFormElements();\n const variables: ProcessVariable[] = Object.keys(formData).map((key) =>\n AppInboxUtils.getProcessVariables(formData[key], formElements[key], key)\n );\n\n const o = this.object();\n const attachments = o?.id ? [{objectId: o.id}] : [];\n\n const subject = variables.find(variable => variable.name === 'title')?.value;\n\n const payload: ProcessCreatePayload = {\n processDefinitionKey: process.key,\n variables,\n name: subject || this.system.getLocalizedLabel(process.name) || process.name,\n attachments,\n };\n\n this.busy.set(true);\n this.#inboxService.startProcess(payload)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res) => {\n this.finished.emit(res);\n this.#notificationService.success(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.success', { processName: payload.name }));\n },\n error: (err) => {\n console.error('Error starting process:', err);\n this.#notificationService.error(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.error', { processName: payload.name }));\n },\n });\n }\n\n resetSelectedProcess() {\n this.onReset.emit();\n }\n}\n","<main>\n <div class=\"header\">\n <button\n mat-icon-button\n [disabled]=\"busy()\"\n (click)=\"resetSelectedProcess()\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </div>\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <div class=\"form\">\n <yuv-object-form\n #startForm\n [formOptions]=\"startFormOptions()\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n</main>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {Component, inject, input, output, signal} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n DmsObject,\n NotificationService,\n PendingChangesService,\n TranslateModule,\n TranslateService,\n UserStorageService,\n Utils\n} from '@yuuvis/client-core';\nimport { ActionContext } from '@yuuvis/client-framework/actions';\nimport { StringComponent } from '@yuuvis/client-framework/forms';\nimport { SequenceItem, SequenceListComponent } from '@yuuvis/client-framework/sequence-list';\nimport { debounceTime, Observable } from 'rxjs';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {APP_INBOX_ID, APP_INBOX_PROCESSES, ProcessCreatePayload, TASK_VAR_APP_ID} from '@yuuvis/app-inbox/shared';\nimport {AppInboxService} from '@yuuvis/app-inbox';\n\ninterface AppTaskUserSettings {\n templates: AdhocWorkflowDataItem[];\n}\ninterface AdhocWorkflowDataItem {\n id: string;\n title: string;\n notifyInitiator?: boolean;\n tasklist: SequenceItem[];\n}\n@Component({\n selector: 'ymi-start-adhoc',\n standalone: true,\n imports: [\n CommonModule,\n CdkTrapFocus,\n MatIconModule,\n MatButtonModule,\n MatSelectModule,\n MatFormFieldModule,\n StringComponent,\n ReactiveFormsModule,\n TranslateModule,\n MatCheckboxModule,\n SequenceListComponent,\n MatTooltipModule,\n MatProgressBar,\n StringComponent\n ],\n templateUrl: './start-adhoc.component.html',\n styleUrl: './start-adhoc.component.scss',\n host: {\n '[class.busy]': 'busy()'\n }\n})\nexport class StartAdhocComponent {\n #notificationService = inject(NotificationService);\n #fb = inject(FormBuilder);\n #inboxService = inject(AppInboxService);\n #userStorage = inject(UserStorageService);\n #pendingChanges = inject(PendingChangesService);\n private translate = inject(TranslateService);\n\n NEW_TEMPLATE_ID = 'new';\n\n busy = signal<boolean>(false);\n nameNotUnique = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n actionContext = input<ActionContext | undefined>(undefined);\n items = input.required<DmsObject[]>();\n\n finished = output();\n\n form: FormGroup = this.#fb.group({\n id: [this.NEW_TEMPLATE_ID],\n title: ['', Validators.required],\n notifyInitiator: [false],\n tasklist: [[], Validators.required]\n });\n\n storedData: AppTaskUserSettings = {\n templates: []\n };\n\n templateOptions: { label: string; value: unknown }[] = [\n {\n value: this.NEW_TEMPLATE_ID,\n label: this.translate.instant('io.yuuvis.app.inbox.templates.none')\n }\n ];\n selectedTemplate = signal<AdhocWorkflowDataItem | undefined>(undefined);\n pendingTaskID = '';\n\n constructor() {\n this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.pendingTaskID) {\n this.pendingTaskID = this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n }\n });\n this.form\n .get('title')\n ?.valueChanges.pipe(takeUntilDestroyed(), debounceTime(500))\n .subscribe(() => this.#checkForUniqueName());\n\n this.form\n .get('id')\n ?.valueChanges.pipe(takeUntilDestroyed())\n .subscribe((value) => {\n this.selectedTemplate.set(this.storedData.templates.find((t) => t.id === value));\n const template = this.selectedTemplate();\n this.form.patchValue(\n template\n ? {\n title: template.title,\n notifyInitiator: template.notifyInitiator,\n tasklist: template.tasklist\n }\n : {\n title: '',\n notifyInitiator: false,\n tasklist: []\n }\n );\n this.form.markAsPristine();\n });\n this.#userStorage.getItem(APP_INBOX_ID).subscribe((data) => {\n if (data) {\n this.storedData = data as AppTaskUserSettings;\n this.#updateTemplateOptions();\n this.#checkForUniqueName();\n }\n });\n }\n\n #checkForUniqueName() {\n const title = this.form.get('title')?.value;\n if (title) {\n const selectedTemplate = this.selectedTemplate();\n const isInList = this.storedData.templates.some((t) => t.title === title);\n this.nameNotUnique.set(\n (!selectedTemplate && isInList) || (!!selectedTemplate && this.storedData.templates.some((t) => t.id !== selectedTemplate.id && t.title === title))\n );\n }\n }\n\n #updateTemplateOptions() {\n this.templateOptions = [\n {\n value: this.NEW_TEMPLATE_ID,\n label: this.translate.instant('io.yuuvis.app.inbox.templates.none')\n },\n ...this.storedData.templates\n .map((t) => ({\n value: t.id,\n label: t.title\n }))\n .sort((a, b) => a.label.localeCompare(b.label, this.translate.currentLang))\n ];\n }\n\n startAdhocFlow() {\n this.busy.set(true);\n const dmsObject: DmsObject = this.items()[0];\n const { title, tasklist, comment, notifyInitiator } = this.form.value;\n this.#startAdhocFlow(dmsObject.id, title, tasklist, comment, notifyInitiator)\n .subscribe({\n next: () => {\n this.finished.emit();\n this.#notificationService.success(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.success', { processName: title }));\n },\n error: (e: any) => {\n this.error.set(e);\n this.#notificationService.error(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.error', { processName: title }));\n }\n })\n .add(() => this.busy.set(false));\n }\n\n #startAdhocFlow(objectID: string, subject: string, tasklist: SequenceItem[], comment?: string, notifyInitiator = false): Observable<any> {\n const variables = [\n {\n name: APP_INBOX_PROCESSES.adhoc.vars.tasklist,\n type: 'json',\n value: tasklist.map((si) => ({\n title: si.title,\n expiryDatetime: si.expiryDatetime,\n nextAssignee: [\n JSON.stringify({\n id: si.nextAssignee.id,\n title: si.nextAssignee.title,\n type: 'user'\n })\n ]\n }))\n },\n { name: APP_INBOX_PROCESSES.adhoc.vars.comment, type: 'string', value: comment },\n { name: APP_INBOX_PROCESSES.adhoc.vars.notifyInitiator, type: 'boolean', value: notifyInitiator },\n { name: TASK_VAR_APP_ID, type: 'string', value: this.actionContext()?.appId }\n ];\n\n const payload: ProcessCreatePayload = {\n processDefinitionKey: APP_INBOX_PROCESSES.adhoc.key,\n businessKey: objectID,\n name: subject,\n subject,\n attachments: [{objectId: objectID}],\n variables\n };\n\n return this.#inboxService.startProcess(payload);\n }\n\n saveTemplate() {\n if (this.form.invalid || this.nameNotUnique()) return;\n const { id, title, notifyInitiator, tasklist } = this.form.value;\n let newTemplateID: string | undefined;\n if (id !== this.NEW_TEMPLATE_ID) {\n // existing template\n const idx = this.storedData.templates.findIndex((t) => t.id === id);\n this.storedData.templates[idx] = {\n id,\n title,\n notifyInitiator,\n tasklist\n };\n this.#updateTemplateOptions();\n } else {\n newTemplateID = Utils.uuid();\n this.storedData.templates.push({\n id: newTemplateID,\n title,\n notifyInitiator,\n tasklist\n });\n }\n this.#userStorage.setItem(APP_INBOX_ID, this.storedData).subscribe({\n next: () => {\n this.#updateTemplateOptions();\n if (newTemplateID) {\n setTimeout(() => {\n this.form.patchValue(\n {\n id: newTemplateID\n },\n {\n emitEvent: false\n }\n );\n });\n }\n this.form.markAsPristine();\n this.#pendingChanges.finishTask(this.pendingTaskID);\n }\n });\n }\n\n deleteTemplate() {\n const id = this.form.get('id')?.value;\n if (id === this.NEW_TEMPLATE_ID) return;\n this.storedData.templates = this.storedData.templates.filter((t) => t.id !== id);\n this.#userStorage.setItem(APP_INBOX_ID, this.storedData).subscribe({\n next: () => {\n this.#updateTemplateOptions();\n this.form.patchValue({\n id: this.NEW_TEMPLATE_ID,\n title: '',\n notifyInitiator: false,\n tasklist: []\n });\n }\n });\n }\n}\n","<mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n<form [formGroup]=\"form\" cdkTrapFocus>\n <header>\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.description' | translate }}</p>\n <div class=\"templateSelect\">\n <mat-select formControlName=\"id\" panelWidth=\"null\">\n @for (o of templateOptions; track $index) {\n <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n }\n </mat-select>\n @if (!form.pristine) {\n <button\n mat-icon-button\n type=\"button\"\n [ngClass]=\"{ nameNotUnique: form.valid && nameNotUnique() }\"\n [matTooltip]=\"\n nameNotUnique()\n ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save.not-unique.tooltip' | translate)\n : (form.value.id === NEW_TEMPLATE_ID ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save' | translate)\n : ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.save' | translate))\n \"\n [disabled]=\"form.invalid || nameNotUnique()\"\n class=\"icon save ymt-icon-button--size-s\"\n (click)=\"saveTemplate()\"\n >\n @if (form.value.id === NEW_TEMPLATE_ID) {\n <mat-icon>add</mat-icon>\n } @else {\n <mat-icon>save</mat-icon>\n }\n </button>\n }\n\n @if (form.value.id !== NEW_TEMPLATE_ID) {\n <button\n mat-icon-button\n class=\"icon delete ymt-icon-button--size-s\"\n type=\"button\"\n (click)=\"deleteTemplate()\"\n [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.delete' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n </header>\n <main class=\"adhoc-workflow-container\">\n <mat-form-field>\n <mat-label>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.title' | translate }}</mat-label>\n <yuv-string [autofocus]=\"true\" [required]=\"true\" formControlName=\"title\"> </yuv-string>\n </mat-form-field>\n\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate }}</p>\n\n <yuv-sequence-list formControlName=\"tasklist\" [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate\"></yuv-sequence-list>\n\n <mat-checkbox formControlName=\"notifyInitiator\">\n {{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.notifyInitiator' | translate }}\n </mat-checkbox>\n\n @if (error()) {\n <p class=\"error\">{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.error.message' | translate }}</p>\n }\n </main>\n</form>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n inject,\n input,\n OnInit,\n signal,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {\n ApiBase,\n BackendService,\n DmsObject,\n NotificationService,\n PendingChangesService,\n SystemService,\n TranslateModule,\n TranslateService,\n UserService,\n} from '@yuuvis/client-core';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport {\n ListComponent,\n ListItemDirective,\n} from '@yuuvis/client-framework/list';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { EMPTY, expand, finalize, map, Observable, skipWhile, tap } from 'rxjs';\nimport {ActionContext} from '@yuuvis/client-framework/actions';\nimport {StartFormComponent} from './start-form/start-form.component';\nimport {StartAdhocComponent} from './start-adhoc/start-adhoc.component';\nimport {ProcessCreatePayload} from '@yuuvis/app-inbox/shared';\nimport {AppInboxService} from '@yuuvis/app-inbox';\n\n@Component({\n selector: 'ymi-start-process',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n ListComponent,\n ListItemDirective,\n TranslateModule,\n DialogComponent,\n YmtButtonDirective,\n MatProgressBar,\n StartFormComponent,\n StartAdhocComponent,\n ],\n templateUrl: './start-process.component.html',\n styleUrl: './start-process.component.scss',\n})\nexport class StartProcessComponent implements OnInit {\n #backend = inject(BackendService);\n #notificationService = inject(NotificationService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\n #inboxService = inject(AppInboxService);\n #userService = inject(UserService);\n #pendingChanges = inject(PendingChangesService);\n #dialogData = inject<{context: ActionContext,dmsObject: DmsObject}>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<StartProcessComponent>);\n\n processDefinitions = signal<ProcessDefinition[]>([]);\n selectedProcess = signal<ProcessDefinition | null>(null);\n object = input<DmsObject | null>(this.#dialogData.dmsObject);\n context = signal(this.#dialogData.context);\n busy = signal<boolean>(false);\n\n startForm = viewChild(StartFormComponent);\n startAdhoc = viewChild(StartAdhocComponent);\n\n startComponent: 'adhoc' | 'form' | 'formless' | undefined = undefined;\n\n itemSelected(idx: number[]) {\n this.#onItemSelect(this.processDefinitions()[idx[0]]);\n }\n\n #onItemSelect(p: ProcessDefinition) {\n this.selectedProcess.set(p);\n if (p.key.includes('adhoc')) {\n this.startComponent = 'adhoc';\n } else if (p.startFormDefined) {\n this.startComponent = 'form';\n } else {\n this.startFormlessProcess();\n }\n }\n\n #getAllProcessDefinitions(): Observable<ProcessDefinition[]> {\n let items: ProcessDefinition[] = [];\n let i = 0;\n const currentUserId = this.#userService.getCurrentUser().id;\n\n this.busy.set(true);\n\n return this.#getPage(currentUserId, i).pipe(\n expand((res: any) => {\n i++;\n return res.hasMoreItems ? this.#getPage(currentUserId, i) : EMPTY;\n }),\n tap((res: any) => {\n // TODO: this.#iconRegistry.addSvgIconLiteralInNamespace(\n items = [...items, ...res.objects];\n }),\n skipWhile((res: any) => res.hasMoreItems),\n map(() => items),\n finalize(() => this.busy.set(false))\n );\n }\n\n #getPage(\n startableByUser: string,\n index?: number\n ): Observable<any> {\n return this.#backend.get(\n `/bpm-engine/api/process-definitions?page=${index}&latest=true&startableByUser=${startableByUser}`,\n ApiBase.none\n );\n }\n\n start() {\n if (this.startComponent === 'form') {\n this.startForm()?.startProcess();\n } else if (this.startComponent === 'adhoc') {\n this.startAdhoc()?.startAdhocFlow();\n }\n }\n\n startFormlessProcess() {\n const process = this.selectedProcess();\n if (!process) return;\n\n const o = this.object();\n const attachments = o?.id ? [{objectId: o.id}] : [];\n\n const payload: ProcessCreatePayload = {\n processDefinitionKey: process.key,\n name: this.system.getLocalizedLabel(process.name) || process.name,\n attachments\n };\n\n this.busy.set(true);\n this.#inboxService.startProcess(payload)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res) => {\n this.close(res);\n this.#notificationService.success(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.success', { processName: payload.name }));\n },\n error: (err) => {\n console.error('Error starting process:', err);\n this.#notificationService.error(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.error', { processName: payload.name }));\n },\n });\n }\n\n resetSelectedProcess() {\n this.selectedProcess.set(null);\n this.startComponent = undefined;\n }\n\n cancel() {\n if (!this.#pendingChanges.check()) {\n this.close();\n }\n }\n\n close(res?: any) {\n this.#pendingChanges.clear();\n this.#dialogRef.close(res);\n }\n\n ngOnInit(): void {\n this.#getAllProcessDefinitions()\n .pipe(\n tap((processDefinitions) => {\n processDefinitions = Array.from(\n processDefinitions.filter(pD => !pD.suspended)\n // Remove object if key is 'follow-up'\n .filter(\n (p) => p.key !== 'follow-up'\n )\n // Remove duplicates by key, keeping only the one with the highest version\n .reduce<Map<string, ProcessDefinition>>((acc, cur) => {\n const prev = acc.get(cur.key);\n if (!prev || cur.version > prev.version) {\n acc.set(cur.key, cur);\n }\n return acc;\n }, new Map())\n .values()\n ).sort((a, b) => a.name.localeCompare(b.name));\n this.processDefinitions.set(processDefinitions || []);\n })\n )\n .subscribe();\n }\n}\n\nexport interface ProcessDefinition {\n category: string;\n description: string;\n global: boolean;\n id: string;\n key: string;\n name: string;\n startFormDefined: true;\n suspended: false;\n version: number;\n}\n","<yuv-dialog\n [headertitel]=\"'io.yuuvis.app.inbox.action.start-process.label' | translate\"\n>\n <main>\n @if (startComponent === 'form') {\n @let p = selectedProcess();\n <ymi-start-form #startForm [selectedProcess]=\"p\" [object]=\"object()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-form>\n } @else if (startComponent === 'adhoc') {\n @let o = object();\n <ymi-start-adhoc #startAdhoc [items]=\"o ? [o] : []\" [actionContext]=\"context()\" (finished)=\"close()\"></ymi-start-adhoc>\n } @else {\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <!-- list of all available processes -->\n <yuv-list (itemSelect)=\"itemSelected($event)\" selectOnEnter=\"true\">\n @for (process of processDefinitions(); track process.id){\n <div yuvListItem>\n {{ system.getLocalizedLabel(process.key) || process.key }}\n <span class=\"desc\">{{ system.getLocalizedDescription(process.key) || process.description }}</span>\n </div>\n }\n </yuv-list>\n }\n </main>\n <footer>\n <button\n ymtButton=\"secondary\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"busy()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.cancel\" | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n [disabled]=\"busy() || startAdhoc()?.form?.invalid || startAdhoc()?.form?.pristine\n || startForm()?.startForm()?.form?.invalid || startForm()?.startForm()?.form?.pristine\"\n (click)=\"start()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.start\" | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport {\n AbstractContextAction,\n Action,\n ActionSupport,\n SelectionRange,\n} from '@yuuvis/client-framework/actions';\nimport { Observable, of } from 'rxjs';\nimport { StartProcessComponent } from './start-process.component';\n\nexport class StartProcessAction\n extends AbstractContextAction\n implements Action\n{\n private translate = inject(TranslateService);\n #dialog = inject(MatDialog);\n\n id = 'io.yuuvis.app.inbox.action.start-process';\n label = this.translate.instant(\n 'io.yuuvis.app.inbox.action.start-process.label'\n );\n description = this.translate.instant(\n 'io.yuuvis.app.inbox.action.start-process.description'\n );\n priority = 2;\n icon = 'flowsheet';\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(selection: DmsObject[]) {\n const o = selection[0];\n return of(!!o && !o.isFolder);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.#dialog.open(StartProcessComponent, {\n minWidth: '400px',\n maxHeight: '90vh',\n data: {context: this.context, dmsObject: selection[0]},\n });\n return of(true);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActionsService } from '@yuuvis/client-framework/actions';\nimport { StartProcessAction } from '../actions/start-process/start-process.action';\nimport { ClientShellExtension } from '@yuuvis/client-shell-core';\n\n@Injectable()\nexport class InboxExtensions implements ClientShellExtension {\n #actionsService = inject(ActionsService);\n #actions = [\n {\n id: 'io.yuuvis.app.inbox.action.start-process',\n action: StartProcessAction,\n },\n ];\n\n init(): Promise<any> {\n // register actions\n this.#actionsService.registerActions(this.#actions);\n return Promise.resolve();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i6","TranslateService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-app-inbox-extensions.mjs","sources":["../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-form/start-form.component.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-form/start-form.component.html","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-adhoc/start-adhoc.component.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-adhoc/start-adhoc.component.html","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-process.component.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-process.component.html","../../../../projects/yuuvis/app-inbox/extensions/src/lib/actions/start-process/start-process.action.ts","../../../../projects/yuuvis/app-inbox/extensions/src/lib/services/extensions.service.ts","../../../../projects/yuuvis/app-inbox/extensions/src/yuuvis-app-inbox-extensions.ts"],"sourcesContent":["import { Component, effect, ElementRef, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions } from \"@yuuvis/client-framework/object-form\";\nimport {\n DmsObject,\n NotificationService,\n SystemService,\n TranslateModule,\n TranslateService\n} from '@yuuvis/client-core';\nimport { AppInboxUtils, ProcessCreatePayload, ProcessVariable } from '@yuuvis/app-inbox/shared';\nimport { ProcessDefinition } from '../start-process.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { finalize } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { AppInboxService } from '@yuuvis/app-inbox';\n\n@Component({\n selector: 'ymi-start-form',\n imports: [\n CommonModule,\n ObjectFormComponent,\n TranslateModule,\n MatIconButton,\n MatProgressBar,\n MatIconModule\n ],\n templateUrl: './start-form.component.html',\n styleUrl: './start-form.component.scss'\n})\nexport class StartFormComponent {\n\n #notificationService = inject(NotificationService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\n readonly #inboxService = inject(AppInboxService);\n\n busy = signal<boolean>(false);\n selectedProcess = input<ProcessDefinition | null>();\n object = input<DmsObject | null>();\n startFormOptions = signal<ObjectFormOptions | undefined>(undefined);\n disableControls = signal<boolean>(false);\n\n startForm = viewChild(ObjectFormComponent);\n elRef = inject(ElementRef<HTMLDivElement>);\n\n finished = output();\n onReset = output();\n\n selectedProcessEffect = effect(() => {\n const p = this.selectedProcess();\n untracked(() => {\n this.busy.set(true);\n this.#inboxService.getStartForm(p?.id!).subscribe({\n next: (res) => {\n this.busy.set(false);\n const formModel = AppInboxUtils.fixFormModel(res.model);\n this.startFormOptions.set(\n formModel\n ? {\n formModel,\n data: {},\n }\n : undefined\n );\n },\n error: (err) => {\n this.busy.set(false);\n console.error('Error fetching start form:', err);\n this.startFormOptions.set(undefined);\n },\n });\n });\n });\n\n onFormStatusChanged(evt: FormStatusChangedEvent) {\n this.disableControls.set(evt.invalid);\n }\n\n onFormReady() {\n this.elRef?.nativeElement.querySelector('textarea, input')?.focus();\n }\n\n startProcess() {\n const process = this.selectedProcess();\n const of = this.startForm();\n if (!of || !process) return;\n const formData: Record<string, unknown> = of.getFormData();\n const formElements: Record<string, unknown & { type: string }> =\n of.getFormElements();\n const variables: ProcessVariable[] = Object.keys(formData).map((key) =>\n AppInboxUtils.getProcessVariables(formData[key], formElements[key], key)\n );\n\n const o = this.object();\n const attachments = o?.id ? [{ objectId: o.id }] : [];\n\n const subject = variables.find(variable => variable.name === 'title')?.value;\n\n const payload: ProcessCreatePayload = {\n processDefinitionKey: process.key,\n variables,\n name: subject || this.system.getLocalizedLabel(process.name) || process.name,\n attachments,\n };\n\n this.busy.set(true);\n this.#inboxService.startProcess(payload)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res) => {\n this.finished.emit(res);\n this.#notificationService.success(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.success', { processName: payload.name }));\n },\n error: (err) => {\n console.error('Error starting process:', err);\n this.#notificationService.error(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.error', { processName: payload.name }));\n },\n });\n }\n\n resetSelectedProcess() {\n this.onReset.emit();\n }\n}\n","<main>\n <div class=\"header\">\n <button\n mat-icon-button\n [disabled]=\"busy()\"\n (click)=\"resetSelectedProcess()\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </div>\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <div class=\"form\">\n <yuv-object-form\n #startForm\n #elRef\n [formOptions]=\"startFormOptions()\"\n (onFormReady)=\"onFormReady()\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n</main>\n","import { CommonModule } from '@angular/common';\nimport {Component, inject, input, output, signal} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n DmsObject,\n NotificationService,\n PendingChangesService,\n SystemService,\n TranslateModule,\n TranslateService,\n UserStorageService,\n Utils\n} from '@yuuvis/client-core';\nimport { ActionContext } from '@yuuvis/client-framework/actions';\nimport { StringComponent } from '@yuuvis/client-framework/forms';\nimport { SequenceItem, SequenceListComponent } from '@yuuvis/client-framework/sequence-list';\nimport { debounceTime, Observable } from 'rxjs';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {APP_INBOX_ID, APP_INBOX_PROCESSES, ProcessCreatePayload, TASK_VAR_APP_ID} from '@yuuvis/app-inbox/shared';\nimport {AppInboxService} from '@yuuvis/app-inbox';\nimport { ProcessDefinition } from '../start-process.component';\n\ninterface AppTaskUserSettings {\n templates: AdhocWorkflowDataItem[];\n}\ninterface AdhocWorkflowDataItem {\n id: string;\n title: string;\n notifyInitiator?: boolean;\n tasklist: SequenceItem[];\n}\n@Component({\n selector: 'ymi-start-adhoc',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatSelectModule,\n MatFormFieldModule,\n StringComponent,\n ReactiveFormsModule,\n TranslateModule,\n MatCheckboxModule,\n SequenceListComponent,\n MatTooltipModule,\n MatProgressBar,\n StringComponent\n ],\n templateUrl: './start-adhoc.component.html',\n styleUrl: './start-adhoc.component.scss',\n host: {\n '[class.busy]': 'busy()'\n }\n})\nexport class StartAdhocComponent {\n #notificationService = inject(NotificationService);\n #fb = inject(FormBuilder);\n #inboxService = inject(AppInboxService);\n #userStorage = inject(UserStorageService);\n readonly system = inject(SystemService)\n #pendingChanges = inject(PendingChangesService);\n private translate = inject(TranslateService);\n\n NEW_TEMPLATE_ID = 'new';\n\n busy = signal<boolean>(false);\n nameNotUnique = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n actionContext = input<ActionContext | undefined>(undefined);\n items = input.required<DmsObject[]>();\n selectedProcess = input<ProcessDefinition | null>();\n finished = output();\n onReset = output();\n\n\n form: FormGroup = this.#fb.group({\n id: [this.NEW_TEMPLATE_ID],\n title: ['', Validators.required],\n notifyInitiator: [false],\n tasklist: [[], Validators.required]\n });\n\n storedData: AppTaskUserSettings = {\n templates: []\n };\n\n templateOptions: { label: string; value: unknown }[] = [\n {\n value: this.NEW_TEMPLATE_ID,\n label: this.translate.instant('io.yuuvis.app.inbox.templates.none')\n }\n ];\n selectedTemplate = signal<AdhocWorkflowDataItem | undefined>(undefined);\n pendingTaskID = '';\n\n constructor() {\n this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.pendingTaskID) {\n this.pendingTaskID = this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n }\n });\n this.form\n .get('title')\n ?.valueChanges.pipe(takeUntilDestroyed(), debounceTime(500))\n .subscribe(() => this.#checkForUniqueName());\n\n this.form\n .get('id')\n ?.valueChanges.pipe(takeUntilDestroyed())\n .subscribe((value) => {\n this.selectedTemplate.set(this.storedData.templates.find((t) => t.id === value));\n const template = this.selectedTemplate();\n this.form.patchValue(\n template\n ? {\n title: template.title,\n notifyInitiator: template.notifyInitiator,\n tasklist: template.tasklist\n }\n : {\n title: '',\n notifyInitiator: false,\n tasklist: []\n }\n );\n this.form.markAsPristine();\n });\n this.#userStorage.getItem(APP_INBOX_ID).subscribe((data) => {\n if (data) {\n this.storedData = data as AppTaskUserSettings;\n this.#updateTemplateOptions();\n this.#checkForUniqueName();\n }\n });\n }\n\n #checkForUniqueName() {\n const title = this.form.get('title')?.value;\n if (title) {\n const selectedTemplate = this.selectedTemplate();\n const isInList = this.storedData.templates.some((t) => t.title === title);\n this.nameNotUnique.set(\n (!selectedTemplate && isInList) || (!!selectedTemplate && this.storedData.templates.some((t) => t.id !== selectedTemplate.id && t.title === title))\n );\n }\n }\n\n #updateTemplateOptions() {\n this.templateOptions = [\n {\n value: this.NEW_TEMPLATE_ID,\n label: this.translate.instant('io.yuuvis.app.inbox.templates.none')\n },\n ...this.storedData.templates\n .map((t) => ({\n value: t.id,\n label: t.title\n }))\n .sort((a, b) => a.label.localeCompare(b.label, this.translate.currentLang))\n ];\n }\n\n startAdhocFlow() {\n this.busy.set(true);\n const dmsObject: DmsObject = this.items()[0];\n const { title, tasklist, comment, notifyInitiator } = this.form.value;\n this.#startAdhocFlow(dmsObject.id, title, tasklist, comment, notifyInitiator)\n .subscribe({\n next: () => {\n this.finished.emit();\n this.#notificationService.success(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.success', { processName: title }));\n },\n error: (e: any) => {\n this.error.set(e);\n this.#notificationService.error(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.error', { processName: title }));\n }\n })\n .add(() => this.busy.set(false));\n }\n\n #startAdhocFlow(objectID: string, subject: string, tasklist: SequenceItem[], comment?: string, notifyInitiator = false): Observable<any> {\n const variables = [\n {\n name: APP_INBOX_PROCESSES.adhoc.vars.tasklist,\n type: 'json',\n value: tasklist.map((si) => ({\n title: si.title,\n expiryDatetime: si.expiryDatetime,\n nextAssignee: [\n JSON.stringify({\n id: si.nextAssignee.id,\n title: si.nextAssignee.title,\n type: 'user'\n })\n ]\n }))\n },\n { name: APP_INBOX_PROCESSES.adhoc.vars.comment, type: 'string', value: comment },\n { name: APP_INBOX_PROCESSES.adhoc.vars.notifyInitiator, type: 'boolean', value: notifyInitiator },\n { name: TASK_VAR_APP_ID, type: 'string', value: this.actionContext()?.appId }\n ];\n\n const payload: ProcessCreatePayload = {\n processDefinitionKey: APP_INBOX_PROCESSES.adhoc.key,\n businessKey: objectID,\n name: subject,\n subject,\n attachments: [{objectId: objectID}],\n variables\n };\n\n return this.#inboxService.startProcess(payload);\n }\n\n saveTemplate() {\n if (this.form.invalid || this.nameNotUnique()) return;\n const { id, title, notifyInitiator, tasklist } = this.form.value;\n let newTemplateID: string | undefined;\n if (id !== this.NEW_TEMPLATE_ID) {\n // existing template\n const idx = this.storedData.templates.findIndex((t) => t.id === id);\n this.storedData.templates[idx] = {\n id,\n title,\n notifyInitiator,\n tasklist\n };\n this.#updateTemplateOptions();\n } else {\n newTemplateID = Utils.uuid();\n this.storedData.templates.push({\n id: newTemplateID,\n title,\n notifyInitiator,\n tasklist\n });\n }\n this.#userStorage.setItem(APP_INBOX_ID, this.storedData).subscribe({\n next: () => {\n this.#updateTemplateOptions();\n if (newTemplateID) {\n setTimeout(() => {\n this.form.patchValue(\n {\n id: newTemplateID\n },\n {\n emitEvent: false\n }\n );\n });\n }\n this.form.markAsPristine();\n this.#pendingChanges.finishTask(this.pendingTaskID);\n }\n });\n }\n\n resetSelectedProcess() {\n this.onReset.emit();\n }\n\n deleteTemplate() {\n const id = this.form.get('id')?.value;\n if (id === this.NEW_TEMPLATE_ID) return;\n this.storedData.templates = this.storedData.templates.filter((t) => t.id !== id);\n this.#userStorage.setItem(APP_INBOX_ID, this.storedData).subscribe({\n next: () => {\n this.#updateTemplateOptions();\n this.form.patchValue({\n id: this.NEW_TEMPLATE_ID,\n title: '',\n notifyInitiator: false,\n tasklist: []\n });\n }\n });\n }\n}\n","<mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n<form [formGroup]=\"form\">\n <header class=\"header\">\n <button mat-icon-button [disabled]=\"busy()\" (click)=\"resetSelectedProcess()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <h3>\n {{\n system.getLocalizedLabel(selectedProcess()?.key!) || selectedProcess()?.key ||\n (\"io.yuuvis.app.inbox.action.start-process.label\" | translate)\n }}\n </h3>\n </header>\n <main class=\"main\">\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.description' | translate }}</p>\n <div class=\"templateSelect\">\n <mat-select formControlName=\"id\" panelWidth=\"null\">\n @for (o of templateOptions; track $index) {\n <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n }\n </mat-select>\n @if (!form.pristine) {\n <button\n mat-icon-button\n type=\"button\"\n [ngClass]=\"{ nameNotUnique: form.valid && nameNotUnique() }\"\n [matTooltip]=\"\n nameNotUnique()\n ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save.not-unique.tooltip' | translate)\n : (form.value.id === NEW_TEMPLATE_ID ? ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save' | translate)\n : ('io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.save' | translate))\n \"\n [disabled]=\"form.invalid || nameNotUnique()\"\n class=\"icon save ymt-icon-button--size-s\"\n (click)=\"saveTemplate()\"\n >\n @if (form.value.id === NEW_TEMPLATE_ID) {\n <mat-icon>add</mat-icon>\n } @else {\n <mat-icon>save</mat-icon>\n }\n </button>\n }\n\n @if (form.value.id !== NEW_TEMPLATE_ID) {\n <button\n mat-icon-button\n class=\"icon delete ymt-icon-button--size-s\"\n type=\"button\"\n (click)=\"deleteTemplate()\"\n [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.delete' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n <div class=\"adhoc-workflow-container\">\n <mat-form-field>\n <mat-label>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.title' | translate }}</mat-label>\n <yuv-string [autofocus]=\"true\" [required]=\"true\" formControlName=\"title\"> </yuv-string>\n </mat-form-field>\n\n <p>{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate }}</p>\n\n <yuv-sequence-list formControlName=\"tasklist\" [matTooltip]=\"'io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.tasklist.message' | translate\"></yuv-sequence-list>\n\n <mat-checkbox formControlName=\"notifyInitiator\">\n {{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.form.notifyInitiator' | translate }}\n </mat-checkbox>\n\n @if (error()) {\n <p class=\"error\">{{ 'io.yuuvis.app.inbox.actions.startProcess.adhoc.error.message' | translate }}</p>\n }\n </div>\n </main>\n</form>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n inject,\n input,\n OnInit,\n signal,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {\n ApiBase,\n BackendService,\n DmsObject,\n NotificationService,\n PendingChangesService,\n SystemService,\n TranslateModule,\n TranslateService,\n UserService,\n} from '@yuuvis/client-core';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport {\n ListComponent,\n ListItemDirective,\n} from '@yuuvis/client-framework/list';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { EMPTY, expand, finalize, map, Observable, skipWhile, tap } from 'rxjs';\nimport {ActionContext} from '@yuuvis/client-framework/actions';\nimport {StartFormComponent} from './start-form/start-form.component';\nimport {StartAdhocComponent} from './start-adhoc/start-adhoc.component';\nimport {ProcessCreatePayload} from '@yuuvis/app-inbox/shared';\nimport {AppInboxService} from '@yuuvis/app-inbox';\n\n@Component({\n selector: 'ymi-start-process',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n ListComponent,\n ListItemDirective,\n TranslateModule,\n DialogComponent,\n YmtButtonDirective,\n MatProgressBar,\n StartFormComponent,\n StartAdhocComponent,\n ],\n templateUrl: './start-process.component.html',\n styleUrl: './start-process.component.scss',\n})\nexport class StartProcessComponent implements OnInit {\n #backend = inject(BackendService);\n #notificationService = inject(NotificationService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\n #inboxService = inject(AppInboxService);\n #userService = inject(UserService);\n #pendingChanges = inject(PendingChangesService);\n #dialogData = inject<{context: ActionContext,dmsObject: DmsObject}>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<StartProcessComponent>);\n\n processDefinitions = signal<ProcessDefinition[]>([]);\n selectedProcess = signal<ProcessDefinition | null>(null);\n object = input<DmsObject | null>(this.#dialogData.dmsObject);\n context = signal(this.#dialogData.context);\n busy = signal<boolean>(false);\n\n startForm = viewChild(StartFormComponent);\n startAdhoc = viewChild(StartAdhocComponent);\n\n startComponent: 'adhoc' | 'form' | 'formless' | undefined = undefined;\n\n itemSelected(idx: number[]) {\n this.#onItemSelect(this.processDefinitions()[idx[0]]);\n }\n\n #onItemSelect(p: ProcessDefinition) {\n this.selectedProcess.set(p);\n if (p.key.includes('adhoc')) {\n this.startComponent = 'adhoc';\n } else if (p.startFormDefined) {\n this.startComponent = 'form';\n } else {\n this.startFormlessProcess();\n }\n }\n\n #getAllProcessDefinitions(): Observable<ProcessDefinition[]> {\n let items: ProcessDefinition[] = [];\n let i = 0;\n const currentUserId = this.#userService.getCurrentUser().id;\n\n this.busy.set(true);\n\n return this.#getPage(currentUserId, i).pipe(\n expand((res: any) => {\n i++;\n return res.hasMoreItems ? this.#getPage(currentUserId, i) : EMPTY;\n }),\n tap((res: any) => {\n // TODO: this.#iconRegistry.addSvgIconLiteralInNamespace(\n items = [...items, ...res.objects];\n }),\n skipWhile((res: any) => res.hasMoreItems),\n map(() => items),\n finalize(() => this.busy.set(false))\n );\n }\n\n #getPage(\n startableByUser: string,\n index?: number\n ): Observable<any> {\n return this.#backend.get(\n `/bpm-engine/api/process-definitions?page=${index}&latest=true&startableByUser=${startableByUser}`,\n ApiBase.none\n );\n }\n\n start() {\n if (this.startComponent === 'form') {\n this.startForm()?.startProcess();\n } else if (this.startComponent === 'adhoc') {\n this.startAdhoc()?.startAdhocFlow();\n }\n }\n\n startFormlessProcess() {\n const process = this.selectedProcess();\n if (!process) return;\n\n const o = this.object();\n const attachments = o?.id ? [{objectId: o.id}] : [];\n\n const payload: ProcessCreatePayload = {\n processDefinitionKey: process.key,\n name: this.system.getLocalizedLabel(process.name) || process.name,\n attachments\n };\n\n this.busy.set(true);\n this.#inboxService.startProcess(payload)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res) => {\n this.close(res);\n this.#notificationService.success(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.success', { processName: payload.name }));\n },\n error: (err) => {\n console.error('Error starting process:', err);\n this.#notificationService.error(this.translate.instant('io.yuuvis.app.inbox.actions.startProcess.error', { processName: payload.name }));\n },\n });\n }\n\n resetSelectedProcess() {\n this.selectedProcess.set(null);\n this.startComponent = undefined;\n }\n\n cancel() {\n if (!this.#pendingChanges.check()) {\n this.close();\n }\n }\n\n close(res?: any) {\n this.#pendingChanges.clear();\n this.#dialogRef.close(res);\n }\n\n ngOnInit(): void {\n this.#getAllProcessDefinitions()\n .pipe(\n tap((processDefinitions) => {\n processDefinitions = Array.from(\n processDefinitions.filter(pD => !pD.suspended)\n // Remove object if key is 'follow-up'\n .filter(\n (p) => p.key !== 'follow-up'\n )\n // Remove duplicates by key, keeping only the one with the highest version\n .reduce<Map<string, ProcessDefinition>>((acc, cur) => {\n const prev = acc.get(cur.key);\n if (!prev || cur.version > prev.version) {\n acc.set(cur.key, cur);\n }\n return acc;\n }, new Map())\n .values()\n ).sort((a, b) => a.name.localeCompare(b.name));\n this.processDefinitions.set(processDefinitions || []);\n })\n )\n .subscribe();\n }\n}\n\nexport interface ProcessDefinition {\n category: string;\n description: string;\n global: boolean;\n id: string;\n key: string;\n name: string;\n startFormDefined: true;\n suspended: false;\n version: number;\n}\n","<yuv-dialog\n [headertitel]=\"'io.yuuvis.app.inbox.action.start-process.label' | translate\"\n>\n <main>\n\n @let p = selectedProcess();\n @if (startComponent === 'form') {\n <ymi-start-form #startForm [selectedProcess]=\"p\" [object]=\"object()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-form>\n } @else if (startComponent === 'adhoc') {\n @let o = object();\n <ymi-start-adhoc #startAdhoc [selectedProcess]=\"p\" [items]=\"o ? [o] : []\" [actionContext]=\"context()\" (finished)=\"close()\" (onReset)=\"resetSelectedProcess()\"></ymi-start-adhoc>\n } @else if (processDefinitions().length > 0) {\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n <!-- list of all available processes -->\n <yuv-list (itemSelect)=\"itemSelected($event)\" selectOnEnter=\"true\">\n @for (process of processDefinitions(); track process.id){\n <div yuvListItem>\n {{ system.getLocalizedLabel(process.key) || process.key }}\n <span class=\"desc\">{{ system.getLocalizedDescription(process.key) || process.description }}</span>\n </div>\n }\n </yuv-list>\n } @else {\n <p class=\"no-processes\">\n {{ \"io.yuuvis.app.inbox.actions.startProcess.noProcesses\" | translate }}\n </p>\n }\n \n </main>\n <footer>\n <button\n ymtButton=\"secondary\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"busy()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.cancel\" | translate }}\n </button>\n @if (this.startComponent === 'form' || this.startComponent === 'adhoc') {\n <button\n ymtButton=\"primary\"\n [disabled]=\"busy() || startAdhoc()?.form?.invalid || startAdhoc()?.form?.pristine\n || startForm()?.startForm()?.form?.invalid || startForm()?.startForm()?.form?.pristine\"\n (click)=\"start()\"\n >\n {{ \"io.yuuvis.app.inbox.actions.startProcess.button.start\" | translate }}\n </button>\n }\n </footer>\n\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport {\n AbstractContextAction,\n Action,\n ActionSupport,\n SelectionRange,\n} from '@yuuvis/client-framework/actions';\nimport { Observable, of } from 'rxjs';\nimport { StartProcessComponent } from './start-process.component';\n\nexport class StartProcessAction\n extends AbstractContextAction\n implements Action\n{\n private translate = inject(TranslateService);\n #dialog = inject(MatDialog);\n\n id = 'io.yuuvis.app.inbox.action.start-process';\n label = this.translate.instant(\n 'io.yuuvis.app.inbox.action.start-process.label'\n );\n description = this.translate.instant(\n 'io.yuuvis.app.inbox.action.start-process.description'\n );\n priority = 2;\n icon = 'flowsheet';\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(selection: DmsObject[]) {\n const o = selection[0];\n return of(!!o && !o.isFolder);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.#dialog.open(StartProcessComponent, {\n minWidth: '400px',\n maxHeight: '90vh',\n data: {context: this.context, dmsObject: selection[0]},\n });\n return of(true);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActionsService } from '@yuuvis/client-framework/actions';\nimport { StartProcessAction } from '../actions/start-process/start-process.action';\nimport { ClientShellExtension } from '@yuuvis/client-shell-core';\n\n@Injectable()\nexport class InboxExtensions implements ClientShellExtension {\n #actionsService = inject(ActionsService);\n #actions = [\n {\n id: 'io.yuuvis.app.inbox.action.start-process',\n action: StartProcessAction,\n },\n ];\n\n init(): Promise<any> {\n // register actions\n this.#actionsService.registerActions(this.#actions);\n return Promise.resolve();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i6","TranslateService"],"mappings":"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"}
|
|
@@ -86,7 +86,7 @@ const APP_INBOX_NAME = 'yuuvis Inbox';
|
|
|
86
86
|
const APP_INBOX_PROCESSES = {
|
|
87
87
|
adhoc: {
|
|
88
88
|
// key: 'momentum-adhoc',
|
|
89
|
-
key: '
|
|
89
|
+
key: 'yuuvis-adhoc', // model including notify initiator
|
|
90
90
|
vars: {
|
|
91
91
|
comment: 'comment',
|
|
92
92
|
tasklist: 'taskList',
|