@yuuvis/app-inbox 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.delete": "Vorlage löschen",
|
|
16
16
|
"io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.existing.save": "Vorlage speichern",
|
|
17
17
|
"io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save": "Als neue Vorlage speichern",
|
|
18
|
-
"io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save.not-unique.tooltip": "Vorlage mit diesem Namen existiert bereits",
|
|
18
|
+
"io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.template.option.new.save.not-unique.tooltip": "Eine Vorlage mit diesem Namen existiert bereits.",
|
|
19
19
|
"io.yuuvis.app.inbox.actions.startProcess.adhoc.overlay.title": "Aufgabenliste erstellen",
|
|
20
20
|
"io.yuuvis.app.inbox.templates.none": "Ohne Vorlage"
|
|
21
21
|
}
|
|
@@ -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 ApiBase,\n BackendService, 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, Observable} from 'rxjs';\nimport {CommonModule} from '@angular/common';\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 #backend = inject(BackendService);\n #notificationService = inject(NotificationService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\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.#backend.get(`/bpm-engine/api/process-definitions/${p?.id}/start-form`, ApiBase.none).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 ? [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.#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 * Start a process. This will create a new process instance.\n * @param payload Payload to be send with the start process request (may contain attachments, a new subject or variables)\n */\n #startProcess(payload: ProcessCreatePayload): Observable<any> {\n return this.#backend.post(`/bpm/processes`, payload);\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 BackendService,\n DmsObject,\n PendingChangesService,\n ProcessCreatePayload,\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, TASK_VAR_APP_ID} from '@yuuvis/app-inbox/shared';\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 #fb = inject(FormBuilder);\n #backend = inject(BackendService);\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: () => this.finished.emit(),\n error: (e: any) => this.error.set(e)\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],\n variables\n };\n\n return this.#backend.post('/bpm/processes', 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 PendingChangesService,\n SystemService,\n TranslateModule,\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';\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 readonly system = inject(SystemService)\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' | 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 {\n this.startComponent = 'form';\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 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.#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 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 );\n\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()\"\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);\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, inject, input, output, signal, untracked, viewChild} from '@angular/core';\nimport {FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions} from \"@yuuvis/client-framework/object-form\";\nimport {\n ApiBase,\n BackendService, 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, Observable} from 'rxjs';\nimport {CommonModule} from '@angular/common';\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 #backend = inject(BackendService);\n #notificationService = inject(NotificationService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\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.#backend.get(`/bpm-engine/api/process-definitions/${p?.id}/start-form`, ApiBase.none).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 ? [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.#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 * Start a process. This will create a new process instance.\n * @param payload Payload to be send with the start process request (may contain attachments, a new subject or variables)\n */\n #startProcess(payload: ProcessCreatePayload): Observable<any> {\n return this.#backend.post(`/bpm/processes`, payload);\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 BackendService,\n DmsObject,\n PendingChangesService,\n ProcessCreatePayload,\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, TASK_VAR_APP_ID} from '@yuuvis/app-inbox/shared';\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 #fb = inject(FormBuilder);\n #backend = inject(BackendService);\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: () => this.finished.emit(),\n error: (e: any) => this.error.set(e)\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],\n variables\n };\n\n return this.#backend.post('/bpm/processes', 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 PendingChangesService,\n SystemService,\n TranslateModule,\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';\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 readonly system = inject(SystemService)\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' | 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 {\n this.startComponent = 'form';\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 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.#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 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()\"\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);\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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"}
|
|
@@ -11,7 +11,6 @@ import { finalize, tap, debounceTime } from 'rxjs';
|
|
|
11
11
|
import { AppInboxUtils, APP_INBOX_NAME } from '@yuuvis/app-inbox/shared';
|
|
12
12
|
import * as i1$1 from '@angular/router';
|
|
13
13
|
import { RouterModule } from '@angular/router';
|
|
14
|
-
import * as i2$2 from '@yuuvis/client-shell';
|
|
15
14
|
import { YuvClientShellModule } from '@yuuvis/client-shell';
|
|
16
15
|
import * as i1 from '@angular/forms';
|
|
17
16
|
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
@@ -279,11 +278,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
279
278
|
class AppInboxComponent {
|
|
280
279
|
appName = APP_INBOX_NAME;
|
|
281
280
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppInboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
282
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AppInboxComponent, isStandalone: true, selector: "ymi-app-inbox", ngImport: i0, template: "
|
|
281
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AppInboxComponent, isStandalone: true, selector: "ymi-app-inbox", ngImport: i0, template: "<!--<ng-template yuvAppHeaderSlot=\"search\"><ymi-search></ymi-search></ng-template>-->\n<main>\n <router-outlet></router-outlet>\n</main>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}:host header{display:grid;grid-template-rows:auto auto var(--ymt-spacing-s);grid-template-columns:auto 1fr var(--ymt-spacing-s);grid-template-areas:\"logo . .\" \". search .\" \". . .\";border-block-end:1px solid var(--ymt-outline-variant)}:host header yuv-app-logo{grid-area:logo}:host header ymi-search{grid-area:search;justify-self:end}:host main{flex:1;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: YuvClientShellModule }] });
|
|
283
282
|
}
|
|
284
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppInboxComponent, decorators: [{
|
|
285
284
|
type: Component,
|
|
286
|
-
args: [{ selector: 'ymi-app-inbox', standalone: true, imports: [TranslateModule, RouterModule, SearchComponent, YuvClientShellModule], template: "
|
|
285
|
+
args: [{ selector: 'ymi-app-inbox', standalone: true, imports: [TranslateModule, RouterModule, SearchComponent, YuvClientShellModule], template: "<!--<ng-template yuvAppHeaderSlot=\"search\"><ymi-search></ymi-search></ng-template>-->\n<main>\n <router-outlet></router-outlet>\n</main>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}:host header{display:grid;grid-template-rows:auto auto var(--ymt-spacing-s);grid-template-columns:auto 1fr var(--ymt-spacing-s);grid-template-areas:\"logo . .\" \". search .\" \". . .\";border-block-end:1px solid var(--ymt-outline-variant)}:host header yuv-app-logo{grid-area:logo}:host header ymi-search{grid-area:search;justify-self:end}:host main{flex:1;overflow:hidden}\n"] }]
|
|
287
286
|
}] });
|
|
288
287
|
|
|
289
288
|
class TaskComponent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-app-inbox.mjs","sources":["../../../../projects/yuuvis/app-inbox/src/lib/app-inbox.service.ts","../../../../projects/yuuvis/app-inbox/src/lib/components/search/search.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/components/search/search.component.html","../../../../projects/yuuvis/app-inbox/src/lib/app-inbox.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/app-inbox.component.html","../../../../projects/yuuvis/app-inbox/src/lib/components/task/task.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/components/task/task.component.html","../../../../projects/yuuvis/app-inbox/src/lib/pages/inbox/inbox.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/pages/inbox/inbox.component.html","../../../../projects/yuuvis/app-inbox/src/lib/lib.routes.ts","../../../../projects/yuuvis/app-inbox/src/yuuvis-app-inbox.ts"],"sourcesContent":["import { HttpParams } from '@angular/common/http';\nimport { computed, inject, Injectable, signal } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { patchState, signalState } from '@ngrx/signals';\nimport {\n ApiBase,\n BackendService,\n ConfigService,\n ProcessAction,\n ProcessPostPayload\n} from '@yuuvis/client-core';\nimport { ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { finalize, Observable, tap } from 'rxjs';\nimport { AppInboxUtils, InboxState, Task, TasksResponse } from '@yuuvis/app-inbox/shared';\n\ntype FilterType = 'week' | 'overdue' | 'done' | 'none';\n@Injectable({\n providedIn: 'root',\n})\nexport class AppInboxService {\n #backend = inject(BackendService);\n #iconRegistry = inject(MatIconRegistry);\n #configService = inject(ConfigService);\n readonly #sanitizer = inject(DomSanitizer);\n iconsByWorkflowType: Record<string, string> = {};\n\n PAGE_SIZE = 20;\n DEFAULT_SORT_PARAM = 'createTime,desc';\n\n busy = signal<boolean>(false);\n inbox = signalState<InboxState>({\n tasks: [],\n sort: this.DEFAULT_SORT_PARAM,\n isAssigned: true,\n });\n\n disableBriefRepresentation = signal<boolean>(false);\n startFormOptions = signal<ObjectFormOptions | null>(null);\n\n /** Active filter for UI display. 'none' disables filtering. */\n activeFilter = signal<FilterType>('none');\n\n /**\n * Triggers fetching of tasks from the backend. This will update the inbox state.\n * @param page page number to fetch. Default is 0.\n * @param includeProcessVariables Whether to include process variables in the response. Default is true.\n * @param briefRepresentation Whether to use brief representation of the task. Default is true.\n */\n fetchTasks(page = 0) {\n let p = new HttpParams()\n .set('size', this.PAGE_SIZE)\n .set('sort', this.inbox().sort)\n .set('isAssigned', this.inbox().isAssigned)\n .set('page', page)\n .set('includeProcessVariables', true)\n .set('briefRepresentation', false);\n\n const sc = this.inbox().searchConditions as Record<string, any>;\n if (sc) {\n Object.keys(sc).forEach((key) => {\n p = p.set(key, sc[key]);\n });\n }\n\n this.busy.set(true);\n this.#backend\n .get(`/bpm/inbox?${p}`)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe((res: TasksResponse) => {\n const tasks = res.objects;\n patchState(this.inbox, {\n tasks: tasks,\n pagination:\n res.totalNumItems > this.PAGE_SIZE\n ? {\n page: page + 1,\n pages: Math.ceil(res.totalNumItems / this.PAGE_SIZE),\n total: res.totalNumItems,\n }\n : undefined,\n });\n const types = Array.from(\n new Set(\n tasks.map((t: any) => t.processDefinition?.idPrefix).filter(Boolean)\n )\n );\n\n types.forEach((type) => {\n if (!this.iconsByWorkflowType[this.#getIconKey(type as string)]) {\n this.loadWorkflowIcon(type as string);\n }\n });\n });\n }\n\n #getIconKey(type: string): string {\n return AppInboxUtils.getIconKey(type);\n }\n\n getTaskIconKey(type: string): string {\n return `${AppInboxUtils.getIconNamespace()}:${this.#getIconKey(type)}`;\n }\n\n /**\n * Computed signal: filtered view of tasks for the UI,\n * always derived from the last backend-fetched list and current activeFilter.\n * Never mutates primary state.\n */\n filteredTasks = computed<Task[]>(() => {\n const tasks = this.inbox().tasks;\n switch (this.activeFilter()) {\n case 'week':\n return this.#filterByWeek(tasks);\n case 'overdue':\n return this.#filterByOverdue(tasks);\n // case 'done':\n // return this.#filterByDone(tasks);\n case 'none':\n default:\n return tasks;\n }\n });\n\n isDateOverdue(dateInput?: string | Date): boolean {\n if (!dateInput) return false;\n const due = new Date(dateInput);\n return !isNaN(due.getTime()) && due < new Date();\n }\n\n loadWorkflowIcon(type: string) {\n const iconKey = this.#getIconKey(type);\n // register workflow icon in registry\n const uri = `${this.#configService.getApiBase(\n ApiBase.apiWeb,\n true\n )}/resources/icons/${iconKey}?fallback=` + encodeURIComponent('bpm:default');\n this.#iconRegistry.addSvgIconInNamespace(\n AppInboxUtils.getIconNamespace(),\n iconKey,\n this.#sanitizer.bypassSecurityTrustResourceUrl(uri)\n );\n this.iconsByWorkflowType[iconKey] = iconKey;\n }\n\n applySort(sort: string, order: 'asc' | 'desc') {\n patchState(this.inbox, {\n sort: sort ? `${sort},${order}` : this.DEFAULT_SORT_PARAM,\n });\n this.fetchTasks(0);\n }\n\n searchByName(term: string) {\n patchState(this.inbox, {\n searchConditions: {\n nameLikeIgnoreCase: `%${term}%`,\n },\n });\n this.fetchTasks(0);\n }\n\n resetSearch() {\n patchState(this.inbox, {\n searchConditions: undefined,\n });\n this.fetchTasks(0);\n }\n\n /**\n * Completes a task.\n * @param taskId ID of the tasks to complete\n * @param payload Data to be send with the complete request (may contain attachments, a new subject or variables)\n */\n completeTask(taskId: string, payload?: ProcessPostPayload): Observable<any> {\n return this.#updateTask(taskId, ProcessAction.complete, payload || {});\n }\n\n /**\n * Update a task. This will update the task in the backend and trigger a refresh of the inbox.\n * @param taskId ID of the task to update\n * @param action\n * @param payload\n * @param options\n * @returns\n */\n #updateTask(\n taskId: string,\n action: string,\n payload: ProcessPostPayload,\n options?: {\n includeProcessVar: boolean;\n briefRepresentation: boolean;\n }\n ) {\n const pl = { ...payload, action: action };\n return (\n this.#backend\n // TODO: BPM-ENGINE does not support attachments\n // .put(`/bpm-engine/api/tasks/${taskId}`, pl, ApiBase.none)\n .put(`/bpm/tasks/${taskId}`, pl)\n .pipe(\n tap((_) =>\n options\n ? this.fetchTasks(this.inbox().pagination?.page || 0)\n : this.fetchTasks()\n )\n )\n );\n }\n\n /**\n * Toggles whether tasks assigned to the current user are shown, and refreshes the task list.\n */\n toggleIsAssigned(): void {\n const currentState = this.inbox().isAssigned;\n patchState(this.inbox, { isAssigned: !currentState });\n this.fetchTasks();\n }\n\n /**\n * Sets the current UI filter to 'week' or removes it if already active.\n */\n toggleIsWeek(): void {\n const isActive = this.activeFilter() === 'week';\n this.activeFilter.set(isActive ? 'none' : 'week');\n }\n\n /**\n * Sets the current UI filter to 'overdue' or removes it if already active.\n */\n toggleIsOverdue(): void {\n const isActive = this.activeFilter() === 'overdue';\n this.activeFilter.set(isActive ? 'none' : 'overdue');\n }\n\n /**\n * Returns all tasks with due dates in the current week.\n * Used internally for UI filtering only, does not mutate state.\n * @param tasks Array of Task objects.\n * @returns Filtered array of tasks due within the week.\n */\n #filterByWeek(tasks: Task[]): Task[] {\n const today = new Date();\n // End of current week (Sunday). Adapt as needed for locale.\n const endOfWeek = new Date(today);\n endOfWeek.setDate(today.getDate() + (7 - today.getDay()));\n\n return tasks.filter((task) => {\n if (!task.dueDate) return false;\n const dueDate = new Date(task.dueDate);\n return (\n !isNaN(dueDate.getTime()) && dueDate >= today && dueDate <= endOfWeek\n );\n });\n }\n\n /**\n * Returns all tasks with a due date before today (overdue).\n * Used internally for UI filtering only, does not mutate state.\n * @param tasks Array of Task objects.\n * @returns Filtered array of overdue tasks.\n */\n #filterByOverdue(tasks: Task[]): Task[] {\n const today = new Date();\n return tasks.filter((task) => {\n if (!task.dueDate) return false;\n const dueDate = new Date(task.dueDate);\n return !isNaN(dueDate.getTime()) && dueDate < today;\n });\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { AppInboxService } from '../../app-inbox.service';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport {\n TranslateModule\n} from '@yuuvis/client-core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n selector: 'ymi-search',\n standalone: true,\n imports: [ReactiveFormsModule, \n MatFormFieldModule,\n MatInputModule,\n MatIconModule, TranslateModule],\n templateUrl: './search.component.html',\n styleUrl: './search.component.scss',\n})\nexport class SearchComponent {\n #inboxService = inject(AppInboxService);\n\n input = new FormControl<string>('');\n\n constructor() {\n this.input.valueChanges\n .pipe(takeUntilDestroyed(), debounceTime(800))\n .subscribe((value) => {\n if (value && value.length) this.#inboxService.searchByName(value);\n else this.#inboxService.resetSearch();\n });\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\">\n <input\n matInput\n type=\"text\"\n placeholder=\"{{ 'io.yuuvis.app.inbox.task.search' | translate }}\"\n [formControl]=\"input\"\n />\n\n <mat-icon matPrefix>search</mat-icon>\n</mat-form-field>\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { APP_INBOX_NAME } from '@yuuvis/app-inbox/shared';\nimport { SearchComponent } from './components/search/search.component';\n\n@Component({\n selector: 'ymi-app-inbox',\n standalone: true,\n imports: [TranslateModule, RouterModule, SearchComponent, YuvClientShellModule],\n templateUrl: './app-inbox.component.html',\n styleUrls: ['./app-inbox.component.scss'],\n})\nexport class AppInboxComponent {\n appName = APP_INBOX_NAME;\n}\n","<ng-template yuvAppHeaderSlot=\"search\"><ymi-search></ymi-search></ng-template>\n<main>\n <router-outlet></router-outlet>\n</main>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { AppInboxService } from '../../app-inbox.service';\nimport {\n BackendService,\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n PendingChangesService,\n ProcessVariable,\n TranslateModule,\n TranslateService,\n UserService,\n} from '@yuuvis/client-core';\nimport { ObjectMetadataComponent } from '@yuuvis/client-framework/object-details';\nimport {\n FormStatusChangedEvent,\n ObjectFormComponent,\n ObjectFormOptions,\n} from '@yuuvis/client-framework/object-form';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { finalize } from 'rxjs';\nimport { AppInboxUtils, Task } from '@yuuvis/app-inbox/shared';\n\n@Component({\n selector: 'ymi-task',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n YuvSplitViewModule,\n MatTabsModule,\n MatProgressBar,\n ObjectPreviewComponent,\n ObjectFormComponent,\n ObjectMetadataComponent,\n YmtButtonDirective,\n ],\n templateUrl: './task.component.html',\n styleUrl: './task.component.scss',\n})\nexport class TaskComponent {\n task = input<Task | null>(null);\n #backend = inject(BackendService);\n #shellService = inject(ShellService);\n #dmsService = inject(DmsService);\n #userService = inject(UserService);\n #inboxService = inject(AppInboxService);\n #pendingChanges = inject(PendingChangesService);\n translate = inject(TranslateService);\n\n taskForm = viewChild(ObjectFormComponent);\n\n taskFinished = output<void>();\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n #taskEffect = effect(() => {\n const task = this.task();\n if (task) {\n const formData = this.#getFormDataFromProcessVars(task);\n untracked(() => {\n if (task && task.taskForm && Object.keys(task.taskForm.model).length) {\n this.startFormOptions.set({\n formModel: AppInboxUtils.fixFormModel(task.taskForm.model),\n data: formData,\n });\n } else {\n this.startFormOptions.set(null);\n }\n });\n } else {\n this.startFormOptions.set(null);\n }\n });\n\n startFormOptions = signal<ObjectFormOptions | null>(null);\n busy = signal<boolean>(false);\n disableControls = signal<boolean>(false);\n private isFormAlreadyDirty = signal<boolean>(false);\n\n hasAttachments = computed(() => {\n const task = this.task();\n const attachmentId = task?.attachments?.[0] ?? '';\n if (attachmentId) {\n this.#dmsService.getDmsObject(attachmentId).subscribe({\n next: (dmsObject) => {\n this.dmsObject.set(dmsObject);\n },\n error: (err) => {\n console.error('Failed to load DMS object:', err);\n },\n });\n }\n return (task && task.attachments?.length > 0) || false;\n });\n\n onIndexdataSaved(updatedObject: any) {\n this.dmsObject = updatedObject;\n }\n\n onFormStatusChanged(evt: FormStatusChangedEvent) {\n if (evt.dirty && !this.isFormAlreadyDirty()) {\n this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n this.isFormAlreadyDirty.set(true);\n } else if (!evt.dirty && this.isFormAlreadyDirty()) {\n this.isFormAlreadyDirty.set(false);\n }\n this.disableControls.set(evt.invalid);\n }\n\n finishTask() {\n const task = this.task();\n if (!task) return;\n const assignee = task.assignee;\n const variables: ProcessVariable[] = [];\n\n const taskForm = this.taskForm();\n if (taskForm) {\n const formData: Record<string, unknown> = taskForm.getFormData();\n Object.keys(formData).forEach((key) =>\n variables.push({\n name: key,\n value: formData[key],\n })\n );\n }\n\n const attachments = task.attachments ? [task.attachments[0]] : [];\n const payload: any = {\n assignee: assignee,\n subject: task.name,\n attachments,\n variables,\n };\n this.busy.set(true);\n payload.jsonPayload = JSON.stringify(payload);\n\n this.#inboxService\n .completeTask(task.id, payload)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n setTimeout(() => {\n this.taskFinished.emit();\n }, 0);\n })\n )\n .subscribe();\n }\n\n flavoredDmsObject = computed<FlavoredDmsObject | undefined>((): any => {\n const o = this.dmsObject();\n return o\n ? {\n object: o,\n flavors: [...this.#shellService.getAppliedObjectFlavors(o).applied],\n }\n : undefined;\n });\n\n #getFormDataFromProcessVars(t: Task) {\n const formData: any = {};\n if (t.variables) {\n t.variables.forEach((v: any) => {\n const value = v.value;\n if (\n value &&\n Array.isArray(value) &&\n v.type === 'json' &&\n t.resolvedValues\n ) {\n value.forEach((row) =>\n Object.keys(row).forEach((k) => {\n const resValue = t.resolvedValues?.[row[k]];\n if (!!resValue) {\n row[`${k}_title`] = resValue;\n }\n })\n );\n }\n formData[v.name] = value;\n });\n }\n return formData;\n }\n\n handleTask(taskId: string, action: string): void {\n const currentUserId = this.#userService.getCurrentUser().id;\n const payload: any = {\n action: 'claim',\n assignee: action === 'accept' ? { id: currentUserId } : null,\n };\n\n this.#backend.put(`/bpm/tasks/${taskId}`, payload).subscribe({\n next: () => {\n this.taskFinished.emit();\n },\n error: (err) => {\n console.error('Error while handling task:', err);\n },\n });\n }\n}\n","@let t = task();\n@let sfo = startFormOptions();\n@if (t) {\n\n<!-- task details and the attached object -->\n<yuv-split-view [gutterSize]=\"1\">\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"details-pane\">\n <mat-tab-group>\n <mat-tab [label]=\"'io.yuuvis.app.inbox.task.form.title' | translate\">\n <div class=\"task-form\">\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n\n @if(sfo) {\n <div class=\"form\">\n <yuv-object-form\n [formOptions]=\"sfo\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n }\n </div>\n </mat-tab>\n @if (t.attachments) {\n <mat-tab\n [label]=\"\n 'io.yuuvis.app.inbox.task.details.tab.label.metadata' | translate\n \"\n >\n <yuv-object-metadata\n [flavoredDmsObject]=\"flavoredDmsObject()\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n >\n </yuv-object-metadata>\n </mat-tab>\n }\n </mat-tab-group>\n\n <footer>\n @if (!task()?.assignee) {\n <!-- claim a task -->\n <button\n ymtButton=\"primary\"\n (click)=\"handleTask(task()?.id || '', 'accept')\"\n >\n {{ \"io.yuuvis.app.inbox.task.footer.button.accept\" | translate }}\n </button>\n } @else if (task()?.assignee && task()?.claimTime) {\n <!-- return a claimed task -->\n <button\n ymtButton=\"primary\"\n (click)=\"handleTask(task()?.id || '', 'return')\"\n >\n {{ \"io.yuuvis.app.inbox.task.footer.button.return\" | translate }}\n </button>\n } @else{\n <button\n ymtButton=\"primary\"\n [disabled]=\"disableControls() || busy()\"\n (click)=\"finishTask()\"\n >\n {{ \"io.yuuvis.app.inbox.task.form.finish\" | translate }}</button\n >}\n </footer>\n </div>\n </ng-template>\n\n <!-- attached object -->\n <ng-template yuvSplitArea [size]=\"60\" [visible]=\"hasAttachments()\">\n @if (t.attachments) {\n <yuv-object-preview [objectId]=\"t.attachments[0]\"></yuv-object-preview>\n }\n </ng-template>\n</yuv-split-view>\n\n} @else {\n <div class=\"empty\">\n <p>{{ \"io.yuuvis.app.inbox.task.details.empty\" | translate }}</p>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n effect,\n inject,\n OnInit,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { AppInboxService } from '../../app-inbox.service';\nimport {LocaleDatePipe, PendingChangesService, SystemService, TranslateModule, TranslateService} from '@yuuvis/client-core';\nimport {\n ListComponent,\n ListItemDirective,\n} from '@yuuvis/client-framework/list';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { TaskComponent } from '../../components/task/task.component';\nimport { Task } from '@yuuvis/app-inbox/shared';\nimport {MasterDetailsLayoutOptions, YuvMasterDetailsComponent} from \"@yuuvis/client-framework/master-details\";\nimport {SortComponent} from '@yuuvis/client-framework/sort';\n@Component({\n selector: 'ymi-inbox',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n YuvSplitViewModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n MatProgressBar,\n ListComponent,\n TaskComponent,\n SortComponent,\n ListItemDirective,\n YuvMasterDetailsComponent,\n MatTooltip,\n LocaleDatePipe,\n SortComponent,\n ],\n templateUrl: './inbox.component.html',\n styleUrl: './inbox.component.scss',\n host: {\n '[class.pagination]': 'inbox().pagination',\n },\n})\nexport class InboxPageComponent implements OnInit {\n readonly #inboxService = inject(AppInboxService);\n readonly #pendingChanges = inject(PendingChangesService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\n\n detailsActive = true;\n mdLayoutOptions: MasterDetailsLayoutOptions = {\n masterSize: 33,\n masterMinSize: undefined,\n detailsSize: 67,\n detailsMinSize: undefined,\n resizable: true\n };\n\n inboxPageSize = this.#inboxService.PAGE_SIZE\n\n /** Signals for data and state */\n inbox = this.#inboxService.inbox;\n tasks = this.#inboxService.filteredTasks;\n busy = this.#inboxService.busy;\n selectedSort = signal<string>('created');\n sortOrder = signal<'asc' | 'desc'>('desc');\n task = signal<Task | null>(null);\n sortOptions = signal(this.#setSortOptions());\n storageKey = 'yuv.app.inbox.tasks.sort';\n\n listElement = viewChild.required<ListComponent>(ListComponent);\n iconsByWorkflowType = this.#inboxService.iconsByWorkflowType;\n #inboxEffect = effect(() => {\n const tasks = this.tasks() ?? [];\n untracked(() => {\n const previousIndex = this.selectedIndex();\n const tasksCount = tasks.length;\n\n let newIndex = -1;\n\n if (tasksCount === 0) {\n newIndex = -1;\n } else if (previousIndex < tasksCount) {\n newIndex = previousIndex;\n } else if (previousIndex >= tasksCount) {\n newIndex = previousIndex - 1;\n if (newIndex < 0) {\n newIndex = 0;\n }\n }\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.itemSelected([newIndex]);\n });\n });\n\n selectedIndex = signal<number>(-1);\n\n #setSortOptions() {\n return ['createTime', 'dueDate'];\n }\n\n itemSelected(idx: number[]) {\n if (!this.#pendingChanges.check()) {\n const tasks = this.tasks() ?? [];\n const selectedIdx = idx[0];\n\n if (selectedIdx >= 0 && selectedIdx < tasks.length) {\n this.selectedIndex.set(selectedIdx);\n this.task.set(tasks[selectedIdx]);\n } else {\n this.selectedIndex.set(-1);\n this.task.set(null);\n }\n }\n }\n\n getTaskIconKey(type: string): string {\n return this.#inboxService.getTaskIconKey(type);\n }\n\n changePage($event: PageEvent) {\n const { pageSize, pageIndex } = $event;\n this.goToPage(pageIndex + 1);\n }\n\n goToPage(page: number) {\n if (page >= 1) {\n this.#inboxService.fetchTasks(page - 1);\n }\n }\n\n /** UI filter toggles (call service) */\n groupTasksByWeek(): void {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.toggleIsWeek();\n }\n\n groupTasksByOverdue(): void {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.toggleIsOverdue();\n }\n\n // groupTasksByDone(): void {\n // this.#inboxService.toggleIsDone();\n // }\n\n onTaskFinished() {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.fetchTasks();\n }\n\n groupItems(): void {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.toggleIsAssigned();\n }\n\n /**\n * Updates sort field and direction.\n * @param sort Sorting field.\n * @param order Sort direction.\n */\n updateSort(evt: any) {\n this.selectedSort.set(evt.field);\n this.sortOrder.set(evt.order);\n this.#inboxService.applySort(evt.field, evt.order);\n }\n\n /**\n * Triggers a debounced fetch from backend (refresh button).\n */\n refresh(): void {\n this.#inboxService.fetchTasks();\n }\n\n isDateOverdue(dateInput?: string | Date): boolean {\n return this.#inboxService.isDateOverdue(dateInput);\n }\n\n\n ngOnInit(): void {\n this.#inboxService.fetchTasks();\n }\n\n /** UI filter state getters for button highlighting */\n get isWeekActive(): boolean {\n return this.#inboxService.activeFilter() === 'week';\n }\n\n get isOverdueActive(): boolean {\n return this.#inboxService.activeFilter() === 'overdue';\n }\n\n get isDoneActive(): boolean {\n return this.#inboxService.activeFilter() === 'done';\n }\n\n get isAssigned(): boolean {\n return this.#inboxService.inbox().isAssigned;\n }\n}\n","<mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n></mat-progress-bar>\n\n<yuv-master-details\n [(detailsActive)]=\"detailsActive\"\n [layoutOptions]=\"mdLayoutOptions\"\n layoutSettingsID=\"cm.app.documents.documents-list.layout\"\n [gutterSize]=\"16\"\n>\n <ng-template #yuvMasterPane>\n <div class=\"ymt-panel list\">\n <header>\n <h1>{{ \"io.yuuvis.app.inbox.task.header.title\" | translate }}</h1>\n <yuv-sort [sortOptions]=\"sortOptions()\" [storageKey]=\"storageKey\" (sortChanged)=\"updateSort($event)\"></yuv-sort>\n <div class=\"toolbar\">\n <button\n (click)=\"refresh()\"\n class=\"icon-button\"\n mat-icon-button\n title=\"{{\n 'io.yuuvis.app.inbox.task.header.button.refresh.title' | translate\n }}\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n\n <!-- TODO: enable again once the feature is supported on the backend side -->\n <!-- <button\n (click)=\"groupTasksByWeek()\"\n mat-icon-button\n class=\"icon-button\"\n title=\"{{\n 'io.yuuvis.app.inbox.task.header.button.week.title' | translate\n }}\"\n [class.active]=\"isWeekActive\"\n >\n <mat-icon>calendar_month</mat-icon>\n </button>\n\n <button\n (click)=\"groupTasksByOverdue()\"\n mat-icon-button\n class=\"icon-button\"\n title=\"{{\n 'io.yuuvis.app.inbox.task.header.button.overdue.title' | translate\n }}\"\n [class.active]=\"isOverdueActive\"\n >\n <mat-icon>schedule</mat-icon>\n </button> -->\n\n <button\n (click)=\"groupItems()\"\n mat-icon-button\n class=\"icon-button\"\n title=\"{{isAssigned ?\n ('io.yuuvis.app.inbox.task.header.button.group.unselected.title' | translate) :\n 'io.yuuvis.app.inbox.task.header.button.group.selected.title' | translate\n }}\"\n [class.active]=\"!isAssigned\"\n >\n <mat-icon>group</mat-icon>\n </button>\n </div>\n </header>\n\n <yuv-list\n (itemSelect)=\"itemSelected($event)\"\n aria-label=\"Task inbox list\"\n >\n @if (!busy()) { @for(i of tasks(); track i.id){\n <div yuvListItem class=\"list-item\">\n <div class=\"list-item__content\">\n <mat-icon\n [matTooltip]=\"system.getLocalizedLabel(i.processDefinition.idPrefix) || i.processDefinition.idPrefix\"\n [svgIcon]=\"getTaskIconKey(i.processDefinition.idPrefix)\"\n ></mat-icon>\n <div class=\"title\">{{ system.getLocalizedLabel(i.name) || i.name }}</div>\n <div\n class=\"subject\"\n [matTooltip]=\"i.processInstanceName\"\n >\n {{ i.processInstanceName }}\n </div>\n <div class=\"receive-date meta\">{{ i.createTime ? (i.createTime | localeDate : \"short\") : \"\" }}</div>\n @if (i.dueDate) {\n <time\n class=\"due meta\"\n [attr.datetime]=\"i.dueDate\"\n [class.overdue]=\"isDateOverdue(i.dueDate)\"\n >\n {{ 'io.yuuvis.app.inbox.task.duedate.prefix' | translate }} {{ i.dueDate | localeDate : \"short\" }}\n </time>\n }\n </div>\n </div>\n } }\n </yuv-list>\n @let pg = inbox().pagination; @if (pg) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pg?.total\"\n [pageSize]=\"inboxPageSize\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize\n >\n </mat-paginator>\n }\n </div>\n </ng-template>\n <ng-template #yuvDetailsPane>\n <div class=\"ymt-panel details\">\n @if (task() && !busy()) {\n <ymi-task [task]=\"task()\" (taskFinished)=\"onTaskFinished()\"></ymi-task>\n } @else {\n <div class=\"empty\">\n <p>\n {{ \"io.yuuvis.app.inbox.task.details.empty\" | translate }}\n </p>\n </div>\n }\n </div>\n </ng-template>\n</yuv-master-details>\n","import { Route } from '@angular/router';\nimport { AppInboxComponent } from './app-inbox.component';\nimport { InboxPageComponent } from './pages/inbox/inbox.component';\n\nexport const AppInboxRoutes: Route[] = [\n {\n path: '',\n component: AppInboxComponent,\n children: [\n { path: 'inbox', component: InboxPageComponent},\n { path: '', redirectTo: 'inbox', pathMatch: 'full' }\n ]\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i1","i2","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-app-inbox.mjs","sources":["../../../../projects/yuuvis/app-inbox/src/lib/app-inbox.service.ts","../../../../projects/yuuvis/app-inbox/src/lib/components/search/search.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/components/search/search.component.html","../../../../projects/yuuvis/app-inbox/src/lib/app-inbox.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/app-inbox.component.html","../../../../projects/yuuvis/app-inbox/src/lib/components/task/task.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/components/task/task.component.html","../../../../projects/yuuvis/app-inbox/src/lib/pages/inbox/inbox.component.ts","../../../../projects/yuuvis/app-inbox/src/lib/pages/inbox/inbox.component.html","../../../../projects/yuuvis/app-inbox/src/lib/lib.routes.ts","../../../../projects/yuuvis/app-inbox/src/yuuvis-app-inbox.ts"],"sourcesContent":["import { HttpParams } from '@angular/common/http';\nimport { computed, inject, Injectable, signal } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { patchState, signalState } from '@ngrx/signals';\nimport {\n ApiBase,\n BackendService,\n ConfigService,\n ProcessAction,\n ProcessPostPayload\n} from '@yuuvis/client-core';\nimport { ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { finalize, Observable, tap } from 'rxjs';\nimport { AppInboxUtils, InboxState, Task, TasksResponse } from '@yuuvis/app-inbox/shared';\n\ntype FilterType = 'week' | 'overdue' | 'done' | 'none';\n@Injectable({\n providedIn: 'root',\n})\nexport class AppInboxService {\n #backend = inject(BackendService);\n #iconRegistry = inject(MatIconRegistry);\n #configService = inject(ConfigService);\n readonly #sanitizer = inject(DomSanitizer);\n iconsByWorkflowType: Record<string, string> = {};\n\n PAGE_SIZE = 20;\n DEFAULT_SORT_PARAM = 'createTime,desc';\n\n busy = signal<boolean>(false);\n inbox = signalState<InboxState>({\n tasks: [],\n sort: this.DEFAULT_SORT_PARAM,\n isAssigned: true,\n });\n\n disableBriefRepresentation = signal<boolean>(false);\n startFormOptions = signal<ObjectFormOptions | null>(null);\n\n /** Active filter for UI display. 'none' disables filtering. */\n activeFilter = signal<FilterType>('none');\n\n /**\n * Triggers fetching of tasks from the backend. This will update the inbox state.\n * @param page page number to fetch. Default is 0.\n * @param includeProcessVariables Whether to include process variables in the response. Default is true.\n * @param briefRepresentation Whether to use brief representation of the task. Default is true.\n */\n fetchTasks(page = 0) {\n let p = new HttpParams()\n .set('size', this.PAGE_SIZE)\n .set('sort', this.inbox().sort)\n .set('isAssigned', this.inbox().isAssigned)\n .set('page', page)\n .set('includeProcessVariables', true)\n .set('briefRepresentation', false);\n\n const sc = this.inbox().searchConditions as Record<string, any>;\n if (sc) {\n Object.keys(sc).forEach((key) => {\n p = p.set(key, sc[key]);\n });\n }\n\n this.busy.set(true);\n this.#backend\n .get(`/bpm/inbox?${p}`)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe((res: TasksResponse) => {\n const tasks = res.objects;\n patchState(this.inbox, {\n tasks: tasks,\n pagination:\n res.totalNumItems > this.PAGE_SIZE\n ? {\n page: page + 1,\n pages: Math.ceil(res.totalNumItems / this.PAGE_SIZE),\n total: res.totalNumItems,\n }\n : undefined,\n });\n const types = Array.from(\n new Set(\n tasks.map((t: any) => t.processDefinition?.idPrefix).filter(Boolean)\n )\n );\n\n types.forEach((type) => {\n if (!this.iconsByWorkflowType[this.#getIconKey(type as string)]) {\n this.loadWorkflowIcon(type as string);\n }\n });\n });\n }\n\n #getIconKey(type: string): string {\n return AppInboxUtils.getIconKey(type);\n }\n\n getTaskIconKey(type: string): string {\n return `${AppInboxUtils.getIconNamespace()}:${this.#getIconKey(type)}`;\n }\n\n /**\n * Computed signal: filtered view of tasks for the UI,\n * always derived from the last backend-fetched list and current activeFilter.\n * Never mutates primary state.\n */\n filteredTasks = computed<Task[]>(() => {\n const tasks = this.inbox().tasks;\n switch (this.activeFilter()) {\n case 'week':\n return this.#filterByWeek(tasks);\n case 'overdue':\n return this.#filterByOverdue(tasks);\n // case 'done':\n // return this.#filterByDone(tasks);\n case 'none':\n default:\n return tasks;\n }\n });\n\n isDateOverdue(dateInput?: string | Date): boolean {\n if (!dateInput) return false;\n const due = new Date(dateInput);\n return !isNaN(due.getTime()) && due < new Date();\n }\n\n loadWorkflowIcon(type: string) {\n const iconKey = this.#getIconKey(type);\n // register workflow icon in registry\n const uri = `${this.#configService.getApiBase(\n ApiBase.apiWeb,\n true\n )}/resources/icons/${iconKey}?fallback=` + encodeURIComponent('bpm:default');\n this.#iconRegistry.addSvgIconInNamespace(\n AppInboxUtils.getIconNamespace(),\n iconKey,\n this.#sanitizer.bypassSecurityTrustResourceUrl(uri)\n );\n this.iconsByWorkflowType[iconKey] = iconKey;\n }\n\n applySort(sort: string, order: 'asc' | 'desc') {\n patchState(this.inbox, {\n sort: sort ? `${sort},${order}` : this.DEFAULT_SORT_PARAM,\n });\n this.fetchTasks(0);\n }\n\n searchByName(term: string) {\n patchState(this.inbox, {\n searchConditions: {\n nameLikeIgnoreCase: `%${term}%`,\n },\n });\n this.fetchTasks(0);\n }\n\n resetSearch() {\n patchState(this.inbox, {\n searchConditions: undefined,\n });\n this.fetchTasks(0);\n }\n\n /**\n * Completes a task.\n * @param taskId ID of the tasks to complete\n * @param payload Data to be send with the complete request (may contain attachments, a new subject or variables)\n */\n completeTask(taskId: string, payload?: ProcessPostPayload): Observable<any> {\n return this.#updateTask(taskId, ProcessAction.complete, payload || {});\n }\n\n /**\n * Update a task. This will update the task in the backend and trigger a refresh of the inbox.\n * @param taskId ID of the task to update\n * @param action\n * @param payload\n * @param options\n * @returns\n */\n #updateTask(\n taskId: string,\n action: string,\n payload: ProcessPostPayload,\n options?: {\n includeProcessVar: boolean;\n briefRepresentation: boolean;\n }\n ) {\n const pl = { ...payload, action: action };\n return (\n this.#backend\n // TODO: BPM-ENGINE does not support attachments\n // .put(`/bpm-engine/api/tasks/${taskId}`, pl, ApiBase.none)\n .put(`/bpm/tasks/${taskId}`, pl)\n .pipe(\n tap((_) =>\n options\n ? this.fetchTasks(this.inbox().pagination?.page || 0)\n : this.fetchTasks()\n )\n )\n );\n }\n\n /**\n * Toggles whether tasks assigned to the current user are shown, and refreshes the task list.\n */\n toggleIsAssigned(): void {\n const currentState = this.inbox().isAssigned;\n patchState(this.inbox, { isAssigned: !currentState });\n this.fetchTasks();\n }\n\n /**\n * Sets the current UI filter to 'week' or removes it if already active.\n */\n toggleIsWeek(): void {\n const isActive = this.activeFilter() === 'week';\n this.activeFilter.set(isActive ? 'none' : 'week');\n }\n\n /**\n * Sets the current UI filter to 'overdue' or removes it if already active.\n */\n toggleIsOverdue(): void {\n const isActive = this.activeFilter() === 'overdue';\n this.activeFilter.set(isActive ? 'none' : 'overdue');\n }\n\n /**\n * Returns all tasks with due dates in the current week.\n * Used internally for UI filtering only, does not mutate state.\n * @param tasks Array of Task objects.\n * @returns Filtered array of tasks due within the week.\n */\n #filterByWeek(tasks: Task[]): Task[] {\n const today = new Date();\n // End of current week (Sunday). Adapt as needed for locale.\n const endOfWeek = new Date(today);\n endOfWeek.setDate(today.getDate() + (7 - today.getDay()));\n\n return tasks.filter((task) => {\n if (!task.dueDate) return false;\n const dueDate = new Date(task.dueDate);\n return (\n !isNaN(dueDate.getTime()) && dueDate >= today && dueDate <= endOfWeek\n );\n });\n }\n\n /**\n * Returns all tasks with a due date before today (overdue).\n * Used internally for UI filtering only, does not mutate state.\n * @param tasks Array of Task objects.\n * @returns Filtered array of overdue tasks.\n */\n #filterByOverdue(tasks: Task[]): Task[] {\n const today = new Date();\n return tasks.filter((task) => {\n if (!task.dueDate) return false;\n const dueDate = new Date(task.dueDate);\n return !isNaN(dueDate.getTime()) && dueDate < today;\n });\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { AppInboxService } from '../../app-inbox.service';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport {\n TranslateModule\n} from '@yuuvis/client-core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n selector: 'ymi-search',\n standalone: true,\n imports: [ReactiveFormsModule, \n MatFormFieldModule,\n MatInputModule,\n MatIconModule, TranslateModule],\n templateUrl: './search.component.html',\n styleUrl: './search.component.scss',\n})\nexport class SearchComponent {\n #inboxService = inject(AppInboxService);\n\n input = new FormControl<string>('');\n\n constructor() {\n this.input.valueChanges\n .pipe(takeUntilDestroyed(), debounceTime(800))\n .subscribe((value) => {\n if (value && value.length) this.#inboxService.searchByName(value);\n else this.#inboxService.resetSearch();\n });\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\">\n <input\n matInput\n type=\"text\"\n placeholder=\"{{ 'io.yuuvis.app.inbox.task.search' | translate }}\"\n [formControl]=\"input\"\n />\n\n <mat-icon matPrefix>search</mat-icon>\n</mat-form-field>\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { APP_INBOX_NAME } from '@yuuvis/app-inbox/shared';\nimport { SearchComponent } from './components/search/search.component';\n\n@Component({\n selector: 'ymi-app-inbox',\n standalone: true,\n imports: [TranslateModule, RouterModule, SearchComponent, YuvClientShellModule],\n templateUrl: './app-inbox.component.html',\n styleUrls: ['./app-inbox.component.scss'],\n})\nexport class AppInboxComponent {\n appName = APP_INBOX_NAME;\n}\n","<!--<ng-template yuvAppHeaderSlot=\"search\"><ymi-search></ymi-search></ng-template>-->\n<main>\n <router-outlet></router-outlet>\n</main>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { AppInboxService } from '../../app-inbox.service';\nimport {\n BackendService,\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n PendingChangesService,\n ProcessVariable,\n TranslateModule,\n TranslateService,\n UserService,\n} from '@yuuvis/client-core';\nimport { ObjectMetadataComponent } from '@yuuvis/client-framework/object-details';\nimport {\n FormStatusChangedEvent,\n ObjectFormComponent,\n ObjectFormOptions,\n} from '@yuuvis/client-framework/object-form';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { finalize } from 'rxjs';\nimport { AppInboxUtils, Task } from '@yuuvis/app-inbox/shared';\n\n@Component({\n selector: 'ymi-task',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n YuvSplitViewModule,\n MatTabsModule,\n MatProgressBar,\n ObjectPreviewComponent,\n ObjectFormComponent,\n ObjectMetadataComponent,\n YmtButtonDirective,\n ],\n templateUrl: './task.component.html',\n styleUrl: './task.component.scss',\n})\nexport class TaskComponent {\n task = input<Task | null>(null);\n #backend = inject(BackendService);\n #shellService = inject(ShellService);\n #dmsService = inject(DmsService);\n #userService = inject(UserService);\n #inboxService = inject(AppInboxService);\n #pendingChanges = inject(PendingChangesService);\n translate = inject(TranslateService);\n\n taskForm = viewChild(ObjectFormComponent);\n\n taskFinished = output<void>();\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n #taskEffect = effect(() => {\n const task = this.task();\n if (task) {\n const formData = this.#getFormDataFromProcessVars(task);\n untracked(() => {\n if (task && task.taskForm && Object.keys(task.taskForm.model).length) {\n this.startFormOptions.set({\n formModel: AppInboxUtils.fixFormModel(task.taskForm.model),\n data: formData,\n });\n } else {\n this.startFormOptions.set(null);\n }\n });\n } else {\n this.startFormOptions.set(null);\n }\n });\n\n startFormOptions = signal<ObjectFormOptions | null>(null);\n busy = signal<boolean>(false);\n disableControls = signal<boolean>(false);\n private isFormAlreadyDirty = signal<boolean>(false);\n\n hasAttachments = computed(() => {\n const task = this.task();\n const attachmentId = task?.attachments?.[0] ?? '';\n if (attachmentId) {\n this.#dmsService.getDmsObject(attachmentId).subscribe({\n next: (dmsObject) => {\n this.dmsObject.set(dmsObject);\n },\n error: (err) => {\n console.error('Failed to load DMS object:', err);\n },\n });\n }\n return (task && task.attachments?.length > 0) || false;\n });\n\n onIndexdataSaved(updatedObject: any) {\n this.dmsObject = updatedObject;\n }\n\n onFormStatusChanged(evt: FormStatusChangedEvent) {\n if (evt.dirty && !this.isFormAlreadyDirty()) {\n this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n this.isFormAlreadyDirty.set(true);\n } else if (!evt.dirty && this.isFormAlreadyDirty()) {\n this.isFormAlreadyDirty.set(false);\n }\n this.disableControls.set(evt.invalid);\n }\n\n finishTask() {\n const task = this.task();\n if (!task) return;\n const assignee = task.assignee;\n const variables: ProcessVariable[] = [];\n\n const taskForm = this.taskForm();\n if (taskForm) {\n const formData: Record<string, unknown> = taskForm.getFormData();\n Object.keys(formData).forEach((key) =>\n variables.push({\n name: key,\n value: formData[key],\n })\n );\n }\n\n const attachments = task.attachments ? [task.attachments[0]] : [];\n const payload: any = {\n assignee: assignee,\n subject: task.name,\n attachments,\n variables,\n };\n this.busy.set(true);\n payload.jsonPayload = JSON.stringify(payload);\n\n this.#inboxService\n .completeTask(task.id, payload)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n setTimeout(() => {\n this.taskFinished.emit();\n }, 0);\n })\n )\n .subscribe();\n }\n\n flavoredDmsObject = computed<FlavoredDmsObject | undefined>((): any => {\n const o = this.dmsObject();\n return o\n ? {\n object: o,\n flavors: [...this.#shellService.getAppliedObjectFlavors(o).applied],\n }\n : undefined;\n });\n\n #getFormDataFromProcessVars(t: Task) {\n const formData: any = {};\n if (t.variables) {\n t.variables.forEach((v: any) => {\n const value = v.value;\n if (\n value &&\n Array.isArray(value) &&\n v.type === 'json' &&\n t.resolvedValues\n ) {\n value.forEach((row) =>\n Object.keys(row).forEach((k) => {\n const resValue = t.resolvedValues?.[row[k]];\n if (!!resValue) {\n row[`${k}_title`] = resValue;\n }\n })\n );\n }\n formData[v.name] = value;\n });\n }\n return formData;\n }\n\n handleTask(taskId: string, action: string): void {\n const currentUserId = this.#userService.getCurrentUser().id;\n const payload: any = {\n action: 'claim',\n assignee: action === 'accept' ? { id: currentUserId } : null,\n };\n\n this.#backend.put(`/bpm/tasks/${taskId}`, payload).subscribe({\n next: () => {\n this.taskFinished.emit();\n },\n error: (err) => {\n console.error('Error while handling task:', err);\n },\n });\n }\n}\n","@let t = task();\n@let sfo = startFormOptions();\n@if (t) {\n\n<!-- task details and the attached object -->\n<yuv-split-view [gutterSize]=\"1\">\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"details-pane\">\n <mat-tab-group>\n <mat-tab [label]=\"'io.yuuvis.app.inbox.task.form.title' | translate\">\n <div class=\"task-form\">\n <mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n ></mat-progress-bar>\n\n @if(sfo) {\n <div class=\"form\">\n <yuv-object-form\n [formOptions]=\"sfo\"\n (statusChanged)=\"onFormStatusChanged($event)\"\n ></yuv-object-form>\n </div>\n }\n </div>\n </mat-tab>\n @if (t.attachments) {\n <mat-tab\n [label]=\"\n 'io.yuuvis.app.inbox.task.details.tab.label.metadata' | translate\n \"\n >\n <yuv-object-metadata\n [flavoredDmsObject]=\"flavoredDmsObject()\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n >\n </yuv-object-metadata>\n </mat-tab>\n }\n </mat-tab-group>\n\n <footer>\n @if (!task()?.assignee) {\n <!-- claim a task -->\n <button\n ymtButton=\"primary\"\n (click)=\"handleTask(task()?.id || '', 'accept')\"\n >\n {{ \"io.yuuvis.app.inbox.task.footer.button.accept\" | translate }}\n </button>\n } @else if (task()?.assignee && task()?.claimTime) {\n <!-- return a claimed task -->\n <button\n ymtButton=\"primary\"\n (click)=\"handleTask(task()?.id || '', 'return')\"\n >\n {{ \"io.yuuvis.app.inbox.task.footer.button.return\" | translate }}\n </button>\n } @else{\n <button\n ymtButton=\"primary\"\n [disabled]=\"disableControls() || busy()\"\n (click)=\"finishTask()\"\n >\n {{ \"io.yuuvis.app.inbox.task.form.finish\" | translate }}</button\n >}\n </footer>\n </div>\n </ng-template>\n\n <!-- attached object -->\n <ng-template yuvSplitArea [size]=\"60\" [visible]=\"hasAttachments()\">\n @if (t.attachments) {\n <yuv-object-preview [objectId]=\"t.attachments[0]\"></yuv-object-preview>\n }\n </ng-template>\n</yuv-split-view>\n\n} @else {\n <div class=\"empty\">\n <p>{{ \"io.yuuvis.app.inbox.task.details.empty\" | translate }}</p>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n effect,\n inject,\n OnInit,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { AppInboxService } from '../../app-inbox.service';\nimport {LocaleDatePipe, PendingChangesService, SystemService, TranslateModule, TranslateService} from '@yuuvis/client-core';\nimport {\n ListComponent,\n ListItemDirective,\n} from '@yuuvis/client-framework/list';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { TaskComponent } from '../../components/task/task.component';\nimport { Task } from '@yuuvis/app-inbox/shared';\nimport {MasterDetailsLayoutOptions, YuvMasterDetailsComponent} from \"@yuuvis/client-framework/master-details\";\nimport {SortComponent} from '@yuuvis/client-framework/sort';\n@Component({\n selector: 'ymi-inbox',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n YuvSplitViewModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n MatProgressBar,\n ListComponent,\n TaskComponent,\n SortComponent,\n ListItemDirective,\n YuvMasterDetailsComponent,\n MatTooltip,\n LocaleDatePipe,\n SortComponent,\n ],\n templateUrl: './inbox.component.html',\n styleUrl: './inbox.component.scss',\n host: {\n '[class.pagination]': 'inbox().pagination',\n },\n})\nexport class InboxPageComponent implements OnInit {\n readonly #inboxService = inject(AppInboxService);\n readonly #pendingChanges = inject(PendingChangesService);\n readonly translate = inject(TranslateService);\n readonly system = inject(SystemService)\n\n detailsActive = true;\n mdLayoutOptions: MasterDetailsLayoutOptions = {\n masterSize: 33,\n masterMinSize: undefined,\n detailsSize: 67,\n detailsMinSize: undefined,\n resizable: true\n };\n\n inboxPageSize = this.#inboxService.PAGE_SIZE\n\n /** Signals for data and state */\n inbox = this.#inboxService.inbox;\n tasks = this.#inboxService.filteredTasks;\n busy = this.#inboxService.busy;\n selectedSort = signal<string>('created');\n sortOrder = signal<'asc' | 'desc'>('desc');\n task = signal<Task | null>(null);\n sortOptions = signal(this.#setSortOptions());\n storageKey = 'yuv.app.inbox.tasks.sort';\n\n listElement = viewChild.required<ListComponent>(ListComponent);\n iconsByWorkflowType = this.#inboxService.iconsByWorkflowType;\n #inboxEffect = effect(() => {\n const tasks = this.tasks() ?? [];\n untracked(() => {\n const previousIndex = this.selectedIndex();\n const tasksCount = tasks.length;\n\n let newIndex = -1;\n\n if (tasksCount === 0) {\n newIndex = -1;\n } else if (previousIndex < tasksCount) {\n newIndex = previousIndex;\n } else if (previousIndex >= tasksCount) {\n newIndex = previousIndex - 1;\n if (newIndex < 0) {\n newIndex = 0;\n }\n }\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.itemSelected([newIndex]);\n });\n });\n\n selectedIndex = signal<number>(-1);\n\n #setSortOptions() {\n return ['createTime', 'dueDate'];\n }\n\n itemSelected(idx: number[]) {\n if (!this.#pendingChanges.check()) {\n const tasks = this.tasks() ?? [];\n const selectedIdx = idx[0];\n\n if (selectedIdx >= 0 && selectedIdx < tasks.length) {\n this.selectedIndex.set(selectedIdx);\n this.task.set(tasks[selectedIdx]);\n } else {\n this.selectedIndex.set(-1);\n this.task.set(null);\n }\n }\n }\n\n getTaskIconKey(type: string): string {\n return this.#inboxService.getTaskIconKey(type);\n }\n\n changePage($event: PageEvent) {\n const { pageSize, pageIndex } = $event;\n this.goToPage(pageIndex + 1);\n }\n\n goToPage(page: number) {\n if (page >= 1) {\n this.#inboxService.fetchTasks(page - 1);\n }\n }\n\n /** UI filter toggles (call service) */\n groupTasksByWeek(): void {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.toggleIsWeek();\n }\n\n groupTasksByOverdue(): void {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.toggleIsOverdue();\n }\n\n // groupTasksByDone(): void {\n // this.#inboxService.toggleIsDone();\n // }\n\n onTaskFinished() {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.fetchTasks();\n }\n\n groupItems(): void {\n this.task.set(null);\n this.selectedIndex.set(-1);\n this.#inboxService.toggleIsAssigned();\n }\n\n /**\n * Updates sort field and direction.\n * @param sort Sorting field.\n * @param order Sort direction.\n */\n updateSort(evt: any) {\n this.selectedSort.set(evt.field);\n this.sortOrder.set(evt.order);\n this.#inboxService.applySort(evt.field, evt.order);\n }\n\n /**\n * Triggers a debounced fetch from backend (refresh button).\n */\n refresh(): void {\n this.#inboxService.fetchTasks();\n }\n\n isDateOverdue(dateInput?: string | Date): boolean {\n return this.#inboxService.isDateOverdue(dateInput);\n }\n\n\n ngOnInit(): void {\n this.#inboxService.fetchTasks();\n }\n\n /** UI filter state getters for button highlighting */\n get isWeekActive(): boolean {\n return this.#inboxService.activeFilter() === 'week';\n }\n\n get isOverdueActive(): boolean {\n return this.#inboxService.activeFilter() === 'overdue';\n }\n\n get isDoneActive(): boolean {\n return this.#inboxService.activeFilter() === 'done';\n }\n\n get isAssigned(): boolean {\n return this.#inboxService.inbox().isAssigned;\n }\n}\n","<mat-progress-bar\n mode=\"indeterminate\"\n [ngClass]=\"{ busy: busy() }\"\n></mat-progress-bar>\n\n<yuv-master-details\n [(detailsActive)]=\"detailsActive\"\n [layoutOptions]=\"mdLayoutOptions\"\n layoutSettingsID=\"cm.app.documents.documents-list.layout\"\n [gutterSize]=\"16\"\n>\n <ng-template #yuvMasterPane>\n <div class=\"ymt-panel list\">\n <header>\n <h1>{{ \"io.yuuvis.app.inbox.task.header.title\" | translate }}</h1>\n <yuv-sort [sortOptions]=\"sortOptions()\" [storageKey]=\"storageKey\" (sortChanged)=\"updateSort($event)\"></yuv-sort>\n <div class=\"toolbar\">\n <button\n (click)=\"refresh()\"\n class=\"icon-button\"\n mat-icon-button\n title=\"{{\n 'io.yuuvis.app.inbox.task.header.button.refresh.title' | translate\n }}\"\n >\n <mat-icon>refresh</mat-icon>\n </button>\n\n <!-- TODO: enable again once the feature is supported on the backend side -->\n <!-- <button\n (click)=\"groupTasksByWeek()\"\n mat-icon-button\n class=\"icon-button\"\n title=\"{{\n 'io.yuuvis.app.inbox.task.header.button.week.title' | translate\n }}\"\n [class.active]=\"isWeekActive\"\n >\n <mat-icon>calendar_month</mat-icon>\n </button>\n\n <button\n (click)=\"groupTasksByOverdue()\"\n mat-icon-button\n class=\"icon-button\"\n title=\"{{\n 'io.yuuvis.app.inbox.task.header.button.overdue.title' | translate\n }}\"\n [class.active]=\"isOverdueActive\"\n >\n <mat-icon>schedule</mat-icon>\n </button> -->\n\n <button\n (click)=\"groupItems()\"\n mat-icon-button\n class=\"icon-button\"\n title=\"{{isAssigned ?\n ('io.yuuvis.app.inbox.task.header.button.group.unselected.title' | translate) :\n 'io.yuuvis.app.inbox.task.header.button.group.selected.title' | translate\n }}\"\n [class.active]=\"!isAssigned\"\n >\n <mat-icon>group</mat-icon>\n </button>\n </div>\n </header>\n\n <yuv-list\n (itemSelect)=\"itemSelected($event)\"\n aria-label=\"Task inbox list\"\n >\n @if (!busy()) { @for(i of tasks(); track i.id){\n <div yuvListItem class=\"list-item\">\n <div class=\"list-item__content\">\n <mat-icon\n [matTooltip]=\"system.getLocalizedLabel(i.processDefinition.idPrefix) || i.processDefinition.idPrefix\"\n [svgIcon]=\"getTaskIconKey(i.processDefinition.idPrefix)\"\n ></mat-icon>\n <div class=\"title\">{{ system.getLocalizedLabel(i.name) || i.name }}</div>\n <div\n class=\"subject\"\n [matTooltip]=\"i.processInstanceName\"\n >\n {{ i.processInstanceName }}\n </div>\n <div class=\"receive-date meta\">{{ i.createTime ? (i.createTime | localeDate : \"short\") : \"\" }}</div>\n @if (i.dueDate) {\n <time\n class=\"due meta\"\n [attr.datetime]=\"i.dueDate\"\n [class.overdue]=\"isDateOverdue(i.dueDate)\"\n >\n {{ 'io.yuuvis.app.inbox.task.duedate.prefix' | translate }} {{ i.dueDate | localeDate : \"short\" }}\n </time>\n }\n </div>\n </div>\n } }\n </yuv-list>\n @let pg = inbox().pagination; @if (pg) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pg?.total\"\n [pageSize]=\"inboxPageSize\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize\n >\n </mat-paginator>\n }\n </div>\n </ng-template>\n <ng-template #yuvDetailsPane>\n <div class=\"ymt-panel details\">\n @if (task() && !busy()) {\n <ymi-task [task]=\"task()\" (taskFinished)=\"onTaskFinished()\"></ymi-task>\n } @else {\n <div class=\"empty\">\n <p>\n {{ \"io.yuuvis.app.inbox.task.details.empty\" | translate }}\n </p>\n </div>\n }\n </div>\n </ng-template>\n</yuv-master-details>\n","import { Route } from '@angular/router';\nimport { AppInboxComponent } from './app-inbox.component';\nimport { InboxPageComponent } from './pages/inbox/inbox.component';\n\nexport const AppInboxRoutes: Route[] = [\n {\n path: '',\n component: AppInboxComponent,\n children: [\n { path: 'inbox', component: InboxPageComponent},\n { path: '', redirectTo: 'inbox', pathMatch: 'full' }\n ]\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i1","i2","i4"],"mappings":"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"}
|