@yuuvis/bpm-management-app 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/fesm2022/yuuvis-bpm-management-app-extensions.mjs +3 -3
- package/fesm2022/yuuvis-bpm-management-app.mjs +226 -109
- package/fesm2022/yuuvis-bpm-management-app.mjs.map +1 -1
- package/lib/assets/i18n/de.json +4 -1
- package/lib/assets/i18n/en.json +4 -1
- package/package.json +2 -2
- package/types/yuuvis-bpm-management-app.d.ts +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-bpm-management-app.mjs","sources":["../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.schema.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-filter.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.service.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/text-filter/text-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/text-filter/text-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/number-filter/number-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/number-filter/number-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/select-filter/select-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/select-filter/select-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/date-filter/date-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/date-filter/date-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/bpm-table/bpm-table.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/bpm-table/bpm-table.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/format-date-time.pipe.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-summary/deployment-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-summary/deployment-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-process-definitions/deployment-process-definitions.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-process-definitions/deployment-process-definitions.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/deployments/deployments-page/deployments-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/deployments/deployments-page/deployments-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-summary/process-definition-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-summary/process-definition-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/checkbox-overlay/checkbox-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/checkbox-overlay/checkbox-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processdefinitions/processdefinitions-page/processdefinitions-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processdefinitions/processdefinitions-page/processdefinitions-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-summary/process-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-summary/process-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-tasks/process-tasks.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-tasks/process-tasks.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-history/process-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-history/process-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processes/processes-page/processes-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processes/processes-page/processes-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-summary/task-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-summary/task-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/editor-history/editor-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/editor-history/editor-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-assign-overlay/task-assign-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-assign-overlay/task-assign-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-candidates-overlay/task-candidates-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-candidates-overlay/task-candidates-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/tasks/tasks-page/tasks-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/tasks/tasks-page/tasks-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/lib.routes.ts","../../../../../projects/yuuvis/bpm-management-app/src/yuuvis-bpm-management-app.ts"],"sourcesContent":["export const APP_ID = 'io.yuuvis.app.bpm-management';\n\nexport interface DeploymentInstance {\n id: string,\n name: string;\n category: string;\n deploymentTime: string;\n resources: DeploymentResourceData[];\n definitions: ProcessDefinitionInstance[];\n}\n\nexport interface DeploymentResourceData {\n id: string;\n mediaType: string;\n type: string;\n}\n\nexport interface ProcessDefinitionInstance {\n id: string,\n name: string;\n description: string;\n category: string;\n version: string;\n key: string;\n global: boolean;\n suspended: boolean;\n deploymentId: string;\n statistics: ProcessdefinitionStatisticsData;\n}\n\nexport interface ProcessdefinitionStatisticsData {\n processInstanceCount: ProcessinstanceCountData;\n}\n\nexport interface ProcessinstanceCountData {\n active: number;\n suspended: number;\n completed: number\n}\n\nexport interface ProcessVariable {\n name: string;\n type: string;\n value: any;\n scope: string;\n}\n\nexport interface ProcessInstance {\n id: string;\n name: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionName: string;\n processDefinitionDescription: string | null;\n startUserId: string;\n startTime: string;\n deleteReason: string | null;\n endActivityId: string | null;\n startActivityId: string;\n durationInMillis: number | null;\n endTime: string | null;\n suspended: boolean;\n variables: ProcessVariable[];\n}\n\nexport interface ProcessHistory {\n tasks: TaskInstance[];\n}\n\nexport interface TaskInstance {\n id: string;\n name: string;\n description: string | null;\n assignee: string;\n owner: string;\n createTime: string;\n endTime: string | null;\n claimTime: string | null;\n dueDate: string | null;\n processDefinitionId: string;\n processInstanceId: string;\n processInstanceName: string | null;\n parentTaskId: string | null;\n taskDefinitionKey: string;\n delegationState: string | null;\n suspended: boolean;\n hasForm: boolean;\n formKey: string | null;\n variables?: TaskVariable[];\n identityLinks?: TaskIdentityLinks;\n}\n\nexport interface TaskVariable {\n name: string;\n type: string;\n value: any;\n valueUrl?: string;\n scope: string;\n}\n\nexport interface TaskIdentityLinks {\n candidates: {\n users: string[];\n roles: string[];\n };\n assignmentHistory: TaskAssignmentHistoryEntry[];\n}\n\nexport interface TaskAssignmentHistoryEntry {\n type: 'ASSIGNMENT' | 'DELEGATION' | 'RESOLVE';\n assignee: string;\n owner?: string;\n timestamp: string;\n}\n\nexport const ProcessDefinitionScope = {\n GLOBAL: { value: 'GLOBAL', label: 'yuv.app.bpm-management.processdefinitions.scope.global', icon: 'globe' },\n TENANT: { value: 'TENANT', label: 'yuv.app.bpm-management.processdefinitions.scope.tenant', icon: 'tenant' }\n} as const;\n\nexport const ProcessDefinitionStatus = {\n ACTIVE: { value: 'ACTIVE', label: 'yuv.app.bpm-management.status.active' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' }\n} as const;\n\nexport const ProcessStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' },\n RUNNING_SUSPENDED: { value: 'RUNNING_SUSPENDED', label: 'yuv.app.bpm-management.status.runningORsuspended' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport const TaskStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport interface DeploymentsSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: DeploymentInstance[];\n}\n\nexport interface ProcessDefinitionSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessDefinitionInstance[];\n}\n\nexport interface ProcessesSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessInstance[];\n}\n\nexport interface TasksSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: TaskInstance[];\n}\n\nexport const APP_ICONS = {\n assign: 'person_add',\n cancel: 'cancel',\n unassign: 'person_remove',\n clearFilter: 'filter_alt_off',\n dockToLeft: 'dock_to_left',\n filterActive: 'filter_alt',\n filterEquals: 'equal',\n filterContains: 'find_in_page',\n filterStartsWith: 'subdirectory_arrow_right',\n filterEndsWith: 'subdirectory_arrow_left',\n filterGreaterThan: 'arrow_upward',\n filterLessThan: 'arrow_downward',\n filterAfter: 'east',\n filterBefore: 'west',\n filterBetween: 'compare_arrows',\n globe: 'public',\n info: 'info',\n refresh: 'refresh',\n radioButtonChecked: 'radio_button_checked',\n radioButtonUnchecked: 'radio_button_unchecked',\n tenant: 'groups',\n delegated: 'assignment',\n resolved: 'order_approve',\n activate: 'play_arrow',\n suspend: 'pause'\n}\n\nexport interface Pagination {\n total: number;\n pageSize: number;\n page: number;\n}\n\nexport interface Column {\n name: string;\n displayName: string;\n template?: any; // TemplateRef or function\n filter?: ColumnFilter;\n}\n\nexport type ColumnFilter = \n | TextColumnFilter \n | NumberColumnFilter \n | DateColumnFilter \n | SelectColumnFilter;\n\nexport interface TextColumnFilter {\n type: typeof FILTER_TYPES.TEXT;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface NumberColumnFilter {\n type: typeof FILTER_TYPES.NUMBER;\n placeholder?: string;\n operators?: FilterOption[];\n minValue?: number;\n maxValue?: number;\n step?: number;\n}\n\nexport interface DateColumnFilter {\n type: typeof FILTER_TYPES.DATE;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface SelectColumnFilter {\n type: typeof FILTER_TYPES.SELECT;\n placeholder?: string;\n options: FilterOption[];\n enableMultiselect?: boolean;\n}\n\nexport interface FilterOption {\n value: string;\n label: string;\n icon?: string;\n}\n\nexport const FILTER_OPERATORS = {\n // Text operators\n CONTAINS: { value: 'contains', label: 'yuv.app.bpm-management.filters.operators.contains', icon: 'filterContains' },\n EQUALS: { value: 'equals', label: 'yuv.app.bpm-management.filters.operators.equals', icon: 'filterEquals' },\n STARTS_WITH: { value: 'startsWith', label: 'yuv.app.bpm-management.filters.operators.startsWith', icon: 'filterStartsWith' },\n ENDS_WITH: { value: 'endsWith', label: 'yuv.app.bpm-management.filters.operators.endsWith', icon: 'filterEndsWith' },\n\n // Number operators\n GREATER_THAN: { value: 'greaterThan', label: 'yuv.app.bpm-management.filters.operators.greaterThan', icon: 'filterGreaterThan' },\n LESS_THAN: { value: 'lessThan', label: 'yuv.app.bpm-management.filters.operators.lessThan', icon: 'filterLessThan' },\n // Date operators\n BEFORE: { value: 'before', label: 'yuv.app.bpm-management.filters.operators.before', icon: 'filterBefore' },\n AFTER: { value: 'after', label: 'yuv.app.bpm-management.filters.operators.after', icon: 'filterAfter' },\n BETWEEN: { value: 'between', label: 'yuv.app.bpm-management.filters.operators.between', icon: 'filterBetween' }\n} as const;\n\nexport const FILTER_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n DATE: 'date',\n SELECT: 'select',\n CHECKBOX: 'checkbox'\n} as const;\n\nexport interface TableFilters {\n [columnName: string]: FilterValue;\n}\n\nexport interface FilterValue {\n type: typeof FILTER_TYPES.TEXT | typeof FILTER_TYPES.NUMBER | typeof FILTER_TYPES.DATE | typeof FILTER_TYPES.SELECT | typeof FILTER_TYPES.CHECKBOX;\n value: any;\n operator?: string;\n endDate?: Date | null; // Für date between\n}\n\nexport type DateFormatType = 'datetime' | 'date' | 'time';\n\nexport function formatDateTime(\n utcDateString: string, \n locale: string, \n type: DateFormatType = 'datetime'\n): string {\n if (!utcDateString) return '';\n \n try {\n const date = new Date(utcDateString);\n \n const formatOptions: Record<DateFormatType, Intl.DateTimeFormatOptions> = {\n datetime: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n },\n date: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n },\n time: {\n hour: '2-digit',\n minute: '2-digit'\n }\n };\n\n return type === 'datetime' \n ? date.toLocaleString(locale, formatOptions[type])\n : type === 'date'\n ? date.toLocaleDateString(locale, formatOptions[type])\n : date.toLocaleTimeString(locale, formatOptions[type]);\n \n } catch (error) {\n console.error('Error formatting date:', error);\n return utcDateString;\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { Title } from '@angular/platform-browser';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { APP_ICONS, APP_ID } from '../bpm-management.schema';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YmtLayoutModule } from '@yuuvis/material/layout';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\n\n@Component({\n selector: 'ymbpm-root',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n TranslatePipe,\n MatTabsModule,\n MatIconModule,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './bpm-management.component.html',\n styleUrl: './bpm-management.component.scss',\n})\nexport class YuvBpmManagementComponent implements OnInit {\n\n #shell = inject(ShellService);\n #titleService = inject(Title);\n #translateService = inject(TranslateService);\n \n #app = this.#shell.getApp(APP_ID);\n appName = this.#app?.title as string;\n appIcon = this.#app?.iconName;\n\n icons = {\n ...APP_ICONS,\n };\n\n ngOnInit() {\n // Browser-Tab-Titel lokalisiert setzen\n const translatedTitle = this.appName.startsWith('yuv.') \n ? this.#translateService.instant(this.appName) \n : this.appName\n this.#titleService.setTitle(translatedTitle);\n }\n}\n","<section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link\n routerLink=\"deployments\"\n routerLinkActive\n #rla1=\"routerLinkActive\"\n [active]=\"rla1.isActive\">\n {{ 'yuv.app.bpm-management.tabs.deployments' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"processdefinitions\"\n routerLinkActive\n #rla2=\"routerLinkActive\"\n [active]=\"rla2.isActive\">\n {{ 'yuv.app.bpm-management.tabs.processdefinitions' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"processes\"\n routerLinkActive\n #rla3=\"routerLinkActive\"\n [active]=\"rla3.isActive\">\n {{ 'yuv.app.bpm-management.tabs.processes' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"tasks\"\n routerLinkActive\n #rla4=\"routerLinkActive\"\n [active]=\"rla4.isActive\">\n {{ 'yuv.app.bpm-management.tabs.tasks' | translate }}\n </a>\n </nav>\n <mat-tab-nav-panel #tabPanel>\n <router-outlet></router-outlet>\n </mat-tab-nav-panel>\n</section>\n\n<router-outlet name=\"modal\"></router-outlet>\n","import { TranslateService } from \"@yuuvis/client-core\";\nimport { FILTER_OPERATORS, FILTER_TYPES, FilterValue, ProcessDefinitionScope, ProcessDefinitionStatus, ProcessStatus, TableFilters, TaskStatus } from \"./bpm-management.schema\";\nimport { formatDate } from \"@angular/common\";\n\n/**\n * Base class for BPM filter conversion with shared logic\n */\nabstract class BaseBpmFilter {\n /**\n * Converts AG Grid filter model to BPM filter format\n * @param tableFilters - The AG Grid table filters\n * @param ts - Optional TranslateService for date formatting\n * @returns The converted BPM filter instance\n */\n protected static convertFromAgFilterModel<T extends BaseBpmFilter>(\n filterInstance: T,\n tableFilters: TableFilters,\n ts?: TranslateService\n ): T {\n for (const columnFilter in tableFilters) {\n const columnFilterData = tableFilters[columnFilter];\n \n switch (columnFilterData['type']) {\n case FILTER_TYPES.TEXT:\n filterInstance[columnFilter] = this.handleTextFilter(columnFilterData);\n break;\n case FILTER_TYPES.NUMBER:\n filterInstance[columnFilter] = { value: columnFilterData.value, type: FILTER_TYPES.NUMBER };\n break;\n case FILTER_TYPES.DATE:\n this.handleDateFilter(filterInstance, columnFilter, columnFilterData, ts);\n break;\n case FILTER_TYPES.SELECT:\n this.handleSelectFilter(filterInstance, columnFilter, columnFilterData);\n break;\n }\n }\n\n return filterInstance;\n }\n\n private static handleTextFilter(columnFilterData: any): FilterValue {\n if (columnFilterData.operator === FILTER_OPERATORS.CONTAINS.value) {\n return { value: '%' + columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.STARTS_WITH.value) {\n return { value: columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.ENDS_WITH.value) {\n return { value: '%' + columnFilterData.value, type: FILTER_TYPES.TEXT };\n } else {\n return { value: columnFilterData.value, type: FILTER_TYPES.TEXT };\n }\n }\n\n private static handleDateFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any,\n ts?: TranslateService\n ): void {\n if (!ts) return;\n\n if (columnFilterData.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedStartDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedStartDate, type: FILTER_TYPES.DATE };\n }\n if (columnFilterData.endDate !== null && columnFilterData.endDate instanceof Date) {\n const formattedEndDate = formatDate(columnFilterData.endDate, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedEndDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.AFTER.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.BEFORE.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n }\n }\n\n protected static handleSelectFilter(\n _filterInstance: any,\n _columnFilter: string,\n _columnFilterData: any\n ): void {\n return;\n }\n}\n\nexport class DeploymentFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLike',\n category: 'category'\n };\n id: FilterValue | undefined;\n name: FilterValue | undefined;\n category: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new DeploymentFilter(), tableFilters);\n }\n}\n\nexport class ProcessDefinitionFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n deploymentId: 'deploymentId',\n name: 'nameLikeIgnoreCase',\n category: 'categoryLike',\n version: 'version',\n key: 'keyLike',\n status: 'suspended',\n global: 'global',\n latest: 'latest'\n };\n id: FilterValue | undefined;\n deploymentId: FilterValue | undefined;\n name: FilterValue | undefined;\n category: FilterValue | undefined;\n version: FilterValue | undefined;\n key: FilterValue | undefined;\n status: FilterValue | undefined;\n global: FilterValue | undefined;\n latest: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new ProcessDefinitionFilter(), tableFilters);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessDefinitionStatus.ACTIVE.value || value === ProcessDefinitionScope.TENANT.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessDefinitionStatus.SUSPENDED.value || value === ProcessDefinitionScope.GLOBAL.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class ProcessFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'processInstanceId',\n processDefinitionId: 'processDefinitionId',\n name: 'nameLikeIgnoreCase',\n startUserId: 'startedBy',\n businessKey: 'businessKeyLike',\n startTimeBefore: 'startedBefore',\n startTimeAfter: 'startedAfter',\n endTimeBefore: 'finishedBefore',\n endTimeAfter: 'finishedAfter',\n status: 'isCompleted'\n };\n id: FilterValue | undefined;\n processDefinitionId: FilterValue | undefined;\n name: FilterValue | undefined;\n startUserId: FilterValue | undefined;\n startTimeBefore: FilterValue | undefined;\n startTimeAfter: FilterValue | undefined;\n endTimeBefore: FilterValue | undefined;\n endTimeAfter: FilterValue | undefined;\n businessKey: FilterValue | undefined;\n status: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new ProcessFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessStatus.RUNNING_SUSPENDED.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class TaskFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLikeIgnoreCase',\n status: 'isCompleted',\n assignee: 'visibleTo',\n owner: 'owner',\n createTimeBefore: 'createdBefore',\n createTimeAfter: 'createdAfter',\n endTimeBefore: 'completedBefore',\n endTimeAfter: 'completedAfter'\n };\n id: FilterValue | undefined;\n name: FilterValue | undefined;\n status: FilterValue | undefined;\n assignee: FilterValue | undefined;\n owner: FilterValue | undefined;\n createTimeBefore: FilterValue | undefined;\n createimeAfter: FilterValue | undefined;\n endTimeBefore: FilterValue | undefined;\n endTimeAfter: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new TaskFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === TaskStatus.RUNNING.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === TaskStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiBase, BackendService, Utils } from '@yuuvis/client-core';\nimport { map, Observable } from 'rxjs';\nimport { DeploymentInstance, ProcessHistory, ProcessInstance, TaskInstance, ProcessDefinitionInstance } from './bpm-management.schema';\nimport { DeploymentFilter, ProcessDefinitionFilter, ProcessFilter, TaskFilter } from './bpm-filter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class YuvBpmAdminService {\n \n static DEFAULT_PAGE_SIZE = 15;\n private readonly bpmApiBase = '/bpm-engine/api';\n readonly #backendService = inject(BackendService);\n\n getDeployments(page: number, size: number, filter?: DeploymentFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(DeploymentFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n \n return this.#backendService\n .get(`${this.bpmApiBase}/deployments`, ApiBase.none, { params:filterParams } );\n }\n\n getDeployment(deploymentId: string): Observable<DeploymentInstance | null> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}`, ApiBase.none );\n }\n\n getDeploymentResources(deploymentId: string): Observable<any> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}/resources`, ApiBase.none );\n }\n\n getProcessDefinitions(page: number, size: number, filter?: ProcessDefinitionFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(ProcessDefinitionFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/process-definitions`, ApiBase.none, { params:filterParams } );\n }\n\n getProcessDefinition(processDefinitionInstanceId: string): Observable<ProcessDefinitionInstance | null> {\n const params = new HttpParams().set('includeStatistics', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n executeProcessDefinitionAction(processDefinitionInstanceId: string, action: string, includeProcesses: boolean): Observable<any> {\n const body = {\n 'action': action,\n 'includeProcessInstances': includeProcesses\n };\n\n return this.#backendService\n .patch(`${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`, body, ApiBase.none)\n .pipe(map(result => result))\n }\n\n getProcesses(page: number, size: number, filter?: ProcessFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(ProcessFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes`,\n ApiBase.none,\n { params: filterParams }\n );\n }\n\n getProcess(processInstanceId: string): Observable<ProcessInstance | null> {\n const params = new HttpParams().set('includeProcessVariables', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n getProcessHistory(processInstanceId: string): Observable<ProcessHistory | null> {\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}/history`,\n ApiBase.none\n ).pipe(\n map((result: any) => {\n if (!result || !result.tasks) return result;\n \n return {\n ...result,\n tasks: result.tasks\n .sort(Utils.sortValues('createTime'))\n .reverse()\n };\n })\n );\n }\n\n getTasks(page: number, size: number, filter?: TaskFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(TaskFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n\n if (key === 'assignee') {\n filterParams = filterParams.set('isAssigned', 'true');\n }\n }\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/tasks`, ApiBase.none, { params:filterParams } ); \n }\n\n getTask(taskId: string): Observable<TaskInstance | null> {\n const params = new HttpParams().set('includeIdentityLinks', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/tasks/${taskId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n assignTask(taskId: string, assignee: string | null): Observable<any> {\n const body = {\n action: 'claim',\n assignee: assignee\n };\n\n return this.#backendService.patch(\n `${this.bpmApiBase}/tasks/${taskId}`,\n body,\n ApiBase.none\n );\n }\n\n setTaskCandidates(taskId: string, body: { users?: string[], roles?: string[] }): Observable<any> {\n return this.#backendService.post(\n `${this.bpmApiBase}/tasks/${taskId}/candidates`,\n body,\n ApiBase.none\n );\n }\n}\n","import { Component, input, OnInit, forwardRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { FilterValue, APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-text-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFilterComponent),\n multi: true\n }\n ],\n templateUrl: './text-filter.component.html',\n styleUrl: './text-filter.component.scss'\n})\nexport class TextFilterComponent implements ControlValueAccessor, OnInit {\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(''),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n\n icons = {\n ...APP_ICONS,\n };\n\n get textControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n\n private textInputSub: Subscription | null = null;\n private lastTextValue: string | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0].value);\n \n this.createTextInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0].value),\n pairwise()\n )\n .subscribe(([prev, next]: [string, string]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.textControl.value === this.lastTextValue) {\n return;\n }\n\n if (this.textInputSub) {\n this.textInputSub.unsubscribe();\n }\n\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else {\n if (this.isActiveFilter(this.lastTextValue) && (this.textControl.value.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n this.createTextInputSubscription();\n }\n\n createTextInputSubscription(): void {\n this.textInputSub = this.textControl.valueChanges\n .pipe(\n debounceTime(550),\n distinctUntilChanged(),\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else if (next !== null && next !== undefined) {\n if (this.isActiveFilter(prev) && (next.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n });\n }\n\n isActiveFilter(value = this.textControl.value): boolean {\n return value && value.toString().trim().length > 0;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n \n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.TEXT) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value ? String(value.value) : '',\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastTextValue = this.textControl.value;\n this.onChange({\n value: this.textControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <input matInput \n [placeholder]=\"('yuv.app.bpm-management.filters.search' | translate)\"\n [formControl]=\"textControl\"\n (keydown.enter)=\"onEnter()\">\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n</div>","import { Component, input, OnInit, forwardRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-number-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFilterComponent),\n multi: true\n }\n ],\n templateUrl: './number-filter.component.html',\n styleUrl: './number-filter.component.scss'\n})\nexport class NumberFilterComponent implements ControlValueAccessor, OnInit {\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(null),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get numberControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n \n private numberInputSub: Subscription | null = null;\n private lastNumberValue: number | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.createNumberInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.numberControl.value === this.lastNumberValue) {\n return;\n }\n\n if (this.numberInputSub) {\n this.numberInputSub.unsubscribe();\n }\n\n this.fireOnChangeEvent();\n this.createNumberInputSubscription();\n }\n\n createNumberInputSubscription(): void {\n this.numberInputSub = this.numberControl.valueChanges\n .pipe(\n debounceTime(300),\n distinctUntilChanged()\n )\n .subscribe(() => this.fireOnChangeEvent());\n }\n \n isActiveFilter(): boolean {\n const value = this.numberControl.value;\n return value !== null && value !== undefined && !isNaN(Number(value))\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.NUMBER) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value,\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastNumberValue = this.numberControl.value;\n this.onChange({\n value: this.numberControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.NUMBER\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <input matInput type=\"number\"\n [placeholder]=\"('yuv.app.bpm-management.filters.search' | translate)\"\n [formControl]=\"numberControl\"\n (keydown.enter)=\"onEnter()\">\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n</div>","import { Component, input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-select-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatIconModule,\n MatButtonModule,\n TranslatePipe,\n MatTooltipModule,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterComponent),\n multi: true\n }\n ],\n templateUrl: './select-filter.component.html',\n styleUrl: './select-filter.component.scss'\n})\nexport class SelectFilterComponent implements ControlValueAccessor, OnInit {\n options = input<FilterOption[]>([]);\n enableMultiselect = input<boolean>(false);\n \n selectControl = new FormControl();\n \n icons = {\n ...APP_ICONS,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n if (this.enableMultiselect()) {\n this.selectControl.setValue([]);\n } else {\n this.selectControl.setValue('');\n }\n \n this.selectControl.valueChanges.subscribe(() => {\n this.fireOnChangeEvent();\n });\n }\n\n isActiveFilter(): boolean {\n const value = this.selectControl.value;\n if (this.enableMultiselect()) {\n return value && Array.isArray(value) && value.length > 0;\n } else {\n return value && value !== '';\n }\n }\n\n getSelectedCount(): number {\n if (!this.enableMultiselect()) return 0;\n \n const values = this.selectControl.value || [];\n return Array.isArray(values) ? values.length : 0;\n }\n\n clearFilter(fireEvent = false): void {\n this.selectControl.setValue(null, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.SELECT ) {\n if (this.enableMultiselect()) {\n this.selectControl.setValue(Array.isArray(value.value) ? value.value : [], { emitEvent: false });\n } else {\n this.selectControl.setValue(value.value || '', { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.onChange({\n value: this.selectControl.value,\n type: FILTER_TYPES.SELECT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <mat-select [formControl]=\"selectControl\"\n [placeholder]=\"('yuv.app.bpm-management.filters.select' | translate)\"\n [multiple]=\"enableMultiselect()\">\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label | translate}}\n </mat-option>\n }\n </mat-select>\n @if (enableMultiselect()) {\n <div matSuffix class=\"multi-select-suffix\">\n @if (getSelectedCount() > 0) {\n <mat-icon>check_circle</mat-icon>\n <span class=\"count\">{{getSelectedCount()}}</span>\n }\n </div>\n }\n </mat-form-field>\n</div>","import { Component, forwardRef, inject, input, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';\nimport { pairwise, startWith } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-date-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n TranslatePipe,\n MatTooltipModule,\n YuvDatepickerModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterComponent),\n multi: true\n }\n ],\n templateUrl: './date-filter.component.html',\n styleUrl: './date-filter.component.scss'\n})\nexport class DateFilterComponent implements ControlValueAccessor, OnInit {\n readonly translateService = inject(TranslateService);\n\n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n placeholder = input<string>();\n operators = input<FilterOption[]>([FILTER_OPERATORS.BEFORE]);\n \n filterForm = new FormGroup({\n value: new FormControl<Date | null>(null),\n endDate: new FormControl<Date | null>(null),\n operator: new FormControl<string>(FILTER_OPERATORS.BEFORE.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get valueControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n get endDateControl() { return this.filterForm.get('endDate') as FormControl; }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.valueControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n ) \n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.endDateControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n this.fireOnChangeEvent();\n }\n });\n }\n\n isActiveFilter(): boolean {\n const operator = this.operatorControl.value;\n \n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n return startDate !== null || endDate !== null;\n } else {\n const value = this.valueControl.value;\n return value !== null;\n }\n }\n\n isBetweenMode(): boolean {\n return this.operatorControl.value === FILTER_OPERATORS.BETWEEN.value;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value,\n endDate: null\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.DATE) {\n if (value.operator && value.operator === FILTER_OPERATORS.BETWEEN.value) {\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: FILTER_OPERATORS.BETWEEN.value,\n endDate: value.endDate instanceof Date ? value.endDate : null\n }, { emitEvent: false });\n } else {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: operator,\n endDate: null\n }, { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n const operator = this.operatorControl.value;\n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n\n this.onChange({\n value: startDate,\n endDate: endDate,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n } else {\n const value = this.valueControl.value;\n\n this.onChange({\n value: value,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n }\n }\n}","<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n <div class=\"filter-operator-anchor\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n </div>\n\n @if (isBetweenMode()) {\n <div class=\"date-range\">\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n\n <yuv-datepicker\n [formControl]=\"endDateControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n </div>\n } @else {\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n }\n</div>\n","import { Component, computed, input, output, OnInit, signal } from '@angular/core';\nimport { Column, Pagination, TableFilters, FilterValue, APP_ICONS, FILTER_TYPES, FILTER_OPERATORS } from '../../bpm-management.schema';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TextFilterComponent, SelectFilterComponent, DateFilterComponent, NumberFilterComponent } from '../filter';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'ymbpm-table',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n TranslatePipe,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatMenuModule,\n MatDividerModule,\n FormsModule,\n ReactiveFormsModule,\n TextFilterComponent,\n DateFilterComponent,\n SelectFilterComponent,\n NumberFilterComponent,\n MatProgressBar\n],\n templateUrl: './bpm-table.component.html',\n styleUrls: ['./bpm-table.component.css']\n})\nexport class BpmTableComponent implements OnInit {\n columns = input<Column[]>([]);\n dataSource = input<any[]>([]);\n enableFilters = input<boolean>(false);\n pagination = input<Pagination>();\n selectedRow = input<any>();\n busy = input<boolean>(false);\n\n displayedColumns = computed(() => this.columns().map(c => c.name));\n \n filters = signal<TableFilters>({});\n filterControls: { [key: string]: FormControl<FilterValue | null> } = {};\n\n pageSizes = [10, 25, 50, 100];\n DEFAULT_PAGE_SIZE = 50;\n\n filtersChange = output<TableFilters>();\n pageChange = output<PageEvent>();\n rowSelected = output<any>();\n\n icons = {\n ...APP_ICONS,\n };\n\n FILTER_TYPES = FILTER_TYPES;\n\n private isClearing = false;\n\n ngOnInit(): void {\n this.initializeFilterControls();\n }\n\n getFilterControl(columnName: string): FormControl<FilterValue | null> {\n return this.filterControls[columnName];\n }\n\n clearColumnFilter(columnName: string): void {\n const control = this.filterControls[columnName];\n if (control) {\n control.setValue(null);\n }\n\n const currentFilters = { ...this.filters() };\n delete currentFilters[columnName];\n\n this.filters.set(currentFilters);\n this.filtersChange.emit(currentFilters);\n }\n\n clearAllFilters(): void {\n if (Object.keys(this.filters()).length === 0) {\n return;\n }\n\n this.isClearing = true; \n\n Object.keys(this.filterControls).forEach(columnName => {\n const control = this.filterControls[columnName];\n if (control) {\n control.setValue(null);\n }\n });\n\n this.isClearing = false; \n this.filters.set({});\n this.filtersChange.emit({});\n }\n\n hasActiveFilter(columnName: string): boolean {\n return this.filters()[columnName] !== undefined;\n }\n\n isSelected(row: any): boolean {\n return this.selectedRow()?.id === row?.id;\n }\n\n selectRow(row: any): void {\n this.rowSelected.emit(row);\n }\n\n private initializeFilterControls(): void {\n this.columns().forEach(column => {\n if (column.filter) {\n this.filterControls[column.name] = new FormControl<FilterValue | null>(null);\n \n this.filterControls[column.name].valueChanges.subscribe(filterValue => {\n if (filterValue) {\n this.updateFilter(column.name, filterValue);\n }\n });\n }\n });\n }\n\n private updateFilter(columnName: string, filterValue: FilterValue | null): void {\n if (this.isClearing) return;\n\n const currentFilters = { ...this.filters() };\n \n if (!filterValue) {\n delete currentFilters[columnName];\n return;\n }\n\n if (filterValue.type === FILTER_TYPES.DATE && filterValue.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (filterValue.value !== null || filterValue.endDate !== null) {\n currentFilters[columnName] = filterValue;\n } else {\n delete currentFilters[columnName];\n }\n } else {\n if (filterValue.value !== null) {\n currentFilters[columnName] = filterValue;\n } else {\n delete currentFilters[columnName];\n }\n }\n \n this.filters.set(currentFilters);\n this.filtersChange.emit(currentFilters);\n }\n}\n","<div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource()\" class=\"bpm-table mat-elevation-z8\">\n @for (column of columns(); track column.name) {\n <ng-container [matColumnDef]=column.name>\n <!-- Header cell -->\n <th mat-header-cell *matHeaderCellDef>\n <div class=\"header-cell-content\">\n <div class=\"header-title\">\n <span>{{column.displayName | translate}}</span>\n @if (enableFilters() && column.filter && hasActiveFilter(column.name)) {\n <div class=\"header-actions\">\n <mat-icon class=\"filter-active-icon\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.activeFilter' | translate\">{{icons.filterActive}}</mat-icon>\n <button mat-icon-button \n class=\"filter-clear-btn\"\n (click)=\"clearColumnFilter(column.name)\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.clearOne' | translate\">\n <mat-icon>{{icons.cancel}}</mat-icon>\n </button>\n </div>\n }\n </div>\n \n <!-- Filter inputs -->\n @if (enableFilters() && column.filter && getFilterControl(column.name)) {\n <div class=\"filter-container\">\n @switch (column.filter.type) {\n @case (FILTER_TYPES.TEXT) {\n <ymbpm-text-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-text-filter>\n }\n @case (FILTER_TYPES.NUMBER) {\n <ymbpm-number-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-number-filter>\n }\n @case (FILTER_TYPES.SELECT) {\n <ymbpm-select-filter [formControl]=\"getFilterControl(column.name)\" [options]=\"column.filter.options || []\" [enableMultiselect]=\"column.filter.enableMultiselect || false\"></ymbpm-select-filter>\n }\n @case (FILTER_TYPES.DATE) {\n <ymbpm-date-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-date-filter>\n }\n }\n </div>\n }\n \n </div>\n </th>\n \n <!-- Data cells -->\n @if (column.template) {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ $implicit: element }\"></ng-container>\n </div>\n </td>\n } @else {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n {{element[column.name]}}\n </div>\n </td>\n }\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns();\" \n (click)=\"selectRow(row)\" \n [class.selected-row]=\"isSelected(row)\" \n class=\"process-row\">\n </tr>\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" [attr.colspan]=\"displayedColumns().length\">\n <p class=\"no-items-label\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n </td>\n </tr>\n</table>\n</div>\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n<div class=\"footer\">\n <mat-paginator class=\"paginator\" [length]=\"pagination()?.total\" [pageSize]=\"pagination()?.pageSize\" [pageSizeOptions]=\"pageSizes\" aria-label=\"Select page\"\n (page)=\"pageChange.emit($event)\"></mat-paginator>\n</div>","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@yuuvis/client-core';\nimport { formatDateTime } from './bpm-management.schema';\n\n@Pipe({\n name: 'formatDateTime',\n standalone: true\n})\nexport class FormatDateTimePipe implements PipeTransform {\n readonly #translateService = inject(TranslateService);\n\n transform(value: string | null): string {\n if (!value) return '';\n return formatDateTime(value, this.#translateService.currentLang);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, DeploymentInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\n\n@Component({\n selector: 'ymbpm-deployment-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './deployment-summary.component.html',\n styleUrl: './deployment-summary.component.css'\n})\nexport class DeploymentSummaryComponent { \n deployment = input<DeploymentInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.category' | translate }}</td>\n <td class=\"field-value\">{{ deployment()?.category }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.deploymentTime' | translate }}</td>\n <td class=\"field-value\">{{ (deployment()?.deploymentTime ?? null) | formatDateTime }}</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"resources-section\">\n <h3 class=\"resources-title\">{{ 'yuv.app.bpm-management.deployment.details.resources' | translate }}</h3>\n\n <p *ngIf=\"!deployment()?.resources || deployment()?.resources?.length === 0\" class=\"no-resources-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n </p>\n <table class=\"resources-table\" *ngIf=\"deployment()?.resources && deployment()?.resources?.length! > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.deployment.details.resourceMediaType' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (resource of deployment()!.resources; track resource.id) {\n <tr>\n <td class=\"resource-id\">{{ resource.id }}</td>\n <td class=\"resource-mediatype\">{{ resource.mediaType }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, ProcessDefinitionInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'ymbpm-deployment-process-definitions',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n TranslatePipe\n ],\n templateUrl: './deployment-process-definitions.component.html',\n styleUrls: ['./deployment-process-definitions.component.css']\n})\nexport class DeploymentDefinitionsComponent {\n definitions = input<ProcessDefinitionInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!definitions() || definitions().length === 0\" class=\"no-definitions-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<table class=\"definitions-table\" *ngIf=\"definitions() && definitions().length > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.key' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (definition of definitions(); track definition) {\n <tr>\n <td class=\"definition-id\">{{ definition.id }}</td>\n <td class=\"definition-key\">{{ definition.key }}</td>\n </tr>\n }\n </tbody>\n</table>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, DeploymentInstance, FILTER_TYPES } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { catchError, forkJoin, of } from 'rxjs';\nimport { DeploymentSummaryComponent } from './deployment-summary/deployment-summary.component';\nimport { DeploymentDefinitionsComponent } from './deployment-process-definitions/deployment-process-definitions.component';\nimport { ProcessDefinitionFilter } from '../../bpm-filter';\n\n@Component({\n selector: 'ymbpm-deployment-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n DeploymentSummaryComponent,\n DeploymentDefinitionsComponent,\n MatTabsModule,\n],\n templateUrl: './deployment-details.component.html',\n styleUrl: './deployment-details.component.css'\n})\nexport class DeploymentDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n deploymentId = input<string | undefined>();\n deployment = signal<DeploymentInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadDeploymentDetails();\n });\n }\n\n loadDeploymentDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.deploymentId();\n if (id) {\n\n const definitionsFilter = new ProcessDefinitionFilter();\n definitionsFilter.deploymentId = { value: id, type: FILTER_TYPES.TEXT };\n definitionsFilter.latest = { value: false, type: FILTER_TYPES.CHECKBOX };\n\n forkJoin({\n deployment: this.#bpmAdminService.getDeployment(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployment details:', err);\n return of(null);\n })\n ),\n resources: this.#bpmAdminService.getDeploymentResources(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployment resources:', err);\n return of(null);\n })\n ),\n definitions: this.#bpmAdminService.getProcessDefinitions(0, 0, definitionsFilter).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployments process definitions:', err);\n return of(null);\n })\n )\n }).subscribe(({ deployment, resources, definitions }) => {\n this.deployment.set(deployment || undefined);\n if (deployment) {\n deployment.resources = resources || [];\n deployment.definitions = definitions.objects || [];\n }\n this.loading.set(false);\n });\n\n } else {\n this.deployment.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (deployment()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-deployment-summary [deployment]=\"deployment()\"></ymbpm-deployment-summary>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.processdefinitions' | translate\">\n <ymbpm-deployment-process-definitions [definitions]=\"deployment()?.definitions ?? []\"></ymbpm-deployment-process-definitions>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject, OnInit, signal, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, DeploymentInstance, DeploymentsSearchResponse, formatDateTime, TableFilters, FILTER_OPERATORS, FILTER_TYPES } from '../../../bpm-management.schema';\nimport { Logger, TranslateService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport { DeploymentFilter } from '../../../bpm-filter';\nimport { DeploymentDetailsComponent } from '../../../components/deployment-details/deployment-details.component';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-deployments-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n MatCheckboxModule,\n DeploymentDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './deployments-page.component.html',\n styleUrl: './deployments-page.component.scss'\n})\nexport class YuvDeploymentsPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n\n @ViewChild(DeploymentDetailsComponent) deploymentDetailsComponent?: DeploymentDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'category', \n displayName: 'yuv.app.bpm-management.header.category',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'deploymentTime', \n displayName: 'yuv.app.bpm-management.header.deploymentTime'\n }\n ];\n }\n\n // Filter state\n filter: DeploymentFilter = new DeploymentFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<DeploymentInstance[]>([]);\n selection = signal(new SelectionModel<DeploymentInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadDeploymentsList();\n }\n\n refresh() {\n this.#loadDeploymentsList();\n this.deploymentDetailsComponent?.loadDeploymentDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadDeploymentsList()\n }\n\n #loadDeploymentsList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getDeployments(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : DeploymentsSearchResponse) => {\n const formattedDeploymentObjects = response.objects.map(deployment => ({\n ...deployment,\n deploymentTime: deployment.deploymentTime ? formatDateTime(deployment.deploymentTime, this.#translateService.currentLang) : deployment.deploymentTime,\n }));\n\n this.dataSource.set(formattedDeploymentObjects);\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch deployments', e);\n this.busy.set(false);\n },\n complete: () => {\n // const selected = this.selection().hasValue() ? this.selection().selected[0] : undefined;\n // if (selected) {\n // if (this.dataSource().some(u => u.id === selected.id)) {\n // const updatedSelected = this.dataSource().find(u => u.id === selected.id);\n // this.select(updatedSelected);\n // } else {\n // this.#userManagementService.getUserDetails(selected.id).subscribe({\n // next: (user) => {\n // this.select(user);\n // },\n // error: (e) => {\n // this.#logger.error(`Failed to fetch data for selected user with id '${selected.id}'. Deselecting user...`, e);\n // this.deselect();\n // }\n // });\n // }\n // this.refreshUserDetails();\n // } else {\n // this.deselect();\n // }\n this.busy.set(false);\n },\n });\n }\n \n onRowSelected(deployment: unknown): void {\n this.selection().select(deployment as DeploymentInstance);\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = DeploymentFilter.fromAgFilterModel(filters);\n this.pagination.page = 0; // Reset to first page when filtering\n this.#loadDeploymentsList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\"\n [columns]=\"displayedColumns\"\n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDeployment = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDeployment ? 'inventory_2' : undefined\" [title]=\"selectedDeployment ? (selectedDeployment.name || '<unnamed>') : ''\" [subtitle]=\"selectedDeployment ? selectedDeployment.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDeployment) {\n <ymbpm-deployment-details [deploymentId]=\"selectedDeployment?.id\"></ymbpm-deployment-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, ProcessDefinitionInstance, ProcessDefinitionStatus } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'ymbpm-process-definition-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCheckboxModule,\n TranslatePipe\n ],\n templateUrl: './process-definition-summary.component.html',\n styleUrl: './process-definition-summary.component.css'\n})\nexport class ProcessDefinitionSummaryComponent {\n readonly #translateService = inject(TranslateService);\n \n processDefinition = input<ProcessDefinitionInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n\n processStatusTemplate = (processDefinition: ProcessDefinitionInstance | undefined): string => {\n if (!processDefinition) return '';\n if (processDefinition.suspended) {\n return `<span class=\"yuv-bpmn-status suspended\">${this.#translateService.instant(ProcessDefinitionStatus.SUSPENDED.label)}</span>`;\n } else {\n return `<span class=\"yuv-bpmn-status running\">${this.#translateService.instant(ProcessDefinitionStatus.ACTIVE.label)}</span>`;\n }\n }\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.deploymentId' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.deploymentId }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\" [innerHTML]=\"processStatusTemplate(processDefinition())\"></td>\n </tr>\n\n <tr> \n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.description' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.description || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.key' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.key || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.category' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.category || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.version' | translate }}</td>\n <td class=\"field-value\">{{ (processDefinition()?.version || '-') }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.processdefinitions.scope.global' | translate }}</td>\n <td class=\"field-value\">\n <mat-checkbox class=\"global-checkbox\" [disabled]=\"true\" [checked]=\"processDefinition()?.global\"></mat-checkbox>\n </td>\n </tr>\n\n <tr class=\"sub-row\">\n <td class=\"field-label\">\n {{'yuv.app.bpm-management.processdefinitions.details.processes'|translate}}\n </td>\n <td class=\"field-value\">\n {{(processDefinition()?.statistics?.processInstanceCount?.active || 0 )+ (processDefinition()?.statistics?.processInstanceCount?.suspended || 0) + (processDefinition()?.statistics?.processInstanceCount?.completed || 0)}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.running'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.active || 0}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.suspended'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.suspended || 0}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.completed'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.completed || 0}}\n </td>\n </tr>\n </tbody>\n</table>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessDefinitionInstance, APP_ICONS } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { catchError, of } from 'rxjs';\nimport { ProcessDefinitionSummaryComponent } from './process-definition-summary/process-definition-summary.component';\n\n@Component({\n selector: 'ymbpm-process-definition-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n ProcessDefinitionSummaryComponent,\n MatTabsModule,\n],\n templateUrl: './process-definition-details.component.html',\n styleUrl: './process-definition-details.component.css'\n})\nexport class ProcessDefinitionDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n processDefinitionId = input<string | undefined>();\n processDefinition = signal<ProcessDefinitionInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadProcessDefinitionDetails();\n });\n }\n\n loadProcessDefinitionDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.processDefinitionId();\n if (id) {\n this.#bpmAdminService.getProcessDefinition(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process definition details:', err);\n this.loading.set(false);\n return of(null);\n })\n ).subscribe(processDefinition => {\n this.processDefinition.set(processDefinition || undefined);\n this.loading.set(false);\n });\n\n } else {\n this.processDefinition.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (processDefinition()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-process-definition-summary [processDefinition]=\"processDefinition()\"></ymbpm-process-definition-summary>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject, ViewChild } from '@angular/core';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { MatLabel } from '@angular/material/input';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-checkbox-overlay',\n standalone: true,\n imports: [\n YmtButtonDirective,\n DialogComponent,\n TranslatePipe,\n MatCheckbox,\n MatLabel\n],\n templateUrl: './checkbox-overlay.component.html',\n styleUrl: './checkbox-overlay.component.scss'\n})\nexport class CheckboxOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<CheckboxOverlayComponent>);\n readonly inputData = inject(MAT_DIALOG_DATA);\n\n @ViewChild('checkbox',) checkbox!: MatCheckbox;\n\n confirm() {\n this.#dialogRef.close(this.checkbox.checked);\n }\n\n close() {\n this.#dialogRef.close();\n }\n}\n","<yuv-dialog [headertitel]=\"this.inputData.title ?? ''\" []>\n <main class=\"yuv-dialog-content\">\n <mat-label>{{ this.inputData.message !== undefined ? this.inputData.message : '' }}</mat-label>\n <mat-checkbox #checkbox [checked]=\"false\">{{ this.inputData.checkboxMessage !== undefined ? this.inputData.checkboxMessage : '' }}</mat-checkbox>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\">\n {{ this.inputData.confirmBtnLabel !== undefined ? this.inputData.confirmBtnLabel : ('yuv.app.bpm-management.action.confirm.label' | translate) }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject, signal, ViewChild, TemplateRef, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, ProcessDefinitionInstance, ProcessDefinitionSearchResponse, TableFilters, FILTER_OPERATORS, FILTER_TYPES, ProcessDefinitionStatus, ProcessDefinitionScope, ProcessInstance } from '../../../bpm-management.schema';\nimport { Logger, NotificationService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { ProcessDefinitionFilter } from '../../../bpm-filter';\nimport { ProcessDefinitionDetailsComponent } from '../../../components/process-definition-details/process-definition-details.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CheckboxOverlayComponent } from '../../../components/overlays/checkbox-overlay/checkbox-overlay.component';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-processdefinitions-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n MatCheckbox,\n ProcessDefinitionDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n],\n templateUrl: './processdefinitions-page.component.html',\n styleUrl: './processdefinitions-page.component.scss'\n})\nexport class YuvProcessDefinitionsPageComponent implements OnInit {\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n readonly #translateService = inject(TranslateService);\n readonly #notificationService = inject(NotificationService);\n readonly #dialog = inject(MatDialog);\n\n @ViewChild(ProcessDefinitionDetailsComponent) processDefinitionDetailsComponent?: ProcessDefinitionDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('showOnlyLatestCheckbox',) showOnlyLatestCheckbox!: MatCheckbox;\n @ViewChild('globalTemplate', { static: true }) globalTemplate!: TemplateRef<unknown>;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n\n ProcessDefinitionScope = ProcessDefinitionScope;\n ProcessDefinitionStatus = ProcessDefinitionStatus;\n \n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'global', displayName: '',\n template: this.globalTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n enableMultiselect: false,\n options: [ProcessDefinitionScope.GLOBAL, ProcessDefinitionScope.TENANT]\n }\n },\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS],\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [ProcessDefinitionStatus.ACTIVE, ProcessDefinitionStatus.SUSPENDED]\n }\n },\n { \n name: 'category', \n displayName: 'yuv.app.bpm-management.header.category',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'version', \n displayName: 'yuv.app.bpm-management.header.version',\n filter: {\n type: FILTER_TYPES.NUMBER,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'key', \n displayName: 'yuv.app.bpm-management.header.key',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n ];\n }\n\n // Filter state\n tableFilter: ProcessDefinitionFilter = new ProcessDefinitionFilter;\n enableTableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<ProcessDefinitionInstance[]>([]);\n selection = signal(new SelectionModel<ProcessDefinitionInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadProcessDefinitionList();\n }\n\n refresh() {\n this.#loadProcessDefinitionList();\n this.processDefinitionDetailsComponent?.loadProcessDefinitionDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadProcessDefinitionList();\n }\n\n #loadProcessDefinitionList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getProcessDefinitions(this.pagination.page, this.pagination.pageSize, { ...this.tableFilter, latest: { value: this.showOnlyLatestCheckbox?.checked ?? true, type: FILTER_TYPES.CHECKBOX } }).subscribe(\n {\n next: (response : ProcessDefinitionSearchResponse) => {\n this.dataSource.set(response.objects);\n\n const selectedId = this.selection().selected.at(0)?.id;\n if (selectedId) {\n const updatedSelected = this.dataSource().find(pd => pd.id === selectedId);\n if (updatedSelected) {\n this.selection().select(updatedSelected);\n this.#updateActions(updatedSelected);\n }\n }\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: Error) => {\n this.#logger.error('Failed to fetch process definitions', e);\n this.busy.set(false);\n },\n complete: () => {\n // const selected = this.selection().hasValue() ? this.selection().selected[0] : undefined;\n // if (selected) {\n // if (this.dataSource().some(u => u.id === selected.id)) {\n // const updatedSelected = this.dataSource().find(u => u.id === selected.id);\n // this.select(updatedSelected);\n // } else {\n // this.#userManagementService.getUserDetails(selected.id).subscribe({\n // next: (user) => {\n // this.select(user);\n // },\n // error: (e) => {\n // this.#logger.error(`Failed to fetch data for selected user with id '${selected.id}'. Deselecting user...`, e);\n // this.deselect();\n // }\n // });\n // }\n // this.refreshUserDetails();\n // } else {\n // this.deselect();\n // }\n this.busy.set(false);\n },\n });\n }\n\n onTableFiltersChange(filters: TableFilters | null): void {\n if (filters != null) {\n this.tableFilter = ProcessDefinitionFilter.fromAgFilterModel(filters);\n }\n this.pagination.page = 0;\n this.#loadProcessDefinitionList();\n }\n\n hasActiveTableFilters(): boolean {\n return this.tableFilter ? Object.keys(this.tableFilter).length > 0 : false;\n }\n\n onRowSelected(processDefinition: unknown): void {\n this.selection().select(processDefinition as ProcessDefinitionInstance);\n this.#updateActions(this.selection().selected.at(0));\n\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n #updateActions(obj: ProcessDefinitionInstance | undefined) {\n this.actions = obj\n ? [ \n {\n id: 'yuv.app.bpm-management.processdefinitions.actions.activate',\n icon: APP_ICONS.activate,\n label: this.#translateService.instant(\n 'yuv.app.bpm-management.processdefinitions.actions.activate.label'\n ),\n disabled: obj.suspended === false || obj.global === true,\n callback: () => this.executeAction(\"activate\"),\n },\n {\n id: 'yuv.app.bpm-management.processdefinitions.actions.suspend',\n icon: APP_ICONS.suspend,\n label: this.#translateService.instant(\n 'yuv.app.bpm-management.processdefinitions.actions.suspend.label'\n ),\n disabled: obj.suspended === true || obj.global === true,\n callback: () => this.executeAction(\"suspend\"),\n }\n ]\n : [];\n }\n\n executeAction(action: string) {\n const processDefinition = this.selection().selected.at(0);\n if (!processDefinition) {\n return;\n }\n\n this.#dialog.open(CheckboxOverlayComponent, {\n width: '600px',\n maxWidth: '90vw',\n data: {\n title: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.label'),\n message: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.confirm.message'),\n checkboxMessage: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.activateorsuspend.confirm.includeProcesses.label'),\n confirmBtnLabel: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.confirm.button.label')\n },\n }).afterClosed().subscribe((result: boolean | undefined)=>{\n if (result !== undefined) {\n this.busy.set(true);\n this.#bpmAdminSerice.executeProcessDefinitionAction(processDefinition.id, action, result).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to ${action} process definition`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.error')\n );\n }\n });\n }\n });\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableTableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onTableFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDefinition = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDefinition ? 'flowchart' : undefined\" [title]=\"selectedDefinition ? (selectedDefinition.name || '<unnamed>') : ''\" [subtitle]=\"selectedDefinition ? selectedDefinition.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDefinition) {\n <ymbpm-process-definition-details [processDefinitionId]=\"selectedDefinition?.id\"></ymbpm-process-definition-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"filter-actions\"> \n <mat-checkbox #showOnlyLatestCheckbox (change)=\"this.onTableFiltersChange(null)\" [checked]=\"true\">{{'yuv.app.bpm-management.processdefinitions.filter.onlyLatest' | translate}}</mat-checkbox>\n </div>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableTableFilters\" [disabled]=\"!hasActiveTableFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #globalTemplate let-processDefinition>\n @if (processDefinition.global) {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.GLOBAL.label | translate\">{{icons[ProcessDefinitionScope.GLOBAL.icon]}}</mat-icon>\n } @else {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.TENANT.label | translate\">{{icons[ProcessDefinitionScope.TENANT.icon]}}</mat-icon>\n }\n</ng-template>\n\n<ng-template #statusTemplate let-processDefinition>\n @if (processDefinition.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessDefinitionStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessDefinitionStatus.ACTIVE.label | translate}}</span>\n }\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessInstance, APP_ICONS, ProcessStatus } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\n\n@Component({\n selector: 'ymbpm-process-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './process-summary.component.html',\n styleUrl: './process-summary.component.css'\n})\nexport class ProcessSummaryComponent {\n readonly #translateService = inject(TranslateService);\n \n process = input<ProcessInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n\n processStatusTemplate = (process: ProcessInstance | undefined): string => {\n if (!process) return '';\n if (process.endTime) {\n return `<span class=\"yuv-bpmn-status completed\">${this.#translateService.instant(ProcessStatus.COMPLETED.label)}</span>`;\n } else if (process.suspended) {\n return `<span class=\"yuv-bpmn-status suspended\">${this.#translateService.instant(ProcessStatus.SUSPENDED.label)}</span>`;\n } else {\n return `<span class=\"yuv-bpmn-status running\">${this.#translateService.instant(ProcessStatus.RUNNING.label)}</span>`;\n }\n }\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.processDefinitionId' | translate }}</td>\n <td class=\"field-value\">{{ process()?.processDefinitionId }}</td>\n </tr>\n \n @if (process()?.processDefinitionDescription) {\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.process.details.processDefinitionDescription' | translate }}</td>\n <td class=\"field-value\">{{ process()?.processDefinitionDescription }}</td>\n </tr>\n }\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\" [innerHTML]=\"processStatusTemplate(process())\"></td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.businessKey' | translate }}</td>\n <td class=\"field-value\">{{ process()?.businessKey || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.startedBy' | translate }}</td>\n <td class=\"field-value\">{{ process()?.startUserId || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.startTime' | translate }}</td>\n <td class=\"field-value\">{{ ((process()?.startTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.endTime' | translate }}</td>\n <td class=\"field-value\">{{ ((process()?.endTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"variables-section\">\n <h3 class=\"variables-title\">{{ 'yuv.app.bpm-management.details.variables' | translate }}</h3>\n\n <p *ngIf=\"!process()?.variables || process()?.variables?.length === 0\" class=\"no-variables-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n </p>\n <table class=\"variables-table\" *ngIf=\"process()?.variables && process()?.variables?.length! > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.details.variableName' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableType' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableValue' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (variable of process()!.variables; track variable.name) {\n <tr>\n <td class=\"variable-name\">{{ variable.name }}</td>\n <td class=\"variable-type\">{{ variable.type }}</td>\n <td class=\"variable-value\">{{ variable.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance } from '../../../bpm-management.schema';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'ymbpm-process-tasks',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './process-tasks.component.html',\n styleUrl: './process-tasks.component.css'\n})\nexport class ProcessTasksComponent {\n tasks = input<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!tasks() || tasks().length === 0\" class=\"no-tasks-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<table class=\"tasks-table\" *ngIf=\"tasks() && tasks().length > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.name' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.assignee' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.owner' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.createTime' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.endTime' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (task of tasks(); track task) {\n <tr>\n <td class=\"task-id\">{{ task.id }}</td>\n <td class=\"task-name\">{{ task.name }}</td>\n <td class=\"task-assignee\">{{ task.assignee }}</td>\n <td class=\"task-owner\">{{ task.owner }}</td>\n <td class=\"task-createTime\">{{ task.createTime | formatDateTime }}</td>\n <td class=\"task-endTime\">{{ task.endTime | formatDateTime }}</td>\n </tr>\n }\n </tbody>\n </table>","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\n\n@Component({\n selector: 'ymbpm-process-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './process-history.component.html',\n styleUrl: './process-history.component.css'\n})\nexport class ProcessHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n formatDateTime = formatDateTime;\n\n tasks = input<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!tasks() || tasks().length === 0\" class=\"no-tasks-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<div class=\"process-history-container\">\n <div class=\"timeline-container\" *ngIf=\"tasks() && tasks().length > 0\" [ngClass]=\"{singleEntry: tasks().length === 1}\">\n <div class=\"timeline-item\" *ngFor=\"let task of tasks()\">\n <div class=\"timeline-datetime\" [matTooltip]=\"'yuv.app.bpm-management.header.startTime' | translate\">\n <div class=\"date\">{{ formatDateTime(task.createTime, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(task.createTime, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"task-card\">\n <div class=\"task-title\" [matTooltip]=\"'yuv.app.bpm-management.header.name' | translate\">{{ task.name || '<unnamed>' }}</div>\n <div class=\"task-details\">\n <div class=\"task-assignee\" [matTooltip]=\"'yuv.app.bpm-management.header.assignee' | translate\">\n <mat-icon>person</mat-icon>\n <span>{{ task.assignee || '-'}}</span>\n </div>\n <div class=\"task-owner\" *ngIf=\"task.owner\" [matTooltip]=\"'yuv.app.bpm-management.header.owner' | translate\">\n <mat-icon>supervisor_account</mat-icon>\n <span>{{ task.owner }}</span>\n </div>\n <div class=\"task-endtime\" *ngIf=\"task.endTime\" [matTooltip]=\"'yuv.app.bpm-management.header.endTime' | translate\">\n <mat-icon>event_available</mat-icon>\n <span>{{ task.endTime | formatDateTime }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessInstance, APP_ICONS, TaskInstance } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { ProcessSummaryComponent } from './process-summary/process-summary.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ProcessTasksComponent } from './process-tasks/process-tasks.component';\nimport { ProcessHistoryComponent } from './process-history/process-history.component';\nimport { catchError, forkJoin, of } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-process-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n ProcessSummaryComponent,\n ProcessTasksComponent,\n ProcessHistoryComponent,\n MatTabsModule\n],\n templateUrl: './process-details.component.html',\n styleUrl: './process-details.component.css'\n})\nexport class ProcessDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n processInstanceId = input<string | undefined>();\n process = signal<ProcessInstance | undefined>(undefined);\n tasks = signal<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadProcessDetails();\n });\n }\n\n loadProcessDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.processInstanceId();\n if (id) {\n forkJoin({\n process: this.#bpmAdminService.getProcess(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process details:', err);\n return of(null);\n })\n ),\n history: this.#bpmAdminService.getProcessHistory(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process history:', err);\n return of(null);\n })\n )\n }).subscribe(({ process, history }) => {\n this.process.set(process || undefined);\n this.tasks.set(history?.tasks || []);\n this.loading.set(false);\n });\n\n } else {\n this.process.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (process() && tasks()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-process-summary [process]=\"process()\"></ymbpm-process-summary>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.tasks' | translate\">\n <ymbpm-process-tasks [tasks]=\"tasks()\"></ymbpm-process-tasks>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.history' | translate\">\n <ymbpm-process-history [tasks]=\"tasks()\"></ymbpm-process-history>\n </mat-tab>\n </mat-tab-group>\n </section>\n}","import { Component, inject, OnInit, signal, ViewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, ProcessesSearchResponse, ProcessInstance, Column, Pagination, TableFilters, formatDateTime, FILTER_TYPES, FILTER_OPERATORS, ProcessStatus } from '../../../bpm-management.schema';\nimport { Logger, TranslateService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { ProcessDetailsComponent } from '../../../components/process-details/process-details.component';\nimport { ProcessFilter } from '../../../bpm-filter';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-processes-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n ProcessDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './processes-page.component.html',\n styleUrl: './processes-page.component.scss'\n})\nexport class YuvProcessesPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n\n @ViewChild(ProcessDetailsComponent) processDetailsComponent?: ProcessDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n\n ProcessStatus = ProcessStatus;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'processDefinitionId', \n displayName: 'yuv.app.bpm-management.header.processDefinitionId',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [ProcessStatus.RUNNING_SUSPENDED, ProcessStatus.COMPLETED]\n }\n },\n { \n name: 'startUserId', \n displayName: 'yuv.app.bpm-management.header.startedBy',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'startTime', \n displayName: 'yuv.app.bpm-management.header.startTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'endTime', \n displayName: 'yuv.app.bpm-management.header.endTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'businessKey', \n displayName: 'yuv.app.bpm-management.header.businessKey',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n ];\n }\n\n // Filter state\n filter: ProcessFilter = new ProcessFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<ProcessInstance[]>([]);\n selection = signal(new SelectionModel<ProcessInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadProcessList();\n }\n\n refresh() {\n this.#loadProcessList();\n this.processDetailsComponent?.loadProcessDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadProcessList()\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = ProcessFilter.fromAgFilterModel(filters, this.#translateService);\n this.pagination.page = 0;\n this.#loadProcessList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n\n #loadProcessList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getProcesses(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : ProcessesSearchResponse) => {\n\n const formattedProcessObjects = response.objects.map(process => ({\n ...process,\n startTime: process.startTime ? formatDateTime(process.startTime, this.#translateService.currentLang) : process.startTime,\n endTime: process.endTime ? formatDateTime(process.endTime, this.#translateService.currentLang) : process.endTime\n }));\n\n this.dataSource.set(formattedProcessObjects);\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch processes', e);\n this.busy.set(false);\n },\n complete: () => {\n this.busy.set(false);\n },\n });\n }\n\n onRowSelected(process: unknown): void {\n this.selection().select(process as ProcessInstance);\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedProcess = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedProcess ? 'timeline' : undefined\" [title]=\"selectedProcess ? (selectedProcess.name || '<unnamed>') : ''\" [subtitle]=\"selectedProcess ? selectedProcess.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedProcess) {\n <ymbpm-process-details [processInstanceId]=\"selectedProcess?.id\"></ymbpm-process-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-process>\n @if (process.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ProcessStatus.COMPLETED.label | translate}}</span>\n } @else if (process.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\n\n@Component({\n selector: 'ymbpm-task-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './task-summary.component.html',\n styleUrl: './task-summary.component.scss'\n})\nexport class TaskSummaryComponent {\n \n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.processInstanceId' | translate }}</td>\n <td class=\"field-value\">{{ task()?.processInstanceId }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.processInstanceName' | translate }}</td>\n <td class=\"field-value\">{{ task()?.processInstanceName || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\">\n @if (task()?.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ 'yuv.app.bpm-management.status.completed' | translate }}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ 'yuv.app.bpm-management.status.running' | translate }}</span>\n }\n @if (task()?.delegationState) {\n @if (task()?.delegationState === 'pending') {\n <span class=\"yuv-bpmn-status running\">\n <mat-icon>{{ icons.delegated }}</mat-icon>\n {{ 'yuv.app.bpm-management.task.delegationState.pending' | translate }}\n </span>\n } @else {\n <span class=\"yuv-bpmn-status completed\">\n <mat-icon>{{ icons.resolved }}</mat-icon>\n {{ 'yuv.app.bpm-management.task.delegationState.resolved' | translate }}\n </span>\n }\n }\n </td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.description' | translate }}</td>\n <td class=\"field-value\">{{ task()?.description || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}</td>\n <td class=\"field-value\">{{ task()?.assignee || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}</td>\n <td class=\"field-value\">{{ task()?.owner || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.taskDefinitionKey' | translate }}</td>\n <td class=\"field-value\">{{ task()?.taskDefinitionKey }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.formKey' | translate }}</td>\n <td class=\"field-value\">{{ task()?.formKey || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.createTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.createTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.claimTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.claimTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.dueDate' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.dueDate ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.endTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.endTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n </tbody>\n</table>\n","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime, TaskAssignmentHistoryEntry } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ymbpm-editor-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe\n ],\n templateUrl: './editor-history.component.html',\n styleUrl: './editor-history.component.scss'\n})\nexport class EditorHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n formatDateTime = formatDateTime;\n\n icons = {\n ...APP_ICONS\n };\n\n get candidateUsers(): string[] {\n return this.task()?.identityLinks?.candidates?.users || [];\n }\n\n get candidateRoles(): string[] {\n return this.task()?.identityLinks?.candidates?.roles || [];\n }\n\n get assignmentHistory(): TaskAssignmentHistoryEntry[] {\n return this.task()?.identityLinks?.assignmentHistory || [];\n }\n\n getActionIcon(type: string, assignee?: string): string {\n switch (type) {\n case 'ASSIGNMENT':\n return assignee !== null ? 'person_add' : 'person_off';\n case 'DELEGATION':\n return this.icons.delegated;\n case 'RESOLVE':\n return this.icons.resolved;\n default:\n return 'info';\n }\n }\n\n getActionLabel(type: string, assignee?: string): string {\n if (type === 'ASSIGNMENT') {\n return assignee !== null ?\n 'yuv.app.bpm-management.task.details.actionType.assignment'\n : 'yuv.app.bpm-management.task.details.actionType.assignmentRemoved';\n }\n return `yuv.app.bpm-management.task.details.actionType.${type.toLowerCase()}`;\n }\n}\n","<div class=\"editor-history-container\">\n <!-- Candidate Users Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>person</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}\n </h3>\n @if (candidateUsers.length > 0) {\n <div class=\"candidates-list\">\n @for (user of candidateUsers; track user) {\n <span class=\"candidate-chip\">\n <mat-icon>person</mat-icon>\n {{ user }}\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateUsers' | translate }}</p>\n }\n </div>\n\n <!-- Candidate Roles Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>group</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}\n </h3>\n @if (candidateRoles.length > 0) {\n <div class=\"candidates-list\">\n @for (role of candidateRoles; track role) {\n <span class=\"candidate-chip\">\n <mat-icon>group</mat-icon>\n {{ role }}\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateRoles' | translate }}</p>\n }\n </div>\n\n <!-- Assignment History Section -->\n <div class=\"history-section\">\n <h3 class=\"section-title\">\n <mat-icon>history</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.assignmentHistory' | translate }}\n </h3>\n \n @if (assignmentHistory.length === 0) {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noAssignmentHistory' | translate }}</p>\n } @else {\n <div class=\"timeline-container\" [ngClass]=\"{singleEntry: assignmentHistory.length === 1}\">\n @for (entry of assignmentHistory; track entry.timestamp) {\n <div class=\"timeline-item\">\n <div class=\"timeline-datetime\">\n <div class=\"date\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"history-card\">\n <div class=\"action-header\">\n <mat-icon class=\"action-icon\">{{ getActionIcon(entry.type, entry.assignee) }}</mat-icon>\n <span class=\"action-label\">{{ getActionLabel(entry.type, entry.assignee) | translate }}</span>\n </div>\n @if (entry.assignee) {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}:</span>\n <span>{{ entry.assignee }}</span>\n </div>\n }\n @if (entry.owner && entry.type !== 'RESOLVE') {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}:</span>\n <span>{{ entry.owner }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, effect, inject, input, signal } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { TaskInstance } from '../../bpm-management.schema';\nimport { catchError, forkJoin, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TaskSummaryComponent } from './task-summary/task-summary.component';\nimport { EditorHistoryComponent } from './editor-history/editor-history.component';\n\n@Component({\n selector: 'ymbpm-task-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n MatTabsModule,\n TaskSummaryComponent,\n EditorHistoryComponent\n ],\n templateUrl: './task-details.component.html',\n styleUrl: './task-details.component.scss'\n})\nexport class TaskDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n\n taskId = input<string | undefined>();\n task = signal<TaskInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n constructor() {\n effect(() => {\n this.loadTaskDetails();\n });\n }\n\n loadTaskDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.taskId();\n if (id) {\n forkJoin({\n task: this.#bpmAdminService.getTask(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process details:', err);\n return of(null);\n })\n )\n }).subscribe(({ task }) => {\n this.task.set(task || undefined);\n this.loading.set(false);\n });\n\n } else {\n this.task.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (task()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab label=\"{{ 'yuv.app.bpm-management.tabs.summary' | translate }}\">\n <ymbpm-task-summary [task]=\"task()\"></ymbpm-task-summary>\n </mat-tab>\n <mat-tab label=\"{{ 'yuv.app.bpm-management.tabs.editorHistory' | translate }}\">\n <ymbpm-editor-history [task]=\"task()\"></ymbpm-editor-history>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms'\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-task-assign-overlay',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n standalone: true,\n templateUrl: './task-assign-overlay.component.html',\n styleUrl: './task-assign-overlay.component.css'\n})\nexport class TaskAssignOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskAssignOverlayComponent>);\n readonly data = inject(MAT_DIALOG_DATA);\n\n userControl = new FormControl('');\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const assignee = this.userControl.value;\n if (assignee && assignee.trim()) {\n this.#dialogRef.close(assignee.trim());\n }\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.assign.label' | translate\">\n <main >\n <mat-label>{{ 'yuv.app.bpm-management.task.actions.assign.assignee.label' | translate }}</mat-label>\n <yuv-organization [formControl]=\"userControl\" [excludeMe]='false' />\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\" [disabled]=\"this.userControl.touched && this.userControl.dirty\">\n {{ 'yuv.app.bpm-management.task.actions.assign.confirm' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\nexport interface TaskCandidatesOverlayData {\n currentUsers: string[];\n currentRoles: string[];\n}\n\nexport interface TaskCandidatesOverlayResult {\n users: string[];\n roles: string[];\n}\n\n@Component({\n selector: 'ymbpm-task-candidates-overlay',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n templateUrl: './task-candidates-overlay.component.html',\n styleUrl: './task-candidates-overlay.component.css'\n})\nexport class TaskCandidatesOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskCandidatesOverlayComponent>);\n readonly data: TaskCandidatesOverlayData = inject(MAT_DIALOG_DATA);\n\n readonly usersControl = new FormControl<string | string[] | null>(\n this.data.currentUsers?.length ? this.data.currentUsers : null\n );\n\n readonly rolesControl = new FormControl<string | string[] | null>(\n this.data.currentRoles?.length ? this.data.currentRoles : null\n );\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const usersValue = this.usersControl.value;\n const rolesValue = this.rolesControl.value;\n\n const result: TaskCandidatesOverlayResult = {\n users: Array.isArray(usersValue) ? usersValue.filter(Boolean) : usersValue ? [usersValue] : [],\n roles: Array.isArray(rolesValue) ? rolesValue.filter(Boolean) : rolesValue ? [rolesValue] : []\n };\n this.#dialogRef.close(result);\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.editCandidates.label' | translate\">\n <main>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}</label>\n <yuv-organization [formControl]=\"usersControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[user]']\" />\n </div>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}</label>\n <yuv-organization [formControl]=\"rolesControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[role]']\" />\n </div>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.cancel.label' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.confirm.label' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject, OnInit, signal, ViewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, TasksSearchResponse, TaskInstance, formatDateTime, TableFilters, FILTER_TYPES, FILTER_OPERATORS, TaskStatus } from '../../../bpm-management.schema';\nimport { Logger, TranslateService, NotificationService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { TaskFilter } from '../../../bpm-filter';\nimport { TaskDetailsComponent } from '../../../components/task-details/task-details.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmComponent } from '@yuuvis/client-components/common';\nimport { TaskAssignOverlayComponent } from '../../../components/overlays/task-assign-overlay/task-assign-overlay.component';\nimport { TaskCandidatesOverlayComponent, TaskCandidatesOverlayResult } from '../../../components/overlays/task-candidates-overlay/task-candidates-overlay.component';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-tasks-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n TaskDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './tasks-page.component.html',\n styleUrl: './tasks-page.component.scss'\n})\nexport class YuvTasksPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n readonly #dialog = inject(MatDialog);\n readonly #notificationService = inject(NotificationService);\n\n @ViewChild(TaskDetailsComponent) taskDetailsComponent?: TaskDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n \n TaskStatus = TaskStatus;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [TaskStatus.RUNNING, TaskStatus.COMPLETED]\n }\n },\n { \n name: 'assignee', \n displayName: 'yuv.app.bpm-management.header.assignee',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'owner', \n displayName: 'yuv.app.bpm-management.header.owner',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'createTime', \n displayName: 'yuv.app.bpm-management.header.createTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'endTime', \n displayName: 'yuv.app.bpm-management.header.endTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n }\n ];\n }\n\n // Filter state\n filter: TaskFilter = new TaskFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<TaskInstance[]>([]);\n selection = signal(new SelectionModel<TaskInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadTaskList();\n }\n\n refresh() {\n this.#loadTaskList();\n this.taskDetailsComponent?.loadTaskDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadTaskList()\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = TaskFilter.fromAgFilterModel(filters, this.#translateService);\n this.pagination.page = 0; // Reset to first page when filtering\n this.#loadTaskList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n\n #loadTaskList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getTasks(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : TasksSearchResponse) => {\n const formattedTaskObjects = response.objects.map(task => ({\n ...task,\n createTime: task.createTime ? formatDateTime(task.createTime, this.#translateService.currentLang) : task.createTime,\n endTime: task.endTime ? formatDateTime(task.endTime, this.#translateService.currentLang) : task.endTime\n }));\n\n this.dataSource.set(formattedTaskObjects);\n\n const selectedId = this.selection().selected.at(0)?.id;\n if (selectedId) {\n const updatedSelected = this.dataSource().find(pd => pd.id === selectedId);\n if (updatedSelected) {\n this.selection().select(updatedSelected);\n this.#updateActions(updatedSelected);\n }\n }\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch tasks', e);\n this.busy.set(false);\n },\n complete: () => {\n this.busy.set(false);\n },\n });\n }\n\n onRowSelected(task: unknown): void {\n this.selection().select(task as TaskInstance);\n this.#updateActions(this.selection().selected.at(0));\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n #updateActions(obj: TaskInstance | undefined) {\n if (!obj) {\n this.actions = [];\n return;\n }\n this.actions = [\n {\n id: 'yuv.app.bpm-management.task.actions.assign',\n icon: APP_ICONS.assign,\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.label'),\n disabled: obj.assignee != null || obj.endTime != null,\n callback: () => this.assign(),\n },\n {\n id: 'yuv.app.bpm-management.task.actions.unassign',\n icon: APP_ICONS.unassign,\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n disabled: obj.assignee == null || obj.endTime != null,\n callback: () => this.unassign(),\n },\n {\n id: 'yuv.app.bpm-management.task.actions.editCandidates',\n icon: 'manage_accounts',\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.editCandidates.label'),\n disabled: obj.endTime != null,\n callback: () => this.editCandidates(),\n }\n ];\n }\n \n unassign() {\n const task = this.selection().selected.at(0);\n if (!task) {\n return;\n }\n\n this.#dialog.open(ConfirmComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n title: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n message: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.confirm.message')\n },\n }).afterClosed().subscribe((confirm: boolean)=>{\n if (confirm) {\n this.#bpmAdminSerice.assignTask(task.id, null).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to unassign task`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.error')\n );\n }\n });\n }\n });\n }\n\n assign() {\n const task = this.selection().selected.at(0);\n if (!task) {\n return;\n }\n\n this.#dialog.open(TaskAssignOverlayComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n taskId: task.id,\n taskName: task.name\n },\n }).afterClosed().subscribe((assignee: string) => {\n if (assignee) {\n this.#bpmAdminSerice.assignTask(task.id, assignee).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to assign task`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.error')\n );\n }\n });\n }\n });\n }\n\n editCandidates() {\n const task = this.selection().selected.at(0);\n if (!task) return;\n\n const detailTask = this.taskDetailsComponent?.task();\n const currentUsers = detailTask?.identityLinks?.candidates?.users ?? [];\n const currentRoles = detailTask?.identityLinks?.candidates?.roles ?? [];\n\n this.#dialog.open(TaskCandidatesOverlayComponent, {\n width: '600px',\n maxWidth: '95vw',\n data: { currentUsers: [...currentUsers], currentRoles: [...currentRoles] }\n }).afterClosed().subscribe((result: TaskCandidatesOverlayResult | undefined) => {\n if (result === undefined) return;\n this.#bpmAdminSerice.setTaskCandidates(task.id, result).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.success')\n );\n this.taskDetailsComponent?.loadTaskDetails();\n },\n error: () => {\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.error')\n );\n }\n });\n });\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\"\n [busy]=\"busy()\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n \n <ng-template ymtLayoutPane role=\"details\">\n @let selectedTask = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedTask ? 'task' : undefined\" [title]=\"selectedTask ? (selectedTask.name || '<unnamed>') : ''\" [subtitle]=\"selectedTask ? selectedTask.id : ''\" [actions]=\"listActions\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedTask) {\n <ymbpm-task-details [taskId]=\"selectedTask?.id\"></ymbpm-task-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-task>\n @if (task.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{TaskStatus.COMPLETED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{TaskStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>","import { Route } from '@angular/router';\nimport { YuvBpmManagementComponent } from './container/bpm-management.component';\nimport { YuvDeploymentsPageComponent } from './pages/deployments/deployments-page/deployments-page.component';\nimport { YuvProcessDefinitionsPageComponent } from './pages/processdefinitions/processdefinitions-page/processdefinitions-page.component';\nimport { YuvProcessesPageComponent } from './pages/processes/processes-page/processes-page.component';\nimport { YuvTasksPageComponent } from './pages/tasks/tasks-page/tasks-page.component';\n\nexport const YuvBpmManagementRoutes: Route[] = [\n {\n path: '',\n component: YuvBpmManagementComponent,\n children: [\n { path: 'deployments', component: YuvDeploymentsPageComponent },\n { path: 'processdefinitions', component: YuvProcessDefinitionsPageComponent },\n { path: 'processes', component: YuvProcessesPageComponent },\n { path: 'tasks', component: YuvTasksPageComponent },\n { path: '', redirectTo: 'processes', pathMatch: 'full' }\n ]\n }\n];","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i5","i6","i3","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-bpm-management-app.mjs","sources":["../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.schema.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-filter.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.service.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/text-filter/text-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/text-filter/text-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/number-filter/number-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/number-filter/number-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/select-filter/select-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/select-filter/select-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/date-filter/date-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/date-filter/date-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/user-filter/user-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/user-filter/user-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/bpm-table/bpm-table.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/bpm-table/bpm-table.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/format-date-time.pipe.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-summary/deployment-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-summary/deployment-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-process-definitions/deployment-process-definitions.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-process-definitions/deployment-process-definitions.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/deployments/deployments-page/deployments-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/deployments/deployments-page/deployments-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-summary/process-definition-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-summary/process-definition-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/checkbox-overlay/checkbox-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/checkbox-overlay/checkbox-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processdefinitions/processdefinitions-page/processdefinitions-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processdefinitions/processdefinitions-page/processdefinitions-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/user-display/user-display.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/user-display/user-display.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-summary/process-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-summary/process-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-tasks/process-tasks.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-tasks/process-tasks.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-history/process-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-history/process-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processes/processes-page/processes-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processes/processes-page/processes-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-summary/task-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-summary/task-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/editor-history/editor-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/editor-history/editor-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-assign-overlay/task-assign-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-assign-overlay/task-assign-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-candidates-overlay/task-candidates-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-candidates-overlay/task-candidates-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/tasks/tasks-page/tasks-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/tasks/tasks-page/tasks-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/lib.routes.ts","../../../../../projects/yuuvis/bpm-management-app/src/yuuvis-bpm-management-app.ts"],"sourcesContent":["export const APP_ID = 'io.yuuvis.app.bpm-management';\n\nexport interface DeploymentInstance {\n id: string,\n name: string;\n category: string;\n deploymentTime: string;\n resources: DeploymentResourceData[];\n definitions: ProcessDefinitionInstance[];\n}\n\nexport interface DeploymentResourceData {\n id: string;\n mediaType: string;\n type: string;\n}\n\nexport interface ProcessDefinitionInstance {\n id: string,\n name: string;\n description: string;\n category: string;\n version: string;\n key: string;\n global: boolean;\n suspended: boolean;\n deploymentId: string;\n statistics: ProcessdefinitionStatisticsData;\n}\n\nexport interface ProcessdefinitionStatisticsData {\n processInstanceCount: ProcessinstanceCountData;\n}\n\nexport interface ProcessinstanceCountData {\n active: number;\n suspended: number;\n completed: number\n}\n\nexport interface ProcessVariable {\n name: string;\n type: string;\n value: any;\n scope: string;\n}\n\nexport interface ProcessInstance {\n id: string;\n name: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionName: string;\n processDefinitionDescription: string | null;\n startUserId: string;\n startTime: string;\n deleteReason: string | null;\n endActivityId: string | null;\n startActivityId: string;\n durationInMillis: number | null;\n endTime: string | null;\n suspended: boolean;\n variables: ProcessVariable[];\n}\n\nexport interface ProcessHistory {\n tasks: TaskInstance[];\n}\n\nexport interface TaskInstance {\n id: string;\n name: string;\n description: string | null;\n assignee: string;\n owner: string;\n createTime: string;\n endTime: string | null;\n claimTime: string | null;\n dueDate: string | null;\n processDefinitionId: string;\n processInstanceId: string | null;\n processInstanceName: string | null;\n parentTaskId: string | null;\n taskDefinitionKey: string;\n delegationState: string | null;\n suspended: boolean;\n hasForm: boolean;\n formKey: string | null;\n variables?: TaskVariable[];\n identityLinks?: TaskIdentityLinks;\n}\n\nexport interface TaskVariable {\n name: string;\n type: string;\n value: any;\n valueUrl?: string;\n scope: string;\n}\n\nexport interface TaskIdentityLinks {\n candidates: {\n users: string[];\n roles: string[];\n };\n assignmentHistory: TaskAssignmentHistoryEntry[];\n}\n\nexport interface TaskAssignmentHistoryEntry {\n type: 'ASSIGNMENT' | 'DELEGATION' | 'RESOLVE';\n assignee: string;\n owner?: string;\n timestamp: string;\n}\n\nexport const ProcessDefinitionScope = {\n GLOBAL: { value: 'GLOBAL', label: 'yuv.app.bpm-management.processdefinitions.scope.global', icon: 'globe' },\n TENANT: { value: 'TENANT', label: 'yuv.app.bpm-management.processdefinitions.scope.tenant', icon: 'tenant' }\n} as const;\n\nexport const ProcessDefinitionStatus = {\n ACTIVE: { value: 'ACTIVE', label: 'yuv.app.bpm-management.status.active' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' }\n} as const;\n\nexport const ProcessStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' },\n RUNNING_SUSPENDED: { value: 'RUNNING_SUSPENDED', label: 'yuv.app.bpm-management.status.runningORsuspended' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport const TaskStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport interface DeploymentsSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: DeploymentInstance[];\n}\n\nexport interface ProcessDefinitionSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessDefinitionInstance[];\n}\n\nexport interface ProcessesSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessInstance[];\n}\n\nexport interface TasksSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: TaskInstance[];\n}\n\nexport const APP_ICONS = {\n assign: 'person_add',\n cancel: 'cancel',\n unassign: 'person_remove',\n clearFilter: 'filter_alt_off',\n dockToLeft: 'dock_to_left',\n filterActive: 'filter_alt',\n filterEquals: 'equal',\n filterContains: 'find_in_page',\n filterStartsWith: 'subdirectory_arrow_right',\n filterEndsWith: 'subdirectory_arrow_left',\n filterGreaterThan: 'arrow_upward',\n filterLessThan: 'arrow_downward',\n filterAfter: 'east',\n filterBefore: 'west',\n filterBetween: 'compare_arrows',\n globe: 'public',\n info: 'info',\n refresh: 'refresh',\n radioButtonChecked: 'radio_button_checked',\n radioButtonUnchecked: 'radio_button_unchecked',\n tenant: 'groups',\n delegated: 'assignment',\n resolved: 'order_approve',\n activate: 'play_arrow',\n suspend: 'pause'\n}\n\nexport interface Pagination {\n total: number;\n pageSize: number;\n page: number;\n}\n\nexport interface Column {\n name: string;\n displayName: string;\n template?: any; // TemplateRef or function\n filter?: ColumnFilter;\n}\n\nexport type ColumnFilter =\n | TextColumnFilter\n | NumberColumnFilter\n | DateColumnFilter\n | SelectColumnFilter\n | UserColumnFilter;\n\nexport interface TextColumnFilter {\n type: typeof FILTER_TYPES.TEXT;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface NumberColumnFilter {\n type: typeof FILTER_TYPES.NUMBER;\n placeholder?: string;\n operators?: FilterOption[];\n minValue?: number;\n maxValue?: number;\n step?: number;\n}\n\nexport interface DateColumnFilter {\n type: typeof FILTER_TYPES.DATE;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface SelectColumnFilter {\n type: typeof FILTER_TYPES.SELECT;\n placeholder?: string;\n options: FilterOption[];\n enableMultiselect?: boolean;\n}\n\nexport interface UserColumnFilter {\n type: typeof FILTER_TYPES.USER;\n}\n\nexport interface FilterOption {\n value: string;\n label: string;\n icon?: string;\n}\n\nexport const FILTER_OPERATORS = {\n // Text operators\n CONTAINS: { value: 'contains', label: 'yuv.app.bpm-management.filters.operators.contains', icon: 'filterContains' },\n EQUALS: { value: 'equals', label: 'yuv.app.bpm-management.filters.operators.equals', icon: 'filterEquals' },\n STARTS_WITH: { value: 'startsWith', label: 'yuv.app.bpm-management.filters.operators.startsWith', icon: 'filterStartsWith' },\n ENDS_WITH: { value: 'endsWith', label: 'yuv.app.bpm-management.filters.operators.endsWith', icon: 'filterEndsWith' },\n\n // Number operators\n GREATER_THAN: { value: 'greaterThan', label: 'yuv.app.bpm-management.filters.operators.greaterThan', icon: 'filterGreaterThan' },\n LESS_THAN: { value: 'lessThan', label: 'yuv.app.bpm-management.filters.operators.lessThan', icon: 'filterLessThan' },\n // Date operators\n BEFORE: { value: 'before', label: 'yuv.app.bpm-management.filters.operators.before', icon: 'filterBefore' },\n AFTER: { value: 'after', label: 'yuv.app.bpm-management.filters.operators.after', icon: 'filterAfter' },\n BETWEEN: { value: 'between', label: 'yuv.app.bpm-management.filters.operators.between', icon: 'filterBetween' }\n} as const;\n\nexport const FILTER_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n DATE: 'date',\n SELECT: 'select',\n CHECKBOX: 'checkbox',\n USER: 'user'\n} as const;\n\nexport interface TableFilters {\n [columnName: string]: FilterValue;\n}\n\nexport interface FilterValue {\n type: typeof FILTER_TYPES.TEXT | typeof FILTER_TYPES.NUMBER | typeof FILTER_TYPES.DATE | typeof FILTER_TYPES.SELECT | typeof FILTER_TYPES.CHECKBOX;\n value: any;\n operator?: string;\n endDate?: Date | null; // Für date between\n}\n\nexport type DateFormatType = 'datetime' | 'date' | 'time';\n\nexport function formatDateTime(\n utcDateString: string, \n locale: string, \n type: DateFormatType = 'datetime'\n): string {\n if (!utcDateString) return '';\n \n try {\n const date = new Date(utcDateString);\n \n const formatOptions: Record<DateFormatType, Intl.DateTimeFormatOptions> = {\n datetime: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n },\n date: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n },\n time: {\n hour: '2-digit',\n minute: '2-digit'\n }\n };\n\n return type === 'datetime' \n ? date.toLocaleString(locale, formatOptions[type])\n : type === 'date'\n ? date.toLocaleDateString(locale, formatOptions[type])\n : date.toLocaleTimeString(locale, formatOptions[type]);\n \n } catch (error) {\n console.error('Error formatting date:', error);\n return utcDateString;\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { Title } from '@angular/platform-browser';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { APP_ICONS, APP_ID } from '../bpm-management.schema';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YmtLayoutModule } from '@yuuvis/material/layout';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\n\n@Component({\n selector: 'ymbpm-root',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n TranslatePipe,\n MatTabsModule,\n MatIconModule,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './bpm-management.component.html',\n styleUrl: './bpm-management.component.scss',\n})\nexport class YuvBpmManagementComponent implements OnInit {\n\n #shell = inject(ShellService);\n #titleService = inject(Title);\n #translateService = inject(TranslateService);\n \n #app = this.#shell.getApp(APP_ID);\n appName = this.#app?.title as string;\n appIcon = this.#app?.iconName;\n\n icons = {\n ...APP_ICONS,\n };\n\n ngOnInit() {\n // Browser-Tab-Titel lokalisiert setzen\n const translatedTitle = this.appName.startsWith('yuv.') \n ? this.#translateService.instant(this.appName) \n : this.appName\n this.#titleService.setTitle(translatedTitle);\n }\n}\n","<section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link\n routerLink=\"deployments\"\n routerLinkActive\n #rla1=\"routerLinkActive\"\n [active]=\"rla1.isActive\">\n {{ 'yuv.app.bpm-management.tabs.deployments' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"processdefinitions\"\n routerLinkActive\n #rla2=\"routerLinkActive\"\n [active]=\"rla2.isActive\">\n {{ 'yuv.app.bpm-management.tabs.processdefinitions' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"processes\"\n routerLinkActive\n #rla3=\"routerLinkActive\"\n [active]=\"rla3.isActive\">\n {{ 'yuv.app.bpm-management.tabs.processes' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"tasks\"\n routerLinkActive\n #rla4=\"routerLinkActive\"\n [active]=\"rla4.isActive\">\n {{ 'yuv.app.bpm-management.tabs.tasks' | translate }}\n </a>\n </nav>\n <mat-tab-nav-panel #tabPanel>\n <router-outlet></router-outlet>\n </mat-tab-nav-panel>\n</section>\n\n<router-outlet name=\"modal\"></router-outlet>\n","import { TranslateService } from \"@yuuvis/client-core\";\nimport { FILTER_OPERATORS, FILTER_TYPES, FilterValue, ProcessDefinitionScope, ProcessDefinitionStatus, ProcessStatus, TableFilters, TaskStatus } from \"./bpm-management.schema\";\nimport { formatDate } from \"@angular/common\";\n\n/**\n * Base class for BPM filter conversion with shared logic\n */\nabstract class BaseBpmFilter {\n /**\n * Converts AG Grid filter model to BPM filter format\n * @param tableFilters - The AG Grid table filters\n * @param ts - Optional TranslateService for date formatting\n * @returns The converted BPM filter instance\n */\n protected static convertFromAgFilterModel<T extends BaseBpmFilter>(\n filterInstance: T,\n tableFilters: TableFilters,\n ts?: TranslateService\n ): T {\n for (const columnFilter in tableFilters) {\n const columnFilterData = tableFilters[columnFilter];\n \n switch (columnFilterData['type']) {\n case FILTER_TYPES.TEXT:\n filterInstance[columnFilter] = this.handleTextFilter(columnFilterData);\n break;\n case FILTER_TYPES.NUMBER:\n filterInstance[columnFilter] = { value: columnFilterData.value, type: FILTER_TYPES.NUMBER };\n break;\n case FILTER_TYPES.DATE:\n this.handleDateFilter(filterInstance, columnFilter, columnFilterData, ts);\n break;\n case FILTER_TYPES.SELECT:\n this.handleSelectFilter(filterInstance, columnFilter, columnFilterData);\n break;\n }\n }\n\n return filterInstance;\n }\n\n private static handleTextFilter(columnFilterData: any): FilterValue {\n if (columnFilterData.operator === FILTER_OPERATORS.CONTAINS.value) {\n return { value: '%' + columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.STARTS_WITH.value) {\n return { value: columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.ENDS_WITH.value) {\n return { value: '%' + columnFilterData.value, type: FILTER_TYPES.TEXT };\n } else {\n return { value: columnFilterData.value, type: FILTER_TYPES.TEXT };\n }\n }\n\n private static handleDateFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any,\n ts?: TranslateService\n ): void {\n if (!ts) return;\n\n if (columnFilterData.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedStartDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedStartDate, type: FILTER_TYPES.DATE };\n }\n if (columnFilterData.endDate !== null && columnFilterData.endDate instanceof Date) {\n const formattedEndDate = formatDate(columnFilterData.endDate, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedEndDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.AFTER.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.BEFORE.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n }\n }\n\n protected static handleSelectFilter(\n _filterInstance: any,\n _columnFilter: string,\n _columnFilterData: any\n ): void {\n return;\n }\n}\n\nexport class DeploymentFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLike',\n category: 'category'\n };\n id: FilterValue | undefined;\n name: FilterValue | undefined;\n category: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new DeploymentFilter(), tableFilters);\n }\n}\n\nexport class ProcessDefinitionFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n deploymentId: 'deploymentId',\n name: 'nameLikeIgnoreCase',\n category: 'categoryLike',\n version: 'version',\n key: 'keyLike',\n status: 'suspended',\n global: 'global',\n latest: 'latest'\n };\n id: FilterValue | undefined;\n deploymentId: FilterValue | undefined;\n name: FilterValue | undefined;\n category: FilterValue | undefined;\n version: FilterValue | undefined;\n key: FilterValue | undefined;\n status: FilterValue | undefined;\n global: FilterValue | undefined;\n latest: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new ProcessDefinitionFilter(), tableFilters);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessDefinitionStatus.ACTIVE.value || value === ProcessDefinitionScope.TENANT.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessDefinitionStatus.SUSPENDED.value || value === ProcessDefinitionScope.GLOBAL.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class ProcessFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'processInstanceId',\n processDefinitionId: 'processDefinitionId',\n name: 'nameLikeIgnoreCase',\n startUserId: 'startedBy',\n businessKey: 'businessKeyLike',\n startTimeBefore: 'startedBefore',\n startTimeAfter: 'startedAfter',\n endTimeBefore: 'finishedBefore',\n endTimeAfter: 'finishedAfter',\n status: 'isCompleted'\n };\n id: FilterValue | undefined;\n processDefinitionId: FilterValue | undefined;\n name: FilterValue | undefined;\n startUserId: FilterValue | undefined;\n startTimeBefore: FilterValue | undefined;\n startTimeAfter: FilterValue | undefined;\n endTimeBefore: FilterValue | undefined;\n endTimeAfter: FilterValue | undefined;\n businessKey: FilterValue | undefined;\n status: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new ProcessFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessStatus.RUNNING_SUSPENDED.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class TaskFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLikeIgnoreCase',\n status: 'isCompleted',\n assignee: 'visibleTo',\n owner: 'owner',\n createTimeBefore: 'createdBefore',\n createTimeAfter: 'createdAfter',\n endTimeBefore: 'completedBefore',\n endTimeAfter: 'completedAfter'\n };\n id: FilterValue | undefined;\n name: FilterValue | undefined;\n status: FilterValue | undefined;\n assignee: FilterValue | undefined;\n owner: FilterValue | undefined;\n createTimeBefore: FilterValue | undefined;\n createimeAfter: FilterValue | undefined;\n endTimeBefore: FilterValue | undefined;\n endTimeAfter: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new TaskFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === TaskStatus.RUNNING.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === TaskStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiBase, BackendService, Utils } from '@yuuvis/client-core';\nimport { map, Observable } from 'rxjs';\nimport { DeploymentInstance, ProcessHistory, ProcessInstance, TaskInstance, ProcessDefinitionInstance } from './bpm-management.schema';\nimport { DeploymentFilter, ProcessDefinitionFilter, ProcessFilter, TaskFilter } from './bpm-filter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class YuvBpmAdminService {\n \n static DEFAULT_PAGE_SIZE = 15;\n private readonly bpmApiBase = '/bpm-engine/api';\n readonly #backendService = inject(BackendService);\n\n getDeployments(page: number, size: number, filter?: DeploymentFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(DeploymentFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n \n return this.#backendService\n .get(`${this.bpmApiBase}/deployments`, ApiBase.none, { params:filterParams } );\n }\n\n getDeployment(deploymentId: string): Observable<DeploymentInstance | null> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}`, ApiBase.none );\n }\n\n getDeploymentResources(deploymentId: string): Observable<any> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}/resources`, ApiBase.none );\n }\n\n getProcessDefinitions(page: number, size: number, filter?: ProcessDefinitionFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(ProcessDefinitionFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/process-definitions`, ApiBase.none, { params:filterParams } );\n }\n\n getProcessDefinition(processDefinitionInstanceId: string): Observable<ProcessDefinitionInstance | null> {\n const params = new HttpParams().set('includeStatistics', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n executeProcessDefinitionAction(processDefinitionInstanceId: string, action: string, includeProcesses: boolean): Observable<any> {\n const body = {\n 'action': action,\n 'includeProcessInstances': includeProcesses\n };\n\n return this.#backendService\n .patch(`${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`, body, ApiBase.none)\n .pipe(map(result => result))\n }\n\n getProcesses(page: number, size: number, filter?: ProcessFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(ProcessFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes`,\n ApiBase.none,\n { params: filterParams }\n );\n }\n\n getProcess(processInstanceId: string): Observable<ProcessInstance | null> {\n const params = new HttpParams().set('includeProcessVariables', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n getProcessHistory(processInstanceId: string): Observable<ProcessHistory | null> {\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}/history`,\n ApiBase.none\n ).pipe(\n map((result: any) => {\n if (!result || !result.tasks) return result;\n \n return {\n ...result,\n tasks: result.tasks\n .sort(Utils.sortValues('createTime'))\n .reverse()\n };\n })\n );\n }\n\n getTasks(page: number, size: number, filter?: TaskFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(TaskFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n\n if (key === 'assignee') {\n filterParams = filterParams.set('isAssigned', 'true');\n }\n }\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/tasks`, ApiBase.none, { params:filterParams } ); \n }\n\n getTask(taskId: string): Observable<TaskInstance | null> {\n const params = new HttpParams().set('includeIdentityLinks', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/tasks/${taskId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n assignTask(taskId: string, assignee: string | null): Observable<any> {\n const body = {\n action: 'claim',\n assignee: assignee\n };\n\n return this.#backendService.patch(\n `${this.bpmApiBase}/tasks/${taskId}`,\n body,\n ApiBase.none\n );\n }\n\n setTaskCandidates(taskId: string, body: { users?: string[], roles?: string[] }): Observable<any> {\n return this.#backendService.post(\n `${this.bpmApiBase}/tasks/${taskId}/candidates`,\n body,\n ApiBase.none\n );\n }\n}\n","import { Component, input, OnInit, forwardRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { FilterValue, APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-text-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFilterComponent),\n multi: true\n }\n ],\n templateUrl: './text-filter.component.html',\n styleUrl: './text-filter.component.scss'\n})\nexport class TextFilterComponent implements ControlValueAccessor, OnInit {\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(''),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n\n icons = {\n ...APP_ICONS,\n };\n\n get textControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n\n private textInputSub: Subscription | null = null;\n private lastTextValue: string | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0].value);\n \n this.createTextInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0].value),\n pairwise()\n )\n .subscribe(([prev, next]: [string, string]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.textControl.value === this.lastTextValue) {\n return;\n }\n\n if (this.textInputSub) {\n this.textInputSub.unsubscribe();\n }\n\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else {\n if (this.isActiveFilter(this.lastTextValue) && (this.textControl.value.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n this.createTextInputSubscription();\n }\n\n createTextInputSubscription(): void {\n this.textInputSub = this.textControl.valueChanges\n .pipe(\n debounceTime(550),\n distinctUntilChanged(),\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else if (next !== null && next !== undefined) {\n if (this.isActiveFilter(prev) && (next.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n });\n }\n\n isActiveFilter(value = this.textControl.value): boolean {\n return value && value.toString().trim().length > 0;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n \n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.TEXT) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value ? String(value.value) : '',\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastTextValue = this.textControl.value;\n this.onChange({\n value: this.textControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <input matInput \n [placeholder]=\"('yuv.app.bpm-management.filters.search' | translate)\"\n [formControl]=\"textControl\"\n (keydown.enter)=\"onEnter()\">\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n</div>","import { Component, input, OnInit, forwardRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-number-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFilterComponent),\n multi: true\n }\n ],\n templateUrl: './number-filter.component.html',\n styleUrl: './number-filter.component.scss'\n})\nexport class NumberFilterComponent implements ControlValueAccessor, OnInit {\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(null),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get numberControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n \n private numberInputSub: Subscription | null = null;\n private lastNumberValue: number | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.createNumberInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.numberControl.value === this.lastNumberValue) {\n return;\n }\n\n if (this.numberInputSub) {\n this.numberInputSub.unsubscribe();\n }\n\n this.fireOnChangeEvent();\n this.createNumberInputSubscription();\n }\n\n createNumberInputSubscription(): void {\n this.numberInputSub = this.numberControl.valueChanges\n .pipe(\n debounceTime(300),\n distinctUntilChanged()\n )\n .subscribe(() => this.fireOnChangeEvent());\n }\n \n isActiveFilter(): boolean {\n const value = this.numberControl.value;\n return value !== null && value !== undefined && !isNaN(Number(value))\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.NUMBER) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value,\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastNumberValue = this.numberControl.value;\n this.onChange({\n value: this.numberControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.NUMBER\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <input matInput type=\"number\"\n [placeholder]=\"('yuv.app.bpm-management.filters.search' | translate)\"\n [formControl]=\"numberControl\"\n (keydown.enter)=\"onEnter()\">\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n</div>","import { Component, input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-select-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatIconModule,\n MatButtonModule,\n TranslatePipe,\n MatTooltipModule,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterComponent),\n multi: true\n }\n ],\n templateUrl: './select-filter.component.html',\n styleUrl: './select-filter.component.scss'\n})\nexport class SelectFilterComponent implements ControlValueAccessor, OnInit {\n options = input<FilterOption[]>([]);\n enableMultiselect = input<boolean>(false);\n \n selectControl = new FormControl();\n \n icons = {\n ...APP_ICONS,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n if (this.enableMultiselect()) {\n this.selectControl.setValue([]);\n } else {\n this.selectControl.setValue('');\n }\n \n this.selectControl.valueChanges.subscribe(() => {\n this.fireOnChangeEvent();\n });\n }\n\n isActiveFilter(): boolean {\n const value = this.selectControl.value;\n if (this.enableMultiselect()) {\n return value && Array.isArray(value) && value.length > 0;\n } else {\n return value && value !== '';\n }\n }\n\n getSelectedCount(): number {\n if (!this.enableMultiselect()) return 0;\n \n const values = this.selectControl.value || [];\n return Array.isArray(values) ? values.length : 0;\n }\n\n clearFilter(fireEvent = false): void {\n this.selectControl.setValue(null, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.SELECT ) {\n if (this.enableMultiselect()) {\n this.selectControl.setValue(Array.isArray(value.value) ? value.value : [], { emitEvent: false });\n } else {\n this.selectControl.setValue(value.value || '', { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.onChange({\n value: this.selectControl.value,\n type: FILTER_TYPES.SELECT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <mat-select [formControl]=\"selectControl\"\n [placeholder]=\"('yuv.app.bpm-management.filters.select' | translate)\"\n [multiple]=\"enableMultiselect()\">\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label | translate}}\n </mat-option>\n }\n </mat-select>\n @if (enableMultiselect()) {\n <div matSuffix class=\"multi-select-suffix\">\n @if (getSelectedCount() > 0) {\n <mat-icon>check_circle</mat-icon>\n <span class=\"count\">{{getSelectedCount()}}</span>\n }\n </div>\n }\n </mat-form-field>\n</div>","import { Component, forwardRef, inject, input, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';\nimport { pairwise, startWith } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-date-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n TranslatePipe,\n MatTooltipModule,\n YuvDatepickerModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterComponent),\n multi: true\n }\n ],\n templateUrl: './date-filter.component.html',\n styleUrl: './date-filter.component.scss'\n})\nexport class DateFilterComponent implements ControlValueAccessor, OnInit {\n readonly translateService = inject(TranslateService);\n\n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n placeholder = input<string>();\n operators = input<FilterOption[]>([FILTER_OPERATORS.BEFORE]);\n \n filterForm = new FormGroup({\n value: new FormControl<Date | null>(null),\n endDate: new FormControl<Date | null>(null),\n operator: new FormControl<string>(FILTER_OPERATORS.BEFORE.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get valueControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n get endDateControl() { return this.filterForm.get('endDate') as FormControl; }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.valueControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n ) \n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.endDateControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n this.fireOnChangeEvent();\n }\n });\n }\n\n isActiveFilter(): boolean {\n const operator = this.operatorControl.value;\n \n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n return startDate !== null || endDate !== null;\n } else {\n const value = this.valueControl.value;\n return value !== null;\n }\n }\n\n isBetweenMode(): boolean {\n return this.operatorControl.value === FILTER_OPERATORS.BETWEEN.value;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value,\n endDate: null\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.DATE) {\n if (value.operator && value.operator === FILTER_OPERATORS.BETWEEN.value) {\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: FILTER_OPERATORS.BETWEEN.value,\n endDate: value.endDate instanceof Date ? value.endDate : null\n }, { emitEvent: false });\n } else {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: operator,\n endDate: null\n }, { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n const operator = this.operatorControl.value;\n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n\n this.onChange({\n value: startDate,\n endDate: endDate,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n } else {\n const value = this.valueControl.value;\n\n this.onChange({\n value: value,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n }\n }\n}","<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n <div class=\"filter-operator-anchor\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n </div>\n\n @if (isBetweenMode()) {\n <div class=\"date-range\">\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n\n <yuv-datepicker\n [formControl]=\"endDateControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n </div>\n } @else {\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n }\n</div>\n","import { Component, forwardRef, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { FilterValue, FILTER_OPERATORS, FILTER_TYPES } from '../../../bpm-management.schema';\n\n@Component({\n selector: 'ymbpm-user-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatIconModule,\n TranslatePipe,\n OrganizationComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UserFilterComponent),\n multi: true\n }\n ],\n templateUrl: './user-filter.component.html',\n styleUrl: './user-filter.component.scss'\n})\nexport class UserFilterComponent implements ControlValueAccessor, OnInit {\n orgControl = new FormControl<string | null>(null);\n\n showOrganization = signal(true);\n\n private hasWrittenValue = false;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.orgControl.valueChanges.subscribe(value => this.fireOnChangeEvent(value));\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.TEXT) {\n this.orgControl.setValue(value.value ? String(value.value) : null, { emitEvent: false });\n } else {\n this.orgControl.setValue(null, { emitEvent: false });\n if (this.hasWrittenValue) {\n this.showOrganization.set(false);\n setTimeout(() => this.showOrganization.set(true));\n }\n }\n this.hasWrittenValue = true;\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(value: string | null): void {\n this.onTouched();\n this.onChange({\n value: value || null,\n operator: FILTER_OPERATORS.EQUALS.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}\n","<div class=\"filter-input-group\" [class.active]=\"!!orgControl.value\">\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n @if (showOrganization()) {\n <yuv-organization [formControl]=\"orgControl\" [excludeMe]=\"false\" situation=\"SEARCH\" [placeholder]=\"orgControl.value ? '' : ('yuv.app.bpm-management.filters.search' | translate)\"></yuv-organization>\n }\n <mat-icon matSuffix>person_search</mat-icon>\n </mat-form-field>\n</div>\n","import { Component, computed, input, output, OnInit, signal } from '@angular/core';\nimport { Column, Pagination, TableFilters, FilterValue, APP_ICONS, FILTER_TYPES, FILTER_OPERATORS } from '../../bpm-management.schema';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TextFilterComponent, SelectFilterComponent, DateFilterComponent, NumberFilterComponent, UserFilterComponent } from '../filter';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'ymbpm-table',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n TranslatePipe,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatMenuModule,\n MatDividerModule,\n FormsModule,\n ReactiveFormsModule,\n TextFilterComponent,\n DateFilterComponent,\n SelectFilterComponent,\n NumberFilterComponent,\n UserFilterComponent,\n MatProgressBar\n],\n templateUrl: './bpm-table.component.html',\n styleUrls: ['./bpm-table.component.css']\n})\nexport class BpmTableComponent implements OnInit {\n columns = input<Column[]>([]);\n dataSource = input<any[]>([]);\n enableFilters = input<boolean>(false);\n pagination = input<Pagination>();\n selectedRow = input<any>();\n busy = input<boolean>(false);\n\n displayedColumns = computed(() => this.columns().map(c => c.name));\n \n filters = signal<TableFilters>({});\n filterControls: { [key: string]: FormControl<FilterValue | null> } = {};\n\n pageSizes = [10, 25, 50, 100];\n DEFAULT_PAGE_SIZE = 50;\n\n filtersChange = output<TableFilters>();\n pageChange = output<PageEvent>();\n rowSelected = output<any>();\n\n icons = {\n ...APP_ICONS,\n };\n\n FILTER_TYPES = FILTER_TYPES;\n\n private isClearing = false;\n\n ngOnInit(): void {\n this.initializeFilterControls();\n }\n\n getFilterControl(columnName: string): FormControl<FilterValue | null> {\n return this.filterControls[columnName];\n }\n\n clearColumnFilter(columnName: string): void {\n const control = this.filterControls[columnName];\n if (control) {\n control.setValue(null);\n }\n\n const currentFilters = { ...this.filters() };\n delete currentFilters[columnName];\n\n this.filters.set(currentFilters);\n this.filtersChange.emit(currentFilters);\n }\n\n clearAllFilters(): void {\n if (Object.keys(this.filters()).length === 0) {\n return;\n }\n\n this.isClearing = true; \n\n Object.keys(this.filterControls).forEach(columnName => {\n const control = this.filterControls[columnName];\n if (control) {\n control.setValue(null);\n }\n });\n\n this.isClearing = false; \n this.filters.set({});\n this.filtersChange.emit({});\n }\n\n hasActiveFilter(columnName: string): boolean {\n return this.filters()[columnName] !== undefined;\n }\n\n isSelected(row: any): boolean {\n return this.selectedRow()?.id === row?.id;\n }\n\n selectRow(row: any): void {\n this.rowSelected.emit(row);\n }\n\n private initializeFilterControls(): void {\n this.columns().forEach(column => {\n if (column.filter) {\n this.filterControls[column.name] = new FormControl<FilterValue | null>(null);\n \n this.filterControls[column.name].valueChanges.subscribe(filterValue => {\n if (filterValue) {\n this.updateFilter(column.name, filterValue);\n }\n });\n }\n });\n }\n\n private updateFilter(columnName: string, filterValue: FilterValue | null): void {\n if (this.isClearing) return;\n\n const currentFilters = { ...this.filters() };\n \n if (!filterValue) {\n delete currentFilters[columnName];\n return;\n }\n\n if (filterValue.type === FILTER_TYPES.DATE && filterValue.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (filterValue.value !== null || filterValue.endDate !== null) {\n currentFilters[columnName] = filterValue;\n } else {\n delete currentFilters[columnName];\n }\n } else {\n if (filterValue.value !== null) {\n currentFilters[columnName] = filterValue;\n } else {\n delete currentFilters[columnName];\n }\n }\n \n this.filters.set(currentFilters);\n this.filtersChange.emit(currentFilters);\n }\n}\n","<div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource()\" class=\"bpm-table mat-elevation-z8\">\n @for (column of columns(); track column.name) {\n <ng-container [matColumnDef]=column.name>\n <!-- Header cell -->\n <th mat-header-cell *matHeaderCellDef>\n <div class=\"header-cell-content\">\n <div class=\"header-title\">\n <span>{{column.displayName | translate}}</span>\n @if (enableFilters() && column.filter && hasActiveFilter(column.name)) {\n <div class=\"header-actions\">\n <mat-icon class=\"filter-active-icon\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.activeFilter' | translate\">{{icons.filterActive}}</mat-icon>\n <button mat-icon-button \n class=\"filter-clear-btn\"\n (click)=\"clearColumnFilter(column.name)\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.clearOne' | translate\">\n <mat-icon>{{icons.cancel}}</mat-icon>\n </button>\n </div>\n }\n </div>\n \n <!-- Filter inputs -->\n @if (enableFilters() && column.filter && getFilterControl(column.name)) {\n <div class=\"filter-container\">\n @switch (column.filter.type) {\n @case (FILTER_TYPES.TEXT) {\n <ymbpm-text-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-text-filter>\n }\n @case (FILTER_TYPES.NUMBER) {\n <ymbpm-number-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-number-filter>\n }\n @case (FILTER_TYPES.SELECT) {\n <ymbpm-select-filter [formControl]=\"getFilterControl(column.name)\" [options]=\"column.filter.options || []\" [enableMultiselect]=\"column.filter.enableMultiselect || false\"></ymbpm-select-filter>\n }\n @case (FILTER_TYPES.DATE) {\n <ymbpm-date-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-date-filter>\n }\n @case (FILTER_TYPES.USER) {\n <ymbpm-user-filter [formControl]=\"getFilterControl(column.name)\"></ymbpm-user-filter>\n }\n }\n </div>\n }\n \n </div>\n </th>\n \n <!-- Data cells -->\n @if (column.template) {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ $implicit: element }\"></ng-container>\n </div>\n </td>\n } @else {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n {{element[column.name]}}\n </div>\n </td>\n }\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns();\" \n (click)=\"selectRow(row)\" \n [class.selected-row]=\"isSelected(row)\" \n class=\"process-row\">\n </tr>\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" [attr.colspan]=\"displayedColumns().length\">\n <p class=\"no-items-label\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n </td>\n </tr>\n</table>\n</div>\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n<div class=\"footer\">\n <mat-paginator class=\"paginator\" [length]=\"pagination()?.total\" [pageSize]=\"pagination()?.pageSize\" [pageSizeOptions]=\"pageSizes\" aria-label=\"Select page\"\n (page)=\"pageChange.emit($event)\"></mat-paginator>\n</div>","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@yuuvis/client-core';\nimport { formatDateTime } from './bpm-management.schema';\n\n@Pipe({\n name: 'formatDateTime',\n standalone: true\n})\nexport class FormatDateTimePipe implements PipeTransform {\n readonly #translateService = inject(TranslateService);\n\n transform(value: string | null): string {\n if (!value) return '';\n return formatDateTime(value, this.#translateService.currentLang);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, DeploymentInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\n\n@Component({\n selector: 'ymbpm-deployment-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './deployment-summary.component.html',\n styleUrl: './deployment-summary.component.css'\n})\nexport class DeploymentSummaryComponent { \n deployment = input<DeploymentInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.category' | translate }}</td>\n <td class=\"field-value\">{{ deployment()?.category }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.deploymentTime' | translate }}</td>\n <td class=\"field-value\">{{ (deployment()?.deploymentTime ?? null) | formatDateTime }}</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"resources-section\">\n <h3 class=\"resources-title\">{{ 'yuv.app.bpm-management.deployment.details.resources' | translate }}</h3>\n\n <p *ngIf=\"!deployment()?.resources || deployment()?.resources?.length === 0\" class=\"no-resources-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n </p>\n <table class=\"resources-table\" *ngIf=\"deployment()?.resources && deployment()?.resources?.length! > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.deployment.details.resourceMediaType' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (resource of deployment()!.resources; track resource.id) {\n <tr>\n <td class=\"resource-id\">{{ resource.id }}</td>\n <td class=\"resource-mediatype\">{{ resource.mediaType }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, ProcessDefinitionInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'ymbpm-deployment-process-definitions',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n TranslatePipe\n ],\n templateUrl: './deployment-process-definitions.component.html',\n styleUrls: ['./deployment-process-definitions.component.css']\n})\nexport class DeploymentDefinitionsComponent {\n definitions = input<ProcessDefinitionInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!definitions() || definitions().length === 0\" class=\"no-definitions-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<table class=\"definitions-table\" *ngIf=\"definitions() && definitions().length > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.key' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (definition of definitions(); track definition) {\n <tr>\n <td class=\"definition-id\">{{ definition.id }}</td>\n <td class=\"definition-key\">{{ definition.key }}</td>\n </tr>\n }\n </tbody>\n</table>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, DeploymentInstance, FILTER_TYPES } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { catchError, forkJoin, of } from 'rxjs';\nimport { DeploymentSummaryComponent } from './deployment-summary/deployment-summary.component';\nimport { DeploymentDefinitionsComponent } from './deployment-process-definitions/deployment-process-definitions.component';\nimport { ProcessDefinitionFilter } from '../../bpm-filter';\n\n@Component({\n selector: 'ymbpm-deployment-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n DeploymentSummaryComponent,\n DeploymentDefinitionsComponent,\n MatTabsModule,\n],\n templateUrl: './deployment-details.component.html',\n styleUrl: './deployment-details.component.css'\n})\nexport class DeploymentDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n deploymentId = input<string | undefined>();\n deployment = signal<DeploymentInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadDeploymentDetails();\n });\n }\n\n loadDeploymentDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.deploymentId();\n if (id) {\n\n const definitionsFilter = new ProcessDefinitionFilter();\n definitionsFilter.deploymentId = { value: id, type: FILTER_TYPES.TEXT };\n definitionsFilter.latest = { value: false, type: FILTER_TYPES.CHECKBOX };\n\n forkJoin({\n deployment: this.#bpmAdminService.getDeployment(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployment details:', err);\n return of(null);\n })\n ),\n resources: this.#bpmAdminService.getDeploymentResources(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployment resources:', err);\n return of(null);\n })\n ),\n definitions: this.#bpmAdminService.getProcessDefinitions(0, 0, definitionsFilter).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployments process definitions:', err);\n return of(null);\n })\n )\n }).subscribe(({ deployment, resources, definitions }) => {\n this.deployment.set(deployment || undefined);\n if (deployment) {\n deployment.resources = resources || [];\n deployment.definitions = definitions.objects || [];\n }\n this.loading.set(false);\n });\n\n } else {\n this.deployment.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (deployment()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-deployment-summary [deployment]=\"deployment()\"></ymbpm-deployment-summary>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.processdefinitions' | translate\">\n <ymbpm-deployment-process-definitions [definitions]=\"deployment()?.definitions ?? []\"></ymbpm-deployment-process-definitions>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject, OnInit, signal, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, DeploymentInstance, DeploymentsSearchResponse, formatDateTime, TableFilters, FILTER_OPERATORS, FILTER_TYPES } from '../../../bpm-management.schema';\nimport { Logger, TranslateService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport { DeploymentFilter } from '../../../bpm-filter';\nimport { DeploymentDetailsComponent } from '../../../components/deployment-details/deployment-details.component';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-deployments-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n MatCheckboxModule,\n DeploymentDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './deployments-page.component.html',\n styleUrl: './deployments-page.component.scss'\n})\nexport class YuvDeploymentsPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n\n @ViewChild(DeploymentDetailsComponent) deploymentDetailsComponent?: DeploymentDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'category', \n displayName: 'yuv.app.bpm-management.header.category',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'deploymentTime', \n displayName: 'yuv.app.bpm-management.header.deploymentTime'\n }\n ];\n }\n\n // Filter state\n filter: DeploymentFilter = new DeploymentFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<DeploymentInstance[]>([]);\n selection = signal(new SelectionModel<DeploymentInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadDeploymentsList();\n }\n\n refresh() {\n this.#loadDeploymentsList();\n this.deploymentDetailsComponent?.loadDeploymentDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadDeploymentsList()\n }\n\n #loadDeploymentsList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getDeployments(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : DeploymentsSearchResponse) => {\n const formattedDeploymentObjects = response.objects.map(deployment => ({\n ...deployment,\n deploymentTime: deployment.deploymentTime ? formatDateTime(deployment.deploymentTime, this.#translateService.currentLang) : deployment.deploymentTime,\n }));\n\n this.dataSource.set(formattedDeploymentObjects);\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch deployments', e);\n this.busy.set(false);\n },\n complete: () => {\n // const selected = this.selection().hasValue() ? this.selection().selected[0] : undefined;\n // if (selected) {\n // if (this.dataSource().some(u => u.id === selected.id)) {\n // const updatedSelected = this.dataSource().find(u => u.id === selected.id);\n // this.select(updatedSelected);\n // } else {\n // this.#userManagementService.getUserDetails(selected.id).subscribe({\n // next: (user) => {\n // this.select(user);\n // },\n // error: (e) => {\n // this.#logger.error(`Failed to fetch data for selected user with id '${selected.id}'. Deselecting user...`, e);\n // this.deselect();\n // }\n // });\n // }\n // this.refreshUserDetails();\n // } else {\n // this.deselect();\n // }\n this.busy.set(false);\n },\n });\n }\n \n onRowSelected(deployment: unknown): void {\n this.selection().select(deployment as DeploymentInstance);\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = DeploymentFilter.fromAgFilterModel(filters);\n this.pagination.page = 0; // Reset to first page when filtering\n this.#loadDeploymentsList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\"\n [columns]=\"displayedColumns\"\n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDeployment = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDeployment ? 'inventory_2' : undefined\" [title]=\"selectedDeployment ? (selectedDeployment.name || '<unnamed>') : ''\" [subtitle]=\"selectedDeployment ? selectedDeployment.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDeployment) {\n <ymbpm-deployment-details [deploymentId]=\"selectedDeployment?.id\"></ymbpm-deployment-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, ProcessDefinitionInstance, ProcessDefinitionStatus } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'ymbpm-process-definition-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCheckboxModule,\n TranslatePipe\n ],\n templateUrl: './process-definition-summary.component.html',\n styleUrl: './process-definition-summary.component.css'\n})\nexport class ProcessDefinitionSummaryComponent {\n readonly #translateService = inject(TranslateService);\n \n processDefinition = input<ProcessDefinitionInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n\n processStatusTemplate = (processDefinition: ProcessDefinitionInstance | undefined): string => {\n if (!processDefinition) return '';\n if (processDefinition.suspended) {\n return `<span class=\"yuv-bpmn-status suspended\">${this.#translateService.instant(ProcessDefinitionStatus.SUSPENDED.label)}</span>`;\n } else {\n return `<span class=\"yuv-bpmn-status running\">${this.#translateService.instant(ProcessDefinitionStatus.ACTIVE.label)}</span>`;\n }\n }\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.deploymentId' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.deploymentId }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\" [innerHTML]=\"processStatusTemplate(processDefinition())\"></td>\n </tr>\n\n <tr> \n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.description' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.description || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.key' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.key || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.category' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.category || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.version' | translate }}</td>\n <td class=\"field-value\">{{ (processDefinition()?.version || '-') }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.processdefinitions.scope.global' | translate }}</td>\n <td class=\"field-value\">\n <mat-checkbox class=\"global-checkbox\" [disabled]=\"true\" [checked]=\"processDefinition()?.global\"></mat-checkbox>\n </td>\n </tr>\n\n <tr class=\"sub-row\">\n <td class=\"field-label\">\n {{'yuv.app.bpm-management.processdefinitions.details.processes'|translate}}\n </td>\n <td class=\"field-value\">\n {{(processDefinition()?.statistics?.processInstanceCount?.active || 0 )+ (processDefinition()?.statistics?.processInstanceCount?.suspended || 0) + (processDefinition()?.statistics?.processInstanceCount?.completed || 0)}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.running'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.active || 0}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.suspended'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.suspended || 0}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.completed'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.completed || 0}}\n </td>\n </tr>\n </tbody>\n</table>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessDefinitionInstance, APP_ICONS } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { catchError, of } from 'rxjs';\nimport { ProcessDefinitionSummaryComponent } from './process-definition-summary/process-definition-summary.component';\n\n@Component({\n selector: 'ymbpm-process-definition-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n ProcessDefinitionSummaryComponent,\n MatTabsModule,\n],\n templateUrl: './process-definition-details.component.html',\n styleUrl: './process-definition-details.component.css'\n})\nexport class ProcessDefinitionDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n processDefinitionId = input<string | undefined>();\n processDefinition = signal<ProcessDefinitionInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadProcessDefinitionDetails();\n });\n }\n\n loadProcessDefinitionDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.processDefinitionId();\n if (id) {\n this.#bpmAdminService.getProcessDefinition(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process definition details:', err);\n this.loading.set(false);\n return of(null);\n })\n ).subscribe(processDefinition => {\n this.processDefinition.set(processDefinition || undefined);\n this.loading.set(false);\n });\n\n } else {\n this.processDefinition.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (processDefinition()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-process-definition-summary [processDefinition]=\"processDefinition()\"></ymbpm-process-definition-summary>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject, ViewChild } from '@angular/core';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { MatLabel } from '@angular/material/input';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-checkbox-overlay',\n standalone: true,\n imports: [\n YmtButtonDirective,\n DialogComponent,\n TranslatePipe,\n MatCheckbox,\n MatLabel\n],\n templateUrl: './checkbox-overlay.component.html',\n styleUrl: './checkbox-overlay.component.scss'\n})\nexport class CheckboxOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<CheckboxOverlayComponent>);\n readonly inputData = inject(MAT_DIALOG_DATA);\n\n @ViewChild('checkbox',) checkbox!: MatCheckbox;\n\n confirm() {\n this.#dialogRef.close(this.checkbox.checked);\n }\n\n close() {\n this.#dialogRef.close();\n }\n}\n","<yuv-dialog [headertitel]=\"this.inputData.title ?? ''\" []>\n <main class=\"yuv-dialog-content\">\n <mat-label>{{ this.inputData.message !== undefined ? this.inputData.message : '' }}</mat-label>\n <mat-checkbox #checkbox [checked]=\"false\">{{ this.inputData.checkboxMessage !== undefined ? this.inputData.checkboxMessage : '' }}</mat-checkbox>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\">\n {{ this.inputData.confirmBtnLabel !== undefined ? this.inputData.confirmBtnLabel : ('yuv.app.bpm-management.action.confirm.label' | translate) }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject, signal, ViewChild, TemplateRef, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, ProcessDefinitionInstance, ProcessDefinitionSearchResponse, TableFilters, FILTER_OPERATORS, FILTER_TYPES, ProcessDefinitionStatus, ProcessDefinitionScope, ProcessInstance } from '../../../bpm-management.schema';\nimport { Logger, NotificationService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { ProcessDefinitionFilter } from '../../../bpm-filter';\nimport { ProcessDefinitionDetailsComponent } from '../../../components/process-definition-details/process-definition-details.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CheckboxOverlayComponent } from '../../../components/overlays/checkbox-overlay/checkbox-overlay.component';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-processdefinitions-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n MatCheckbox,\n ProcessDefinitionDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n],\n templateUrl: './processdefinitions-page.component.html',\n styleUrl: './processdefinitions-page.component.scss'\n})\nexport class YuvProcessDefinitionsPageComponent implements OnInit {\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n readonly #translateService = inject(TranslateService);\n readonly #notificationService = inject(NotificationService);\n readonly #dialog = inject(MatDialog);\n\n @ViewChild(ProcessDefinitionDetailsComponent) processDefinitionDetailsComponent?: ProcessDefinitionDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('showOnlyLatestCheckbox',) showOnlyLatestCheckbox!: MatCheckbox;\n @ViewChild('globalTemplate', { static: true }) globalTemplate!: TemplateRef<unknown>;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n\n ProcessDefinitionScope = ProcessDefinitionScope;\n ProcessDefinitionStatus = ProcessDefinitionStatus;\n \n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'global', displayName: '',\n template: this.globalTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n enableMultiselect: false,\n options: [ProcessDefinitionScope.GLOBAL, ProcessDefinitionScope.TENANT]\n }\n },\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS],\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [ProcessDefinitionStatus.ACTIVE, ProcessDefinitionStatus.SUSPENDED]\n }\n },\n { \n name: 'category', \n displayName: 'yuv.app.bpm-management.header.category',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'version', \n displayName: 'yuv.app.bpm-management.header.version',\n filter: {\n type: FILTER_TYPES.NUMBER,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'key', \n displayName: 'yuv.app.bpm-management.header.key',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n ];\n }\n\n // Filter state\n tableFilter: ProcessDefinitionFilter = new ProcessDefinitionFilter;\n enableTableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<ProcessDefinitionInstance[]>([]);\n selection = signal(new SelectionModel<ProcessDefinitionInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadProcessDefinitionList();\n }\n\n refresh() {\n this.#loadProcessDefinitionList();\n this.processDefinitionDetailsComponent?.loadProcessDefinitionDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadProcessDefinitionList();\n }\n\n #loadProcessDefinitionList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getProcessDefinitions(this.pagination.page, this.pagination.pageSize, { ...this.tableFilter, latest: { value: this.showOnlyLatestCheckbox?.checked ?? true, type: FILTER_TYPES.CHECKBOX } }).subscribe(\n {\n next: (response : ProcessDefinitionSearchResponse) => {\n this.dataSource.set(response.objects);\n\n const selectedId = this.selection().selected.at(0)?.id;\n if (selectedId) {\n const updatedSelected = this.dataSource().find(pd => pd.id === selectedId);\n if (updatedSelected) {\n this.selection().select(updatedSelected);\n this.#updateActions(updatedSelected);\n }\n }\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: Error) => {\n this.#logger.error('Failed to fetch process definitions', e);\n this.busy.set(false);\n },\n complete: () => {\n // const selected = this.selection().hasValue() ? this.selection().selected[0] : undefined;\n // if (selected) {\n // if (this.dataSource().some(u => u.id === selected.id)) {\n // const updatedSelected = this.dataSource().find(u => u.id === selected.id);\n // this.select(updatedSelected);\n // } else {\n // this.#userManagementService.getUserDetails(selected.id).subscribe({\n // next: (user) => {\n // this.select(user);\n // },\n // error: (e) => {\n // this.#logger.error(`Failed to fetch data for selected user with id '${selected.id}'. Deselecting user...`, e);\n // this.deselect();\n // }\n // });\n // }\n // this.refreshUserDetails();\n // } else {\n // this.deselect();\n // }\n this.busy.set(false);\n },\n });\n }\n\n onTableFiltersChange(filters: TableFilters | null): void {\n if (filters != null) {\n this.tableFilter = ProcessDefinitionFilter.fromAgFilterModel(filters);\n }\n this.pagination.page = 0;\n this.#loadProcessDefinitionList();\n }\n\n hasActiveTableFilters(): boolean {\n return this.tableFilter ? Object.keys(this.tableFilter).length > 0 : false;\n }\n\n onRowSelected(processDefinition: unknown): void {\n this.selection().select(processDefinition as ProcessDefinitionInstance);\n this.#updateActions(this.selection().selected.at(0));\n\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n #updateActions(obj: ProcessDefinitionInstance | undefined) {\n this.actions = obj\n ? [ \n {\n id: 'yuv.app.bpm-management.processdefinitions.actions.activate',\n icon: APP_ICONS.activate,\n label: this.#translateService.instant(\n 'yuv.app.bpm-management.processdefinitions.actions.activate.label'\n ),\n disabled: obj.suspended === false || obj.global === true,\n callback: () => this.executeAction(\"activate\"),\n },\n {\n id: 'yuv.app.bpm-management.processdefinitions.actions.suspend',\n icon: APP_ICONS.suspend,\n label: this.#translateService.instant(\n 'yuv.app.bpm-management.processdefinitions.actions.suspend.label'\n ),\n disabled: obj.suspended === true || obj.global === true,\n callback: () => this.executeAction(\"suspend\"),\n }\n ]\n : [];\n }\n\n executeAction(action: string) {\n const processDefinition = this.selection().selected.at(0);\n if (!processDefinition) {\n return;\n }\n\n this.#dialog.open(CheckboxOverlayComponent, {\n width: '600px',\n maxWidth: '90vw',\n data: {\n title: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.label'),\n message: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.confirm.message'),\n checkboxMessage: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.activateorsuspend.confirm.includeProcesses.label'),\n confirmBtnLabel: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.confirm.button.label')\n },\n }).afterClosed().subscribe((result: boolean | undefined)=>{\n if (result !== undefined) {\n this.busy.set(true);\n this.#bpmAdminSerice.executeProcessDefinitionAction(processDefinition.id, action, result).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to ${action} process definition`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.error')\n );\n }\n });\n }\n });\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableTableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onTableFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDefinition = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDefinition ? 'flowchart' : undefined\" [title]=\"selectedDefinition ? (selectedDefinition.name || '<unnamed>') : ''\" [subtitle]=\"selectedDefinition ? selectedDefinition.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDefinition) {\n <ymbpm-process-definition-details [processDefinitionId]=\"selectedDefinition?.id\"></ymbpm-process-definition-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"filter-actions\"> \n <mat-checkbox #showOnlyLatestCheckbox (change)=\"this.onTableFiltersChange(null)\" [checked]=\"true\">{{'yuv.app.bpm-management.processdefinitions.filter.onlyLatest' | translate}}</mat-checkbox>\n </div>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableTableFilters\" [disabled]=\"!hasActiveTableFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #globalTemplate let-processDefinition>\n @if (processDefinition.global) {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.GLOBAL.label | translate\">{{icons[ProcessDefinitionScope.GLOBAL.icon]}}</mat-icon>\n } @else {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.TENANT.label | translate\">{{icons[ProcessDefinitionScope.TENANT.icon]}}</mat-icon>\n }\n</ng-template>\n\n<ng-template #statusTemplate let-processDefinition>\n @if (processDefinition.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessDefinitionStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessDefinitionStatus.ACTIVE.label | translate}}</span>\n }\n</ng-template>","import { Component, input, inject, computed } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { switchMap, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IdmService, NotificationService, TranslatePipe, TranslateService } from '@yuuvis/client-core';\n\n@Component({\n selector: 'ymbpm-user-display',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n TranslatePipe\n ],\n templateUrl: './user-display.component.html',\n styleUrl: './user-display.component.scss'\n})\nexport class UserDisplayComponent {\n private readonly idmService = inject(IdmService);\n private readonly notificationService = inject(NotificationService);\n private readonly translateService = inject(TranslateService);\n\n userId = input<string | null | undefined>();\n\n private readonly user = toSignal(\n toObservable(this.userId).pipe(\n switchMap(id => id ? this.idmService.getUserById(id) : of(null))\n ),\n { initialValue: null }\n );\n\n displayName = computed(() => this.user()?.getDisplayNameName() ?? this.userId() ?? '-');\n\n copyId(event: Event): void {\n event.stopPropagation();\n\n const id = this.userId();\n if (!id) {\n return;\n }\n\n navigator.clipboard.writeText(id).then(() => {\n this.notificationService.success(\n this.translateService.instant('yuv.app.bpm-management.user.copyId.success', { name: this.displayName() })\n );\n });\n }\n}\n","@if (userId()) {\n <span class=\"user-display\">\n <span class=\"user-name\">{{ displayName() }}</span>\n <button mat-icon-button\n type=\"button\"\n class=\"copy-id-btn\"\n (click)=\"copyId($event)\"\n [matTooltip]=\"'yuv.app.bpm-management.user.copyId.tooltip' | translate\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </span>\n} @else {\n <span>-</span>\n}\n","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessInstance, APP_ICONS, ProcessStatus } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-process-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './process-summary.component.html',\n styleUrl: './process-summary.component.css'\n})\nexport class ProcessSummaryComponent {\n readonly #translateService = inject(TranslateService);\n \n process = input<ProcessInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n\n processStatusTemplate = (process: ProcessInstance | undefined): string => {\n if (!process) return '';\n if (process.endTime) {\n return `<span class=\"yuv-bpmn-status completed\">${this.#translateService.instant(ProcessStatus.COMPLETED.label)}</span>`;\n } else if (process.suspended) {\n return `<span class=\"yuv-bpmn-status suspended\">${this.#translateService.instant(ProcessStatus.SUSPENDED.label)}</span>`;\n } else {\n return `<span class=\"yuv-bpmn-status running\">${this.#translateService.instant(ProcessStatus.RUNNING.label)}</span>`;\n }\n }\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.processDefinitionId' | translate }}</td>\n <td class=\"field-value\">{{ process()?.processDefinitionId }}</td>\n </tr>\n \n @if (process()?.processDefinitionDescription) {\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.process.details.processDefinitionDescription' | translate }}</td>\n <td class=\"field-value\">{{ process()?.processDefinitionDescription }}</td>\n </tr>\n }\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\" [innerHTML]=\"processStatusTemplate(process())\"></td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.businessKey' | translate }}</td>\n <td class=\"field-value\">{{ process()?.businessKey || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.startedBy' | translate }}</td>\n <td class=\"field-value\"><ymbpm-user-display [userId]=\"process()?.startUserId\"></ymbpm-user-display></td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.startTime' | translate }}</td>\n <td class=\"field-value\">{{ ((process()?.startTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.endTime' | translate }}</td>\n <td class=\"field-value\">{{ ((process()?.endTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"variables-section\">\n <h3 class=\"variables-title\">{{ 'yuv.app.bpm-management.details.variables' | translate }}</h3>\n\n <p *ngIf=\"!process()?.variables || process()?.variables?.length === 0\" class=\"no-variables-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n </p>\n <table class=\"variables-table\" *ngIf=\"process()?.variables && process()?.variables?.length! > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.details.variableName' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableType' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableValue' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (variable of process()!.variables; track variable.name) {\n <tr>\n <td class=\"variable-name\">{{ variable.name }}</td>\n <td class=\"variable-type\">{{ variable.type }}</td>\n <td class=\"variable-value\">{{ variable.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance } from '../../../bpm-management.schema';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'ymbpm-process-tasks',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './process-tasks.component.html',\n styleUrl: './process-tasks.component.css'\n})\nexport class ProcessTasksComponent {\n tasks = input<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!tasks() || tasks().length === 0\" class=\"no-tasks-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<table class=\"tasks-table\" *ngIf=\"tasks() && tasks().length > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.name' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.assignee' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.owner' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.createTime' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.endTime' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (task of tasks(); track task) {\n <tr>\n <td class=\"task-id\">{{ task.id }}</td>\n <td class=\"task-name\">{{ task.name }}</td>\n <td class=\"task-assignee\">{{ task.assignee }}</td>\n <td class=\"task-owner\">{{ task.owner }}</td>\n <td class=\"task-createTime\">{{ task.createTime | formatDateTime }}</td>\n <td class=\"task-endTime\">{{ task.endTime | formatDateTime }}</td>\n </tr>\n }\n </tbody>\n </table>","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-process-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './process-history.component.html',\n styleUrl: './process-history.component.css'\n})\nexport class ProcessHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n formatDateTime = formatDateTime;\n\n tasks = input<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!tasks() || tasks().length === 0\" class=\"no-tasks-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<div class=\"process-history-container\">\n <div class=\"timeline-container\" *ngIf=\"tasks() && tasks().length > 0\" [ngClass]=\"{singleEntry: tasks().length === 1}\">\n <div class=\"timeline-item\" *ngFor=\"let task of tasks()\">\n <div class=\"timeline-datetime\" [matTooltip]=\"'yuv.app.bpm-management.header.startTime' | translate\">\n <div class=\"date\">{{ formatDateTime(task.createTime, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(task.createTime, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"task-card\">\n <div class=\"task-title\" [matTooltip]=\"'yuv.app.bpm-management.header.name' | translate\">{{ task.name || '<unnamed>' }}</div>\n <div class=\"task-details\">\n <div class=\"task-assignee\" [matTooltip]=\"'yuv.app.bpm-management.header.assignee' | translate\">\n <mat-icon>person</mat-icon>\n <ymbpm-user-display [userId]=\"task.assignee\"></ymbpm-user-display>\n </div>\n <div class=\"task-owner\" *ngIf=\"task.owner\" [matTooltip]=\"'yuv.app.bpm-management.header.owner' | translate\">\n <mat-icon>supervisor_account</mat-icon>\n <ymbpm-user-display [userId]=\"task.owner\"></ymbpm-user-display>\n </div>\n <div class=\"task-endtime\" *ngIf=\"task.endTime\" [matTooltip]=\"'yuv.app.bpm-management.header.endTime' | translate\">\n <mat-icon>event_available</mat-icon>\n <span>{{ task.endTime | formatDateTime }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessInstance, APP_ICONS, TaskInstance } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { ProcessSummaryComponent } from './process-summary/process-summary.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ProcessTasksComponent } from './process-tasks/process-tasks.component';\nimport { ProcessHistoryComponent } from './process-history/process-history.component';\nimport { catchError, forkJoin, of } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-process-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n ProcessSummaryComponent,\n ProcessTasksComponent,\n ProcessHistoryComponent,\n MatTabsModule\n],\n templateUrl: './process-details.component.html',\n styleUrl: './process-details.component.css'\n})\nexport class ProcessDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n processInstanceId = input<string | undefined>();\n process = signal<ProcessInstance | undefined>(undefined);\n tasks = signal<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadProcessDetails();\n });\n }\n\n loadProcessDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.processInstanceId();\n if (id) {\n forkJoin({\n process: this.#bpmAdminService.getProcess(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process details:', err);\n return of(null);\n })\n ),\n history: this.#bpmAdminService.getProcessHistory(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process history:', err);\n return of(null);\n })\n )\n }).subscribe(({ process, history }) => {\n this.process.set(process || undefined);\n this.tasks.set(history?.tasks || []);\n this.loading.set(false);\n });\n\n } else {\n this.process.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (process() && tasks()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-process-summary [process]=\"process()\"></ymbpm-process-summary>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.tasks' | translate\">\n <ymbpm-process-tasks [tasks]=\"tasks()\"></ymbpm-process-tasks>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.history' | translate\">\n <ymbpm-process-history [tasks]=\"tasks()\"></ymbpm-process-history>\n </mat-tab>\n </mat-tab-group>\n </section>\n}","import { Component, inject, OnInit, signal, ViewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, ProcessesSearchResponse, ProcessInstance, Column, Pagination, TableFilters, formatDateTime, FILTER_TYPES, FILTER_OPERATORS, ProcessStatus } from '../../../bpm-management.schema';\nimport { Logger, TranslateService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { ProcessDetailsComponent } from '../../../components/process-details/process-details.component';\nimport { UserDisplayComponent } from '../../../components/user-display/user-display.component';\nimport { ProcessFilter } from '../../../bpm-filter';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-processes-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n ProcessDetailsComponent,\n UserDisplayComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './processes-page.component.html',\n styleUrl: './processes-page.component.scss'\n})\nexport class YuvProcessesPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n\n @ViewChild(ProcessDetailsComponent) processDetailsComponent?: ProcessDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n @ViewChild('userTemplate', { static: true }) userTemplate!: TemplateRef<unknown>;\n\n ProcessStatus = ProcessStatus;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'processDefinitionId', \n displayName: 'yuv.app.bpm-management.header.processDefinitionId',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [ProcessStatus.RUNNING_SUSPENDED, ProcessStatus.COMPLETED]\n }\n },\n {\n name: 'startUserId',\n displayName: 'yuv.app.bpm-management.header.startedBy',\n template: this.userTemplate,\n filter: {\n type: FILTER_TYPES.USER\n }\n },\n { \n name: 'startTime', \n displayName: 'yuv.app.bpm-management.header.startTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'endTime', \n displayName: 'yuv.app.bpm-management.header.endTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'businessKey', \n displayName: 'yuv.app.bpm-management.header.businessKey',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n ];\n }\n\n // Filter state\n filter: ProcessFilter = new ProcessFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<ProcessInstance[]>([]);\n selection = signal(new SelectionModel<ProcessInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadProcessList();\n }\n\n refresh() {\n this.#loadProcessList();\n this.processDetailsComponent?.loadProcessDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadProcessList()\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = ProcessFilter.fromAgFilterModel(filters, this.#translateService);\n this.pagination.page = 0;\n this.#loadProcessList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n\n #loadProcessList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getProcesses(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : ProcessesSearchResponse) => {\n\n const formattedProcessObjects = response.objects.map(process => ({\n ...process,\n startTime: process.startTime ? formatDateTime(process.startTime, this.#translateService.currentLang) : process.startTime,\n endTime: process.endTime ? formatDateTime(process.endTime, this.#translateService.currentLang) : process.endTime\n }));\n\n this.dataSource.set(formattedProcessObjects);\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch processes', e);\n this.busy.set(false);\n },\n complete: () => {\n this.busy.set(false);\n },\n });\n }\n\n onRowSelected(process: unknown): void {\n this.selection().select(process as ProcessInstance);\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedProcess = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedProcess ? 'timeline' : undefined\" [title]=\"selectedProcess ? (selectedProcess.name || '<unnamed>') : ''\" [subtitle]=\"selectedProcess ? selectedProcess.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedProcess) {\n <ymbpm-process-details [processInstanceId]=\"selectedProcess?.id\"></ymbpm-process-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-process>\n @if (process.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ProcessStatus.COMPLETED.label | translate}}</span>\n } @else if (process.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>\n\n<ng-template #userTemplate let-process>\n <ymbpm-user-display [userId]=\"process.startUserId\"></ymbpm-user-display>\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-task-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './task-summary.component.html',\n styleUrl: './task-summary.component.scss'\n})\nexport class TaskSummaryComponent {\n \n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.processInstanceId' | translate }}</td>\n <td class=\"field-value\">\n @if (task()?.processInstanceId) {\n {{ task()?.processInstanceId }}\n } @else {\n <span class=\"standalone-task-indicator\">\n <span>-</span>\n <mat-icon [matTooltip]=\"'yuv.app.bpm-management.task.details.standaloneTask.tooltip' | translate\">{{ icons.info }}</mat-icon>\n </span>\n }\n </td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.processInstanceName' | translate }}</td>\n <td class=\"field-value\">{{ task()?.processInstanceName || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\">\n @if (task()?.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ 'yuv.app.bpm-management.status.completed' | translate }}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ 'yuv.app.bpm-management.status.running' | translate }}</span>\n }\n @if (task()?.delegationState) {\n @if (task()?.delegationState === 'pending') {\n <span class=\"yuv-bpmn-status running\">\n <mat-icon>{{ icons.delegated }}</mat-icon>\n {{ 'yuv.app.bpm-management.task.delegationState.pending' | translate }}\n </span>\n } @else {\n <span class=\"yuv-bpmn-status completed\">\n <mat-icon>{{ icons.resolved }}</mat-icon>\n {{ 'yuv.app.bpm-management.task.delegationState.resolved' | translate }}\n </span>\n }\n }\n </td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.description' | translate }}</td>\n <td class=\"field-value\">{{ task()?.description || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}</td>\n <td class=\"field-value\"><ymbpm-user-display [userId]=\"task()?.assignee\"></ymbpm-user-display></td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}</td>\n <td class=\"field-value\"><ymbpm-user-display [userId]=\"task()?.owner\"></ymbpm-user-display></td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.taskDefinitionKey' | translate }}</td>\n <td class=\"field-value\">{{ task()?.taskDefinitionKey }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.formKey' | translate }}</td>\n <td class=\"field-value\">{{ task()?.formKey || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.createTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.createTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.claimTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.claimTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.dueDate' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.dueDate ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.endTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.endTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n </tbody>\n</table>\n","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime, TaskAssignmentHistoryEntry } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-editor-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n UserDisplayComponent\n ],\n templateUrl: './editor-history.component.html',\n styleUrl: './editor-history.component.scss'\n})\nexport class EditorHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n formatDateTime = formatDateTime;\n\n icons = {\n ...APP_ICONS\n };\n\n get candidateUsers(): string[] {\n return this.task()?.identityLinks?.candidates?.users || [];\n }\n\n get candidateRoles(): string[] {\n return this.task()?.identityLinks?.candidates?.roles || [];\n }\n\n get assignmentHistory(): TaskAssignmentHistoryEntry[] {\n return this.task()?.identityLinks?.assignmentHistory || [];\n }\n\n getActionIcon(type: string, assignee?: string): string {\n switch (type) {\n case 'ASSIGNMENT':\n return assignee !== null ? 'person_add' : 'person_off';\n case 'DELEGATION':\n return this.icons.delegated;\n case 'RESOLVE':\n return this.icons.resolved;\n default:\n return 'info';\n }\n }\n\n getActionLabel(type: string, assignee?: string): string {\n if (type === 'ASSIGNMENT') {\n return assignee !== null ?\n 'yuv.app.bpm-management.task.details.actionType.assignment'\n : 'yuv.app.bpm-management.task.details.actionType.assignmentRemoved';\n }\n return `yuv.app.bpm-management.task.details.actionType.${type.toLowerCase()}`;\n }\n}\n","<div class=\"editor-history-container\">\n <!-- Candidate Users Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>person</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}\n </h3>\n @if (candidateUsers.length > 0) {\n <div class=\"candidates-list\">\n @for (user of candidateUsers; track user) {\n <span class=\"candidate-chip\">\n <mat-icon>person</mat-icon>\n <ymbpm-user-display [userId]=\"user\"></ymbpm-user-display>\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateUsers' | translate }}</p>\n }\n </div>\n\n <!-- Candidate Roles Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>group</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}\n </h3>\n @if (candidateRoles.length > 0) {\n <div class=\"candidates-list\">\n @for (role of candidateRoles; track role) {\n <span class=\"candidate-chip\">\n <mat-icon>group</mat-icon>\n {{ role }}\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateRoles' | translate }}</p>\n }\n </div>\n\n <!-- Assignment History Section -->\n <div class=\"history-section\">\n <h3 class=\"section-title\">\n <mat-icon>history</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.assignmentHistory' | translate }}\n </h3>\n \n @if (assignmentHistory.length === 0) {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noAssignmentHistory' | translate }}</p>\n } @else {\n <div class=\"timeline-container\" [ngClass]=\"{singleEntry: assignmentHistory.length === 1}\">\n @for (entry of assignmentHistory; track entry.timestamp) {\n <div class=\"timeline-item\">\n <div class=\"timeline-datetime\">\n <div class=\"date\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"history-card\">\n <div class=\"action-header\">\n <mat-icon class=\"action-icon\">{{ getActionIcon(entry.type, entry.assignee) }}</mat-icon>\n <span class=\"action-label\">{{ getActionLabel(entry.type, entry.assignee) | translate }}</span>\n </div>\n @if (entry.assignee) {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}:</span>\n <ymbpm-user-display [userId]=\"entry.assignee\"></ymbpm-user-display>\n </div>\n }\n @if (entry.owner && entry.type !== 'RESOLVE') {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}:</span>\n <ymbpm-user-display [userId]=\"entry.owner\"></ymbpm-user-display>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, effect, inject, input, signal } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { TaskInstance } from '../../bpm-management.schema';\nimport { catchError, forkJoin, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TaskSummaryComponent } from './task-summary/task-summary.component';\nimport { EditorHistoryComponent } from './editor-history/editor-history.component';\n\n@Component({\n selector: 'ymbpm-task-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n MatTabsModule,\n TaskSummaryComponent,\n EditorHistoryComponent\n ],\n templateUrl: './task-details.component.html',\n styleUrl: './task-details.component.scss'\n})\nexport class TaskDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n\n taskId = input<string | undefined>();\n task = signal<TaskInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n constructor() {\n effect(() => {\n this.loadTaskDetails();\n });\n }\n\n loadTaskDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.taskId();\n if (id) {\n forkJoin({\n task: this.#bpmAdminService.getTask(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process details:', err);\n return of(null);\n })\n )\n }).subscribe(({ task }) => {\n this.task.set(task || undefined);\n this.loading.set(false);\n });\n\n } else {\n this.task.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (task()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab label=\"{{ 'yuv.app.bpm-management.tabs.summary' | translate }}\">\n <ymbpm-task-summary [task]=\"task()\"></ymbpm-task-summary>\n </mat-tab>\n <mat-tab label=\"{{ 'yuv.app.bpm-management.tabs.editorHistory' | translate }}\">\n <ymbpm-editor-history [task]=\"task()\"></ymbpm-editor-history>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms'\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-task-assign-overlay',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n standalone: true,\n templateUrl: './task-assign-overlay.component.html',\n styleUrl: './task-assign-overlay.component.css'\n})\nexport class TaskAssignOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskAssignOverlayComponent>);\n readonly data = inject(MAT_DIALOG_DATA);\n\n userControl = new FormControl('');\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const assignee = this.userControl.value;\n if (assignee && assignee.trim()) {\n this.#dialogRef.close(assignee.trim());\n }\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.assign.label' | translate\">\n <main >\n <mat-label>{{ 'yuv.app.bpm-management.task.actions.assign.assignee.label' | translate }}</mat-label>\n <yuv-organization [formControl]=\"userControl\" [excludeMe]='false' />\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\" [disabled]=\"this.userControl.touched && this.userControl.dirty\">\n {{ 'yuv.app.bpm-management.task.actions.assign.confirm' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\nexport interface TaskCandidatesOverlayData {\n currentUsers: string[];\n currentRoles: string[];\n}\n\nexport interface TaskCandidatesOverlayResult {\n users: string[];\n roles: string[];\n}\n\n@Component({\n selector: 'ymbpm-task-candidates-overlay',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n templateUrl: './task-candidates-overlay.component.html',\n styleUrl: './task-candidates-overlay.component.css'\n})\nexport class TaskCandidatesOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskCandidatesOverlayComponent>);\n readonly data: TaskCandidatesOverlayData = inject(MAT_DIALOG_DATA);\n\n readonly usersControl = new FormControl<string | string[] | null>(\n this.data.currentUsers?.length ? this.data.currentUsers : null\n );\n\n readonly rolesControl = new FormControl<string | string[] | null>(\n this.data.currentRoles?.length ? this.data.currentRoles : null\n );\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const usersValue = this.usersControl.value;\n const rolesValue = this.rolesControl.value;\n\n const result: TaskCandidatesOverlayResult = {\n users: Array.isArray(usersValue) ? usersValue.filter(Boolean) : usersValue ? [usersValue] : [],\n roles: Array.isArray(rolesValue) ? rolesValue.filter(Boolean) : rolesValue ? [rolesValue] : []\n };\n this.#dialogRef.close(result);\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.editCandidates.label' | translate\">\n <main>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}</label>\n <yuv-organization [formControl]=\"usersControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[user]']\" />\n </div>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}</label>\n <yuv-organization [formControl]=\"rolesControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[role]']\" />\n </div>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.cancel.label' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.confirm.label' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject, OnInit, signal, ViewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, TasksSearchResponse, TaskInstance, formatDateTime, TableFilters, FILTER_TYPES, FILTER_OPERATORS, TaskStatus } from '../../../bpm-management.schema';\nimport { Logger, TranslateService, NotificationService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { TaskFilter } from '../../../bpm-filter';\nimport { TaskDetailsComponent } from '../../../components/task-details/task-details.component';\nimport { UserDisplayComponent } from '../../../components/user-display/user-display.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmComponent } from '@yuuvis/client-components/common';\nimport { TaskAssignOverlayComponent } from '../../../components/overlays/task-assign-overlay/task-assign-overlay.component';\nimport { TaskCandidatesOverlayComponent, TaskCandidatesOverlayResult } from '../../../components/overlays/task-candidates-overlay/task-candidates-overlay.component';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-tasks-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n TaskDetailsComponent,\n UserDisplayComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './tasks-page.component.html',\n styleUrl: './tasks-page.component.scss'\n})\nexport class YuvTasksPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n readonly #dialog = inject(MatDialog);\n readonly #notificationService = inject(NotificationService);\n\n @ViewChild(TaskDetailsComponent) taskDetailsComponent?: TaskDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n @ViewChild('assigneeTemplate', { static: true }) assigneeTemplate!: TemplateRef<unknown>;\n @ViewChild('ownerTemplate', { static: true }) ownerTemplate!: TemplateRef<unknown>;\n \n TaskStatus = TaskStatus;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [TaskStatus.RUNNING, TaskStatus.COMPLETED]\n }\n },\n {\n name: 'assignee',\n displayName: 'yuv.app.bpm-management.header.assignee',\n template: this.assigneeTemplate,\n filter: {\n type: FILTER_TYPES.USER\n }\n },\n {\n name: 'owner',\n displayName: 'yuv.app.bpm-management.header.owner',\n template: this.ownerTemplate,\n filter: {\n type: FILTER_TYPES.USER\n }\n },\n { \n name: 'createTime', \n displayName: 'yuv.app.bpm-management.header.createTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'endTime', \n displayName: 'yuv.app.bpm-management.header.endTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n }\n ];\n }\n\n // Filter state\n filter: TaskFilter = new TaskFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<TaskInstance[]>([]);\n selection = signal(new SelectionModel<TaskInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadTaskList();\n }\n\n refresh() {\n this.#loadTaskList();\n this.taskDetailsComponent?.loadTaskDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadTaskList()\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = TaskFilter.fromAgFilterModel(filters, this.#translateService);\n this.pagination.page = 0; // Reset to first page when filtering\n this.#loadTaskList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n\n #loadTaskList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getTasks(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : TasksSearchResponse) => {\n const formattedTaskObjects = response.objects.map(task => ({\n ...task,\n createTime: task.createTime ? formatDateTime(task.createTime, this.#translateService.currentLang) : task.createTime,\n endTime: task.endTime ? formatDateTime(task.endTime, this.#translateService.currentLang) : task.endTime\n }));\n\n this.dataSource.set(formattedTaskObjects);\n\n const selectedId = this.selection().selected.at(0)?.id;\n if (selectedId) {\n const updatedSelected = this.dataSource().find(pd => pd.id === selectedId);\n if (updatedSelected) {\n this.selection().select(updatedSelected);\n this.#updateActions(updatedSelected);\n }\n }\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch tasks', e);\n this.busy.set(false);\n },\n complete: () => {\n this.busy.set(false);\n },\n });\n }\n\n onRowSelected(task: unknown): void {\n this.selection().select(task as TaskInstance);\n this.#updateActions(this.selection().selected.at(0));\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n #updateActions(obj: TaskInstance | undefined) {\n if (!obj) {\n this.actions = [];\n return;\n }\n this.actions = [\n {\n id: 'yuv.app.bpm-management.task.actions.assign',\n icon: APP_ICONS.assign,\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.label'),\n disabled: obj.assignee != null || obj.endTime != null,\n callback: () => this.assign(),\n },\n {\n id: 'yuv.app.bpm-management.task.actions.unassign',\n icon: APP_ICONS.unassign,\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n disabled: obj.assignee == null || obj.endTime != null,\n callback: () => this.unassign(),\n },\n {\n id: 'yuv.app.bpm-management.task.actions.editCandidates',\n icon: 'manage_accounts',\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.editCandidates.label'),\n disabled: obj.endTime != null,\n callback: () => this.editCandidates(),\n }\n ];\n }\n \n unassign() {\n const task = this.selection().selected.at(0);\n if (!task) {\n return;\n }\n\n this.#dialog.open(ConfirmComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n title: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n message: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.confirm.message')\n },\n }).afterClosed().subscribe((confirm: boolean)=>{\n if (confirm) {\n this.#bpmAdminSerice.assignTask(task.id, null).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to unassign task`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.error')\n );\n }\n });\n }\n });\n }\n\n assign() {\n const task = this.selection().selected.at(0);\n if (!task) {\n return;\n }\n\n this.#dialog.open(TaskAssignOverlayComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n taskId: task.id,\n taskName: task.name\n },\n }).afterClosed().subscribe((assignee: string) => {\n if (assignee) {\n this.#bpmAdminSerice.assignTask(task.id, assignee).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to assign task`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.error')\n );\n }\n });\n }\n });\n }\n\n editCandidates() {\n const task = this.selection().selected.at(0);\n if (!task) return;\n\n const detailTask = this.taskDetailsComponent?.task();\n const currentUsers = detailTask?.identityLinks?.candidates?.users ?? [];\n const currentRoles = detailTask?.identityLinks?.candidates?.roles ?? [];\n\n this.#dialog.open(TaskCandidatesOverlayComponent, {\n width: '600px',\n maxWidth: '95vw',\n data: { currentUsers: [...currentUsers], currentRoles: [...currentRoles] }\n }).afterClosed().subscribe((result: TaskCandidatesOverlayResult | undefined) => {\n if (result === undefined) return;\n this.#bpmAdminSerice.setTaskCandidates(task.id, result).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.success')\n );\n this.taskDetailsComponent?.loadTaskDetails();\n },\n error: () => {\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.error')\n );\n }\n });\n });\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\"\n [busy]=\"busy()\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n \n <ng-template ymtLayoutPane role=\"details\">\n @let selectedTask = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedTask ? 'task' : undefined\" [title]=\"selectedTask ? (selectedTask.name || '<unnamed>') : ''\" [subtitle]=\"selectedTask ? selectedTask.id : ''\" [actions]=\"listActions\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedTask) {\n <ymbpm-task-details [taskId]=\"selectedTask?.id\"></ymbpm-task-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-task>\n @if (task.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{TaskStatus.COMPLETED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{TaskStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>\n\n<ng-template #assigneeTemplate let-task>\n <ymbpm-user-display [userId]=\"task.assignee\"></ymbpm-user-display>\n</ng-template>\n\n<ng-template #ownerTemplate let-task>\n <ymbpm-user-display [userId]=\"task.owner\"></ymbpm-user-display>\n</ng-template>","import { Route } from '@angular/router';\nimport { YuvBpmManagementComponent } from './container/bpm-management.component';\nimport { YuvDeploymentsPageComponent } from './pages/deployments/deployments-page/deployments-page.component';\nimport { YuvProcessDefinitionsPageComponent } from './pages/processdefinitions/processdefinitions-page/processdefinitions-page.component';\nimport { YuvProcessesPageComponent } from './pages/processes/processes-page/processes-page.component';\nimport { YuvTasksPageComponent } from './pages/tasks/tasks-page/tasks-page.component';\n\nexport const YuvBpmManagementRoutes: Route[] = [\n {\n path: '',\n component: YuvBpmManagementComponent,\n children: [\n { path: 'deployments', component: YuvDeploymentsPageComponent },\n { path: 'processdefinitions', component: YuvProcessDefinitionsPageComponent },\n { path: 'processes', component: YuvProcessesPageComponent },\n { path: 'tasks', component: YuvTasksPageComponent },\n { path: '', redirectTo: 'processes', pathMatch: 'full' }\n ]\n }\n];","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i5","i6","i3","i7"],"mappings":"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"}
|