@masterteam/work-center 0.0.29 → 0.0.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.html","../../../../packages/masterteam/work-center/src/store/work-center/work-center.actions.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.model.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.helpers.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.facade.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-types.helpers.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.html","../../../../packages/masterteam/work-center/src/store/app.state.ts","../../../../packages/masterteam/work-center/src/masterteam-work-center.ts"],"sourcesContent":["import {\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { DrawerController } from '@masterteam/components/dynamic-drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n ClientForm,\r\n ClientLookup,\r\n ProcessFormSubmitResponse,\r\n} from '@masterteam/forms/client-form';\r\n\r\nimport { WorkCenterClientFormModalData } from '../../store/work-center/work-center.model';\r\n\r\n@Component({\r\n selector: 'mt-work-center-client-form-modal',\r\n standalone: true,\r\n imports: [Button, TranslocoDirective, ClientForm],\r\n templateUrl: './work-center-client-form-modal.html',\r\n})\r\nexport class WorkCenterClientFormModal {\r\n readonly modal = inject(ModalService);\r\n readonly ref = inject(ModalRef);\r\n readonly drawerController = inject(DrawerController, { optional: true });\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly processForm = viewChild.required(ClientForm);\r\n readonly data = input.required<WorkCenterClientFormModalData>();\r\n readonly operationKey = input<string>('Create');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n\r\n readonly moduleKey = computed(() => this.data().moduleKey);\r\n readonly moduleId = computed(() => this.toNumber(this.data().moduleId));\r\n readonly levelId = computed(() => this.toNumber(this.data().levelId));\r\n readonly levelDataId = computed(() => this.toNumber(this.data().levelDataId));\r\n readonly moduleDataId = computed(() =>\r\n this.toNumber(this.data().moduleDataId),\r\n );\r\n readonly formMode = computed<'create' | 'edit'>(() =>\r\n this.moduleDataId() != null ||\r\n this.operationKey().trim().toLowerCase() === 'update'\r\n ? 'edit'\r\n : 'create',\r\n );\r\n\r\n readonly validationMessage = signal<string | null>(null);\r\n readonly submitError = signal<string | null>(null);\r\n readonly isSubmitting = signal(false);\r\n readonly submitStatus = signal<'pending' | 'executed' | null>(null);\r\n\r\n onSubmit(): void {\r\n this.validationMessage.set(null);\r\n this.submitError.set(null);\r\n this.submitStatus.set(null);\r\n\r\n if (!this.processForm().isValid()) {\r\n this.validationMessage.set(\r\n this.transloco.translate<string>(\r\n 'workCenter.validation.fillRequiredFields',\r\n ),\r\n );\r\n return;\r\n }\r\n\r\n this.isSubmitting.set(true);\r\n this.processForm().submit();\r\n }\r\n\r\n onSubmitted(response: ProcessFormSubmitResponse): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(null);\r\n\r\n const status =\r\n response.status === 'PendingApproval' ? 'pending' : 'executed';\r\n this.submitStatus.set(status);\r\n\r\n if (status === 'executed') {\r\n this.ref.close(true);\r\n }\r\n }\r\n\r\n onErrored(error: string): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(\r\n error ??\r\n this.transloco.translate<string>('workCenter.error.failedSubmit'),\r\n );\r\n }\r\n\r\n private toNumber(value: unknown): number | undefined {\r\n if (typeof value === 'number' && Number.isFinite(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim() !== '') {\r\n const parsed = Number(value);\r\n if (Number.isFinite(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n <div [class]=\"modal.contentClass + ' p-5 flex flex-col gap-4'\">\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [operationKey]=\"operationKey()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [formMode]=\"formMode()\"\r\n [autoLoad]=\"true\"\r\n [lookups]=\"lookups()\"\r\n (submitted)=\"onSubmitted($event)\"\r\n (errored)=\"onErrored($event)\"\r\n />\r\n\r\n @if (isSubmitting()) {\r\n <div class=\"text-sm text-muted-color\">{{ t(\"modal.submitting\") }}</div>\r\n }\r\n\r\n @if (validationMessage()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-700\"\r\n role=\"alert\"\r\n >\r\n {{ validationMessage() }}\r\n </div>\r\n }\r\n\r\n @if (submitError()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\r\n role=\"alert\"\r\n >\r\n {{ submitError() }}\r\n </div>\r\n }\r\n\r\n @if (submitStatus(); as status) {\r\n <div\r\n class=\"mt-2 rounded-lg border p-3 text-sm\"\r\n [class]=\"\r\n status === 'pending'\r\n ? 'border-amber-200 bg-amber-50 text-amber-700'\r\n : 'border-emerald-200 bg-emerald-50 text-emerald-700'\r\n \"\r\n >\r\n @if (status === \"pending\") {\r\n {{ t(\"modal.requestSubmitted\") }}\r\n } @else {\r\n {{ t(\"modal.operationExecuted\") }}\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"t('modal.cancel')\"\r\n variant=\"outlined\"\r\n [disabled]=\"isSubmitting()\"\r\n (onClick)=\"ref.close(false)\"\r\n />\r\n <mt-button\r\n [label]=\"t('modal.submit')\"\r\n icon=\"general.check\"\r\n [disabled]=\"isSubmitting()\"\r\n (onClick)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import {\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n WorkCenterLookups,\r\n} from './work-center.model';\r\n\r\nexport class EnterArea {\r\n static readonly type = '[WorkCenter] Enter Area';\r\n\r\n constructor(public area: WorkCenterArea) {}\r\n}\r\n\r\nexport class HydrateFromContext {\r\n static readonly type = '[WorkCenter] Hydrate From Context';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public patch: WorkCenterHydratePatch,\r\n ) {}\r\n}\r\n\r\nexport class SetParams {\r\n static readonly type = '[WorkCenter] Set Params';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public inputs: WorkCenterBootstrapInputs,\r\n ) {}\r\n}\r\n\r\nexport class SetLookups {\r\n static readonly type = '[WorkCenter] Set Lookups';\r\n\r\n constructor(public lookups: WorkCenterLookups) {}\r\n}\r\n\r\nexport class LoadRuntime {\r\n static readonly type = '[WorkCenter] Load Runtime';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public reason: WorkCenterLoadReason = 'manual',\r\n ) {}\r\n}\r\n\r\n/**\r\n * Replaces the header filter slice (rules from\r\n * `mt-property-filter-builder`). Resets `page` to 1 and triggers a\r\n * BE reload with the merged `headerFilters` + `columnFilters` payload.\r\n */\r\nexport class ApplyHeaderFilters {\r\n static readonly type = '[WorkCenter] Apply Header Filters';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public filters: WorkCenterFilterRule[],\r\n ) {}\r\n}\r\n\r\n/**\r\n * Replaces the in-table column filter slice (rules translated from the\r\n * `mt-table` filters map). Resets `page` to 1 and triggers a BE reload\r\n * with the merged `headerFilters` + `columnFilters` payload.\r\n */\r\nexport class ApplyColumnFilters {\r\n static readonly type = '[WorkCenter] Apply Column Filters';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public filters: WorkCenterFilterRule[],\r\n ) {}\r\n}\r\n","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport type { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\nimport { Type } from '@angular/core';\r\n\r\nexport type WorkCenterArea = 'MyInbox' | 'TasksCenter';\r\nexport type WorkCenterItemContextKey = string;\r\nexport type WorkCenterLookups = ClientLookup[];\r\n\r\nexport enum WorkCenterActionKey {\r\n LoadRuntime = 'loadRuntime',\r\n}\r\n\r\nexport const WORK_CENTER_QUERY_VERSION = 1;\r\nexport const WORK_CENTER_MAX_PAGE_SIZE = 100;\r\nexport const WORK_CENTER_MAX_FILTERS = 20;\r\nexport const WORK_CENTER_MAX_SORT = 5;\r\n\r\nexport interface ApiEnvelope<T> {\r\n endpoint: string | null;\r\n status: number;\r\n code: 1 | 2;\r\n locale: string | null;\r\n message: string | null;\r\n errors: unknown;\r\n data: T;\r\n cacheSession: string | null;\r\n}\r\n\r\nexport interface TranslatableDto {\r\n display: string;\r\n en: string;\r\n ar: string;\r\n}\r\n\r\nexport interface WorkCenterSortRule {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nexport type WorkCenterFilterOperator =\r\n | 'Eq'\r\n | 'Neq'\r\n | 'In'\r\n | 'Contains'\r\n | 'StartsWith'\r\n | 'Gt'\r\n | 'Gte'\r\n | 'Lt'\r\n | 'Lte'\r\n | 'Between'\r\n | 'IsNull'\r\n | 'IsNotNull';\r\n\r\nexport interface WorkCenterFilterRule {\r\n field: string;\r\n op: WorkCenterFilterOperator;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\nexport interface WorkCenterRuntimeProperty {\r\n id?: number;\r\n key: string;\r\n normalizedKey?: string;\r\n name?: TranslatableDto;\r\n description?: TranslatableDto;\r\n viewType?: string;\r\n}\r\n\r\nexport interface WorkCenterRuntimeOperatorOption {\r\n value: WorkCenterFilterOperator;\r\n display?: TranslatableDto;\r\n}\r\n\r\nexport interface WorkCenterRuntimeFilterSchema {\r\n properties?: WorkCenterRuntimeProperty[];\r\n allowedFields?: string[];\r\n allowedOperators: Array<\r\n WorkCenterFilterOperator | WorkCenterRuntimeOperatorOption\r\n >;\r\n}\r\n\r\nexport interface WorkCenterColumnsConfig {\r\n columns?: string[];\r\n properties?: WorkCenterRuntimeProperty[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeRequest {\r\n area: WorkCenterArea;\r\n templateId?: number | null;\r\n selectedCardKey?: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeCard {\r\n key: string;\r\n name: TranslatableDto;\r\n icon: string | null;\r\n urlTemplate?: string | null;\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n count: number;\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeStatsItem {\r\n key: string;\r\n label: TranslatableDto;\r\n count: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimePagination {\r\n page: number;\r\n pageSize: number;\r\n totalCount: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimeSelectedCard {\r\n key: string;\r\n pagination: WorkCenterRuntimePagination;\r\n stats: WorkCenterRuntimeStatsItem[];\r\n items: Record<string, unknown>[];\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeWarningDto {\r\n code: string;\r\n message: string;\r\n cardKey: string | null;\r\n source: string | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeResponseData {\r\n area: WorkCenterArea;\r\n cards: WorkCenterRuntimeCard[];\r\n selectedCard: WorkCenterRuntimeSelectedCard | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterItemBasicInfoData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n item: Record<string, unknown> | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeItemAction {\r\n actionKey: string;\r\n actionName?: TranslatableDto | null;\r\n httpMethod?: string | null;\r\n url?: string | null;\r\n isAvailable?: boolean;\r\n afterSuccess?: WorkCenterItemActionAfterSuccess | null;\r\n stepIds?: Array<number | string>;\r\n needConfirmation?: boolean;\r\n payloadKeys?: string[];\r\n requiredPayloadKeys?: string[];\r\n payloadTemplate?: Record<string, unknown> | null;\r\n formId?: string | number | null;\r\n}\r\n\r\nexport type WorkCenterItemActionAfterSuccess = 'refresh' | 'close';\r\n\r\nexport interface WorkCenterItemActionExecutionResult {\r\n actionKey: string;\r\n afterSuccess: WorkCenterItemActionAfterSuccess;\r\n}\r\n\r\nexport interface WorkCenterItemActionsData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n context: Record<string, unknown> | null;\r\n actions: WorkCenterRuntimeItemAction[];\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterContext {\r\n area: WorkCenterArea;\r\n templateId: number | null;\r\n selectedCardKey: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterAreaState {\r\n context: WorkCenterContext;\r\n /**\r\n * Rules from the page-header property-filter-builder. Combined with\r\n * `columnFilters` to produce `context.runtimeFilters` sent to the BE.\r\n */\r\n headerFilters: WorkCenterFilterRule[];\r\n /**\r\n * Rules translated from the in-table column filters. Combined with\r\n * `headerFilters` to produce `context.runtimeFilters` sent to the BE.\r\n * Same `(field, op)` pair from this slice overrides a header rule.\r\n */\r\n columnFilters: WorkCenterFilterRule[];\r\n menuItems: ClientPageMenuItem[];\r\n rows: Record<string, unknown>[];\r\n columns: ColumnDef[];\r\n kpis: StatisticCardData[];\r\n runtimeFilterSchema: WorkCenterRuntimeFilterSchema | null;\r\n totalCount: number;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n lastLoadedAt: string | null;\r\n}\r\n\r\nexport interface WorkCenterStateModel extends LoadingStateShape<WorkCenterActionKey> {\r\n activeArea: WorkCenterArea;\r\n byArea: Record<WorkCenterArea, WorkCenterAreaState>;\r\n lookups: WorkCenterLookups;\r\n}\r\n\r\nexport interface WorkCenterHydratePatch {\r\n selectedCardKey?: string | null;\r\n page?: number;\r\n pageSize?: number;\r\n templateId?: number | null;\r\n sort?: WorkCenterSortRule[];\r\n runtimeFilters?: WorkCenterFilterRule[];\r\n}\r\n\r\nexport interface WorkCenterBootstrapInputs {\r\n card?: unknown;\r\n page?: unknown;\r\n pageSize?: unknown;\r\n templateId?: unknown;\r\n sort?: unknown;\r\n filters?: unknown;\r\n}\r\n\r\nexport interface WorkCenterItemModalComponentInput {\r\n contextKey: WorkCenterItemContextKey;\r\n}\r\n\r\nexport interface WorkCenterItemModalOptions {\r\n component?: Type<unknown> | null;\r\n header?: string;\r\n styleClass?: string;\r\n appendTo?: string | HTMLElement | null;\r\n position?: 'start' | 'end' | 'left' | 'right';\r\n}\r\n\r\nexport interface WorkCenterClientFormModalData {\r\n moduleKey: string;\r\n moduleId?: number | string;\r\n levelId?: number | string;\r\n levelDataId?: number | string;\r\n moduleDataId?: number | string;\r\n}\r\n\r\nexport interface WorkCenterClientFormModalOptions {\r\n data?: Partial<WorkCenterClientFormModalData>;\r\n operationKey?: string;\r\n header?: string;\r\n styleClass?: string;\r\n buttonLabel?: string;\r\n buttonIcon?: string;\r\n lookups?: ClientLookup[];\r\n}\r\n\r\nexport type WorkCenterLoadReason =\r\n | 'route-enter'\r\n | 'menu-change'\r\n | 'filters-change'\r\n | 'table-lazy'\r\n | 'refresh'\r\n | 'manual';\r\n","import { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterColumnsConfig,\r\n WorkCenterContext,\r\n WorkCenterFilterOperator,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeProperty,\r\n WorkCenterRuntimeCard,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterRuntimeStatsItem,\r\n WorkCenterSortRule,\r\n WorkCenterStateModel,\r\n WORK_CENTER_MAX_FILTERS,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n WORK_CENTER_MAX_SORT,\r\n} from './work-center.model';\r\n\r\nconst AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst KPI_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\n/**\r\n * Default page size when bootstrapping a work-center area. Matches the table\r\n * paginator default so the first BE request asks for exactly one rendered\r\n * page.\r\n */\r\nconst WORK_CENTER_DEFAULT_PAGE_SIZE = 20;\r\nconst WORK_CENTER_LOCAL_FETCH_SIZE = WORK_CENTER_DEFAULT_PAGE_SIZE;\r\n\r\ntype WorkCenterTableColumn = WorkCenterRuntimeProperty &\r\n ColumnDef & {\r\n key: string;\r\n label: string;\r\n type: 'entity';\r\n };\r\n\r\nconst FILTER_OPERATORS: Set<WorkCenterFilterOperator> = new Set([\r\n 'Eq',\r\n 'Neq',\r\n 'In',\r\n 'Contains',\r\n 'StartsWith',\r\n 'Gt',\r\n 'Gte',\r\n 'Lt',\r\n 'Lte',\r\n 'Between',\r\n 'IsNull',\r\n 'IsNotNull',\r\n]);\r\n\r\nfunction clampPage(value: number | undefined, fallback = 1): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n return Math.max(1, Math.floor(value as number));\r\n}\r\n\r\nfunction clampPageSize(\r\n value: number | undefined,\r\n fallback = WORK_CENTER_LOCAL_FETCH_SIZE,\r\n): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n const parsed = Math.floor(value as number);\r\n return Math.min(WORK_CENTER_MAX_PAGE_SIZE, Math.max(1, parsed));\r\n}\r\n\r\nfunction sanitizeSort(\r\n rules: WorkCenterSortRule[] | undefined,\r\n): WorkCenterSortRule[] {\r\n if (!Array.isArray(rules)) return [];\r\n return rules\r\n .filter(\r\n (rule): rule is WorkCenterSortRule =>\r\n typeof rule?.field === 'string' &&\r\n rule.field.length > 0 &&\r\n (rule.dir === 'asc' || rule.dir === 'desc'),\r\n )\r\n .slice(0, WORK_CENTER_MAX_SORT);\r\n}\r\n\r\nfunction sanitizeFilters(\r\n filters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!Array.isArray(filters)) return [];\r\n\r\n return filters\r\n .filter(\r\n (filter): filter is WorkCenterFilterRule =>\r\n typeof filter?.field === 'string' &&\r\n filter.field.length > 0 &&\r\n typeof filter?.op === 'string' &&\r\n FILTER_OPERATORS.has(filter.op),\r\n )\r\n .slice(0, WORK_CENTER_MAX_FILTERS);\r\n}\r\n\r\nfunction parseJson(value: unknown): unknown {\r\n if (typeof value !== 'string') return value;\r\n if (!value.trim()) return null;\r\n\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toOptionalInt(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') return null;\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? Math.floor(parsed) : null;\r\n}\r\n\r\nfunction toSelectedCardKey(value: unknown): string | null {\r\n if (typeof value !== 'string') return null;\r\n const parsed = value.trim();\r\n return parsed.length ? parsed : null;\r\n}\r\n\r\nfunction parseSortInput(value: unknown): WorkCenterSortRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeSort(parsed as WorkCenterSortRule[])\r\n : [];\r\n}\r\n\r\nfunction parseFiltersInput(value: unknown): WorkCenterFilterRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeFilters(parsed as WorkCenterFilterRule[])\r\n : [];\r\n}\r\n\r\nfunction hasParamValue(value: unknown): boolean {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nfunction toLabel(value: string): string {\r\n const segment = value.split('.').pop() ?? value;\r\n return segment\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction toViewType(viewType: string | undefined, key: string): string {\r\n if (viewType?.trim()) {\r\n return viewType;\r\n }\r\n\r\n return key.toLowerCase().includes('date') ? 'Date' : 'Text';\r\n}\r\n\r\nfunction normalizeColumnKey(key: string): string {\r\n return key\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s._-]+/g, '');\r\n}\r\n\r\nfunction resolveColumnWeight(key: string): number {\r\n const normalizedKey = normalizeColumnKey(key);\r\n\r\n if (normalizedKey.includes('title')) return 26;\r\n if (\r\n normalizedKey.includes('subtitle') ||\r\n normalizedKey.includes('description')\r\n ) {\r\n return 20;\r\n }\r\n if (normalizedKey.includes('status')) return 14;\r\n if (normalizedKey.includes('progress')) return 17;\r\n if (\r\n normalizedKey.includes('createdby') ||\r\n normalizedKey.includes('assignedto') ||\r\n normalizedKey.includes('owner') ||\r\n normalizedKey.includes('user')\r\n ) {\r\n return 20;\r\n }\r\n if (\r\n normalizedKey.includes('duedate') ||\r\n normalizedKey.includes('createdat') ||\r\n normalizedKey.includes('updatedat') ||\r\n normalizedKey.endsWith('date')\r\n ) {\r\n return 15;\r\n }\r\n if (normalizedKey.includes('priority')) return 12;\r\n\r\n return 16;\r\n}\r\n\r\nfunction applySmartColumnWidths(\r\n columns: WorkCenterTableColumn[],\r\n): WorkCenterTableColumn[] {\r\n const dynamicWeightTotal = columns.reduce((total, column) => {\r\n return column.width?.trim()\r\n ? total\r\n : total + resolveColumnWeight(column.key);\r\n }, 0);\r\n\r\n if (!dynamicWeightTotal) {\r\n return columns;\r\n }\r\n\r\n return columns.map((column) => {\r\n if (column.width?.trim()) {\r\n return column;\r\n }\r\n\r\n const width = (\r\n (resolveColumnWeight(column.key) / dynamicWeightTotal) *\r\n 100\r\n ).toFixed(2);\r\n\r\n return {\r\n ...column,\r\n width: `${width}%`,\r\n };\r\n });\r\n}\r\n\r\nfunction getValue(record: Record<string, unknown>, key: string): unknown {\r\n return key.split('.').reduce<unknown>((current, part) => {\r\n if (!current || typeof current !== 'object') {\r\n return undefined;\r\n }\r\n\r\n return (current as Record<string, unknown>)[part];\r\n }, record);\r\n}\r\n\r\nfunction flattenRuntimeRow(\r\n row: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n const extra = row['extra'];\r\n\r\n if (!extra || typeof extra !== 'object' || Array.isArray(extra)) {\r\n return row;\r\n }\r\n\r\n return {\r\n ...(extra as Record<string, unknown>),\r\n ...row,\r\n };\r\n}\r\n\r\nfunction toDisplayValue(\r\n value: unknown,\r\n column: WorkCenterTableColumn,\r\n): unknown {\r\n if (column.viewType !== 'Text') {\r\n return value;\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n const display = (value as Record<string, unknown>)['display'];\r\n return typeof display === 'string' ? display : value;\r\n}\r\n\r\nfunction buildColumnsFromProperties(\r\n properties: WorkCenterRuntimeProperty[],\r\n): WorkCenterTableColumn[] {\r\n return properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n ...property,\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n type: 'entity' as const,\r\n viewType: toViewType(property.viewType, property.key),\r\n }));\r\n}\r\n\r\nfunction buildColumns(\r\n columnsConfig: WorkCenterColumnsConfig | null | undefined,\r\n): WorkCenterTableColumn[] {\r\n const propertyColumns = buildColumnsFromProperties(\r\n columnsConfig?.properties ?? [],\r\n );\r\n if (propertyColumns.length) {\r\n return applySmartColumnWidths(propertyColumns);\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return applySmartColumnWidths(\r\n keys.map((key) => ({\r\n key,\r\n label: toLabel(key),\r\n type: 'entity' as const,\r\n viewType: toViewType(undefined, key),\r\n })),\r\n );\r\n}\r\n\r\nfunction toDisplayRows(\r\n rows: Record<string, unknown>[],\r\n columns: WorkCenterTableColumn[],\r\n): Record<string, unknown>[] {\r\n return rows.map((row) => {\r\n const sourceRow = flattenRuntimeRow(row);\r\n const displayRow = { ...sourceRow };\r\n\r\n for (const column of columns) {\r\n const value = getValue(sourceRow, column.key);\r\n displayRow[column.key] = {\r\n ...column,\r\n value: toDisplayValue(value, column),\r\n };\r\n }\r\n\r\n return displayRow;\r\n });\r\n}\r\n\r\nfunction buildMenuItems(cards: WorkCenterRuntimeCard[]): ClientPageMenuItem[] {\r\n const mapped = cards.map((card, index) => ({\r\n key: card.key,\r\n title:\r\n card.name?.display || card.name?.en || card.name?.ar || toLabel(card.key),\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: AREA_COLORS[index % AREA_COLORS.length],\r\n icon: card.icon ?? 'custom.task',\r\n isAvailable: card.isAvailable !== false,\r\n }));\r\n\r\n const available = mapped.filter((card) => card.isAvailable);\r\n const source = available.length ? available : mapped;\r\n\r\n return source.map((card) => ({\r\n key: card.key,\r\n title: card.title,\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: card.color,\r\n icon: card.icon ?? 'custom.task',\r\n }));\r\n}\r\n\r\nfunction buildKpis(\r\n stats: WorkCenterRuntimeStatsItem[],\r\n fallbackIcon: string | null,\r\n): StatisticCardData[] {\r\n return stats.map((stat, index) => ({\r\n title: String(stat.count ?? 0),\r\n subTitle: stat.label.display,\r\n icon: (fallbackIcon ?? 'custom.task') as any,\r\n color: KPI_COLORS[index % KPI_COLORS.length],\r\n }));\r\n}\r\n\r\nfunction createDefaultContext(area: WorkCenterArea): WorkCenterContext {\r\n return {\r\n area,\r\n templateId: null,\r\n selectedCardKey: null,\r\n page: 1,\r\n pageSize: WORK_CENTER_LOCAL_FETCH_SIZE,\r\n sort: [],\r\n runtimeFilters: [],\r\n includeStats: true,\r\n };\r\n}\r\n\r\nfunction createDefaultAreaState(area: WorkCenterArea): WorkCenterAreaState {\r\n return {\r\n context: createDefaultContext(area),\r\n headerFilters: [],\r\n columnFilters: [],\r\n menuItems: [],\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n runtimeFilterSchema: null,\r\n totalCount: 0,\r\n warnings: [],\r\n lastLoadedAt: null,\r\n };\r\n}\r\n\r\n/**\r\n * Combines header (property-filter-builder) and column (in-table) rules into\r\n * the single `runtimeFilters` payload the BE expects. Header rules come\r\n * first; a column rule with the same `(field, op)` pair replaces the matching\r\n * header rule.\r\n */\r\nexport function mergeRuntimeFilters(\r\n headerFilters: WorkCenterFilterRule[] | undefined,\r\n columnFilters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n const seen = new Map<string, WorkCenterFilterRule>();\r\n const ordered: string[] = [];\r\n const push = (rule: WorkCenterFilterRule) => {\r\n const key = `${rule.field}::${rule.op}`;\r\n if (!seen.has(key)) ordered.push(key);\r\n seen.set(key, rule);\r\n };\r\n\r\n (headerFilters ?? []).forEach(push);\r\n (columnFilters ?? []).forEach(push);\r\n\r\n return sanitizeFilters(ordered.map((key) => seen.get(key)!));\r\n}\r\n\r\nexport const WORK_CENTER_DEFAULT_STATE: WorkCenterStateModel = {\r\n activeArea: 'MyInbox',\r\n byArea: {\r\n MyInbox: createDefaultAreaState('MyInbox'),\r\n TasksCenter: createDefaultAreaState('TasksCenter'),\r\n },\r\n lookups: [],\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\nexport function normalizeContext(\r\n context: WorkCenterContext,\r\n): WorkCenterContext {\r\n return {\r\n ...context,\r\n page: clampPage(context.page, 1),\r\n pageSize: clampPageSize(context.pageSize, WORK_CENTER_LOCAL_FETCH_SIZE),\r\n sort: sanitizeSort(context.sort),\r\n runtimeFilters: sanitizeFilters(context.runtimeFilters),\r\n };\r\n}\r\n\r\nexport function buildContextFromInputs(\r\n currentContext: WorkCenterContext,\r\n area: WorkCenterArea,\r\n inputs: WorkCenterBootstrapInputs = {},\r\n): WorkCenterContext {\r\n const parsedCardKey = toSelectedCardKey(inputs.card);\r\n const parsedTemplateId = toOptionalInt(inputs.templateId);\r\n const parsedPage = toOptionalInt(inputs.page);\r\n const parsedPageSize = toOptionalInt(inputs.pageSize);\r\n\r\n return normalizeContext({\r\n ...currentContext,\r\n area,\r\n selectedCardKey: parsedCardKey ?? currentContext.selectedCardKey,\r\n page: parsedPage ?? currentContext.page,\r\n pageSize: parsedPageSize ?? currentContext.pageSize,\r\n templateId: parsedTemplateId ?? currentContext.templateId,\r\n sort: hasParamValue(inputs.sort)\r\n ? parseSortInput(inputs.sort)\r\n : inputs.sort === null\r\n ? []\r\n : currentContext.sort,\r\n runtimeFilters: hasParamValue(inputs.filters)\r\n ? parseFiltersInput(inputs.filters)\r\n : inputs.filters === null\r\n ? []\r\n : currentContext.runtimeFilters,\r\n });\r\n}\r\n\r\nexport function isSameContext(\r\n left: WorkCenterContext,\r\n right: WorkCenterContext,\r\n): boolean {\r\n return (\r\n left.area === right.area &&\r\n left.templateId === right.templateId &&\r\n left.selectedCardKey === right.selectedCardKey &&\r\n left.page === right.page &&\r\n left.pageSize === right.pageSize &&\r\n left.includeStats === right.includeStats &&\r\n JSON.stringify(left.sort) === JSON.stringify(right.sort) &&\r\n JSON.stringify(left.runtimeFilters) === JSON.stringify(right.runtimeFilters)\r\n );\r\n}\r\n\r\nexport function mapRuntimeResponse(\r\n current: WorkCenterAreaState,\r\n response: WorkCenterRuntimeResponseData,\r\n): WorkCenterAreaState {\r\n const selectedCard = response.selectedCard;\r\n const menuItems = buildMenuItems(response.cards);\r\n const requestedCardKey =\r\n selectedCard?.key ?? current.context.selectedCardKey ?? null;\r\n const selectedCardKey =\r\n requestedCardKey &&\r\n response.cards.some((card) => card.key === requestedCardKey)\r\n ? requestedCardKey\r\n : (menuItems[0]?.key ?? response.cards[0]?.key ?? null);\r\n const selectedCardFromList = selectedCardKey\r\n ? (response.cards.find((card) => card.key === selectedCardKey) ?? null)\r\n : null;\r\n const selectedMenuItem = menuItems.find(\r\n (item) => item.key === selectedCardKey,\r\n );\r\n const columns = buildColumns(\r\n selectedCard?.columnsConfig ?? selectedCardFromList?.columnsConfig,\r\n );\r\n const rows = toDisplayRows(selectedCard?.items ?? [], columns);\r\n const kpis = buildKpis(\r\n selectedCard?.stats ?? [],\r\n selectedMenuItem?.icon ?? null,\r\n );\r\n\r\n return {\r\n ...current,\r\n menuItems,\r\n rows,\r\n columns,\r\n kpis,\r\n runtimeFilterSchema:\r\n selectedCard?.runtimeFilterSchema ??\r\n selectedCardFromList?.runtimeFilterSchema ??\r\n null,\r\n totalCount: selectedCard?.pagination.totalCount ?? 0,\r\n warnings: response.warnings ?? [],\r\n lastLoadedAt: new Date().toISOString(),\r\n context: {\r\n ...current.context,\r\n selectedCardKey,\r\n page: selectedCard?.pagination.page ?? current.context.page,\r\n pageSize: selectedCard?.pagination.pageSize ?? current.context.pageSize,\r\n },\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { handleApiRequest } from '@masterteam/components';\r\nimport { EMPTY, catchError, map } from 'rxjs';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n ApplyHeaderFilters,\r\n ApplyColumnFilters,\r\n} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeFilterSchema,\r\n WorkCenterRuntimeRequest,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterStateModel,\r\n} from './work-center.model';\r\nimport {\r\n buildContextFromInputs,\r\n isSameContext,\r\n mapRuntimeResponse,\r\n mergeRuntimeFilters,\r\n normalizeContext,\r\n WORK_CENTER_DEFAULT_STATE,\r\n} from './work-center.state.helpers';\r\n\r\n@State<WorkCenterStateModel>({\r\n name: 'workCenter',\r\n defaults: WORK_CENTER_DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class WorkCenterState {\r\n private readonly http = inject(HttpClient);\r\n\r\n @Selector()\r\n static getState(state: WorkCenterStateModel): WorkCenterStateModel {\r\n return state;\r\n }\r\n\r\n @Selector()\r\n static activeArea(state: WorkCenterStateModel): WorkCenterArea {\r\n return state.activeArea;\r\n }\r\n\r\n @Selector([WorkCenterState.activeArea, WorkCenterState.getState])\r\n static activeSnapshot(\r\n activeArea: WorkCenterArea,\r\n state: WorkCenterStateModel,\r\n ): WorkCenterAreaState {\r\n return state.byArea[activeArea];\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static context(snapshot: WorkCenterAreaState) {\r\n return snapshot.context;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static menuItems(snapshot: WorkCenterAreaState) {\r\n return snapshot.menuItems;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static rows(snapshot: WorkCenterAreaState) {\r\n return snapshot.rows;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columns(snapshot: WorkCenterAreaState) {\r\n return snapshot.columns;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static kpis(snapshot: WorkCenterAreaState) {\r\n return snapshot.kpis;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static runtimeFilterSchema(\r\n snapshot: WorkCenterAreaState,\r\n ): WorkCenterRuntimeFilterSchema | null {\r\n return snapshot.runtimeFilterSchema;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static headerFilters(snapshot: WorkCenterAreaState): WorkCenterFilterRule[] {\r\n return snapshot.headerFilters;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columnFilters(snapshot: WorkCenterAreaState): WorkCenterFilterRule[] {\r\n return snapshot.columnFilters;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static totalCount(snapshot: WorkCenterAreaState): number {\r\n return snapshot.totalCount;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static warnings(snapshot: WorkCenterAreaState) {\r\n return snapshot.warnings;\r\n }\r\n\r\n @Selector()\r\n static lookups(state: WorkCenterStateModel) {\r\n return state.lookups;\r\n }\r\n\r\n @Selector()\r\n static getLoadingActive(state: WorkCenterStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: WorkCenterStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n @Action(EnterArea)\r\n enterArea(ctx: StateContext<WorkCenterStateModel>, action: EnterArea): void {\r\n if (ctx.getState().activeArea === action.area) return;\r\n ctx.patchState({ activeArea: action.area });\r\n }\r\n\r\n @Action(HydrateFromContext)\r\n hydrateFromContext(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: HydrateFromContext,\r\n ): void {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = normalizeContext({\r\n ...current.context,\r\n ...action.patch,\r\n area: action.area,\r\n });\r\n\r\n if (\r\n state.activeArea === action.area &&\r\n isSameContext(current.context, nextContext)\r\n ) {\r\n return;\r\n }\r\n\r\n // External `runtimeFilters` writes are treated as header-slice writes so\r\n // the in-table column filter slice doesn't get stranded out of sync.\r\n const filtersChanged = action.patch.runtimeFilters !== undefined;\r\n const nextHeaderFilters = filtersChanged\r\n ? nextContext.runtimeFilters\r\n : current.headerFilters;\r\n const nextColumnFilters = filtersChanged ? [] : current.columnFilters;\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: {\r\n ...current,\r\n headerFilters: nextHeaderFilters,\r\n columnFilters: nextColumnFilters,\r\n context: nextContext,\r\n },\r\n },\r\n });\r\n }\r\n\r\n @Action(SetParams)\r\n setParams(ctx: StateContext<WorkCenterStateModel>, action: SetParams) {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = buildContextFromInputs(\r\n current.context,\r\n action.area,\r\n action.inputs,\r\n );\r\n\r\n const areaChanged = state.activeArea !== action.area;\r\n const contextChanged = !isSameContext(current.context, nextContext);\r\n const runtimeLoading = state.loadingActive.includes(\r\n WorkCenterActionKey.LoadRuntime,\r\n );\r\n const shouldLoad =\r\n areaChanged ||\r\n contextChanged ||\r\n (!current.lastLoadedAt && !runtimeLoading);\r\n\r\n if (areaChanged || contextChanged) {\r\n // URL-derived filters land on the header slice. Anything previously\r\n // applied via the in-table column filters is dropped so the BE payload\r\n // matches what the user sees on the page header.\r\n const filtersFromInputs = action.inputs?.filters !== undefined;\r\n const nextHeaderFilters = filtersFromInputs\r\n ? nextContext.runtimeFilters\r\n : current.headerFilters;\r\n const nextColumnFilters = filtersFromInputs ? [] : current.columnFilters;\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: {\r\n ...current,\r\n headerFilters: nextHeaderFilters,\r\n columnFilters: nextColumnFilters,\r\n context: nextContext,\r\n },\r\n },\r\n });\r\n }\r\n\r\n if (!shouldLoad) return;\r\n return ctx.dispatch(new LoadRuntime(action.area, 'route-enter'));\r\n }\r\n\r\n @Action(SetLookups)\r\n setLookups(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: SetLookups,\r\n ): void {\r\n if (ctx.getState().lookups === action.lookups) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n lookups: Array.isArray(action.lookups) ? action.lookups : [],\r\n });\r\n }\r\n\r\n @Action(ApplyHeaderFilters)\r\n applyHeaderFilters(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: ApplyHeaderFilters,\r\n ) {\r\n return this.applyFilterSlice(ctx, action.area, {\r\n headerFilters: action.filters,\r\n });\r\n }\r\n\r\n @Action(ApplyColumnFilters)\r\n applyColumnFilters(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: ApplyColumnFilters,\r\n ) {\r\n return this.applyFilterSlice(ctx, action.area, {\r\n columnFilters: action.filters,\r\n });\r\n }\r\n\r\n private applyFilterSlice(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n area: WorkCenterArea,\r\n patch: {\r\n headerFilters?: WorkCenterFilterRule[];\r\n columnFilters?: WorkCenterFilterRule[];\r\n },\r\n ) {\r\n const state = ctx.getState();\r\n const current = state.byArea[area];\r\n\r\n const headerFilters = patch.headerFilters ?? current.headerFilters;\r\n const columnFilters = patch.columnFilters ?? current.columnFilters;\r\n const runtimeFilters = mergeRuntimeFilters(headerFilters, columnFilters);\r\n\r\n const sameHeader =\r\n JSON.stringify(headerFilters) === JSON.stringify(current.headerFilters);\r\n const sameColumn =\r\n JSON.stringify(columnFilters) === JSON.stringify(current.columnFilters);\r\n const sameMerged =\r\n JSON.stringify(runtimeFilters) ===\r\n JSON.stringify(current.context.runtimeFilters);\r\n\r\n if (sameHeader && sameColumn && sameMerged) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n activeArea: area,\r\n byArea: {\r\n ...state.byArea,\r\n [area]: {\r\n ...current,\r\n headerFilters,\r\n columnFilters,\r\n context: {\r\n ...current.context,\r\n runtimeFilters,\r\n page: 1,\r\n },\r\n },\r\n },\r\n });\r\n\r\n return ctx.dispatch(new LoadRuntime(area, 'filters-change'));\r\n }\r\n\r\n @Action(LoadRuntime)\r\n loadRuntime(ctx: StateContext<WorkCenterStateModel>, action: LoadRuntime) {\r\n const state = ctx.getState();\r\n const areaState = state.byArea[action.area];\r\n const request = normalizeContext(areaState.context);\r\n const nextAreaState = {\r\n ...areaState,\r\n rows: [],\r\n kpis: [],\r\n totalCount: 0,\r\n };\r\n\r\n ctx.patchState({\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: nextAreaState,\r\n },\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: WorkCenterActionKey.LoadRuntime,\r\n request$: this.getRuntime(request),\r\n onSuccess: (response, latestState) => {\r\n const current = latestState.byArea[action.area];\r\n return {\r\n byArea: {\r\n ...latestState.byArea,\r\n [action.area]: mapRuntimeResponse(current, response),\r\n },\r\n };\r\n },\r\n errorMessage: 'Failed to load Work Center runtime.',\r\n }).pipe(catchError(() => EMPTY));\r\n }\r\n\r\n private getRuntime(request: WorkCenterRuntimeRequest) {\r\n return this.http\r\n .post<\r\n ApiEnvelope<WorkCenterRuntimeResponseData>\r\n >('workcenter/runtime', request)\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) return response.data;\r\n\r\n const fallbackError = 'Failed to load Work Center runtime.';\r\n const message =\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError;\r\n\r\n throw new Error(message);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n ApplyHeaderFilters,\r\n ApplyColumnFilters,\r\n} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLookups,\r\n WorkCenterLoadReason,\r\n WorkCenterSortRule,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n} from './work-center.model';\r\nimport { WorkCenterState } from './work-center.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WorkCenterFacade {\r\n private readonly store = inject(Store);\r\n\r\n readonly activeArea = select(WorkCenterState.activeArea);\r\n readonly context = select(WorkCenterState.context);\r\n readonly menuItems = select(WorkCenterState.menuItems);\r\n readonly rows = select(WorkCenterState.rows);\r\n readonly columns = select(WorkCenterState.columns);\r\n readonly kpis = select(WorkCenterState.kpis);\r\n readonly lookups = select(WorkCenterState.lookups);\r\n readonly runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\r\n readonly headerFilters = select(WorkCenterState.headerFilters);\r\n readonly columnFilters = select(WorkCenterState.columnFilters);\r\n readonly totalCount = select(WorkCenterState.totalCount);\r\n readonly warnings = select(WorkCenterState.warnings);\r\n\r\n private readonly loadingActive = select(WorkCenterState.getLoadingActive);\r\n private readonly errors = select(WorkCenterState.getErrors);\r\n\r\n readonly loading = computed(() =>\r\n this.loadingActive().includes(WorkCenterActionKey.LoadRuntime),\r\n );\r\n readonly error = computed(\r\n () => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null,\r\n );\r\n\r\n enterArea(area: WorkCenterArea) {\r\n return this.store.dispatch(new EnterArea(area));\r\n }\r\n\r\n hydrateContext(area: WorkCenterArea, patch: WorkCenterHydratePatch) {\r\n return this.store.dispatch(new HydrateFromContext(area, patch));\r\n }\r\n\r\n setParams(area: WorkCenterArea, inputs: WorkCenterBootstrapInputs) {\r\n return this.store.dispatch(new SetParams(area, inputs));\r\n }\r\n\r\n setLookups(lookups: WorkCenterLookups) {\r\n return this.store.dispatch(new SetLookups(lookups));\r\n }\r\n\r\n selectCardAndLoad(area: WorkCenterArea, selectedCardKey: string) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { selectedCardKey, page: 1 }),\r\n new LoadRuntime(area, 'menu-change'),\r\n ]);\r\n }\r\n\r\n applyTableLazyLoadAndLoad(area: WorkCenterArea, event: any) {\r\n const context = this.store.selectSnapshot(WorkCenterState.context);\r\n const patch: WorkCenterHydratePatch = {};\r\n let changed = false;\r\n\r\n const page = this.toPositiveInt(event?.currentPage);\r\n if (page !== null && page !== context.page) {\r\n patch.page = page;\r\n changed = true;\r\n }\r\n\r\n const pageSize = this.toPositiveInt(event?.pageSize);\r\n if (pageSize !== null) {\r\n const normalizedPageSize = Math.min(\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n Math.max(1, pageSize),\r\n );\r\n if (normalizedPageSize !== context.pageSize) {\r\n patch.pageSize = normalizedPageSize;\r\n changed = true;\r\n }\r\n }\r\n\r\n const sort = this.toSortFromLazyEvent(event);\r\n if (sort && !this.isSameSort(sort, context.sort)) {\r\n patch.sort = sort;\r\n changed = true;\r\n }\r\n\r\n if (!changed) {\r\n return;\r\n }\r\n\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, patch),\r\n new LoadRuntime(area, 'table-lazy'),\r\n ]);\r\n }\r\n\r\n applyRuntimeFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n // Back-compat: any caller that previously set the entire `runtimeFilters`\r\n // array now lands on the header slice. The in-table column filter slice is\r\n // cleared so the merged payload matches what callers expect.\r\n return this.store.dispatch(new ApplyHeaderFilters(area, runtimeFilters));\r\n }\r\n\r\n /**\r\n * Replaces the property-filter-builder slice. Resets pagination to page 1\r\n * and reloads with merged `headerFilters` + `columnFilters`.\r\n */\r\n applyHeaderFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch(new ApplyHeaderFilters(area, runtimeFilters));\r\n }\r\n\r\n /**\r\n * Replaces the in-table column filter slice. Resets pagination to page 1\r\n * and reloads with merged `headerFilters` + `columnFilters`.\r\n */\r\n applyColumnFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch(new ApplyColumnFilters(area, runtimeFilters));\r\n }\r\n\r\n loadRuntime(area: WorkCenterArea, reason: WorkCenterLoadReason = 'manual') {\r\n return this.store.dispatch(new LoadRuntime(area, reason));\r\n }\r\n\r\n private toPositiveInt(value: unknown): number | null {\r\n const parsed = Number(value);\r\n if (!Number.isFinite(parsed)) {\r\n return null;\r\n }\r\n return Math.max(1, Math.floor(parsed));\r\n }\r\n\r\n private toSortFromLazyEvent(event: any): WorkCenterSortRule[] | null {\r\n const sortField = event?.sortField;\r\n if (typeof sortField !== 'string' || !sortField.length) {\r\n return null;\r\n }\r\n\r\n return [\r\n {\r\n field: sortField,\r\n dir: event?.sortOrder === -1 ? 'desc' : 'asc',\r\n },\r\n ];\r\n }\r\n\r\n private isSameSort(\r\n left: WorkCenterSortRule[] | undefined,\r\n right: WorkCenterSortRule[] | undefined,\r\n ): boolean {\r\n const leftValue = left ?? [];\r\n const rightValue = right ?? [];\r\n\r\n if (leftValue.length !== rightValue.length) {\r\n return false;\r\n }\r\n\r\n return leftValue.every(\r\n (rule, index) =>\r\n rule.field === rightValue[index]?.field &&\r\n rule.dir === rightValue[index]?.dir,\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ClientPage } from '@masterteam/components/client-page';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport {\r\n PropertyFilterBuilder,\r\n PropertyFilterBuilderRule,\r\n PropertyFilterBuilderSchema,\r\n} from '@masterteam/components/property-filter-builder';\r\nimport { StatisticCard } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef, Table, TableFilters } from '@masterteam/components/table';\r\nimport { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { take } from 'rxjs';\r\n\r\nimport { WorkCenterClientFormModal } from '../work-center-client-form-modal/work-center-client-form-modal';\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterClientFormModalOptions,\r\n WorkCenterFilterRule,\r\n WorkCenterItemModalOptions,\r\n WorkCenterItemContextKey,\r\n WorkCenterItemModalComponentInput,\r\n WorkCenterRuntimeFilterSchema,\r\n} from '../../store/work-center/work-center.model';\r\n\r\nconst OPERATOR_LABELS: Record<string, string> = {\r\n Eq: 'Equals',\r\n Neq: 'Not equal',\r\n In: 'In',\r\n Contains: 'Contains',\r\n StartsWith: 'Starts with',\r\n Gt: 'Greater than',\r\n Gte: 'Greater than or equal',\r\n Lt: 'Less than',\r\n Lte: 'Less than or equal',\r\n Between: 'Between',\r\n IsNull: 'Is empty',\r\n IsNotNull: 'Is not empty',\r\n};\r\n\r\nconst OPERATOR_VALUE_MODE: Record<\r\n string,\r\n 'single' | 'multi' | 'range' | 'none'\r\n> = {\r\n In: 'multi',\r\n Between: 'range',\r\n IsNull: 'none',\r\n IsNotNull: 'none',\r\n};\r\nconst GENERAL_TASK_CARD_KEYS = new Set([\r\n 'mygeneraltasks',\r\n 'generaltask',\r\n 'generaltasks',\r\n]);\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction columnTypeToViewType(type: string | undefined): string | undefined {\r\n if (type === 'date') return 'Date';\r\n return undefined;\r\n}\r\n\r\nfunction normalizeCardKey(value: string | null | undefined): string {\r\n if (typeof value !== 'string') {\r\n return '';\r\n }\r\n\r\n return value\r\n .trim()\r\n .replace(/[\\s_-]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * Strips the user envelope used by `mt-table` user filters down to the\r\n * scalar id that the BE rule payload accepts. Falls back to the original\r\n * value for non-user shapes (e.g. simple string in a select filter).\r\n */\r\nfunction extractIdScalar(value: unknown): unknown {\r\n if (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n 'id' in (value as Record<string, unknown>)\r\n ) {\r\n return (value as Record<string, unknown>)['id'];\r\n }\r\n return value;\r\n}\r\n\r\nfunction toIsoDate(value: unknown): unknown {\r\n if (value instanceof Date) return value.toISOString();\r\n return value;\r\n}\r\n\r\n/**\r\n * Translates one in-table column filter value into a `WorkCenterFilterRule`.\r\n *\r\n * The shape of `raw` depends on the column's filter type — see\r\n * `mt-table` `table-filter-field` outputs:\r\n * - text → string → `Contains`\r\n * - select → scalar | scalar[] → `Eq` | `In`\r\n * - boolean → boolean → `Eq`\r\n * - date → `{ from?, to?, value? }` (Date|null)→ `Between`/`Gte`/`Lte`/`Eq`\r\n * - user → `{ id, ... }` | `{ id, ... }[]` → `Eq` (id) | `In` (ids)\r\n *\r\n * Returns `null` when the value is empty / nothing to send.\r\n */\r\nfunction toRuntimeFilterRule(\r\n field: string,\r\n raw: unknown,\r\n column: ColumnDef | undefined,\r\n): WorkCenterFilterRule | null {\r\n if (raw === null || raw === undefined || raw === '') return null;\r\n\r\n if (typeof raw === 'boolean') {\r\n return { field, op: 'Eq', value: raw };\r\n }\r\n\r\n if (typeof raw === 'number') {\r\n return { field, op: 'Eq', value: raw };\r\n }\r\n\r\n if (typeof raw === 'string') {\r\n if (!raw.trim().length) return null;\r\n return { field, op: 'Contains', value: raw };\r\n }\r\n\r\n if (Array.isArray(raw)) {\r\n const values = raw\r\n .map(extractIdScalar)\r\n .filter((v) => v !== null && v !== undefined && v !== '');\r\n if (!values.length) return null;\r\n return { field, op: 'In', values };\r\n }\r\n\r\n if (typeof raw === 'object') {\r\n const obj = raw as {\r\n from?: unknown;\r\n to?: unknown;\r\n value?: unknown;\r\n id?: unknown;\r\n };\r\n\r\n // User filter envelope -> single-id Eq.\r\n if (obj.id !== undefined && obj.id !== null && obj.id !== '') {\r\n return { field, op: 'Eq', value: obj.id };\r\n }\r\n\r\n const hasFrom = obj.from !== undefined && obj.from !== null;\r\n const hasTo = obj.to !== undefined && obj.to !== null;\r\n if (hasFrom && hasTo) {\r\n return {\r\n field,\r\n op: 'Between',\r\n from: toIsoDate(obj.from),\r\n to: toIsoDate(obj.to),\r\n };\r\n }\r\n if (hasFrom) {\r\n return { field, op: 'Gte', value: toIsoDate(obj.from) };\r\n }\r\n if (hasTo) {\r\n return { field, op: 'Lte', value: toIsoDate(obj.to) };\r\n }\r\n\r\n if (obj.value !== undefined && obj.value !== null && obj.value !== '') {\r\n const treatAsContains =\r\n column?.type === 'text' ||\r\n (column?.filterConfig?.type === 'text' &&\r\n typeof obj.value === 'string');\r\n if (treatAsContains) {\r\n return { field, op: 'Contains', value: obj.value };\r\n }\r\n return { field, op: 'Eq', value: extractIdScalar(obj.value) };\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Walks `mt-table`'s filter map and produces the `WorkCenterFilterRule[]`\r\n * sent on the BE column-filter slice. The synthetic `generalSearch` key is\r\n * skipped because the page keeps general search local-only.\r\n */\r\nfunction buildColumnRuntimeFilters(\r\n filters: TableFilters | null | undefined,\r\n columns: ColumnDef[],\r\n allowedFields: string[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!filters) return [];\r\n\r\n const allowed =\r\n allowedFields && allowedFields.length ? new Set(allowedFields) : null;\r\n const columnByKey = new Map(columns.map((col) => [col.key, col]));\r\n const rules: WorkCenterFilterRule[] = [];\r\n\r\n for (const [key, raw] of Object.entries(filters)) {\r\n if (key === 'generalSearch') continue;\r\n if (allowed && !allowed.has(key)) continue;\r\n\r\n const rule = toRuntimeFilterRule(key, raw, columnByKey.get(key));\r\n if (rule) rules.push(rule);\r\n }\r\n\r\n return rules;\r\n}\r\n\r\nfunction areFilterRulesEqual(\r\n left: WorkCenterFilterRule[],\r\n right: WorkCenterFilterRule[],\r\n): boolean {\r\n return JSON.stringify(left) === JSON.stringify(right);\r\n}\r\n\r\nfunction mapAllowedFields(schema: WorkCenterRuntimeFilterSchema) {\r\n const properties = schema.properties ?? [];\r\n const fromProperties = properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n viewType: property.viewType,\r\n }));\r\n\r\n if (fromProperties.length) {\r\n return fromProperties;\r\n }\r\n\r\n return (schema.allowedFields ?? []).map((field) => ({\r\n key: field,\r\n label: toLabel(field),\r\n }));\r\n}\r\n\r\nfunction mapAllowedOperators(\r\n schema: WorkCenterRuntimeFilterSchema,\r\n getLabel: (key: string) => string,\r\n) {\r\n const options: Array<{\r\n key: string;\r\n label: string;\r\n valueMode: 'single' | 'multi' | 'range' | 'none';\r\n }> = [];\r\n\r\n for (const operator of schema.allowedOperators ?? []) {\r\n if (typeof operator === 'string') {\r\n options.push({\r\n key: operator,\r\n label: getLabel(operator),\r\n valueMode: OPERATOR_VALUE_MODE[operator] ?? 'single',\r\n });\r\n continue;\r\n }\r\n\r\n const key = operator?.value;\r\n if (!key) {\r\n continue;\r\n }\r\n\r\n options.push({\r\n key,\r\n label:\r\n operator.display?.display ||\r\n operator.display?.en ||\r\n operator.display?.ar ||\r\n getLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n });\r\n }\r\n\r\n return options;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-page',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n ClientPage,\r\n PropertyFilterBuilder,\r\n StatisticCard,\r\n Table,\r\n SkeletonModule,\r\n ],\r\n templateUrl: './work-center-page.html',\r\n})\r\nexport class WorkCenterPage {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly modal = inject(ModalService);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n readonly openItemsInModal = input(true);\r\n readonly itemModal = input<WorkCenterItemModalOptions | null>(null);\r\n readonly generalTaskModal = input<WorkCenterClientFormModalOptions | null>(\r\n null,\r\n );\r\n\r\n readonly runtimeFiltersChanged = output<WorkCenterFilterRule[]>();\r\n readonly itemClicked = output<WorkCenterItemContextKey>();\r\n\r\n protected readonly context = this.facade.context;\r\n private readonly _menuItems = this.facade.menuItems;\r\n protected readonly menuItems = computed(() => {\r\n this.activeLang();\r\n\r\n return this._menuItems().map((item) => ({\r\n ...item,\r\n subtitle: `${item.count} ${item.title}`,\r\n }));\r\n });\r\n protected readonly rows = this.facade.rows;\r\n protected readonly columns = this.facade.columns;\r\n protected readonly kpis = this.facade.kpis;\r\n protected readonly runtimeFilterSchema = this.facade.runtimeFilterSchema;\r\n protected readonly totalCount = this.facade.totalCount;\r\n protected readonly columnFilters = this.facade.columnFilters;\r\n protected readonly loading = this.facade.loading;\r\n protected readonly tableColumns = computed(() =>\r\n this.columns().map((column) => ({\r\n ...column,\r\n sortable: true,\r\n })),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n this.activeLang();\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema, (key) =>\r\n this.getOpLabel(key),\r\n );\r\n if (allowedFields.length && allowedOperators.length) {\r\n return { allowedFields, allowedOperators };\r\n }\r\n }\r\n\r\n const fallbackFields = this.columns()\r\n .filter(\r\n (column) => typeof column?.key === 'string' && column.key.length > 0,\r\n )\r\n .map((column) => ({\r\n key: column.key,\r\n label: column.label || toLabel(column.key),\r\n viewType: columnTypeToViewType(column.type),\r\n }));\r\n\r\n if (!fallbackFields.length) {\r\n return null;\r\n }\r\n\r\n const fallbackOperators = Object.keys(OPERATOR_LABELS).map((key) => ({\r\n key,\r\n label: this.getOpLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n }));\r\n\r\n return {\r\n allowedFields: fallbackFields,\r\n allowedOperators: fallbackOperators,\r\n };\r\n });\r\n protected readonly showGeneralTaskCreateButton = computed(() =>\r\n GENERAL_TASK_CARD_KEYS.has(\r\n normalizeCardKey(this.context().selectedCardKey),\r\n ),\r\n );\r\n protected readonly generalTaskButtonLabel = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.generalTaskModal()?.buttonLabel?.trim() ||\r\n this.transloco.translate<string>('workCenter.page.new')\r\n );\r\n });\r\n protected readonly resolvedPageTitle = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.pageTitle() ||\r\n this.transloco.translate<string>('workCenter.page.title')\r\n );\r\n });\r\n protected readonly generalTaskButtonIcon = computed(\r\n () => this.generalTaskModal()?.buttonIcon?.trim() || 'general.plus',\r\n );\r\n private readonly defaultModalStyleClass =\r\n '!w-[96vw] md:!w-[84vw] xl:!w-[70vw] !shadow-none';\r\n private readonly defaultGeneralTaskModalStyleClass = '!w-[70vw] !h-[90vh]';\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.facade.setLookups(this.lookups());\r\n });\r\n }\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\r\n if (item.key === this.context().selectedCardKey) {\r\n return;\r\n }\r\n\r\n this.facade.selectCardAndLoad(this.area(), item.key);\r\n }\r\n\r\n onRuntimeFiltersApplied(filters: PropertyFilterBuilderRule[]): void {\r\n const mappedFilters = filters.map((filter) => ({\r\n field: filter.field,\r\n op: filter.op as WorkCenterFilterRule['op'],\r\n value: filter.value,\r\n values: filter.values,\r\n from: filter.from,\r\n to: filter.to,\r\n }));\r\n\r\n this.facade.applyHeaderFiltersAndLoad(this.area(), mappedFilters);\r\n this.runtimeFiltersChanged.emit(mappedFilters);\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.facade.applyHeaderFiltersAndLoad(this.area(), []);\r\n this.runtimeFiltersChanged.emit([]);\r\n }\r\n\r\n /**\r\n * Single entry point for `mt-table` (`lazy=true`) — handles both column\r\n * filters and pagination/sort. Filter changes always reset the page to 1\r\n * (handled by `applyColumnFiltersAndLoad`); when only paging/sort changed\r\n * we fall through to `applyTableLazyLoadAndLoad`.\r\n */\r\n onTableLazyLoad(event: any): void {\r\n const schema = this.runtimeFilterSchema();\r\n const propertyKeys = (schema?.properties ?? [])\r\n .map((p) => p?.key)\r\n .filter((k): k is string => typeof k === 'string' && k.length > 0);\r\n const allowedKeys = schema?.allowedFields ?? [];\r\n const allowedFields = propertyKeys.length ? propertyKeys : allowedKeys;\r\n\r\n const nextColumnFilters = buildColumnRuntimeFilters(\r\n event?.filters as TableFilters | undefined,\r\n this.columns(),\r\n allowedFields.length ? allowedFields : undefined,\r\n );\r\n\r\n if (!areFilterRulesEqual(nextColumnFilters, this.columnFilters())) {\r\n this.facade.applyColumnFiltersAndLoad(this.area(), nextColumnFilters);\r\n return;\r\n }\r\n\r\n this.facade.applyTableLazyLoadAndLoad(this.area(), event);\r\n }\r\n\r\n onGeneralTaskCreateClick(): void {\r\n const modalOptions = this.generalTaskModal();\r\n const modalData = {\r\n moduleKey: 'GeneralTask',\r\n ...(modalOptions?.data ?? {}),\r\n };\r\n const modalHeader =\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.create');\r\n const modalStyleClass =\r\n modalOptions?.styleClass ?? this.defaultGeneralTaskModalStyleClass;\r\n const operationKey = modalOptions?.operationKey ?? 'Create';\r\n const lookups = modalOptions?.lookups ?? this.lookups();\r\n\r\n const ref = this.modal.openModal(WorkCenterClientFormModal, 'dialog', {\r\n header: modalHeader,\r\n styleClass: modalStyleClass,\r\n position: 'end',\r\n dismissableMask: true,\r\n inputValues: {\r\n data: modalData,\r\n operationKey,\r\n lookups,\r\n },\r\n });\r\n\r\n ref.onClose.pipe(take(1)).subscribe((result: unknown) => {\r\n if (result) {\r\n this.facade.loadRuntime(this.area(), 'refresh');\r\n }\r\n });\r\n }\r\n\r\n onRowClick(row: Record<string, unknown>): void {\r\n const contextKey = this.resolveRowContextKey(row);\r\n console.log('[work-center-debug] page row click', {\r\n contextKey,\r\n row,\r\n openItemsInModal: this.openItemsInModal(),\r\n hasModalComponent: !!this.itemModal()?.component,\r\n });\r\n\r\n if (!contextKey) {\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(contextKey);\r\n\r\n if (!this.openItemsInModal()) {\r\n return;\r\n }\r\n\r\n const modalOptions = this.itemModal();\r\n if (!modalOptions?.component) {\r\n return;\r\n }\r\n\r\n const ref = this.modal.openModal(modalOptions.component, 'drawer', {\r\n header:\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n styleClass: modalOptions?.styleClass ?? this.defaultModalStyleClass,\r\n position: modalOptions?.position ?? 'end',\r\n dismissible: true,\r\n modal: true,\r\n ...(modalOptions?.appendTo ? { appendTo: modalOptions.appendTo } : {}),\r\n inputValues: { contextKey } satisfies WorkCenterItemModalComponentInput,\r\n });\r\n\r\n ref.onClose.pipe(take(1)).subscribe(() => {\r\n this.facade.loadRuntime(this.area(), 'refresh');\r\n });\r\n }\r\n\r\n protected readonly rowsClickable = computed(() => this.openItemsInModal());\r\n\r\n private getOpLabel(key: string): string {\r\n return (\r\n this.transloco.translate<string>('workCenter.operator.' + key) ||\r\n OPERATOR_LABELS[key] ||\r\n toLabel(key)\r\n );\r\n }\r\n\r\n private resolveRowContextKey(\r\n row: Record<string, unknown>,\r\n ): WorkCenterItemContextKey | null {\r\n const value = row['contextKey'];\r\n if (typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n const normalized = value.trim();\r\n return normalized.length ? normalized : null;\r\n }\r\n}\r\n","<mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"resolvedPageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n storageKey=\"work-center-client-page\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n>\r\n <ng-template #headerClientPageEnd>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-[200px]\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"true\"\r\n filterMode=\"column\"\r\n [cellClickFilter]=\"true\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [printable]=\"true\"\r\n [groupable]=\"true\"\r\n [freezeActions]=\"true\"\r\n [lazy]=\"true\"\r\n [lazyLocalSearch]=\"true\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"context().page - 1\"\r\n [first]=\"(context().page - 1) * context().pageSize\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n storageKey=\"work-center-page-table\"\r\n (lazyLoad)=\"onTableLazyLoad($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n />\r\n </div>\r\n</mt-client-page>\r\n","import { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\n\r\nexport function readItemContext(\r\n details: WorkCenterItemBasicInfoData,\r\n): Record<string, unknown> | null {\r\n const item = details.item;\r\n if (!item || typeof item !== 'object') {\r\n return null;\r\n }\r\n\r\n const context = item['context'];\r\n return context && typeof context === 'object'\r\n ? (context as Record<string, unknown>)\r\n : null;\r\n}\r\n\r\nexport function readNumber(\r\n source: Record<string, unknown> | null,\r\n key: string,\r\n): number | undefined {\r\n const value = source?.[key];\r\n if (typeof value === 'number') {\r\n return Number.isFinite(value) ? value : undefined;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim().length) {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : undefined;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function readString(\n source: Record<string, unknown> | null,\n key: string,\n): string | undefined {\n const value = source?.[key];\n return typeof value === 'string' && value.trim().length ? value : undefined;\n}\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport {\r\n EntityAttachmentValue,\r\n EntitiesPreview,\r\n EntityData,\r\n EntityUserValue,\r\n} from '@masterteam/components/entities';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\r\n\r\ninterface EscalationPreviewResponse {\r\n message?: string | null;\r\n data: EscalationPreviewData;\r\n}\r\n\r\ninterface TranslatableValue {\r\n display?: string;\r\n en?: string;\r\n ar?: string;\r\n}\r\n\r\ninterface EscalationSchemaStep {\r\n id: number | string;\r\n name?: TranslatableValue;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n}\r\n\r\ninterface EscalationSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n}\r\n\r\ninterface EscalationPreviewData {\r\n initiatedBy?: Record<string, unknown>;\r\n startedAt?: Record<string, unknown>;\r\n reason?: string;\r\n attachments?: string[];\r\n schema?: {\r\n stepsSchema?: EscalationSchemaStep[];\r\n connections?: EscalationSchemaConnection[];\r\n };\r\n schemaSteps?: EscalationSchemaStep[];\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-escalation-instance-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n DiscussionThread,\r\n EntitiesPreview,\r\n StructureBuilder,\r\n ],\r\n templateUrl: './work-center-escalation-instance-type.html',\r\n})\r\nexport class WorkCenterEscalationInstanceType implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private loadSub?: Subscription;\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n\r\n protected readonly activeTab = signal('escalationDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.escalationDetails',\r\n ),\r\n value: 'escalationDetails',\r\n icon: 'alert.notification-message',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.schema'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<EscalationPreviewData | null>(null);\r\n protected readonly detailEntities = computed<EntityData[]>(() => {\r\n this.activeLang();\r\n const preview = this.preview();\r\n if (!preview) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n key: 'initiatedBy',\r\n name: this.transloco.translate<string>('workCenter.entity.initiatedBy'),\r\n value: mapUserValue(preview.initiatedBy),\r\n viewType: 'User',\r\n order: 1,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'startedAt',\r\n name: this.transloco.translate<string>('workCenter.entity.startedAt'),\r\n value: resolveDisplayValue(preview.startedAt),\r\n rawValue: resolveRawValue(preview.startedAt),\r\n viewType: 'DateTime',\r\n order: 2,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'reason',\r\n name: this.transloco.translate<string>('workCenter.entity.reason'),\r\n value: preview.reason ?? '',\r\n viewType: 'LongText',\r\n order: 3,\r\n configuration: { size: 24 },\r\n },\r\n {\r\n key: 'attachments',\r\n name: this.transloco.translate<string>('workCenter.entity.attachments'),\r\n value: mapAttachments(preview.attachments),\r\n viewType: 'Attachment',\r\n order: 4,\r\n configuration: { size: 24 },\r\n },\r\n ];\r\n });\r\n protected readonly schemaNodes = computed<Node[]>(() => {\r\n this.activeLang();\r\n return resolveSchemaSteps(this.preview()).map((step) => ({\r\n id: String(step.id),\r\n name:\r\n resolveTranslatable(step.name) ||\r\n `${this.transloco.translate<string>('workCenter.entity.step')} ${step.id}`,\r\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\r\n }));\r\n });\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'escalationInstanceId') ??\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderDetails = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n const instanceId = this.resolvedInstanceId();\r\n\r\n if (instanceId > 0) {\r\n untracked(() => this.loadPreview(instanceId));\r\n return;\r\n }\r\n\r\n this.preview.set(null);\r\n this.error.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(instanceId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<EscalationPreviewResponse>(`escalations/${instanceId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadEscalation',\r\n ),\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction mapUserValue(value: unknown): EntityUserValue {\r\n if (!value || typeof value !== 'object') {\r\n return {\r\n displayName: '',\r\n userName: '',\r\n };\r\n }\r\n\r\n return {\r\n id: readString(value, 'id'),\r\n userName: readString(value, 'userName'),\r\n displayName:\r\n readString(value, 'displayName') ??\r\n readString(value, 'fullName') ??\r\n readString(value, 'userName') ??\r\n '',\r\n photoUrl: readString(value, 'photoUrl'),\r\n phoneNumber:\r\n readString(value, 'phoneNumber') ?? readString(value, 'mobileNumber'),\r\n email: readString(value, 'email') ?? readString(value, 'emailAddress'),\r\n };\r\n}\r\n\r\nfunction mapAttachments(value: string[] | undefined): EntityAttachmentValue {\r\n return (value ?? []) as EntityAttachmentValue;\r\n}\r\n\r\nfunction resolveSchemaSteps(\r\n preview: EscalationPreviewData | null,\r\n): EscalationSchemaStep[] {\r\n return preview?.schema?.stepsSchema ?? preview?.schemaSteps ?? [];\r\n}\r\n\r\nfunction resolveTranslatable(value: TranslatableValue | undefined): string {\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n return value.display ?? value.en ?? value.ar ?? '';\r\n}\r\n\r\nfunction resolveDisplayValue(value: unknown): string {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n return (\r\n readString(value, 'displayValue') ??\r\n readString(value, 'display') ??\r\n readString(value, 'actualValue') ??\r\n ''\r\n );\r\n}\r\n\r\nfunction resolveRawValue(value: unknown): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : undefined;\r\n }\r\n\r\n return (\r\n readString(value, 'actualValue') ??\r\n readString(value, 'displayValue') ??\r\n undefined\r\n );\r\n}\r\n\r\nfunction readString(value: unknown, key: string): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return undefined;\r\n }\r\n\r\n const result = (value as Record<string, unknown>)[key];\r\n return typeof result === 'string' && result.length ? result : undefined;\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'escalationDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationDetails\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (preview()) {\r\n <mt-entities-preview [entities]=\"detailEntities()\" />\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDetailsUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationSchema\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (hasSchema()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg lg:h-full lg:min-h-0\"\r\n >\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [readonly]=\"true\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaContextUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'EscalationInstance'\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-module-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n ],\r\n templateUrl: './work-center-module-type.html',\r\n})\r\nexport class WorkCenterModuleType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('details');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.details'),\r\n value: 'details',\r\n icon: 'file.folder',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(() =>\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly moduleKey = computed(() => 'ModuleData');\r\n protected readonly operationKey = computed(() => 'Update');\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly discussionModuleType = computed(\r\n () =>\r\n readString(this.itemContext(), 'moduleKey') ??\r\n this.details().sourceType ??\r\n this.details().type ??\r\n '',\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () =>\r\n this.resolvedInstanceId() > 0 &&\r\n this.discussionModuleType().trim().length > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'details'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"discussionModuleType()\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { EntityData } from '@masterteam/components/entities';\r\nimport { Table } from '@masterteam/components/table';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ApiEnvelope } from '../../../store/work-center/work-center.model';\r\n\r\ninterface ProcessPreviewStep {\r\n stepId?: number | string;\r\n stepName?: unknown;\r\n status?: unknown;\r\n targetUser?: Record<string, unknown> | null;\r\n actionUserInfo?: Record<string, unknown> | null;\r\n createdAt?: string | null;\r\n actionDate?: string | null;\r\n}\r\n\r\ninterface ProcessPreviewSchemaStep {\r\n id: number | string;\r\n name?: unknown;\r\n type?: string;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n status?: string;\r\n}\r\n\r\ninterface ProcessPreviewSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n state?: 'idle' | 'active' | 'success' | 'error';\r\n}\r\n\r\ninterface ProcessPreviewData {\r\n steps?: ProcessPreviewStep[];\r\n schema?: {\r\n stepsSchema?: ProcessPreviewSchemaStep[];\r\n connections?: ProcessPreviewSchemaConnection[];\r\n } | null;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-preview',\r\n standalone: true,\r\n imports: [CommonModule, Table, StructureBuilder],\r\n templateUrl: './work-center-process-preview.html',\r\n})\r\nexport class WorkCenterProcessPreview implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private loadSub?: Subscription;\r\n\r\n readonly requestId = input<number | null | undefined>(null);\r\n readonly view = input<'approvals' | 'schema'>('approvals');\r\n\r\n protected readonly approvalColumns = [\r\n { key: 'stepName', label: 'Name' },\r\n { key: 'status', label: 'Status' },\r\n { key: 'user', label: 'User', type: 'entity' as const },\r\n { key: 'createdAt', label: 'Initiation Date', type: 'entity' as const },\r\n { key: 'actionDate', label: 'Action Date', type: 'entity' as const },\r\n ];\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<ProcessPreviewData | null>(null);\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n protected readonly approvalRows = computed(() =>\r\n (this.preview()?.steps ?? []).map((step) => ({\r\n stepName: display(step.stepName) || String(step.stepId ?? '--'),\r\n status: display(step.status) || '--',\r\n user: buildEntity(\r\n 'User',\r\n 'User',\r\n (step.actionUserInfo ?? step.targetUser ?? null) as any,\r\n ),\r\n createdAt: buildEntity(\r\n 'Initiation Date',\r\n 'DateTime',\r\n step.createdAt ?? '',\r\n ),\r\n actionDate: buildEntity('Action Date', 'DateTime', step.actionDate ?? ''),\r\n })),\r\n );\r\n protected readonly hasApprovals = computed(\r\n () => this.approvalRows().length > 0,\r\n );\r\n protected readonly schemaNodes = computed<Node[]>(() =>\r\n (this.preview()?.schema?.stepsSchema ?? []).map((step) => {\r\n const isAppAction = step.type === 'AppAction';\r\n const color = step.isFinal\r\n ? '#059669'\r\n : step.isInitial\r\n ? '#2563eb'\r\n : isAppAction\r\n ? '#B45309'\r\n : '#0369A1';\r\n return {\r\n id: String(step.id),\r\n name: display(step.name) || String(step.id),\r\n color,\r\n icon: isAppAction\r\n ? 'general.zap'\r\n : step.isFinal\r\n ? 'map.flag-04'\r\n : step.isInitial\r\n ? 'map.flag-04'\r\n : 'file.clipboard-check',\r\n subtitle: step.isInitial\r\n ? 'Start'\r\n : step.isFinal\r\n ? 'End'\r\n : isAppAction\r\n ? 'App Action'\r\n : 'Form Step',\r\n badge: step.isInitial ? 'Initial' : step.isFinal ? 'Final' : null,\r\n status: step.status ?? null,\r\n style: isAppAction ? 'icon' : 'detail',\r\n };\r\n }),\r\n );\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n state: connection.state,\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n protected readonly previewNodeFields = {\r\n id: 'id',\r\n name: 'name',\r\n icon: 'icon',\r\n color: 'color',\r\n subtitle: 'subtitle',\r\n badge: 'badge',\r\n status: 'status',\r\n style: 'style',\r\n };\r\n\r\n constructor() {\r\n effect(() => {\r\n const requestId = this.requestId() ?? 0;\r\n\r\n if (requestId > 0) {\r\n untracked(() => this.loadPreview(requestId));\r\n return;\r\n }\r\n\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(false);\r\n this.error.set(null);\r\n this.preview.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(requestId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<ApiEnvelope<ProcessPreviewData>>(`processes/${requestId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load process preview',\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction buildEntity(\r\n name: string,\r\n viewType: 'User' | 'DateTime',\r\n value: unknown,\r\n): EntityData {\r\n return {\r\n name,\r\n viewType,\r\n value: (value as any) ?? '',\r\n configuration: {\r\n hideName: true,\r\n },\r\n };\r\n}\r\n\r\nfunction display(value: unknown): string {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return String(value);\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n const resolved = (value as { display?: unknown }).display;\r\n if (typeof resolved === 'string') {\r\n return resolved;\r\n }\r\n\r\n if (typeof resolved === 'number' || typeof resolved === 'boolean') {\r\n return String(resolved);\r\n }\r\n\r\n return '';\r\n}\r\n","@if (!canRenderPreview()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process preview is not available for this item yet.\r\n </p>\r\n </div>\r\n} @else if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\r\n </div>\r\n} @else if (error()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\r\n </div>\r\n} @else {\r\n @if (view() === \"schema\") {\r\n @if (hasSchema()) {\r\n <div class=\"h-[70vh] overflow-hidden\">\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [layoutDirection]=\"'LR'\"\r\n [readonly]=\"true\"\r\n [structureMode]=\"'workflow'\"\r\n [nodeFields]=\"previewNodeFields\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process steps are not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n } @else if (hasApprovals()) {\r\n <mt-table\r\n [data]=\"approvalRows()\"\r\n [columns]=\"approvalColumns\"\r\n storageKey=\"work-center-process-preview-table\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [clickableRows]=\"false\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process approvals data is not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-request-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-request-type.html',\r\n})\r\nexport class WorkCenterProcessRequestType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('requestDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.requestDetails',\r\n ),\r\n value: 'requestDetails',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'requestDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-step-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-step-type.html',\r\n})\r\nexport class WorkCenterProcessStepType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('form');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.form'),\r\n value: 'form',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'form'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\r\nimport { WorkCenterEscalationInstanceType } from '../work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type';\r\nimport { WorkCenterModuleType } from '../work-center-types/work-center-module-type/work-center-module-type';\r\nimport { WorkCenterProcessRequestType } from '../work-center-types/work-center-process-request-type/work-center-process-request-type';\r\nimport { WorkCenterProcessStepType } from '../work-center-types/work-center-process-step-type/work-center-process-step-type';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n WorkCenterProcessStepType,\r\n WorkCenterProcessRequestType,\r\n WorkCenterEscalationInstanceType,\r\n WorkCenterModuleType,\r\n ],\r\n templateUrl: './work-center-item-modal.html',\r\n host: {\r\n class: 'block h-full min-h-0',\r\n },\r\n})\r\nexport class WorkCenterItemModal {\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (details().type === \"ProcessStep\") {\r\n <mt-work-center-process-step-type [details]=\"details()\" />\r\n } @else if (details().type === \"ProcessRequest\") {\r\n <mt-work-center-process-request-type [details]=\"details()\" />\r\n } @else if (details().type === \"EscalationInstance\") {\r\n <mt-work-center-escalation-instance-type [details]=\"details()\" />\r\n } @else if (details().type === \"Module\") {\r\n <mt-work-center-module-type [details]=\"details()\" />\r\n } @else {\r\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\r\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\r\n </div>\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n OnDestroy,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { Button } from '@masterteam/components/button';\nimport {\n RuntimeActionContextStore,\n RuntimeActionRunner,\n resolveActionLabel,\n} from '@masterteam/components/runtime-action';\nimport { Subscription, map } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemActionExecutionResult,\n WorkCenterItemActionsData,\n WorkCenterItemContextKey,\n WorkCenterRuntimeItemAction,\n} from '../../../store/work-center/work-center.model';\n\ntype FooterActionSeverity = 'primary' | 'secondary' | 'success' | 'danger';\ntype FooterActionVariant = 'outlined' | undefined;\n\ninterface ModalFooterAction extends WorkCenterRuntimeItemAction {\n label: string;\n severity: FooterActionSeverity;\n variant: FooterActionVariant;\n}\n\n@Component({\n selector: 'mt-work-center-item-modal-footer-actions',\n standalone: true,\n imports: [CommonModule, TranslocoDirective, Button],\n templateUrl: './work-center-item-modal-footer-actions.html',\n host: {\n class: 'flex w-full flex-1 flex-wrap items-center justify-end gap-2',\n },\n})\nexport class WorkCenterItemModalFooterActions implements OnDestroy {\n private readonly http = inject(HttpClient);\n private readonly runner = inject(RuntimeActionRunner);\n private readonly actionContext = inject(RuntimeActionContextStore);\n\n private loadSub?: Subscription;\n private lastContextKey: WorkCenterItemContextKey | null = null;\n private currentExecution: { actionKey: string; cancelled: boolean } | null =\n null;\n\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\n readonly actionExecuted = output<WorkCenterItemActionExecutionResult>();\n readonly visibilityChange = output<boolean>();\n\n private readonly reloadTick = signal(0);\n private readonly hasResolvedLoad = signal(false);\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly actions = signal<WorkCenterRuntimeItemAction[]>([]);\n protected readonly pendingActionKey = signal<string | null>(null);\n protected readonly displayActions = computed<ModalFooterAction[]>(() =>\n this.actions()\n .filter(\n (action) =>\n action.isAvailable !== false &&\n !!action.url &&\n !!normalizeMethod(action.httpMethod),\n )\n .map((action, index) => ({\n ...action,\n label: resolveActionLabel(action),\n severity: resolveActionSeverity(action.actionKey, index),\n variant: resolveActionVariant(action.actionKey, index),\n })),\n );\n protected readonly shouldRender = computed(\n () =>\n !!this.contextKey() &&\n (!this.hasResolvedLoad() ||\n this.loading() ||\n !!this.error() ||\n this.displayActions().length > 0 ||\n !!this.pendingActionKey()),\n );\n\n constructor() {\n effect(() => {\n const contextKey = this.contextKey();\n this.reloadTick();\n this.error.set(null);\n\n if (!contextKey) {\n this.lastContextKey = null;\n this.actions.set([]);\n this.loading.set(false);\n this.hasResolvedLoad.set(false);\n return;\n }\n\n if (contextKey !== this.lastContextKey) {\n this.actions.set([]);\n this.lastContextKey = contextKey;\n }\n\n untracked(() => this.loadActions(contextKey));\n });\n\n effect(() => {\n this.visibilityChange.emit(this.shouldRender());\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n if (this.currentExecution) {\n this.currentExecution.cancelled = true;\n }\n }\n\n protected async executeAction(action: ModalFooterAction): Promise<void> {\n if (this.pendingActionKey()) {\n return;\n }\n\n this.error.set(null);\n this.pendingActionKey.set(action.actionKey);\n const execution = { actionKey: action.actionKey, cancelled: false };\n this.currentExecution = execution;\n\n const result = await this.runner.execute(action, {\n defaultAfterSuccess: 'refresh',\n silent: true,\n externalPayloadResolvers: {\n values: () => this.actionContext.resolveFormValues(),\n },\n });\n\n if (execution.cancelled) {\n return;\n }\n\n this.pendingActionKey.set(null);\n this.currentExecution = null;\n\n if (result.status === 'cancelled') {\n return;\n }\n\n if (result.status === 'error') {\n const message =\n result.error instanceof Error\n ? result.error.message\n : `Failed to execute ${action.label}.`;\n this.error.set(message);\n return;\n }\n\n const afterSuccess = result.afterSuccess ?? 'refresh';\n\n if (afterSuccess === 'refresh') {\n this.reloadTick.update((value) => value + 1);\n }\n\n this.actionExecuted.emit({\n actionKey: result.actionKey,\n afterSuccess,\n });\n }\n\n private loadActions(contextKey: WorkCenterItemContextKey): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.hasResolvedLoad.set(false);\n\n this.loadSub = this.http\n .get<ApiEnvelope<WorkCenterItemActionsData>>(\n 'workcenter/runtime/item-actions',\n {\n params: { contextKey },\n },\n )\n .pipe(\n map((response) => {\n if (response.code === 1) {\n return response.data.actions ?? [];\n }\n\n throw new Error(\n resolveEnvelopeErrorMessage(\n response,\n 'Failed to load item actions.',\n ),\n );\n }),\n )\n .subscribe({\n next: (actions) => {\n this.actions.set(actions);\n this.loading.set(false);\n this.hasResolvedLoad.set(true);\n },\n error: (error: unknown) => {\n this.actions.set([]);\n this.loading.set(false);\n this.hasResolvedLoad.set(true);\n this.error.set(\n resolveHttpErrorMessage(error, 'Failed to load item actions.'),\n );\n },\n });\n }\n}\n\nfunction normalizeMethod(value: string | null | undefined): string | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const method = value.trim().toUpperCase();\n return method.length ? method : null;\n}\n\nfunction resolveActionSeverity(\n actionKey: string,\n index: number,\n): FooterActionSeverity {\n const normalized = actionKey.trim().toLowerCase();\n if (normalized === 'approve') {\n return 'success';\n }\n\n if (\n normalized === 'close' ||\n normalized === 'delete' ||\n normalized === 'reject' ||\n normalized === 'cancel'\n ) {\n return 'danger';\n }\n\n return index === 0 ? 'primary' : 'secondary';\n}\n\nfunction resolveActionVariant(\n actionKey: string,\n index: number,\n): FooterActionVariant {\n const severity = resolveActionSeverity(actionKey, index);\n return severity === 'primary' || severity === 'success'\n ? undefined\n : 'outlined';\n}\n\nfunction resolveEnvelopeErrorMessage(\n response: { message?: string | null; errors?: unknown } | null | undefined,\n fallback: string,\n): string {\n return (\n (response?.errors as { message?: string } | null)?.message ??\n response?.message ??\n fallback\n );\n}\n\nfunction resolveHttpErrorMessage(error: unknown, fallback: string): string {\n if (!error || typeof error !== 'object') {\n return fallback;\n }\n\n const httpError = error as {\n message?: string;\n error?: { message?: string | null } | null;\n };\n\n return httpError.error?.message ?? httpError.message ?? fallback;\n}\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (shouldRender()) {\r\n @if (error(); as error) {\r\n <span class=\"me-auto max-w-md text-sm text-red-600\">\r\n {{ error }}\r\n </span>\r\n } @else if (loading() && !displayActions().length) {\r\n <span class=\"me-auto text-sm text-surface-500\">{{\r\n t(\"modal.loadingActions\")\r\n }}</span>\r\n }\r\n\r\n @for (action of displayActions(); track action.actionKey + action.url) {\r\n <mt-button\r\n [label]=\"action.label\"\r\n [severity]=\"action.severity\"\r\n [variant]=\"action.variant\"\r\n [disabled]=\"loading() || !!pendingActionKey()\"\r\n [loading]=\"pendingActionKey() === action.actionKey\"\r\n (onClick)=\"executeAction(action)\"\r\n />\r\n }\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Drawer } from '@masterteam/components/drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { map } from 'rxjs';\r\n\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterItemActionExecutionResult,\r\n WorkCenterItemBasicInfoData,\r\n WorkCenterItemContextKey,\r\n} from '../../store/work-center/work-center.model';\r\nimport { WorkCenterItemModal } from '../work-center-item-modal/work-center-item-modal';\r\nimport { WorkCenterItemModalFooterActions } from './work-center-item-modal-footer-actions/work-center-item-modal-footer-actions';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal-route',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Drawer,\r\n SkeletonModule,\r\n WorkCenterItemModal,\r\n WorkCenterItemModalFooterActions,\r\n ],\r\n providers: [RuntimeActionContextStore],\r\n templateUrl: './work-center-item-modal-route.html',\r\n})\r\nexport class WorkCenterItemModalRoute {\r\n private readonly http = inject(HttpClient);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly modal = inject(ModalService);\r\n\r\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\r\n protected readonly drawerVisible = signal(true);\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly details = signal<WorkCenterItemBasicInfoData | null>(null);\r\n protected readonly detailsReloadTick = signal(0);\r\n protected readonly footerActionsMounted = signal(false);\r\n protected readonly resolvedContextKey = computed(() =>\r\n this.decodeContextKey(this.contextKey()),\r\n );\r\n protected readonly drawerTitle = computed(\r\n () =>\r\n this.readDisplayField(this.details()?.item, 'title') ||\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n );\r\n protected readonly drawerSubtitle = computed(\r\n () => this.readDisplayField(this.details()?.item, 'subtitle') ?? '',\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n this.footerActionsMounted.set(!!this.resolvedContextKey());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const contextKey = this.resolvedContextKey();\r\n const reloadTick = this.detailsReloadTick();\r\n\r\n console.log('[work-center-debug] modal route load effect', {\r\n contextKey,\r\n reloadTick,\r\n });\r\n\r\n this.error.set(null);\r\n this.details.set(null);\r\n\r\n if (!contextKey) {\r\n this.loading.set(false);\r\n console.log(\r\n '[work-center-debug] modal route load skipped, no context key',\r\n );\r\n return;\r\n }\r\n\r\n this.loading.set(true);\r\n console.log('[work-center-debug] modal route fetch start', {\r\n endpoint: 'workcenter/runtime/item-basic-info',\r\n contextKey,\r\n });\r\n\r\n const subscription = this.http\r\n .get<ApiEnvelope<WorkCenterItemBasicInfoData>>(\r\n 'workcenter/runtime/item-basic-info',\r\n {\r\n params: { contextKey },\r\n },\r\n )\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) {\r\n return response.data;\r\n }\r\n\r\n throw new Error(this.resolveErrorMessage(response));\r\n }),\r\n )\r\n .subscribe({\r\n next: (details) => {\r\n console.log('[work-center-debug] modal route fetch success', {\r\n contextKey,\r\n details,\r\n });\r\n this.details.set(details);\r\n this.loading.set(false);\r\n },\r\n error: (error: unknown) => {\r\n console.error('[work-center-debug] modal route fetch failed', {\r\n contextKey,\r\n error,\r\n });\r\n this.error.set(\r\n error instanceof Error\r\n ? error.message\r\n : this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadDetails',\r\n ),\r\n );\r\n this.loading.set(false);\r\n },\r\n });\r\n\r\n onCleanup(() => subscription.unsubscribe());\r\n });\r\n }\r\n\r\n protected onActionExecuted(\r\n result: WorkCenterItemActionExecutionResult,\r\n ): void {\r\n if (result.afterSuccess === 'close') {\r\n void this.closeRouteOutlet();\r\n return;\r\n }\r\n\r\n this.detailsReloadTick.update((value) => value + 1);\r\n }\r\n\r\n protected onFooterVisibilityChange(visible: boolean): void {\r\n this.footerActionsMounted.set(visible);\r\n }\r\n\r\n async onVisibleChange(visible: boolean): Promise<void> {\r\n this.drawerVisible.set(visible);\r\n\r\n console.log('[work-center-debug] modal route visible change', { visible });\r\n\r\n if (visible) {\r\n return;\r\n }\r\n\r\n await this.closeRouteOutlet();\r\n }\r\n\r\n private closeRouteOutlet(): Promise<boolean> {\r\n console.log('[work-center-debug] modal route closing', {\r\n outlet: this.route.outlet || 'sidebar',\r\n parentUrl: this.route.parent?.snapshot.url.map((segment) => segment.path),\r\n });\r\n\r\n return this.router\r\n .navigate([{ outlets: { [this.route.outlet || 'sidebar']: null } }], {\r\n relativeTo: this.route.parent,\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n })\r\n .then((success) => {\r\n console.log('[work-center-debug] modal route close navigate result', {\r\n success,\r\n currentUrl: this.router.url,\r\n });\r\n return success;\r\n });\r\n }\r\n\r\n private decodeContextKey(\r\n value: WorkCenterItemContextKey | null,\r\n ): WorkCenterItemContextKey | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n try {\r\n return decodeURIComponent(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n\r\n private resolveErrorMessage(\r\n response: ApiEnvelope<WorkCenterItemBasicInfoData>,\r\n ): string {\r\n const fallbackError = 'Failed to load item details.';\r\n return (\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError\r\n );\r\n }\r\n\r\n private readDisplayField(\r\n item: Record<string, unknown> | null | undefined,\r\n key: string,\r\n ): string | null {\r\n const field = item?.[key];\r\n if (typeof field === 'string' && field.trim().length) {\r\n return field;\r\n }\r\n\r\n if (!field || typeof field !== 'object') {\r\n return null;\r\n }\r\n\r\n const display = (field as { display?: unknown }).display;\r\n return typeof display === 'string' && display.trim().length\r\n ? display\r\n : null;\r\n }\r\n}\r\n","<mt-drawer\r\n [visible]=\"drawerVisible()\"\r\n [loadingHeader]=\"loading()\"\r\n [title]=\"drawerTitle()\"\r\n [subtitle]=\"drawerSubtitle()\"\r\n styleClass=\"mt-work-center-item-drawer !absolute !w-[96vw] md:!w-[84vw] xl:!w-[70vw]\"\r\n position=\"right\"\r\n [modal]=\"true\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <ng-container content>\r\n @if (loading()) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] flex-col gap-5\">\r\n <div class=\"flex items-center gap-3\">\r\n <p-skeleton shape=\"circle\" size=\"3rem\" />\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <p-skeleton width=\"12rem\" height=\"1rem\" />\r\n <p-skeleton width=\"8rem\" height=\"0.875rem\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid gap-3 md:grid-cols-2\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n\r\n <p-skeleton height=\"16rem\" class=\"rounded-lg\" />\r\n </div>\r\n </div>\r\n } @else if (error(); as errorMessage) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"max-w-xl text-sm font-medium text-red-600\">\r\n {{ errorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n } @else if (details(); as details) {\r\n <div [class]=\"modal.contentClass + ' h-full min-h-0'\">\r\n <mt-work-center-item-modal [details]=\"details\" />\r\n </div>\r\n } @else {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"text-sm font-medium text-surface-500\">\r\n {{ t(\"modal.noItemSelected\") }}\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n @if (footerActionsMounted()) {\r\n <div footer [class]=\"modal.footerClass\">\r\n <mt-work-center-item-modal-footer-actions\r\n [contextKey]=\"resolvedContextKey()\"\r\n (actionExecuted)=\"onActionExecuted($event)\"\r\n (visibilityChange)=\"onFooterVisibilityChange($event)\"\r\n />\r\n </div>\r\n }\r\n</mt-drawer>\r\n","import { WorkCenterState } from './work-center';\r\n\r\nexport const APP_STATES = [WorkCenterState];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["toLabel","readString"],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.html","../../../../packages/masterteam/work-center/src/store/work-center/work-center.actions.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.model.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.helpers.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.facade.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-types.helpers.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-route-context-key.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.html","../../../../packages/masterteam/work-center/src/store/app.state.ts","../../../../packages/masterteam/work-center/src/masterteam-work-center.ts"],"sourcesContent":["import {\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { DrawerController } from '@masterteam/components/dynamic-drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n ClientForm,\r\n ClientLookup,\r\n ProcessFormSubmitResponse,\r\n} from '@masterteam/forms/client-form';\r\n\r\nimport { WorkCenterClientFormModalData } from '../../store/work-center/work-center.model';\r\n\r\n@Component({\r\n selector: 'mt-work-center-client-form-modal',\r\n standalone: true,\r\n imports: [Button, TranslocoDirective, ClientForm],\r\n templateUrl: './work-center-client-form-modal.html',\r\n})\r\nexport class WorkCenterClientFormModal {\r\n readonly modal = inject(ModalService);\r\n readonly ref = inject(ModalRef);\r\n readonly drawerController = inject(DrawerController, { optional: true });\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly processForm = viewChild.required(ClientForm);\r\n readonly data = input.required<WorkCenterClientFormModalData>();\r\n readonly operationKey = input<string>('Create');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n\r\n readonly moduleKey = computed(() => this.data().moduleKey);\r\n readonly moduleId = computed(() => this.toNumber(this.data().moduleId));\r\n readonly levelId = computed(() => this.toNumber(this.data().levelId));\r\n readonly levelDataId = computed(() => this.toNumber(this.data().levelDataId));\r\n readonly moduleDataId = computed(() =>\r\n this.toNumber(this.data().moduleDataId),\r\n );\r\n readonly formMode = computed<'create' | 'edit'>(() =>\r\n this.moduleDataId() != null ||\r\n this.operationKey().trim().toLowerCase() === 'update'\r\n ? 'edit'\r\n : 'create',\r\n );\r\n\r\n readonly validationMessage = signal<string | null>(null);\r\n readonly submitError = signal<string | null>(null);\r\n readonly isSubmitting = signal(false);\r\n readonly submitStatus = signal<'pending' | 'executed' | null>(null);\r\n\r\n onSubmit(): void {\r\n this.validationMessage.set(null);\r\n this.submitError.set(null);\r\n this.submitStatus.set(null);\r\n\r\n if (!this.processForm().isValid()) {\r\n this.validationMessage.set(\r\n this.transloco.translate<string>(\r\n 'workCenter.validation.fillRequiredFields',\r\n ),\r\n );\r\n return;\r\n }\r\n\r\n this.isSubmitting.set(true);\r\n this.processForm().submit();\r\n }\r\n\r\n onSubmitted(response: ProcessFormSubmitResponse): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(null);\r\n\r\n const status =\r\n response.status === 'PendingApproval' ? 'pending' : 'executed';\r\n this.submitStatus.set(status);\r\n\r\n if (status === 'executed') {\r\n this.ref.close(true);\r\n }\r\n }\r\n\r\n onErrored(error: string): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(\r\n error ??\r\n this.transloco.translate<string>('workCenter.error.failedSubmit'),\r\n );\r\n }\r\n\r\n private toNumber(value: unknown): number | undefined {\r\n if (typeof value === 'number' && Number.isFinite(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim() !== '') {\r\n const parsed = Number(value);\r\n if (Number.isFinite(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n <div [class]=\"modal.contentClass + ' p-5 flex flex-col gap-4'\">\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [operationKey]=\"operationKey()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [formMode]=\"formMode()\"\r\n [autoLoad]=\"true\"\r\n [lookups]=\"lookups()\"\r\n (submitted)=\"onSubmitted($event)\"\r\n (errored)=\"onErrored($event)\"\r\n />\r\n\r\n @if (isSubmitting()) {\r\n <div class=\"text-sm text-muted-color\">{{ t(\"modal.submitting\") }}</div>\r\n }\r\n\r\n @if (validationMessage()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-700\"\r\n role=\"alert\"\r\n >\r\n {{ validationMessage() }}\r\n </div>\r\n }\r\n\r\n @if (submitError()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\r\n role=\"alert\"\r\n >\r\n {{ submitError() }}\r\n </div>\r\n }\r\n\r\n @if (submitStatus(); as status) {\r\n <div\r\n class=\"mt-2 rounded-lg border p-3 text-sm\"\r\n [class]=\"\r\n status === 'pending'\r\n ? 'border-amber-200 bg-amber-50 text-amber-700'\r\n : 'border-emerald-200 bg-emerald-50 text-emerald-700'\r\n \"\r\n >\r\n @if (status === \"pending\") {\r\n {{ t(\"modal.requestSubmitted\") }}\r\n } @else {\r\n {{ t(\"modal.operationExecuted\") }}\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"t('modal.cancel')\"\r\n variant=\"outlined\"\r\n [disabled]=\"isSubmitting()\"\r\n (onClick)=\"ref.close(false)\"\r\n />\r\n <mt-button\r\n [label]=\"t('modal.submit')\"\r\n icon=\"general.check\"\r\n [disabled]=\"isSubmitting()\"\r\n (onClick)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import {\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n WorkCenterLookups,\r\n} from './work-center.model';\r\n\r\nexport class EnterArea {\r\n static readonly type = '[WorkCenter] Enter Area';\r\n\r\n constructor(public area: WorkCenterArea) {}\r\n}\r\n\r\nexport class HydrateFromContext {\r\n static readonly type = '[WorkCenter] Hydrate From Context';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public patch: WorkCenterHydratePatch,\r\n ) {}\r\n}\r\n\r\nexport class SetParams {\r\n static readonly type = '[WorkCenter] Set Params';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public inputs: WorkCenterBootstrapInputs,\r\n ) {}\r\n}\r\n\r\nexport class SetLookups {\r\n static readonly type = '[WorkCenter] Set Lookups';\r\n\r\n constructor(public lookups: WorkCenterLookups) {}\r\n}\r\n\r\nexport class LoadRuntime {\r\n static readonly type = '[WorkCenter] Load Runtime';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public reason: WorkCenterLoadReason = 'manual',\r\n ) {}\r\n}\r\n\r\n/**\r\n * Replaces the header filter slice (rules from\r\n * `mt-property-filter-builder`). Resets `page` to 1 and triggers a\r\n * BE reload with the merged `headerFilters` + `columnFilters` payload.\r\n */\r\nexport class ApplyHeaderFilters {\r\n static readonly type = '[WorkCenter] Apply Header Filters';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public filters: WorkCenterFilterRule[],\r\n ) {}\r\n}\r\n\r\n/**\r\n * Replaces the in-table column filter slice (rules translated from the\r\n * `mt-table` filters map). Resets `page` to 1 and triggers a BE reload\r\n * with the merged `headerFilters` + `columnFilters` payload.\r\n */\r\nexport class ApplyColumnFilters {\r\n static readonly type = '[WorkCenter] Apply Column Filters';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public filters: WorkCenterFilterRule[],\r\n ) {}\r\n}\r\n","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport type { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\nimport { Type } from '@angular/core';\r\n\r\nexport type WorkCenterArea = 'MyInbox' | 'TasksCenter';\r\nexport type WorkCenterItemContextKey = string;\r\nexport type WorkCenterLookups = ClientLookup[];\r\n\r\nexport enum WorkCenterActionKey {\r\n LoadRuntime = 'loadRuntime',\r\n}\r\n\r\nexport const WORK_CENTER_QUERY_VERSION = 1;\r\nexport const WORK_CENTER_MAX_PAGE_SIZE = 100;\r\nexport const WORK_CENTER_MAX_FILTERS = 20;\r\nexport const WORK_CENTER_MAX_SORT = 5;\r\n\r\nexport interface ApiEnvelope<T> {\r\n endpoint: string | null;\r\n status: number;\r\n code: 1 | 2;\r\n locale: string | null;\r\n message: string | null;\r\n errors: unknown;\r\n data: T;\r\n cacheSession: string | null;\r\n}\r\n\r\nexport interface TranslatableDto {\r\n display: string;\r\n en: string;\r\n ar: string;\r\n}\r\n\r\nexport interface WorkCenterSortRule {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nexport type WorkCenterFilterOperator =\r\n | 'Eq'\r\n | 'Neq'\r\n | 'In'\r\n | 'Contains'\r\n | 'StartsWith'\r\n | 'Gt'\r\n | 'Gte'\r\n | 'Lt'\r\n | 'Lte'\r\n | 'Between'\r\n | 'IsNull'\r\n | 'IsNotNull';\r\n\r\nexport interface WorkCenterFilterRule {\r\n field: string;\r\n op: WorkCenterFilterOperator;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\nexport interface WorkCenterRuntimeProperty {\r\n id?: number;\r\n key: string;\r\n normalizedKey?: string;\r\n name?: TranslatableDto;\r\n description?: TranslatableDto;\r\n viewType?: string;\r\n}\r\n\r\nexport interface WorkCenterRuntimeOperatorOption {\r\n value: WorkCenterFilterOperator;\r\n display?: TranslatableDto;\r\n}\r\n\r\nexport interface WorkCenterRuntimeFilterSchema {\r\n properties?: WorkCenterRuntimeProperty[];\r\n allowedFields?: string[];\r\n allowedOperators: Array<\r\n WorkCenterFilterOperator | WorkCenterRuntimeOperatorOption\r\n >;\r\n}\r\n\r\nexport interface WorkCenterColumnsConfig {\r\n columns?: string[];\r\n properties?: WorkCenterRuntimeProperty[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeRequest {\r\n area: WorkCenterArea;\r\n templateId?: number | null;\r\n selectedCardKey?: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeCard {\r\n key: string;\r\n name: TranslatableDto;\r\n icon: string | null;\r\n urlTemplate?: string | null;\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n count: number;\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeStatsItem {\r\n key: string;\r\n label: TranslatableDto;\r\n count: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimePagination {\r\n page: number;\r\n pageSize: number;\r\n totalCount: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimeSelectedCard {\r\n key: string;\r\n pagination: WorkCenterRuntimePagination;\r\n stats: WorkCenterRuntimeStatsItem[];\r\n items: Record<string, unknown>[];\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeWarningDto {\r\n code: string;\r\n message: string;\r\n cardKey: string | null;\r\n source: string | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeResponseData {\r\n area: WorkCenterArea;\r\n cards: WorkCenterRuntimeCard[];\r\n selectedCard: WorkCenterRuntimeSelectedCard | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterItemBasicInfoData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n item: Record<string, unknown> | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeItemAction {\r\n actionKey: string;\r\n actionName?: TranslatableDto | null;\r\n httpMethod?: string | null;\r\n url?: string | null;\r\n isAvailable?: boolean;\r\n afterSuccess?: WorkCenterItemActionAfterSuccess | null;\r\n stepIds?: Array<number | string>;\r\n needConfirmation?: boolean;\r\n payloadKeys?: string[];\r\n requiredPayloadKeys?: string[];\r\n payloadTemplate?: Record<string, unknown> | null;\r\n formId?: string | number | null;\r\n}\r\n\r\nexport type WorkCenterItemActionAfterSuccess = 'refresh' | 'close';\r\n\r\nexport interface WorkCenterItemActionExecutionResult {\r\n actionKey: string;\r\n afterSuccess: WorkCenterItemActionAfterSuccess;\r\n}\r\n\r\nexport interface WorkCenterItemActionsData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n context: Record<string, unknown> | null;\r\n actions: WorkCenterRuntimeItemAction[];\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterContext {\r\n area: WorkCenterArea;\r\n templateId: number | null;\r\n selectedCardKey: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterAreaState {\r\n context: WorkCenterContext;\r\n /**\r\n * Rules from the page-header property-filter-builder. Combined with\r\n * `columnFilters` to produce `context.runtimeFilters` sent to the BE.\r\n */\r\n headerFilters: WorkCenterFilterRule[];\r\n /**\r\n * Rules translated from the in-table column filters. Combined with\r\n * `headerFilters` to produce `context.runtimeFilters` sent to the BE.\r\n * Same `(field, op)` pair from this slice overrides a header rule.\r\n */\r\n columnFilters: WorkCenterFilterRule[];\r\n menuItems: ClientPageMenuItem[];\r\n rows: Record<string, unknown>[];\r\n columns: ColumnDef[];\r\n kpis: StatisticCardData[];\r\n runtimeFilterSchema: WorkCenterRuntimeFilterSchema | null;\r\n totalCount: number;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n lastLoadedAt: string | null;\r\n}\r\n\r\nexport interface WorkCenterStateModel extends LoadingStateShape<WorkCenterActionKey> {\r\n activeArea: WorkCenterArea;\r\n byArea: Record<WorkCenterArea, WorkCenterAreaState>;\r\n lookups: WorkCenterLookups;\r\n}\r\n\r\nexport interface WorkCenterHydratePatch {\r\n selectedCardKey?: string | null;\r\n page?: number;\r\n pageSize?: number;\r\n templateId?: number | null;\r\n sort?: WorkCenterSortRule[];\r\n runtimeFilters?: WorkCenterFilterRule[];\r\n}\r\n\r\nexport interface WorkCenterBootstrapInputs {\r\n card?: unknown;\r\n page?: unknown;\r\n pageSize?: unknown;\r\n templateId?: unknown;\r\n sort?: unknown;\r\n filters?: unknown;\r\n}\r\n\r\nexport interface WorkCenterItemModalComponentInput {\r\n contextKey: WorkCenterItemContextKey;\r\n}\r\n\r\nexport interface WorkCenterItemModalOptions {\r\n component?: Type<unknown> | null;\r\n header?: string;\r\n styleClass?: string;\r\n appendTo?: string | HTMLElement | null;\r\n position?: 'start' | 'end' | 'left' | 'right';\r\n}\r\n\r\nexport interface WorkCenterClientFormModalData {\r\n moduleKey: string;\r\n moduleId?: number | string;\r\n levelId?: number | string;\r\n levelDataId?: number | string;\r\n moduleDataId?: number | string;\r\n}\r\n\r\nexport interface WorkCenterClientFormModalOptions {\r\n data?: Partial<WorkCenterClientFormModalData>;\r\n operationKey?: string;\r\n header?: string;\r\n styleClass?: string;\r\n buttonLabel?: string;\r\n buttonIcon?: string;\r\n lookups?: ClientLookup[];\r\n}\r\n\r\nexport type WorkCenterLoadReason =\r\n | 'route-enter'\r\n | 'menu-change'\r\n | 'filters-change'\r\n | 'table-lazy'\r\n | 'refresh'\r\n | 'manual';\r\n","import { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterColumnsConfig,\r\n WorkCenterContext,\r\n WorkCenterFilterOperator,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeProperty,\r\n WorkCenterRuntimeCard,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterRuntimeStatsItem,\r\n WorkCenterSortRule,\r\n WorkCenterStateModel,\r\n WORK_CENTER_MAX_FILTERS,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n WORK_CENTER_MAX_SORT,\r\n} from './work-center.model';\r\n\r\nconst AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst KPI_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\n/**\r\n * Default page size when bootstrapping a work-center area. Matches the table\r\n * paginator default so the first BE request asks for exactly one rendered\r\n * page.\r\n */\r\nconst WORK_CENTER_DEFAULT_PAGE_SIZE = 20;\r\nconst WORK_CENTER_LOCAL_FETCH_SIZE = WORK_CENTER_DEFAULT_PAGE_SIZE;\r\n\r\ntype WorkCenterTableColumn = WorkCenterRuntimeProperty &\r\n ColumnDef & {\r\n key: string;\r\n label: string;\r\n type: 'entity';\r\n };\r\n\r\nconst FILTER_OPERATORS: Set<WorkCenterFilterOperator> = new Set([\r\n 'Eq',\r\n 'Neq',\r\n 'In',\r\n 'Contains',\r\n 'StartsWith',\r\n 'Gt',\r\n 'Gte',\r\n 'Lt',\r\n 'Lte',\r\n 'Between',\r\n 'IsNull',\r\n 'IsNotNull',\r\n]);\r\n\r\nfunction clampPage(value: number | undefined, fallback = 1): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n return Math.max(1, Math.floor(value as number));\r\n}\r\n\r\nfunction clampPageSize(\r\n value: number | undefined,\r\n fallback = WORK_CENTER_LOCAL_FETCH_SIZE,\r\n): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n const parsed = Math.floor(value as number);\r\n return Math.min(WORK_CENTER_MAX_PAGE_SIZE, Math.max(1, parsed));\r\n}\r\n\r\nfunction sanitizeSort(\r\n rules: WorkCenterSortRule[] | undefined,\r\n): WorkCenterSortRule[] {\r\n if (!Array.isArray(rules)) return [];\r\n return rules\r\n .filter(\r\n (rule): rule is WorkCenterSortRule =>\r\n typeof rule?.field === 'string' &&\r\n rule.field.length > 0 &&\r\n (rule.dir === 'asc' || rule.dir === 'desc'),\r\n )\r\n .slice(0, WORK_CENTER_MAX_SORT);\r\n}\r\n\r\nfunction sanitizeFilters(\r\n filters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!Array.isArray(filters)) return [];\r\n\r\n return filters\r\n .filter(\r\n (filter): filter is WorkCenterFilterRule =>\r\n typeof filter?.field === 'string' &&\r\n filter.field.length > 0 &&\r\n typeof filter?.op === 'string' &&\r\n FILTER_OPERATORS.has(filter.op),\r\n )\r\n .slice(0, WORK_CENTER_MAX_FILTERS);\r\n}\r\n\r\nfunction parseJson(value: unknown): unknown {\r\n if (typeof value !== 'string') return value;\r\n if (!value.trim()) return null;\r\n\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toOptionalInt(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') return null;\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? Math.floor(parsed) : null;\r\n}\r\n\r\nfunction toSelectedCardKey(value: unknown): string | null {\r\n if (typeof value !== 'string') return null;\r\n const parsed = value.trim();\r\n return parsed.length ? parsed : null;\r\n}\r\n\r\nfunction parseSortInput(value: unknown): WorkCenterSortRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeSort(parsed as WorkCenterSortRule[])\r\n : [];\r\n}\r\n\r\nfunction parseFiltersInput(value: unknown): WorkCenterFilterRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeFilters(parsed as WorkCenterFilterRule[])\r\n : [];\r\n}\r\n\r\nfunction hasParamValue(value: unknown): boolean {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nfunction toLabel(value: string): string {\r\n const segment = value.split('.').pop() ?? value;\r\n return segment\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction toViewType(viewType: string | undefined, key: string): string {\r\n if (viewType?.trim()) {\r\n return viewType;\r\n }\r\n\r\n return key.toLowerCase().includes('date') ? 'Date' : 'Text';\r\n}\r\n\r\nfunction normalizeColumnKey(key: string): string {\r\n return key\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s._-]+/g, '');\r\n}\r\n\r\nfunction resolveColumnWeight(key: string): number {\r\n const normalizedKey = normalizeColumnKey(key);\r\n\r\n if (normalizedKey.includes('title')) return 26;\r\n if (\r\n normalizedKey.includes('subtitle') ||\r\n normalizedKey.includes('description')\r\n ) {\r\n return 20;\r\n }\r\n if (normalizedKey.includes('status')) return 14;\r\n if (normalizedKey.includes('progress')) return 17;\r\n if (\r\n normalizedKey.includes('createdby') ||\r\n normalizedKey.includes('assignedto') ||\r\n normalizedKey.includes('owner') ||\r\n normalizedKey.includes('user')\r\n ) {\r\n return 20;\r\n }\r\n if (\r\n normalizedKey.includes('duedate') ||\r\n normalizedKey.includes('createdat') ||\r\n normalizedKey.includes('updatedat') ||\r\n normalizedKey.endsWith('date')\r\n ) {\r\n return 15;\r\n }\r\n if (normalizedKey.includes('priority')) return 12;\r\n\r\n return 16;\r\n}\r\n\r\nfunction applySmartColumnWidths(\r\n columns: WorkCenterTableColumn[],\r\n): WorkCenterTableColumn[] {\r\n const dynamicWeightTotal = columns.reduce((total, column) => {\r\n return column.width?.trim()\r\n ? total\r\n : total + resolveColumnWeight(column.key);\r\n }, 0);\r\n\r\n if (!dynamicWeightTotal) {\r\n return columns;\r\n }\r\n\r\n return columns.map((column) => {\r\n if (column.width?.trim()) {\r\n return column;\r\n }\r\n\r\n const width = (\r\n (resolveColumnWeight(column.key) / dynamicWeightTotal) *\r\n 100\r\n ).toFixed(2);\r\n\r\n return {\r\n ...column,\r\n width: `${width}%`,\r\n };\r\n });\r\n}\r\n\r\nfunction getValue(record: Record<string, unknown>, key: string): unknown {\r\n return key.split('.').reduce<unknown>((current, part) => {\r\n if (!current || typeof current !== 'object') {\r\n return undefined;\r\n }\r\n\r\n return (current as Record<string, unknown>)[part];\r\n }, record);\r\n}\r\n\r\nfunction flattenRuntimeRow(\r\n row: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n const extra = row['extra'];\r\n\r\n if (!extra || typeof extra !== 'object' || Array.isArray(extra)) {\r\n return row;\r\n }\r\n\r\n return {\r\n ...(extra as Record<string, unknown>),\r\n ...row,\r\n };\r\n}\r\n\r\nfunction toDisplayValue(\r\n value: unknown,\r\n column: WorkCenterTableColumn,\r\n): unknown {\r\n if (column.viewType !== 'Text') {\r\n return value;\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n const display = (value as Record<string, unknown>)['display'];\r\n return typeof display === 'string' ? display : value;\r\n}\r\n\r\nfunction buildColumnsFromProperties(\r\n properties: WorkCenterRuntimeProperty[],\r\n): WorkCenterTableColumn[] {\r\n return properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n ...property,\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n type: 'entity' as const,\r\n viewType: toViewType(property.viewType, property.key),\r\n }));\r\n}\r\n\r\nfunction buildColumns(\r\n columnsConfig: WorkCenterColumnsConfig | null | undefined,\r\n): WorkCenterTableColumn[] {\r\n const propertyColumns = buildColumnsFromProperties(\r\n columnsConfig?.properties ?? [],\r\n );\r\n if (propertyColumns.length) {\r\n return applySmartColumnWidths(propertyColumns);\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return applySmartColumnWidths(\r\n keys.map((key) => ({\r\n key,\r\n label: toLabel(key),\r\n type: 'entity' as const,\r\n viewType: toViewType(undefined, key),\r\n })),\r\n );\r\n}\r\n\r\nfunction toDisplayRows(\r\n rows: Record<string, unknown>[],\r\n columns: WorkCenterTableColumn[],\r\n): Record<string, unknown>[] {\r\n return rows.map((row) => {\r\n const sourceRow = flattenRuntimeRow(row);\r\n const displayRow = { ...sourceRow };\r\n\r\n for (const column of columns) {\r\n const value = getValue(sourceRow, column.key);\r\n displayRow[column.key] = {\r\n ...column,\r\n value: toDisplayValue(value, column),\r\n };\r\n }\r\n\r\n return displayRow;\r\n });\r\n}\r\n\r\nfunction buildMenuItems(cards: WorkCenterRuntimeCard[]): ClientPageMenuItem[] {\r\n const mapped = cards.map((card, index) => ({\r\n key: card.key,\r\n title:\r\n card.name?.display || card.name?.en || card.name?.ar || toLabel(card.key),\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: AREA_COLORS[index % AREA_COLORS.length],\r\n icon: card.icon ?? 'custom.task',\r\n isAvailable: card.isAvailable !== false,\r\n }));\r\n\r\n const available = mapped.filter((card) => card.isAvailable);\r\n const source = available.length ? available : mapped;\r\n\r\n return source.map((card) => ({\r\n key: card.key,\r\n title: card.title,\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: card.color,\r\n icon: card.icon ?? 'custom.task',\r\n }));\r\n}\r\n\r\nfunction buildKpis(\r\n stats: WorkCenterRuntimeStatsItem[],\r\n fallbackIcon: string | null,\r\n): StatisticCardData[] {\r\n return stats.map((stat, index) => ({\r\n title: String(stat.count ?? 0),\r\n subTitle: stat.label.display,\r\n icon: (fallbackIcon ?? 'custom.task') as any,\r\n color: KPI_COLORS[index % KPI_COLORS.length],\r\n }));\r\n}\r\n\r\nfunction createDefaultContext(area: WorkCenterArea): WorkCenterContext {\r\n return {\r\n area,\r\n templateId: null,\r\n selectedCardKey: null,\r\n page: 1,\r\n pageSize: WORK_CENTER_LOCAL_FETCH_SIZE,\r\n sort: [],\r\n runtimeFilters: [],\r\n includeStats: true,\r\n };\r\n}\r\n\r\nfunction createDefaultAreaState(area: WorkCenterArea): WorkCenterAreaState {\r\n return {\r\n context: createDefaultContext(area),\r\n headerFilters: [],\r\n columnFilters: [],\r\n menuItems: [],\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n runtimeFilterSchema: null,\r\n totalCount: 0,\r\n warnings: [],\r\n lastLoadedAt: null,\r\n };\r\n}\r\n\r\n/**\r\n * Combines header (property-filter-builder) and column (in-table) rules into\r\n * the single `runtimeFilters` payload the BE expects. Header rules come\r\n * first; a column rule with the same `(field, op)` pair replaces the matching\r\n * header rule.\r\n */\r\nexport function mergeRuntimeFilters(\r\n headerFilters: WorkCenterFilterRule[] | undefined,\r\n columnFilters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n const seen = new Map<string, WorkCenterFilterRule>();\r\n const ordered: string[] = [];\r\n const push = (rule: WorkCenterFilterRule) => {\r\n const key = `${rule.field}::${rule.op}`;\r\n if (!seen.has(key)) ordered.push(key);\r\n seen.set(key, rule);\r\n };\r\n\r\n (headerFilters ?? []).forEach(push);\r\n (columnFilters ?? []).forEach(push);\r\n\r\n return sanitizeFilters(ordered.map((key) => seen.get(key)!));\r\n}\r\n\r\nexport const WORK_CENTER_DEFAULT_STATE: WorkCenterStateModel = {\r\n activeArea: 'MyInbox',\r\n byArea: {\r\n MyInbox: createDefaultAreaState('MyInbox'),\r\n TasksCenter: createDefaultAreaState('TasksCenter'),\r\n },\r\n lookups: [],\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\nexport function normalizeContext(\r\n context: WorkCenterContext,\r\n): WorkCenterContext {\r\n return {\r\n ...context,\r\n page: clampPage(context.page, 1),\r\n pageSize: clampPageSize(context.pageSize, WORK_CENTER_LOCAL_FETCH_SIZE),\r\n sort: sanitizeSort(context.sort),\r\n runtimeFilters: sanitizeFilters(context.runtimeFilters),\r\n };\r\n}\r\n\r\nexport function buildContextFromInputs(\r\n currentContext: WorkCenterContext,\r\n area: WorkCenterArea,\r\n inputs: WorkCenterBootstrapInputs = {},\r\n): WorkCenterContext {\r\n const parsedCardKey = toSelectedCardKey(inputs.card);\r\n const parsedTemplateId = toOptionalInt(inputs.templateId);\r\n const parsedPage = toOptionalInt(inputs.page);\r\n const parsedPageSize = toOptionalInt(inputs.pageSize);\r\n\r\n return normalizeContext({\r\n ...currentContext,\r\n area,\r\n selectedCardKey: parsedCardKey ?? currentContext.selectedCardKey,\r\n page: parsedPage ?? currentContext.page,\r\n pageSize: parsedPageSize ?? currentContext.pageSize,\r\n templateId: parsedTemplateId ?? currentContext.templateId,\r\n sort: hasParamValue(inputs.sort)\r\n ? parseSortInput(inputs.sort)\r\n : inputs.sort === null\r\n ? []\r\n : currentContext.sort,\r\n runtimeFilters: hasParamValue(inputs.filters)\r\n ? parseFiltersInput(inputs.filters)\r\n : inputs.filters === null\r\n ? []\r\n : currentContext.runtimeFilters,\r\n });\r\n}\r\n\r\nexport function isSameContext(\r\n left: WorkCenterContext,\r\n right: WorkCenterContext,\r\n): boolean {\r\n return (\r\n left.area === right.area &&\r\n left.templateId === right.templateId &&\r\n left.selectedCardKey === right.selectedCardKey &&\r\n left.page === right.page &&\r\n left.pageSize === right.pageSize &&\r\n left.includeStats === right.includeStats &&\r\n JSON.stringify(left.sort) === JSON.stringify(right.sort) &&\r\n JSON.stringify(left.runtimeFilters) === JSON.stringify(right.runtimeFilters)\r\n );\r\n}\r\n\r\nexport function mapRuntimeResponse(\r\n current: WorkCenterAreaState,\r\n response: WorkCenterRuntimeResponseData,\r\n): WorkCenterAreaState {\r\n const selectedCard = response.selectedCard;\r\n const menuItems = buildMenuItems(response.cards);\r\n const requestedCardKey =\r\n selectedCard?.key ?? current.context.selectedCardKey ?? null;\r\n const selectedCardKey =\r\n requestedCardKey &&\r\n response.cards.some((card) => card.key === requestedCardKey)\r\n ? requestedCardKey\r\n : (menuItems[0]?.key ?? response.cards[0]?.key ?? null);\r\n const selectedCardFromList = selectedCardKey\r\n ? (response.cards.find((card) => card.key === selectedCardKey) ?? null)\r\n : null;\r\n const selectedMenuItem = menuItems.find(\r\n (item) => item.key === selectedCardKey,\r\n );\r\n const columns = buildColumns(\r\n selectedCard?.columnsConfig ?? selectedCardFromList?.columnsConfig,\r\n );\r\n const rows = toDisplayRows(selectedCard?.items ?? [], columns);\r\n const kpis = buildKpis(\r\n selectedCard?.stats ?? [],\r\n selectedMenuItem?.icon ?? null,\r\n );\r\n\r\n return {\r\n ...current,\r\n menuItems,\r\n rows,\r\n columns,\r\n kpis,\r\n runtimeFilterSchema:\r\n selectedCard?.runtimeFilterSchema ??\r\n selectedCardFromList?.runtimeFilterSchema ??\r\n null,\r\n totalCount: selectedCard?.pagination.totalCount ?? 0,\r\n warnings: response.warnings ?? [],\r\n lastLoadedAt: new Date().toISOString(),\r\n context: {\r\n ...current.context,\r\n selectedCardKey,\r\n page: selectedCard?.pagination.page ?? current.context.page,\r\n pageSize: selectedCard?.pagination.pageSize ?? current.context.pageSize,\r\n },\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { handleApiRequest } from '@masterteam/components';\r\nimport { EMPTY, catchError, map } from 'rxjs';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n ApplyHeaderFilters,\r\n ApplyColumnFilters,\r\n} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeFilterSchema,\r\n WorkCenterRuntimeRequest,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterStateModel,\r\n} from './work-center.model';\r\nimport {\r\n buildContextFromInputs,\r\n isSameContext,\r\n mapRuntimeResponse,\r\n mergeRuntimeFilters,\r\n normalizeContext,\r\n WORK_CENTER_DEFAULT_STATE,\r\n} from './work-center.state.helpers';\r\n\r\n@State<WorkCenterStateModel>({\r\n name: 'workCenter',\r\n defaults: WORK_CENTER_DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class WorkCenterState {\r\n private readonly http = inject(HttpClient);\r\n\r\n @Selector()\r\n static getState(state: WorkCenterStateModel): WorkCenterStateModel {\r\n return state;\r\n }\r\n\r\n @Selector()\r\n static activeArea(state: WorkCenterStateModel): WorkCenterArea {\r\n return state.activeArea;\r\n }\r\n\r\n @Selector([WorkCenterState.activeArea, WorkCenterState.getState])\r\n static activeSnapshot(\r\n activeArea: WorkCenterArea,\r\n state: WorkCenterStateModel,\r\n ): WorkCenterAreaState {\r\n return state.byArea[activeArea];\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static context(snapshot: WorkCenterAreaState) {\r\n return snapshot.context;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static menuItems(snapshot: WorkCenterAreaState) {\r\n return snapshot.menuItems;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static rows(snapshot: WorkCenterAreaState) {\r\n return snapshot.rows;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columns(snapshot: WorkCenterAreaState) {\r\n return snapshot.columns;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static kpis(snapshot: WorkCenterAreaState) {\r\n return snapshot.kpis;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static runtimeFilterSchema(\r\n snapshot: WorkCenterAreaState,\r\n ): WorkCenterRuntimeFilterSchema | null {\r\n return snapshot.runtimeFilterSchema;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static headerFilters(snapshot: WorkCenterAreaState): WorkCenterFilterRule[] {\r\n return snapshot.headerFilters;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columnFilters(snapshot: WorkCenterAreaState): WorkCenterFilterRule[] {\r\n return snapshot.columnFilters;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static totalCount(snapshot: WorkCenterAreaState): number {\r\n return snapshot.totalCount;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static warnings(snapshot: WorkCenterAreaState) {\r\n return snapshot.warnings;\r\n }\r\n\r\n @Selector()\r\n static lookups(state: WorkCenterStateModel) {\r\n return state.lookups;\r\n }\r\n\r\n @Selector()\r\n static getLoadingActive(state: WorkCenterStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: WorkCenterStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n @Action(EnterArea)\r\n enterArea(ctx: StateContext<WorkCenterStateModel>, action: EnterArea): void {\r\n if (ctx.getState().activeArea === action.area) return;\r\n ctx.patchState({ activeArea: action.area });\r\n }\r\n\r\n @Action(HydrateFromContext)\r\n hydrateFromContext(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: HydrateFromContext,\r\n ): void {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = normalizeContext({\r\n ...current.context,\r\n ...action.patch,\r\n area: action.area,\r\n });\r\n\r\n if (\r\n state.activeArea === action.area &&\r\n isSameContext(current.context, nextContext)\r\n ) {\r\n return;\r\n }\r\n\r\n // External `runtimeFilters` writes are treated as header-slice writes so\r\n // the in-table column filter slice doesn't get stranded out of sync.\r\n const filtersChanged = action.patch.runtimeFilters !== undefined;\r\n const nextHeaderFilters = filtersChanged\r\n ? nextContext.runtimeFilters\r\n : current.headerFilters;\r\n const nextColumnFilters = filtersChanged ? [] : current.columnFilters;\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: {\r\n ...current,\r\n headerFilters: nextHeaderFilters,\r\n columnFilters: nextColumnFilters,\r\n context: nextContext,\r\n },\r\n },\r\n });\r\n }\r\n\r\n @Action(SetParams)\r\n setParams(ctx: StateContext<WorkCenterStateModel>, action: SetParams) {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = buildContextFromInputs(\r\n current.context,\r\n action.area,\r\n action.inputs,\r\n );\r\n\r\n const areaChanged = state.activeArea !== action.area;\r\n const contextChanged = !isSameContext(current.context, nextContext);\r\n const runtimeLoading = state.loadingActive.includes(\r\n WorkCenterActionKey.LoadRuntime,\r\n );\r\n const shouldLoad =\r\n areaChanged ||\r\n contextChanged ||\r\n (!current.lastLoadedAt && !runtimeLoading);\r\n\r\n if (areaChanged || contextChanged) {\r\n // URL-derived filters land on the header slice. Anything previously\r\n // applied via the in-table column filters is dropped so the BE payload\r\n // matches what the user sees on the page header.\r\n const filtersFromInputs = action.inputs?.filters !== undefined;\r\n const nextHeaderFilters = filtersFromInputs\r\n ? nextContext.runtimeFilters\r\n : current.headerFilters;\r\n const nextColumnFilters = filtersFromInputs ? [] : current.columnFilters;\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: {\r\n ...current,\r\n headerFilters: nextHeaderFilters,\r\n columnFilters: nextColumnFilters,\r\n context: nextContext,\r\n },\r\n },\r\n });\r\n }\r\n\r\n if (!shouldLoad) return;\r\n return ctx.dispatch(new LoadRuntime(action.area, 'route-enter'));\r\n }\r\n\r\n @Action(SetLookups)\r\n setLookups(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: SetLookups,\r\n ): void {\r\n if (ctx.getState().lookups === action.lookups) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n lookups: Array.isArray(action.lookups) ? action.lookups : [],\r\n });\r\n }\r\n\r\n @Action(ApplyHeaderFilters)\r\n applyHeaderFilters(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: ApplyHeaderFilters,\r\n ) {\r\n return this.applyFilterSlice(ctx, action.area, {\r\n headerFilters: action.filters,\r\n });\r\n }\r\n\r\n @Action(ApplyColumnFilters)\r\n applyColumnFilters(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: ApplyColumnFilters,\r\n ) {\r\n return this.applyFilterSlice(ctx, action.area, {\r\n columnFilters: action.filters,\r\n });\r\n }\r\n\r\n private applyFilterSlice(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n area: WorkCenterArea,\r\n patch: {\r\n headerFilters?: WorkCenterFilterRule[];\r\n columnFilters?: WorkCenterFilterRule[];\r\n },\r\n ) {\r\n const state = ctx.getState();\r\n const current = state.byArea[area];\r\n\r\n const headerFilters = patch.headerFilters ?? current.headerFilters;\r\n const columnFilters = patch.columnFilters ?? current.columnFilters;\r\n const runtimeFilters = mergeRuntimeFilters(headerFilters, columnFilters);\r\n\r\n const sameHeader =\r\n JSON.stringify(headerFilters) === JSON.stringify(current.headerFilters);\r\n const sameColumn =\r\n JSON.stringify(columnFilters) === JSON.stringify(current.columnFilters);\r\n const sameMerged =\r\n JSON.stringify(runtimeFilters) ===\r\n JSON.stringify(current.context.runtimeFilters);\r\n\r\n if (sameHeader && sameColumn && sameMerged) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n activeArea: area,\r\n byArea: {\r\n ...state.byArea,\r\n [area]: {\r\n ...current,\r\n headerFilters,\r\n columnFilters,\r\n context: {\r\n ...current.context,\r\n runtimeFilters,\r\n page: 1,\r\n },\r\n },\r\n },\r\n });\r\n\r\n return ctx.dispatch(new LoadRuntime(area, 'filters-change'));\r\n }\r\n\r\n @Action(LoadRuntime)\r\n loadRuntime(ctx: StateContext<WorkCenterStateModel>, action: LoadRuntime) {\r\n const state = ctx.getState();\r\n const areaState = state.byArea[action.area];\r\n const request = normalizeContext(areaState.context);\r\n const nextAreaState = {\r\n ...areaState,\r\n rows: [],\r\n kpis: [],\r\n totalCount: 0,\r\n };\r\n\r\n ctx.patchState({\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: nextAreaState,\r\n },\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: WorkCenterActionKey.LoadRuntime,\r\n request$: this.getRuntime(request),\r\n onSuccess: (response, latestState) => {\r\n const current = latestState.byArea[action.area];\r\n return {\r\n byArea: {\r\n ...latestState.byArea,\r\n [action.area]: mapRuntimeResponse(current, response),\r\n },\r\n };\r\n },\r\n errorMessage: 'Failed to load Work Center runtime.',\r\n }).pipe(catchError(() => EMPTY));\r\n }\r\n\r\n private getRuntime(request: WorkCenterRuntimeRequest) {\r\n return this.http\r\n .post<\r\n ApiEnvelope<WorkCenterRuntimeResponseData>\r\n >('workcenter/runtime', request)\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) return response.data;\r\n\r\n const fallbackError = 'Failed to load Work Center runtime.';\r\n const message =\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError;\r\n\r\n throw new Error(message);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n ApplyHeaderFilters,\r\n ApplyColumnFilters,\r\n} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLookups,\r\n WorkCenterLoadReason,\r\n WorkCenterSortRule,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n} from './work-center.model';\r\nimport { WorkCenterState } from './work-center.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WorkCenterFacade {\r\n private readonly store = inject(Store);\r\n\r\n readonly activeArea = select(WorkCenterState.activeArea);\r\n readonly context = select(WorkCenterState.context);\r\n readonly menuItems = select(WorkCenterState.menuItems);\r\n readonly rows = select(WorkCenterState.rows);\r\n readonly columns = select(WorkCenterState.columns);\r\n readonly kpis = select(WorkCenterState.kpis);\r\n readonly lookups = select(WorkCenterState.lookups);\r\n readonly runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\r\n readonly headerFilters = select(WorkCenterState.headerFilters);\r\n readonly columnFilters = select(WorkCenterState.columnFilters);\r\n readonly totalCount = select(WorkCenterState.totalCount);\r\n readonly warnings = select(WorkCenterState.warnings);\r\n\r\n private readonly loadingActive = select(WorkCenterState.getLoadingActive);\r\n private readonly errors = select(WorkCenterState.getErrors);\r\n\r\n readonly loading = computed(() =>\r\n this.loadingActive().includes(WorkCenterActionKey.LoadRuntime),\r\n );\r\n readonly error = computed(\r\n () => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null,\r\n );\r\n\r\n enterArea(area: WorkCenterArea) {\r\n return this.store.dispatch(new EnterArea(area));\r\n }\r\n\r\n hydrateContext(area: WorkCenterArea, patch: WorkCenterHydratePatch) {\r\n return this.store.dispatch(new HydrateFromContext(area, patch));\r\n }\r\n\r\n setParams(area: WorkCenterArea, inputs: WorkCenterBootstrapInputs) {\r\n return this.store.dispatch(new SetParams(area, inputs));\r\n }\r\n\r\n setLookups(lookups: WorkCenterLookups) {\r\n return this.store.dispatch(new SetLookups(lookups));\r\n }\r\n\r\n selectCardAndLoad(area: WorkCenterArea, selectedCardKey: string) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { selectedCardKey, page: 1 }),\r\n new LoadRuntime(area, 'menu-change'),\r\n ]);\r\n }\r\n\r\n applyTableLazyLoadAndLoad(area: WorkCenterArea, event: any) {\r\n const context = this.store.selectSnapshot(WorkCenterState.context);\r\n const patch: WorkCenterHydratePatch = {};\r\n let changed = false;\r\n\r\n const page = this.toPositiveInt(event?.currentPage);\r\n if (page !== null && page !== context.page) {\r\n patch.page = page;\r\n changed = true;\r\n }\r\n\r\n const pageSize = this.toPositiveInt(event?.pageSize);\r\n if (pageSize !== null) {\r\n const normalizedPageSize = Math.min(\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n Math.max(1, pageSize),\r\n );\r\n if (normalizedPageSize !== context.pageSize) {\r\n patch.pageSize = normalizedPageSize;\r\n changed = true;\r\n }\r\n }\r\n\r\n const sort = this.toSortFromLazyEvent(event);\r\n if (sort && !this.isSameSort(sort, context.sort)) {\r\n patch.sort = sort;\r\n changed = true;\r\n }\r\n\r\n if (!changed) {\r\n return;\r\n }\r\n\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, patch),\r\n new LoadRuntime(area, 'table-lazy'),\r\n ]);\r\n }\r\n\r\n applyRuntimeFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n // Back-compat: any caller that previously set the entire `runtimeFilters`\r\n // array now lands on the header slice. The in-table column filter slice is\r\n // cleared so the merged payload matches what callers expect.\r\n return this.store.dispatch(new ApplyHeaderFilters(area, runtimeFilters));\r\n }\r\n\r\n /**\r\n * Replaces the property-filter-builder slice. Resets pagination to page 1\r\n * and reloads with merged `headerFilters` + `columnFilters`.\r\n */\r\n applyHeaderFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch(new ApplyHeaderFilters(area, runtimeFilters));\r\n }\r\n\r\n /**\r\n * Replaces the in-table column filter slice. Resets pagination to page 1\r\n * and reloads with merged `headerFilters` + `columnFilters`.\r\n */\r\n applyColumnFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch(new ApplyColumnFilters(area, runtimeFilters));\r\n }\r\n\r\n loadRuntime(area: WorkCenterArea, reason: WorkCenterLoadReason = 'manual') {\r\n return this.store.dispatch(new LoadRuntime(area, reason));\r\n }\r\n\r\n private toPositiveInt(value: unknown): number | null {\r\n const parsed = Number(value);\r\n if (!Number.isFinite(parsed)) {\r\n return null;\r\n }\r\n return Math.max(1, Math.floor(parsed));\r\n }\r\n\r\n private toSortFromLazyEvent(event: any): WorkCenterSortRule[] | null {\r\n const sortField = event?.sortField;\r\n if (typeof sortField !== 'string' || !sortField.length) {\r\n return null;\r\n }\r\n\r\n return [\r\n {\r\n field: sortField,\r\n dir: event?.sortOrder === -1 ? 'desc' : 'asc',\r\n },\r\n ];\r\n }\r\n\r\n private isSameSort(\r\n left: WorkCenterSortRule[] | undefined,\r\n right: WorkCenterSortRule[] | undefined,\r\n ): boolean {\r\n const leftValue = left ?? [];\r\n const rightValue = right ?? [];\r\n\r\n if (leftValue.length !== rightValue.length) {\r\n return false;\r\n }\r\n\r\n return leftValue.every(\r\n (rule, index) =>\r\n rule.field === rightValue[index]?.field &&\r\n rule.dir === rightValue[index]?.dir,\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ClientPage } from '@masterteam/components/client-page';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport {\r\n PropertyFilterBuilder,\r\n PropertyFilterBuilderRule,\r\n PropertyFilterBuilderSchema,\r\n} from '@masterteam/components/property-filter-builder';\r\nimport { StatisticCard } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef, Table, TableFilters } from '@masterteam/components/table';\r\nimport { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { take } from 'rxjs';\r\n\r\nimport { WorkCenterClientFormModal } from '../work-center-client-form-modal/work-center-client-form-modal';\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterClientFormModalOptions,\r\n WorkCenterFilterRule,\r\n WorkCenterItemModalOptions,\r\n WorkCenterItemContextKey,\r\n WorkCenterItemModalComponentInput,\r\n WorkCenterRuntimeFilterSchema,\r\n} from '../../store/work-center/work-center.model';\r\n\r\nconst OPERATOR_LABELS: Record<string, string> = {\r\n Eq: 'Equals',\r\n Neq: 'Not equal',\r\n In: 'In',\r\n Contains: 'Contains',\r\n StartsWith: 'Starts with',\r\n Gt: 'Greater than',\r\n Gte: 'Greater than or equal',\r\n Lt: 'Less than',\r\n Lte: 'Less than or equal',\r\n Between: 'Between',\r\n IsNull: 'Is empty',\r\n IsNotNull: 'Is not empty',\r\n};\r\n\r\nconst OPERATOR_VALUE_MODE: Record<\r\n string,\r\n 'single' | 'multi' | 'range' | 'none'\r\n> = {\r\n In: 'multi',\r\n Between: 'range',\r\n IsNull: 'none',\r\n IsNotNull: 'none',\r\n};\r\nconst GENERAL_TASK_CARD_KEYS = new Set([\r\n 'mygeneraltasks',\r\n 'generaltask',\r\n 'generaltasks',\r\n]);\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction columnTypeToViewType(type: string | undefined): string | undefined {\r\n if (type === 'date') return 'Date';\r\n return undefined;\r\n}\r\n\r\nfunction normalizeCardKey(value: string | null | undefined): string {\r\n if (typeof value !== 'string') {\r\n return '';\r\n }\r\n\r\n return value\r\n .trim()\r\n .replace(/[\\s_-]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * Strips the user envelope used by `mt-table` user filters down to the\r\n * scalar id that the BE rule payload accepts. Falls back to the original\r\n * value for non-user shapes (e.g. simple string in a select filter).\r\n */\r\nfunction extractIdScalar(value: unknown): unknown {\r\n if (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n 'id' in (value as Record<string, unknown>)\r\n ) {\r\n return (value as Record<string, unknown>)['id'];\r\n }\r\n return value;\r\n}\r\n\r\nfunction toIsoDate(value: unknown): unknown {\r\n if (value instanceof Date) return value.toISOString();\r\n return value;\r\n}\r\n\r\n/**\r\n * Translates one in-table column filter value into a `WorkCenterFilterRule`.\r\n *\r\n * The shape of `raw` depends on the column's filter type — see\r\n * `mt-table` `table-filter-field` outputs:\r\n * - text → string → `Contains`\r\n * - select → scalar | scalar[] → `Eq` | `In`\r\n * - boolean → boolean → `Eq`\r\n * - date → `{ from?, to?, value? }` (Date|null)→ `Between`/`Gte`/`Lte`/`Eq`\r\n * - user → `{ id, ... }` | `{ id, ... }[]` → `Eq` (id) | `In` (ids)\r\n *\r\n * Returns `null` when the value is empty / nothing to send.\r\n */\r\nfunction toRuntimeFilterRule(\r\n field: string,\r\n raw: unknown,\r\n column: ColumnDef | undefined,\r\n): WorkCenterFilterRule | null {\r\n if (raw === null || raw === undefined || raw === '') return null;\r\n\r\n if (typeof raw === 'boolean') {\r\n return { field, op: 'Eq', value: raw };\r\n }\r\n\r\n if (typeof raw === 'number') {\r\n return { field, op: 'Eq', value: raw };\r\n }\r\n\r\n if (typeof raw === 'string') {\r\n if (!raw.trim().length) return null;\r\n return { field, op: 'Contains', value: raw };\r\n }\r\n\r\n if (Array.isArray(raw)) {\r\n const values = raw\r\n .map(extractIdScalar)\r\n .filter((v) => v !== null && v !== undefined && v !== '');\r\n if (!values.length) return null;\r\n return { field, op: 'In', values };\r\n }\r\n\r\n if (typeof raw === 'object') {\r\n const obj = raw as {\r\n from?: unknown;\r\n to?: unknown;\r\n value?: unknown;\r\n id?: unknown;\r\n };\r\n\r\n // User filter envelope -> single-id Eq.\r\n if (obj.id !== undefined && obj.id !== null && obj.id !== '') {\r\n return { field, op: 'Eq', value: obj.id };\r\n }\r\n\r\n const hasFrom = obj.from !== undefined && obj.from !== null;\r\n const hasTo = obj.to !== undefined && obj.to !== null;\r\n if (hasFrom && hasTo) {\r\n return {\r\n field,\r\n op: 'Between',\r\n from: toIsoDate(obj.from),\r\n to: toIsoDate(obj.to),\r\n };\r\n }\r\n if (hasFrom) {\r\n return { field, op: 'Gte', value: toIsoDate(obj.from) };\r\n }\r\n if (hasTo) {\r\n return { field, op: 'Lte', value: toIsoDate(obj.to) };\r\n }\r\n\r\n if (obj.value !== undefined && obj.value !== null && obj.value !== '') {\r\n const treatAsContains =\r\n column?.type === 'text' ||\r\n (column?.filterConfig?.type === 'text' &&\r\n typeof obj.value === 'string');\r\n if (treatAsContains) {\r\n return { field, op: 'Contains', value: obj.value };\r\n }\r\n return { field, op: 'Eq', value: extractIdScalar(obj.value) };\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Walks `mt-table`'s filter map and produces the `WorkCenterFilterRule[]`\r\n * sent on the BE column-filter slice. The synthetic `generalSearch` key is\r\n * skipped because the page keeps general search local-only.\r\n */\r\nfunction buildColumnRuntimeFilters(\r\n filters: TableFilters | null | undefined,\r\n columns: ColumnDef[],\r\n allowedFields: string[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!filters) return [];\r\n\r\n const allowed =\r\n allowedFields && allowedFields.length ? new Set(allowedFields) : null;\r\n const columnByKey = new Map(columns.map((col) => [col.key, col]));\r\n const rules: WorkCenterFilterRule[] = [];\r\n\r\n for (const [key, raw] of Object.entries(filters)) {\r\n if (key === 'generalSearch') continue;\r\n if (allowed && !allowed.has(key)) continue;\r\n\r\n const rule = toRuntimeFilterRule(key, raw, columnByKey.get(key));\r\n if (rule) rules.push(rule);\r\n }\r\n\r\n return rules;\r\n}\r\n\r\nfunction areFilterRulesEqual(\r\n left: WorkCenterFilterRule[],\r\n right: WorkCenterFilterRule[],\r\n): boolean {\r\n return JSON.stringify(left) === JSON.stringify(right);\r\n}\r\n\r\nfunction mapAllowedFields(schema: WorkCenterRuntimeFilterSchema) {\r\n const properties = schema.properties ?? [];\r\n const fromProperties = properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n viewType: property.viewType,\r\n }));\r\n\r\n if (fromProperties.length) {\r\n return fromProperties;\r\n }\r\n\r\n return (schema.allowedFields ?? []).map((field) => ({\r\n key: field,\r\n label: toLabel(field),\r\n }));\r\n}\r\n\r\nfunction mapAllowedOperators(\r\n schema: WorkCenterRuntimeFilterSchema,\r\n getLabel: (key: string) => string,\r\n) {\r\n const options: Array<{\r\n key: string;\r\n label: string;\r\n valueMode: 'single' | 'multi' | 'range' | 'none';\r\n }> = [];\r\n\r\n for (const operator of schema.allowedOperators ?? []) {\r\n if (typeof operator === 'string') {\r\n options.push({\r\n key: operator,\r\n label: getLabel(operator),\r\n valueMode: OPERATOR_VALUE_MODE[operator] ?? 'single',\r\n });\r\n continue;\r\n }\r\n\r\n const key = operator?.value;\r\n if (!key) {\r\n continue;\r\n }\r\n\r\n options.push({\r\n key,\r\n label:\r\n operator.display?.display ||\r\n operator.display?.en ||\r\n operator.display?.ar ||\r\n getLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n });\r\n }\r\n\r\n return options;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-page',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n ClientPage,\r\n PropertyFilterBuilder,\r\n StatisticCard,\r\n Table,\r\n SkeletonModule,\r\n ],\r\n templateUrl: './work-center-page.html',\r\n})\r\nexport class WorkCenterPage {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly modal = inject(ModalService);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n readonly openItemsInModal = input(true);\r\n readonly itemModal = input<WorkCenterItemModalOptions | null>(null);\r\n readonly generalTaskModal = input<WorkCenterClientFormModalOptions | null>(\r\n null,\r\n );\r\n\r\n readonly runtimeFiltersChanged = output<WorkCenterFilterRule[]>();\r\n readonly itemClicked = output<WorkCenterItemContextKey>();\r\n\r\n protected readonly context = this.facade.context;\r\n private readonly _menuItems = this.facade.menuItems;\r\n protected readonly menuItems = computed(() => {\r\n this.activeLang();\r\n\r\n return this._menuItems().map((item) => ({\r\n ...item,\r\n subtitle: `${item.count} ${item.title}`,\r\n }));\r\n });\r\n protected readonly rows = this.facade.rows;\r\n protected readonly columns = this.facade.columns;\r\n protected readonly kpis = this.facade.kpis;\r\n protected readonly runtimeFilterSchema = this.facade.runtimeFilterSchema;\r\n protected readonly totalCount = this.facade.totalCount;\r\n protected readonly columnFilters = this.facade.columnFilters;\r\n protected readonly loading = this.facade.loading;\r\n protected readonly tableColumns = computed(() =>\r\n this.columns().map((column) => ({\r\n ...column,\r\n sortable: true,\r\n })),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n this.activeLang();\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema, (key) =>\r\n this.getOpLabel(key),\r\n );\r\n if (allowedFields.length && allowedOperators.length) {\r\n return { allowedFields, allowedOperators };\r\n }\r\n }\r\n\r\n const fallbackFields = this.columns()\r\n .filter(\r\n (column) => typeof column?.key === 'string' && column.key.length > 0,\r\n )\r\n .map((column) => ({\r\n key: column.key,\r\n label: column.label || toLabel(column.key),\r\n viewType: columnTypeToViewType(column.type),\r\n }));\r\n\r\n if (!fallbackFields.length) {\r\n return null;\r\n }\r\n\r\n const fallbackOperators = Object.keys(OPERATOR_LABELS).map((key) => ({\r\n key,\r\n label: this.getOpLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n }));\r\n\r\n return {\r\n allowedFields: fallbackFields,\r\n allowedOperators: fallbackOperators,\r\n };\r\n });\r\n protected readonly showGeneralTaskCreateButton = computed(() =>\r\n GENERAL_TASK_CARD_KEYS.has(\r\n normalizeCardKey(this.context().selectedCardKey),\r\n ),\r\n );\r\n protected readonly generalTaskButtonLabel = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.generalTaskModal()?.buttonLabel?.trim() ||\r\n this.transloco.translate<string>('workCenter.page.new')\r\n );\r\n });\r\n protected readonly resolvedPageTitle = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.pageTitle() ||\r\n this.transloco.translate<string>('workCenter.page.title')\r\n );\r\n });\r\n protected readonly generalTaskButtonIcon = computed(\r\n () => this.generalTaskModal()?.buttonIcon?.trim() || 'general.plus',\r\n );\r\n private readonly defaultModalStyleClass =\r\n '!w-[96vw] md:!w-[84vw] xl:!w-[70vw] !shadow-none';\r\n private readonly defaultGeneralTaskModalStyleClass = '!w-[70vw] !h-[90vh]';\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.facade.setLookups(this.lookups());\r\n });\r\n }\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\r\n if (item.key === this.context().selectedCardKey) {\r\n return;\r\n }\r\n\r\n this.facade.selectCardAndLoad(this.area(), item.key);\r\n }\r\n\r\n onRuntimeFiltersApplied(filters: PropertyFilterBuilderRule[]): void {\r\n const mappedFilters = filters.map((filter) => ({\r\n field: filter.field,\r\n op: filter.op as WorkCenterFilterRule['op'],\r\n value: filter.value,\r\n values: filter.values,\r\n from: filter.from,\r\n to: filter.to,\r\n }));\r\n\r\n this.facade.applyHeaderFiltersAndLoad(this.area(), mappedFilters);\r\n this.runtimeFiltersChanged.emit(mappedFilters);\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.facade.applyHeaderFiltersAndLoad(this.area(), []);\r\n this.runtimeFiltersChanged.emit([]);\r\n }\r\n\r\n /**\r\n * Single entry point for `mt-table` (`lazy=true`) — handles both column\r\n * filters and pagination/sort. Filter changes always reset the page to 1\r\n * (handled by `applyColumnFiltersAndLoad`); when only paging/sort changed\r\n * we fall through to `applyTableLazyLoadAndLoad`.\r\n */\r\n onTableLazyLoad(event: any): void {\r\n const schema = this.runtimeFilterSchema();\r\n const propertyKeys = (schema?.properties ?? [])\r\n .map((p) => p?.key)\r\n .filter((k): k is string => typeof k === 'string' && k.length > 0);\r\n const allowedKeys = schema?.allowedFields ?? [];\r\n const allowedFields = propertyKeys.length ? propertyKeys : allowedKeys;\r\n\r\n const nextColumnFilters = buildColumnRuntimeFilters(\r\n event?.filters as TableFilters | undefined,\r\n this.columns(),\r\n allowedFields.length ? allowedFields : undefined,\r\n );\r\n\r\n if (!areFilterRulesEqual(nextColumnFilters, this.columnFilters())) {\r\n this.facade.applyColumnFiltersAndLoad(this.area(), nextColumnFilters);\r\n return;\r\n }\r\n\r\n this.facade.applyTableLazyLoadAndLoad(this.area(), event);\r\n }\r\n\r\n onGeneralTaskCreateClick(): void {\r\n const modalOptions = this.generalTaskModal();\r\n const modalData = {\r\n moduleKey: 'GeneralTask',\r\n ...(modalOptions?.data ?? {}),\r\n };\r\n const modalHeader =\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.create');\r\n const modalStyleClass =\r\n modalOptions?.styleClass ?? this.defaultGeneralTaskModalStyleClass;\r\n const operationKey = modalOptions?.operationKey ?? 'Create';\r\n const lookups = modalOptions?.lookups ?? this.lookups();\r\n\r\n const ref = this.modal.openModal(WorkCenterClientFormModal, 'dialog', {\r\n header: modalHeader,\r\n styleClass: modalStyleClass,\r\n position: 'end',\r\n dismissableMask: true,\r\n inputValues: {\r\n data: modalData,\r\n operationKey,\r\n lookups,\r\n },\r\n });\r\n\r\n ref.onClose.pipe(take(1)).subscribe((result: unknown) => {\r\n if (result) {\r\n this.facade.loadRuntime(this.area(), 'refresh');\r\n }\r\n });\r\n }\r\n\r\n onRowClick(row: Record<string, unknown>): void {\r\n const contextKey = this.resolveRowContextKey(row);\r\n console.log('[work-center-debug] page row click', {\r\n contextKey,\r\n row,\r\n openItemsInModal: this.openItemsInModal(),\r\n hasModalComponent: !!this.itemModal()?.component,\r\n });\r\n\r\n if (!contextKey) {\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(contextKey);\r\n\r\n if (!this.openItemsInModal()) {\r\n return;\r\n }\r\n\r\n const modalOptions = this.itemModal();\r\n if (!modalOptions?.component) {\r\n return;\r\n }\r\n\r\n const ref = this.modal.openModal(modalOptions.component, 'drawer', {\r\n header:\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n styleClass: modalOptions?.styleClass ?? this.defaultModalStyleClass,\r\n position: modalOptions?.position ?? 'end',\r\n dismissible: true,\r\n modal: true,\r\n ...(modalOptions?.appendTo ? { appendTo: modalOptions.appendTo } : {}),\r\n inputValues: { contextKey } satisfies WorkCenterItemModalComponentInput,\r\n });\r\n\r\n ref.onClose.pipe(take(1)).subscribe(() => {\r\n this.facade.loadRuntime(this.area(), 'refresh');\r\n });\r\n }\r\n\r\n protected readonly rowsClickable = computed(() => this.openItemsInModal());\r\n\r\n private getOpLabel(key: string): string {\r\n return (\r\n this.transloco.translate<string>('workCenter.operator.' + key) ||\r\n OPERATOR_LABELS[key] ||\r\n toLabel(key)\r\n );\r\n }\r\n\r\n private resolveRowContextKey(\r\n row: Record<string, unknown>,\r\n ): WorkCenterItemContextKey | null {\r\n const value = row['contextKey'];\r\n if (typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n const normalized = value.trim();\r\n return normalized.length ? normalized : null;\r\n }\r\n}\r\n","<mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"resolvedPageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n storageKey=\"work-center-client-page\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n>\r\n <ng-template #headerClientPageEnd>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-[200px]\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"true\"\r\n filterMode=\"column\"\r\n [cellClickFilter]=\"true\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [printable]=\"true\"\r\n [groupable]=\"true\"\r\n [freezeActions]=\"true\"\r\n [lazy]=\"true\"\r\n [lazyLocalSearch]=\"true\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"context().page - 1\"\r\n [first]=\"(context().page - 1) * context().pageSize\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n storageKey=\"work-center-page-table\"\r\n (lazyLoad)=\"onTableLazyLoad($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n />\r\n </div>\r\n</mt-client-page>\r\n","import { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\n\r\nexport function readItemContext(\r\n details: WorkCenterItemBasicInfoData,\r\n): Record<string, unknown> | null {\r\n const item = details.item;\r\n if (!item || typeof item !== 'object') {\r\n return null;\r\n }\r\n\r\n const context = item['context'];\r\n return context && typeof context === 'object'\r\n ? (context as Record<string, unknown>)\r\n : null;\r\n}\r\n\r\nexport function readNumber(\r\n source: Record<string, unknown> | null,\r\n key: string,\r\n): number | undefined {\r\n const value = source?.[key];\r\n if (typeof value === 'number') {\r\n return Number.isFinite(value) ? value : undefined;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim().length) {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : undefined;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function readString(\n source: Record<string, unknown> | null,\n key: string,\n): string | undefined {\n const value = source?.[key];\n return typeof value === 'string' && value.trim().length ? value : undefined;\n}\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport {\r\n EntityAttachmentValue,\r\n EntitiesPreview,\r\n EntityData,\r\n EntityUserValue,\r\n} from '@masterteam/components/entities';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\r\n\r\ninterface EscalationPreviewResponse {\r\n message?: string | null;\r\n data: EscalationPreviewData;\r\n}\r\n\r\ninterface TranslatableValue {\r\n display?: string;\r\n en?: string;\r\n ar?: string;\r\n}\r\n\r\ninterface EscalationSchemaStep {\r\n id: number | string;\r\n name?: TranslatableValue;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n}\r\n\r\ninterface EscalationSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n}\r\n\r\ninterface EscalationPreviewData {\r\n initiatedBy?: Record<string, unknown>;\r\n startedAt?: Record<string, unknown>;\r\n reason?: string;\r\n attachments?: string[];\r\n schema?: {\r\n stepsSchema?: EscalationSchemaStep[];\r\n connections?: EscalationSchemaConnection[];\r\n };\r\n schemaSteps?: EscalationSchemaStep[];\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-escalation-instance-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n DiscussionThread,\r\n EntitiesPreview,\r\n StructureBuilder,\r\n ],\r\n templateUrl: './work-center-escalation-instance-type.html',\r\n})\r\nexport class WorkCenterEscalationInstanceType implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private loadSub?: Subscription;\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n\r\n protected readonly activeTab = signal('escalationDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.escalationDetails',\r\n ),\r\n value: 'escalationDetails',\r\n icon: 'alert.notification-message',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.schema'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<EscalationPreviewData | null>(null);\r\n protected readonly detailEntities = computed<EntityData[]>(() => {\r\n this.activeLang();\r\n const preview = this.preview();\r\n if (!preview) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n key: 'initiatedBy',\r\n name: this.transloco.translate<string>('workCenter.entity.initiatedBy'),\r\n value: mapUserValue(preview.initiatedBy),\r\n viewType: 'User',\r\n order: 1,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'startedAt',\r\n name: this.transloco.translate<string>('workCenter.entity.startedAt'),\r\n value: resolveDisplayValue(preview.startedAt),\r\n rawValue: resolveRawValue(preview.startedAt),\r\n viewType: 'DateTime',\r\n order: 2,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'reason',\r\n name: this.transloco.translate<string>('workCenter.entity.reason'),\r\n value: preview.reason ?? '',\r\n viewType: 'LongText',\r\n order: 3,\r\n configuration: { size: 24 },\r\n },\r\n {\r\n key: 'attachments',\r\n name: this.transloco.translate<string>('workCenter.entity.attachments'),\r\n value: mapAttachments(preview.attachments),\r\n viewType: 'Attachment',\r\n order: 4,\r\n configuration: { size: 24 },\r\n },\r\n ];\r\n });\r\n protected readonly schemaNodes = computed<Node[]>(() => {\r\n this.activeLang();\r\n return resolveSchemaSteps(this.preview()).map((step) => ({\r\n id: String(step.id),\r\n name:\r\n resolveTranslatable(step.name) ||\r\n `${this.transloco.translate<string>('workCenter.entity.step')} ${step.id}`,\r\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\r\n }));\r\n });\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'escalationInstanceId') ??\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderDetails = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n const instanceId = this.resolvedInstanceId();\r\n\r\n if (instanceId > 0) {\r\n untracked(() => this.loadPreview(instanceId));\r\n return;\r\n }\r\n\r\n this.preview.set(null);\r\n this.error.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(instanceId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<EscalationPreviewResponse>(`escalations/${instanceId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadEscalation',\r\n ),\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction mapUserValue(value: unknown): EntityUserValue {\r\n if (!value || typeof value !== 'object') {\r\n return {\r\n displayName: '',\r\n userName: '',\r\n };\r\n }\r\n\r\n return {\r\n id: readString(value, 'id'),\r\n userName: readString(value, 'userName'),\r\n displayName:\r\n readString(value, 'displayName') ??\r\n readString(value, 'fullName') ??\r\n readString(value, 'userName') ??\r\n '',\r\n photoUrl: readString(value, 'photoUrl'),\r\n phoneNumber:\r\n readString(value, 'phoneNumber') ?? readString(value, 'mobileNumber'),\r\n email: readString(value, 'email') ?? readString(value, 'emailAddress'),\r\n };\r\n}\r\n\r\nfunction mapAttachments(value: string[] | undefined): EntityAttachmentValue {\r\n return (value ?? []) as EntityAttachmentValue;\r\n}\r\n\r\nfunction resolveSchemaSteps(\r\n preview: EscalationPreviewData | null,\r\n): EscalationSchemaStep[] {\r\n return preview?.schema?.stepsSchema ?? preview?.schemaSteps ?? [];\r\n}\r\n\r\nfunction resolveTranslatable(value: TranslatableValue | undefined): string {\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n return value.display ?? value.en ?? value.ar ?? '';\r\n}\r\n\r\nfunction resolveDisplayValue(value: unknown): string {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n return (\r\n readString(value, 'displayValue') ??\r\n readString(value, 'display') ??\r\n readString(value, 'actualValue') ??\r\n ''\r\n );\r\n}\r\n\r\nfunction resolveRawValue(value: unknown): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : undefined;\r\n }\r\n\r\n return (\r\n readString(value, 'actualValue') ??\r\n readString(value, 'displayValue') ??\r\n undefined\r\n );\r\n}\r\n\r\nfunction readString(value: unknown, key: string): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return undefined;\r\n }\r\n\r\n const result = (value as Record<string, unknown>)[key];\r\n return typeof result === 'string' && result.length ? result : undefined;\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'escalationDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationDetails\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (preview()) {\r\n <mt-entities-preview [entities]=\"detailEntities()\" />\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDetailsUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationSchema\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (hasSchema()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg lg:h-full lg:min-h-0\"\r\n >\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [readonly]=\"true\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaContextUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'EscalationInstance'\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-module-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n ],\r\n templateUrl: './work-center-module-type.html',\r\n})\r\nexport class WorkCenterModuleType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('details');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.details'),\r\n value: 'details',\r\n icon: 'file.folder',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(() =>\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly moduleKey = computed(() => 'ModuleData');\r\n protected readonly operationKey = computed(() => 'Update');\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly discussionModuleType = computed(\r\n () =>\r\n readString(this.itemContext(), 'moduleKey') ??\r\n this.details().sourceType ??\r\n this.details().type ??\r\n '',\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () =>\r\n this.resolvedInstanceId() > 0 &&\r\n this.discussionModuleType().trim().length > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'details'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"discussionModuleType()\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { EntityData } from '@masterteam/components/entities';\r\nimport { Table } from '@masterteam/components/table';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ApiEnvelope } from '../../../store/work-center/work-center.model';\r\n\r\ninterface ProcessPreviewStep {\r\n stepId?: number | string;\r\n stepName?: unknown;\r\n status?: unknown;\r\n targetUser?: Record<string, unknown> | null;\r\n actionUserInfo?: Record<string, unknown> | null;\r\n createdAt?: string | null;\r\n actionDate?: string | null;\r\n}\r\n\r\ninterface ProcessPreviewSchemaStep {\r\n id: number | string;\r\n name?: unknown;\r\n type?: string;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n status?: string;\r\n}\r\n\r\ninterface ProcessPreviewSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n state?: 'idle' | 'active' | 'success' | 'error';\r\n}\r\n\r\ninterface ProcessPreviewData {\r\n steps?: ProcessPreviewStep[];\r\n schema?: {\r\n stepsSchema?: ProcessPreviewSchemaStep[];\r\n connections?: ProcessPreviewSchemaConnection[];\r\n } | null;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-preview',\r\n standalone: true,\r\n imports: [CommonModule, Table, StructureBuilder],\r\n templateUrl: './work-center-process-preview.html',\r\n})\r\nexport class WorkCenterProcessPreview implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private readonly transloco = inject(TranslocoService);\r\n private loadSub?: Subscription;\r\n\r\n readonly requestId = input<number | null | undefined>(null);\r\n readonly view = input<'approvals' | 'schema'>('approvals');\r\n\r\n protected readonly approvalColumns = computed(() => [\r\n {\r\n key: 'stepName',\r\n label: this.transloco.translate('workCenter.preview.name'),\r\n },\r\n {\r\n key: 'status',\r\n label: this.transloco.translate('workCenter.preview.status'),\r\n },\r\n {\r\n key: 'user',\r\n label: this.transloco.translate('workCenter.preview.user'),\r\n type: 'entity' as const,\r\n },\r\n {\r\n key: 'createdAt',\r\n label: this.transloco.translate('workCenter.preview.initiationDate'),\r\n type: 'entity' as const,\r\n },\r\n {\r\n key: 'actionDate',\r\n label: this.transloco.translate('workCenter.preview.actionDate'),\r\n type: 'entity' as const,\r\n },\r\n ]);\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<ProcessPreviewData | null>(null);\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n protected readonly approvalRows = computed(() =>\r\n (this.preview()?.steps ?? []).map((step) => ({\r\n stepName: display(step.stepName) || String(step.stepId ?? '--'),\r\n status: display(step.status) || '--',\r\n user: buildEntity(\r\n 'User',\r\n 'User',\r\n (step.actionUserInfo ?? step.targetUser ?? null) as any,\r\n ),\r\n createdAt: buildEntity(\r\n 'Initiation Date',\r\n 'DateTime',\r\n step.createdAt ?? '',\r\n ),\r\n actionDate: buildEntity('Action Date', 'DateTime', step.actionDate ?? ''),\r\n })),\r\n );\r\n protected readonly hasApprovals = computed(\r\n () => this.approvalRows().length > 0,\r\n );\r\n protected readonly schemaNodes = computed<Node[]>(() =>\r\n (this.preview()?.schema?.stepsSchema ?? []).map((step) => {\r\n const isAppAction = step.type === 'AppAction';\r\n const color = step.isFinal\r\n ? '#059669'\r\n : step.isInitial\r\n ? '#2563eb'\r\n : isAppAction\r\n ? '#B45309'\r\n : '#0369A1';\r\n return {\r\n id: String(step.id),\r\n name: display(step.name) || String(step.id),\r\n color,\r\n icon: isAppAction\r\n ? 'general.zap'\r\n : step.isFinal\r\n ? 'map.flag-04'\r\n : step.isInitial\r\n ? 'map.flag-04'\r\n : 'file.clipboard-check',\r\n subtitle: step.isInitial\r\n ? this.transloco.translate('workCenter.preview.start')\r\n : step.isFinal\r\n ? this.transloco.translate('workCenter.preview.end')\r\n : isAppAction\r\n ? this.transloco.translate('workCenter.preview.appAction')\r\n : this.transloco.translate('workCenter.preview.formStep'),\r\n badge: step.isInitial\r\n ? this.transloco.translate('workCenter.preview.initial')\r\n : step.isFinal\r\n ? this.transloco.translate('workCenter.preview.final')\r\n : null,\r\n status: step.status ?? null,\r\n style: isAppAction ? 'icon' : 'detail',\r\n };\r\n }),\r\n );\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n state: connection.state,\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n protected readonly previewNodeFields = {\r\n id: 'id',\r\n name: 'name',\r\n icon: 'icon',\r\n color: 'color',\r\n subtitle: 'subtitle',\r\n badge: 'badge',\r\n status: 'status',\r\n style: 'style',\r\n };\r\n\r\n constructor() {\r\n effect(() => {\r\n const requestId = this.requestId() ?? 0;\r\n\r\n if (requestId > 0) {\r\n untracked(() => this.loadPreview(requestId));\r\n return;\r\n }\r\n\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(false);\r\n this.error.set(null);\r\n this.preview.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(requestId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<ApiEnvelope<ProcessPreviewData>>(`processes/${requestId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n this.transloco.translate('workCenter.preview.loadFailed'),\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction buildEntity(\r\n name: string,\r\n viewType: 'User' | 'DateTime',\r\n value: unknown,\r\n): EntityData {\r\n return {\r\n name,\r\n viewType,\r\n value: (value as any) ?? '',\r\n configuration: {\r\n hideName: true,\r\n },\r\n };\r\n}\r\n\r\nfunction display(value: unknown): string {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return String(value);\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n const resolved = (value as { display?: unknown }).display;\r\n if (typeof resolved === 'string') {\r\n return resolved;\r\n }\r\n\r\n if (typeof resolved === 'number' || typeof resolved === 'boolean') {\r\n return String(resolved);\r\n }\r\n\r\n return '';\r\n}\r\n","@if (!canRenderPreview()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process preview is not available for this item yet.\r\n </p>\r\n </div>\r\n} @else if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\r\n </div>\r\n} @else if (error()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\r\n </div>\r\n} @else {\r\n @if (view() === \"schema\") {\r\n @if (hasSchema()) {\r\n <div class=\"h-[70vh] overflow-hidden\">\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [layoutDirection]=\"'LR'\"\r\n [readonly]=\"true\"\r\n [structureMode]=\"'workflow'\"\r\n [nodeFields]=\"previewNodeFields\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process steps are not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n } @else if (hasApprovals()) {\r\n <mt-table\r\n [data]=\"approvalRows()\"\r\n [columns]=\"approvalColumns()\"\r\n storageKey=\"work-center-process-preview-table\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [clickableRows]=\"false\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process approvals data is not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-request-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-request-type.html',\r\n})\r\nexport class WorkCenterProcessRequestType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('requestDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.requestDetails',\r\n ),\r\n value: 'requestDetails',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'requestDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-step-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-step-type.html',\r\n})\r\nexport class WorkCenterProcessStepType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('form');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.form'),\r\n value: 'form',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'form'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\r\nimport { WorkCenterEscalationInstanceType } from '../work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type';\r\nimport { WorkCenterModuleType } from '../work-center-types/work-center-module-type/work-center-module-type';\r\nimport { WorkCenterProcessRequestType } from '../work-center-types/work-center-process-request-type/work-center-process-request-type';\r\nimport { WorkCenterProcessStepType } from '../work-center-types/work-center-process-step-type/work-center-process-step-type';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n WorkCenterProcessStepType,\r\n WorkCenterProcessRequestType,\r\n WorkCenterEscalationInstanceType,\r\n WorkCenterModuleType,\r\n ],\r\n templateUrl: './work-center-item-modal.html',\r\n host: {\r\n class: 'block h-full min-h-0',\r\n },\r\n})\r\nexport class WorkCenterItemModal {\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (details().type === \"ProcessStep\") {\r\n <mt-work-center-process-step-type [details]=\"details()\" />\r\n } @else if (details().type === \"ProcessRequest\") {\r\n <mt-work-center-process-request-type [details]=\"details()\" />\r\n } @else if (details().type === \"EscalationInstance\") {\r\n <mt-work-center-escalation-instance-type [details]=\"details()\" />\r\n } @else if (details().type === \"Module\") {\r\n <mt-work-center-module-type [details]=\"details()\" />\r\n } @else {\r\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\r\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\r\n </div>\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n RuntimeActionContextStore,\r\n RuntimeActionRunner,\r\n resolveActionLabel,\r\n} from '@masterteam/components/runtime-action';\r\nimport { Subscription, map } from 'rxjs';\r\n\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterItemActionExecutionResult,\r\n WorkCenterItemActionsData,\r\n WorkCenterItemContextKey,\r\n WorkCenterRuntimeItemAction,\r\n} from '../../../store/work-center/work-center.model';\r\n\r\ntype FooterActionSeverity = 'primary' | 'secondary' | 'success' | 'danger';\r\ntype FooterActionVariant = 'outlined' | undefined;\r\n\r\ninterface ModalFooterAction extends WorkCenterRuntimeItemAction {\r\n label: string;\r\n severity: FooterActionSeverity;\r\n variant: FooterActionVariant;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal-footer-actions',\r\n standalone: true,\r\n imports: [CommonModule, TranslocoDirective, Button],\r\n templateUrl: './work-center-item-modal-footer-actions.html',\r\n host: {\r\n class: 'flex w-full flex-1 flex-wrap items-center justify-end gap-2',\r\n },\r\n})\r\nexport class WorkCenterItemModalFooterActions implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private readonly runner = inject(RuntimeActionRunner);\r\n private readonly actionContext = inject(RuntimeActionContextStore);\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n private loadSub?: Subscription;\r\n private lastContextKey: WorkCenterItemContextKey | null = null;\r\n private currentExecution: { actionKey: string; cancelled: boolean } | null =\r\n null;\r\n\r\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\r\n readonly actionExecuted = output<WorkCenterItemActionExecutionResult>();\r\n readonly visibilityChange = output<boolean>();\r\n\r\n private readonly reloadTick = signal(0);\r\n private readonly hasResolvedLoad = signal(false);\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly actions = signal<WorkCenterRuntimeItemAction[]>([]);\r\n protected readonly pendingActionKey = signal<string | null>(null);\r\n protected readonly displayActions = computed<ModalFooterAction[]>(() =>\r\n this.actions()\r\n .filter(\r\n (action) =>\r\n action.isAvailable !== false &&\r\n !!action.url &&\r\n !!normalizeMethod(action.httpMethod),\r\n )\r\n .map((action, index) => ({\r\n ...action,\r\n label: resolveActionLabel(action),\r\n severity: resolveActionSeverity(action.actionKey, index),\r\n variant: resolveActionVariant(action.actionKey, index),\r\n })),\r\n );\r\n protected readonly shouldRender = computed(\r\n () =>\r\n !!this.contextKey() &&\r\n (!this.hasResolvedLoad() ||\r\n this.loading() ||\r\n !!this.error() ||\r\n this.displayActions().length > 0 ||\r\n !!this.pendingActionKey()),\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n const contextKey = this.contextKey();\r\n this.reloadTick();\r\n this.error.set(null);\r\n\r\n if (!contextKey) {\r\n this.lastContextKey = null;\r\n this.actions.set([]);\r\n this.loading.set(false);\r\n this.hasResolvedLoad.set(false);\r\n return;\r\n }\r\n\r\n if (contextKey !== this.lastContextKey) {\r\n this.actions.set([]);\r\n this.lastContextKey = contextKey;\r\n }\r\n\r\n untracked(() => this.loadActions(contextKey));\r\n });\r\n\r\n effect(() => {\r\n this.visibilityChange.emit(this.shouldRender());\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n if (this.currentExecution) {\r\n this.currentExecution.cancelled = true;\r\n }\r\n }\r\n\r\n protected async executeAction(action: ModalFooterAction): Promise<void> {\r\n if (this.pendingActionKey()) {\r\n return;\r\n }\r\n\r\n this.error.set(null);\r\n this.pendingActionKey.set(action.actionKey);\r\n const execution = { actionKey: action.actionKey, cancelled: false };\r\n this.currentExecution = execution;\r\n\r\n const result = await this.runner.execute(action, {\r\n defaultAfterSuccess: 'refresh',\r\n silent: true,\r\n externalPayloadResolvers: {\r\n values: () => this.actionContext.resolveFormValues(),\r\n },\r\n });\r\n\r\n if (execution.cancelled) {\r\n return;\r\n }\r\n\r\n this.pendingActionKey.set(null);\r\n this.currentExecution = null;\r\n\r\n if (result.status === 'cancelled') {\r\n return;\r\n }\r\n\r\n if (result.status === 'error') {\r\n const message =\r\n result.error instanceof Error\r\n ? result.error.message\r\n : `Failed to execute ${action.label}.`;\r\n this.error.set(message);\r\n return;\r\n }\r\n\r\n const afterSuccess = result.afterSuccess ?? 'refresh';\r\n\r\n if (afterSuccess === 'refresh') {\r\n this.reloadTick.update((value) => value + 1);\r\n }\r\n\r\n this.actionExecuted.emit({\r\n actionKey: result.actionKey,\r\n afterSuccess,\r\n });\r\n }\r\n\r\n private loadActions(contextKey: WorkCenterItemContextKey): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.hasResolvedLoad.set(false);\r\n\r\n this.loadSub = this.http\r\n .get<ApiEnvelope<WorkCenterItemActionsData>>(\r\n 'workcenter/runtime/item-actions',\r\n {\r\n params: { contextKey },\r\n },\r\n )\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) {\r\n return response.data.actions ?? [];\r\n }\r\n\r\n throw new Error(\r\n resolveEnvelopeErrorMessage(\r\n response,\r\n this.transloco.translate('workCenter.actions.loadActionsFailed'),\r\n ),\r\n );\r\n }),\r\n )\r\n .subscribe({\r\n next: (actions) => {\r\n this.actions.set(actions);\r\n this.loading.set(false);\r\n this.hasResolvedLoad.set(true);\r\n },\r\n error: (error: unknown) => {\r\n this.actions.set([]);\r\n this.loading.set(false);\r\n this.hasResolvedLoad.set(true);\r\n this.error.set(\r\n resolveHttpErrorMessage(\r\n error,\r\n this.transloco.translate('workCenter.actions.loadActionsFailed'),\r\n ),\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction normalizeMethod(value: string | null | undefined): string | null {\r\n if (!value || typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n const method = value.trim().toUpperCase();\r\n return method.length ? method : null;\r\n}\r\n\r\nfunction resolveActionSeverity(\r\n actionKey: string,\r\n index: number,\r\n): FooterActionSeverity {\r\n const normalized = actionKey.trim().toLowerCase();\r\n if (normalized === 'approve') {\r\n return 'success';\r\n }\r\n\r\n if (\r\n normalized === 'close' ||\r\n normalized === 'delete' ||\r\n normalized === 'reject' ||\r\n normalized === 'cancel'\r\n ) {\r\n return 'danger';\r\n }\r\n\r\n return index === 0 ? 'primary' : 'secondary';\r\n}\r\n\r\nfunction resolveActionVariant(\r\n actionKey: string,\r\n index: number,\r\n): FooterActionVariant {\r\n const severity = resolveActionSeverity(actionKey, index);\r\n return severity === 'primary' || severity === 'success'\r\n ? undefined\r\n : 'outlined';\r\n}\r\n\r\nfunction resolveEnvelopeErrorMessage(\r\n response: { message?: string | null; errors?: unknown } | null | undefined,\r\n fallback: string,\r\n): string {\r\n return (\r\n (response?.errors as { message?: string } | null)?.message ??\r\n response?.message ??\r\n fallback\r\n );\r\n}\r\n\r\nfunction resolveHttpErrorMessage(error: unknown, fallback: string): string {\r\n if (!error || typeof error !== 'object') {\r\n return fallback;\r\n }\r\n\r\n const httpError = error as {\r\n message?: string;\r\n error?: { message?: string | null } | null;\r\n };\r\n\r\n return httpError.error?.message ?? httpError.message ?? fallback;\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (shouldRender()) {\r\n @if (error(); as error) {\r\n <span class=\"me-auto max-w-md text-sm text-red-600\">\r\n {{ error }}\r\n </span>\r\n } @else if (loading() && !displayActions().length) {\r\n <span class=\"me-auto text-sm text-surface-500\">{{\r\n t(\"modal.loadingActions\")\r\n }}</span>\r\n }\r\n\r\n @for (action of displayActions(); track action.actionKey + action.url) {\r\n <mt-button\r\n [label]=\"action.label\"\r\n [severity]=\"action.severity\"\r\n [variant]=\"action.variant\"\r\n [disabled]=\"loading() || !!pendingActionKey()\"\r\n [loading]=\"pendingActionKey() === action.actionKey\"\r\n (onClick)=\"executeAction(action)\"\r\n />\r\n }\r\n }\r\n</ng-container>\r\n","import type { WorkCenterItemContextKey } from '../../store/work-center/work-center.model';\n\n// Context keys contain `/`; keep them in one route segment without `%2F`/`%25`.\nconst ROUTE_CONTEXT_KEY_PREFIX = 'wc1.';\nconst HEX_PAIR_PATTERN = /^[\\da-f]{2}$/i;\n\nexport function encodeWorkCenterRouteContextKey(\n contextKey: WorkCenterItemContextKey,\n): string {\n const encoded = encodeURIComponent(contextKey);\n let hex = '';\n\n for (let index = 0; index < encoded.length; index += 1) {\n if (encoded[index] === '%') {\n hex += encoded.slice(index + 1, index + 3).toLowerCase();\n index += 2;\n continue;\n }\n\n hex += encoded.charCodeAt(index).toString(16).padStart(2, '0');\n }\n\n return `${ROUTE_CONTEXT_KEY_PREFIX}${hex}`;\n}\n\nexport function decodeWorkCenterRouteContextKey(\n value: WorkCenterItemContextKey | null,\n): WorkCenterItemContextKey | null {\n if (!value) {\n return null;\n }\n\n if (value.startsWith(ROUTE_CONTEXT_KEY_PREFIX)) {\n return decodeRouteSafeContextKey(\n value.slice(ROUTE_CONTEXT_KEY_PREFIX.length),\n );\n }\n\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction decodeRouteSafeContextKey(\n hex: string,\n): WorkCenterItemContextKey | null {\n if (hex.length % 2 !== 0) {\n return null;\n }\n\n const parts = hex.match(/.{2}/g) ?? [];\n if (parts.some((part) => !HEX_PAIR_PATTERN.test(part))) {\n return null;\n }\n\n try {\n return decodeURIComponent(\n parts.map((part) => `%${part.toUpperCase()}`).join(''),\n );\n } catch {\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { Drawer } from '@masterteam/components/drawer';\nimport { ModalService } from '@masterteam/components/modal';\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { map } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemActionExecutionResult,\n WorkCenterItemBasicInfoData,\n WorkCenterItemContextKey,\n} from '../../store/work-center/work-center.model';\nimport { WorkCenterItemModal } from '../work-center-item-modal/work-center-item-modal';\nimport { WorkCenterItemModalFooterActions } from './work-center-item-modal-footer-actions/work-center-item-modal-footer-actions';\nimport { decodeWorkCenterRouteContextKey } from './work-center-route-context-key';\n\n@Component({\n selector: 'mt-work-center-item-modal-route',\n standalone: true,\n imports: [\n CommonModule,\n TranslocoDirective,\n Drawer,\n SkeletonModule,\n WorkCenterItemModal,\n WorkCenterItemModalFooterActions,\n ],\n providers: [RuntimeActionContextStore],\n templateUrl: './work-center-item-modal-route.html',\n})\nexport class WorkCenterItemModalRoute {\n private readonly http = inject(HttpClient);\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly transloco = inject(TranslocoService);\n readonly modal = inject(ModalService);\n\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\n protected readonly drawerVisible = signal(true);\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly details = signal<WorkCenterItemBasicInfoData | null>(null);\n protected readonly detailsReloadTick = signal(0);\n protected readonly footerActionsMounted = signal(false);\n protected readonly resolvedContextKey = computed(() =>\n decodeWorkCenterRouteContextKey(this.contextKey()),\n );\n protected readonly drawerTitle = computed(\n () =>\n this.readDisplayField(this.details()?.item, 'title') ||\n this.transloco.translate<string>('workCenter.page.itemDetails'),\n );\n protected readonly drawerSubtitle = computed(\n () => this.readDisplayField(this.details()?.item, 'subtitle') ?? '',\n );\n\n constructor() {\n effect(() => {\n this.footerActionsMounted.set(!!this.resolvedContextKey());\n });\n\n effect((onCleanup) => {\n const contextKey = this.resolvedContextKey();\n const reloadTick = this.detailsReloadTick();\n\n console.log('[work-center-debug] modal route load effect', {\n contextKey,\n reloadTick,\n });\n\n this.error.set(null);\n this.details.set(null);\n\n if (!contextKey) {\n this.loading.set(false);\n console.log(\n '[work-center-debug] modal route load skipped, no context key',\n );\n return;\n }\n\n this.loading.set(true);\n console.log('[work-center-debug] modal route fetch start', {\n endpoint: 'workcenter/runtime/item-basic-info',\n contextKey,\n });\n\n const subscription = this.http\n .get<ApiEnvelope<WorkCenterItemBasicInfoData>>(\n 'workcenter/runtime/item-basic-info',\n {\n params: { contextKey },\n },\n )\n .pipe(\n map((response) => {\n if (response.code === 1) {\n return response.data;\n }\n\n throw new Error(this.resolveErrorMessage(response));\n }),\n )\n .subscribe({\n next: (details) => {\n console.log('[work-center-debug] modal route fetch success', {\n contextKey,\n details,\n });\n this.details.set(details);\n this.loading.set(false);\n },\n error: (error: unknown) => {\n console.error('[work-center-debug] modal route fetch failed', {\n contextKey,\n error,\n });\n this.error.set(\n error instanceof Error\n ? error.message\n : this.transloco.translate<string>(\n 'workCenter.error.failedLoadDetails',\n ),\n );\n this.loading.set(false);\n },\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n protected onActionExecuted(\n result: WorkCenterItemActionExecutionResult,\n ): void {\n if (result.afterSuccess === 'close') {\n void this.closeRouteOutlet();\n return;\n }\n\n this.detailsReloadTick.update((value) => value + 1);\n }\n\n protected onFooterVisibilityChange(visible: boolean): void {\n this.footerActionsMounted.set(visible);\n }\n\n async onVisibleChange(visible: boolean): Promise<void> {\n this.drawerVisible.set(visible);\n\n console.log('[work-center-debug] modal route visible change', { visible });\n\n if (visible) {\n return;\n }\n\n await this.closeRouteOutlet();\n }\n\n private closeRouteOutlet(): Promise<boolean> {\n console.log('[work-center-debug] modal route closing', {\n outlet: this.route.outlet || 'sidebar',\n parentUrl: this.route.parent?.snapshot.url.map((segment) => segment.path),\n });\n\n return this.router\n .navigate([{ outlets: { [this.route.outlet || 'sidebar']: null } }], {\n relativeTo: this.route.parent,\n queryParamsHandling: 'merge',\n replaceUrl: true,\n })\n .then((success) => {\n console.log('[work-center-debug] modal route close navigate result', {\n success,\n currentUrl: this.router.url,\n });\n return success;\n });\n }\n\n private resolveErrorMessage(\n response: ApiEnvelope<WorkCenterItemBasicInfoData>,\n ): string {\n const fallbackError = 'Failed to load item details.';\n return (\n (response.errors as { message?: string } | null)?.message ??\n response.message ??\n fallbackError\n );\n }\n\n private readDisplayField(\n item: Record<string, unknown> | null | undefined,\n key: string,\n ): string | null {\n const field = item?.[key];\n if (typeof field === 'string' && field.trim().length) {\n return field;\n }\n\n if (!field || typeof field !== 'object') {\n return null;\n }\n\n const display = (field as { display?: unknown }).display;\n return typeof display === 'string' && display.trim().length\n ? display\n : null;\n }\n}\n","<mt-drawer\r\n [visible]=\"drawerVisible()\"\r\n [loadingHeader]=\"loading()\"\r\n [title]=\"drawerTitle()\"\r\n [subtitle]=\"drawerSubtitle()\"\r\n styleClass=\"mt-work-center-item-drawer !absolute !w-[96vw] md:!w-[84vw] xl:!w-[70vw]\"\r\n position=\"right\"\r\n [modal]=\"true\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <ng-container content>\r\n @if (loading()) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] flex-col gap-5\">\r\n <div class=\"flex items-center gap-3\">\r\n <p-skeleton shape=\"circle\" size=\"3rem\" />\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <p-skeleton width=\"12rem\" height=\"1rem\" />\r\n <p-skeleton width=\"8rem\" height=\"0.875rem\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid gap-3 md:grid-cols-2\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n\r\n <p-skeleton height=\"16rem\" class=\"rounded-lg\" />\r\n </div>\r\n </div>\r\n } @else if (error(); as errorMessage) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"max-w-xl text-sm font-medium text-red-600\">\r\n {{ errorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n } @else if (details(); as details) {\r\n <div [class]=\"modal.contentClass + ' h-full min-h-0'\">\r\n <mt-work-center-item-modal [details]=\"details\" />\r\n </div>\r\n } @else {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"text-sm font-medium text-surface-500\">\r\n {{ t(\"modal.noItemSelected\") }}\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n @if (footerActionsMounted()) {\r\n <div footer [class]=\"modal.footerClass\">\r\n <mt-work-center-item-modal-footer-actions\r\n [contextKey]=\"resolvedContextKey()\"\r\n (actionExecuted)=\"onActionExecuted($event)\"\r\n (visibilityChange)=\"onFooterVisibilityChange($event)\"\r\n />\r\n </div>\r\n }\r\n</mt-drawer>\r\n","import { WorkCenterState } from './work-center';\r\n\r\nexport const APP_STATES = [WorkCenterState];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["toLabel","readString"],"mappings":"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"}