@masterteam/work-center 0.0.4 → 0.0.5
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/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-item-modal/work-center-process-preview-json/work-center-process-preview-json.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview-json/work-center-process-preview-json.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-item-modal-route/work-center-item-action-context.store.ts","../../../../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-action-confirm-dialog/work-center-item-action-confirm-dialog.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-action-confirm-dialog/work-center-item-action-confirm-dialog.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 WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\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 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","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\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\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 {\n actionKey: string;\n actionName?: TranslatableDto | null;\n httpMethod?: string | null;\n url?: string | null;\n isAvailable?: boolean;\n stepIds?: Array<number | string>;\n needConfirmation?: boolean;\n payloadKeys?: string[];\n requiredPayloadKeys?: string[];\n payloadTemplate?: Record<string, unknown> | null;\n formId?: string | number | null;\n}\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 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}\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 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\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(value: number | undefined, fallback = 20): 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 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 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 propertyColumns;\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return 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\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 displayRow = { ...row };\r\n\r\n for (const column of columns) {\r\n const value = getValue(row, 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: 20,\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 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\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 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, 20),\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} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\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 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 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 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 ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\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 ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\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(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 columns: [],\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} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\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 runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\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 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 return this.store.dispatch([\r\n new HydrateFromContext(area, { runtimeFilters, page: 1 }),\r\n new LoadRuntime(area, 'filters-change'),\r\n ]);\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 { Component, computed, inject, input, output } from '@angular/core';\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 { Table } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterFilterRule,\r\n WorkCenterItemModalComponentInput,\r\n WorkCenterItemModalOptions,\r\n WorkCenterItemContextKey,\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\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 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(schema: WorkCenterRuntimeFilterSchema) {\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: OPERATOR_LABELS[operator] ?? toLabel(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 OPERATOR_LABELS[key] ||\r\n toLabel(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 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\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('Work Center');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n readonly openItemsInModal = input(true);\r\n readonly itemModal = input<WorkCenterItemModalOptions | null>(null);\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 protected readonly menuItems = this.facade.menuItems;\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 loading = this.facade.loading;\r\n\r\n protected readonly tableCurrentPage = computed(() =>\r\n Math.max((this.context().page ?? 1) - 1, 0),\r\n );\r\n protected readonly tableFirst = computed(\r\n () => this.tableCurrentPage() * (this.context().pageSize || 20),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema);\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: OPERATOR_LABELS[key] ?? toLabel(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 private readonly defaultModalStyleClass =\r\n '!w-[96vw] xl:!w-[calc(100%-8rem)] 2xl:!w-[calc(100%-12rem)] !absolute !shadow-none';\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\n if (item.key === this.context().selectedCardKey) {\n return;\n }\n\n this.facade.selectCardAndLoad(this.area(), item.key);\n }\n\r\n onLazyLoad(event: any): void {\r\n this.facade.applyTableLazyLoadAndLoad(this.area(), event);\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.applyRuntimeFiltersAndLoad(this.area(), mappedFilters);\r\n this.runtimeFiltersChanged.emit(mappedFilters);\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.facade.applyRuntimeFiltersAndLoad(this.area(), []);\r\n this.runtimeFiltersChanged.emit([]);\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 this.modal.openModal(modalOptions.component, 'drawer', {\r\n header: modalOptions?.header ?? 'Item Details',\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\r\n protected readonly rowsClickable = computed(() => this.openItemsInModal());\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]=\"pageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n>\r\n <ng-template #headerClientPageEnd>\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 </ng-template>\r\n\r\n <div class=\"flex flex-col gap-4\">\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\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\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 (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [lazy]=\"true\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"tableCurrentPage()\"\r\n [first]=\"tableFirst()\"\r\n (lazyLoad)=\"onLazyLoad($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\nexport function readItemContext(\n details: WorkCenterItemBasicInfoData,\n): Record<string, unknown> | null {\n const item = details.item;\n if (!item || typeof item !== 'object') {\n return null;\n }\n\n const context = item['context'];\n return context && typeof context === 'object'\n ? (context as Record<string, unknown>)\n : null;\n}\n\nexport function readNumber(\n source: Record<string, unknown> | null,\n key: string,\n): number | undefined {\n const value = source?.[key];\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n\n return undefined;\n}\n\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';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n OnDestroy,\n} from '@angular/core';\nimport {\n EntitiesPreview,\n EntityData,\n EntityUserValue,\n} from '@masterteam/components/entities';\nimport { Tabs } from '@masterteam/components/tabs';\nimport {\n DiscussionThread,\n type DiscussionReadStateDto,\n} from '@masterteam/discussion';\nimport {\n Connection,\n Node,\n StructureBuilder,\n} from '@masterteam/structure-builder';\nimport { Subscription } from 'rxjs';\n\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\n\ninterface EscalationPreviewResponse {\n message?: string | null;\n data: EscalationPreviewData;\n}\n\ninterface TranslatableValue {\n display?: string;\n en?: string;\n ar?: string;\n}\n\ninterface EscalationSchemaStep {\n id: number | string;\n name?: TranslatableValue;\n isInitial?: boolean;\n isFinal?: boolean;\n}\n\ninterface EscalationSchemaConnection {\n id?: number | string;\n source: number | string;\n target: number | string;\n}\n\ninterface EscalationPreviewData {\n initiatedBy?: Record<string, unknown>;\n startedAt?: Record<string, unknown>;\n reason?: string;\n attachments?: string[];\n schema?: {\n stepsSchema?: EscalationSchemaStep[];\n connections?: EscalationSchemaConnection[];\n };\n schemaSteps?: EscalationSchemaStep[];\n}\n\n@Component({\n selector: 'mt-work-center-escalation-instance-type',\n standalone: true,\n imports: [\n CommonModule,\n Tabs,\n DiscussionThread,\n EntitiesPreview,\n StructureBuilder,\n ],\n templateUrl: './work-center-escalation-instance-type.html',\n})\nexport class WorkCenterEscalationInstanceType implements OnDestroy {\n private readonly http = inject(HttpClient);\n private loadSub?: Subscription;\n\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n\n protected readonly activeTab = signal('escalationDetails');\n protected readonly currentUserId = signal('');\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly preview = signal<EscalationPreviewData | null>(null);\n protected readonly tabOptions = [\n {\n label: 'Escalation Details',\n value: 'escalationDetails',\n },\n {\n label: 'Discussion',\n value: 'discussion',\n },\n {\n label: 'Schema',\n value: 'schema',\n },\n ];\n protected readonly detailEntities = computed<EntityData[]>(() => {\n const preview = this.preview();\n if (!preview) {\n return [];\n }\n\n return [\n {\n key: 'initiatedBy',\n name: 'Initiated By',\n value: mapUserValue(preview.initiatedBy),\n viewType: 'User',\n order: 1,\n configuration: { size: 12 },\n },\n {\n key: 'startedAt',\n name: 'Started At',\n value: resolveDisplayValue(preview.startedAt),\n rawValue: resolveRawValue(preview.startedAt),\n viewType: 'DateTime',\n order: 2,\n configuration: { size: 12 },\n },\n {\n key: 'reason',\n name: 'Reason',\n value: preview.reason ?? '',\n viewType: 'LongText',\n order: 3,\n configuration: { size: 24 },\n },\n {\n key: 'attachments',\n name: 'Attachments',\n value: preview.attachments ?? [],\n viewType: 'Attachment',\n order: 4,\n configuration: { size: 24 },\n },\n ];\n });\n protected readonly schemaNodes = computed<Node[]>(() =>\n resolveSchemaSteps(this.preview()).map((step) => ({\n id: String(step.id),\n name: resolveTranslatable(step.name) || `Step ${step.id}`,\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\n })),\n );\n protected readonly schemaConnections = computed<Connection[]>(() =>\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\n id: String(\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\n ),\n from: String(connection.source),\n to: String(connection.target),\n })),\n );\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\n\n protected readonly itemContext = computed(() =>\n readItemContext(this.details()),\n );\n protected readonly instanceId = computed(\n () =>\n readNumber(this.itemContext(), 'escalationInstanceId') ??\n readNumber(this.itemContext(), 'instanceId'),\n );\n protected readonly resolvedInstanceId = computed(\n () => this.instanceId() ?? 0,\n );\n protected readonly canRenderDetails = computed(\n () => this.resolvedInstanceId() > 0,\n );\n protected readonly canRenderDiscussion = computed(\n () => this.resolvedInstanceId() > 0,\n );\n\n constructor() {\n effect(() => {\n const instanceId = this.resolvedInstanceId();\n\n if (instanceId > 0) {\n untracked(() => this.loadPreview(instanceId));\n return;\n }\n\n this.preview.set(null);\n this.error.set(null);\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n }\n\n protected onDiscussionReadStateChanged(\n state: DiscussionReadStateDto | null,\n ): void {\n const resolvedUserId = state?.userId?.trim();\n if (resolvedUserId) {\n this.currentUserId.set(resolvedUserId);\n }\n }\n\n private loadPreview(instanceId: number): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.error.set(null);\n\n this.loadSub = this.http\n .get<EscalationPreviewResponse>(`escalations/${instanceId}/preview`)\n .subscribe({\n next: (response) => {\n this.loading.set(false);\n this.preview.set(response.data ?? null);\n },\n error: (error) => {\n this.loading.set(false);\n this.preview.set(null);\n this.error.set(\n error?.error?.message ??\n error?.message ??\n 'Failed to load escalation preview',\n );\n },\n });\n }\n}\n\nfunction mapUserValue(value: unknown): EntityUserValue {\n if (!value || typeof value !== 'object') {\n return {\n displayName: '',\n userName: '',\n };\n }\n\n return {\n id: readString(value, 'id'),\n userName: readString(value, 'userName'),\n displayName:\n readString(value, 'displayName') ??\n readString(value, 'fullName') ??\n readString(value, 'userName') ??\n '',\n photoUrl: readString(value, 'photoUrl'),\n phoneNumber:\n readString(value, 'phoneNumber') ?? readString(value, 'mobileNumber'),\n email: readString(value, 'email') ?? readString(value, 'emailAddress'),\n };\n}\n\nfunction resolveSchemaSteps(\n preview: EscalationPreviewData | null,\n): EscalationSchemaStep[] {\n return preview?.schema?.stepsSchema ?? preview?.schemaSteps ?? [];\n}\n\nfunction resolveTranslatable(value: TranslatableValue | undefined): string {\n if (!value || typeof value !== 'object') {\n return '';\n }\n\n return value.display ?? value.en ?? value.ar ?? '';\n}\n\nfunction resolveDisplayValue(value: unknown): string {\n if (!value || typeof value !== 'object') {\n return typeof value === 'string' ? value : '';\n }\n\n return (\n readString(value, 'displayValue') ??\n readString(value, 'display') ??\n readString(value, 'actualValue') ??\n ''\n );\n}\n\nfunction resolveRawValue(value: unknown): string | undefined {\n if (!value || typeof value !== 'object') {\n return typeof value === 'string' ? value : undefined;\n }\n\n return (\n readString(value, 'actualValue') ??\n readString(value, 'displayValue') ??\n undefined\n );\n}\n\nfunction readString(value: unknown, key: string): string | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n const result = (value as Record<string, unknown>)[key];\n return typeof result === 'string' && result.length ? result : undefined;\n}\n","<div class=\"mt-modal-content flex h-full flex-col gap-4 p-4\">\n <mt-tabs [(active)]=\"activeTab\" [options]=\"tabOptions\" />\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'escalationDetails'\">\n @if (canRenderDetails()) {\n @if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Loading escalation details...\n </p>\n </div>\n } @else if (error(); as error) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">\n {{ error }}\n </p>\n </div>\n } @else if (preview()) {\n <mt-entities-preview [entities]=\"detailEntities()\" />\n }\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Escalation details context is not available for this item yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'discussion'\">\n @if (canRenderDiscussion()) {\n <div class=\"h-[70vh] min-h-[32rem]\">\n <mt-discussion-thread\n [moduleType]=\"'EscalationInstance'\"\n [recordId]=\"resolvedInstanceId()\"\n [currentUserId]=\"currentUserId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n (readStateChanged)=\"onDiscussionReadStateChanged($event)\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Discussion context is not available for this escalation yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'schema'\">\n @if (canRenderDetails()) {\n @if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Loading escalation schema...\n </p>\n </div>\n } @else if (error(); as error) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">\n {{ error }}\n </p>\n </div>\n } @else if (hasSchema()) {\n <div class=\"h-[70vh] overflow-hidden rounded-2xl\">\n <mt-structure-builder\n class=\"h-full\"\n [readonly]=\"true\"\n [nodes]=\"schemaNodes()\"\n [connections]=\"schemaConnections()\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Escalation schema is not available for this item yet.\n </p>\n </div>\n }\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Escalation schema context is not available for this item yet.\n </p>\n </div>\n }\n </div>\n</div>\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 signal,\n untracked,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ApiEnvelope } from '../../../store/work-center/work-center.model';\n\n@Component({\n selector: 'mt-work-center-process-preview-json',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './work-center-process-preview-json.html',\n})\nexport class WorkCenterProcessPreviewJson implements OnDestroy {\n private readonly http = inject(HttpClient);\n private loadSub?: Subscription;\n\n readonly requestId = input<number | null | undefined>(null);\n\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly preview = signal<unknown | null>(null);\n protected readonly canRenderPreview = computed(\n () => (this.requestId() ?? 0) > 0,\n );\n protected readonly previewJson = computed(() => {\n const preview = this.preview();\n return preview == null ? '' : JSON.stringify(preview, null, 2);\n });\n\n constructor() {\n effect(() => {\n const requestId = this.requestId() ?? 0;\n\n if (requestId > 0) {\n untracked(() => this.loadPreview(requestId));\n return;\n }\n\n this.loadSub?.unsubscribe();\n this.loading.set(false);\n this.error.set(null);\n this.preview.set(null);\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n }\n\n private loadPreview(requestId: number): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.error.set(null);\n\n this.loadSub = this.http\n .get<ApiEnvelope<unknown>>(`processes/${requestId}/preview`)\n .subscribe({\n next: (response) => {\n this.loading.set(false);\n this.preview.set(response.data ?? null);\n },\n error: (error) => {\n this.loading.set(false);\n this.preview.set(null);\n this.error.set(\n error?.error?.message ??\n error?.message ??\n 'Failed to load process preview',\n );\n },\n });\n }\n}\n","@if (!canRenderPreview()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this item yet.\n </p>\n </div>\n} @else if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\n </div>\n} @else if (error()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\n </div>\n} @else if (previewJson()) {\n <div class=\"overflow-hidden rounded-2xl border border-surface-200 bg-surface-50\">\n <pre\n class=\"max-h-[70vh] overflow-auto whitespace-pre-wrap break-all p-4 text-xs leading-6 text-surface-700\"\n ><code>{{ previewJson() }}</code></pre>\n </div>\n} @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview returned no data.\n </p>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, input, signal } from '@angular/core';\nimport { Tabs } from '@masterteam/components/tabs';\nimport {\n DiscussionThread,\n type DiscussionReadStateDto,\n} from '@masterteam/discussion';\n\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\nimport { WorkCenterProcessPreviewJson } from '../../work-center-item-modal/work-center-process-preview-json/work-center-process-preview-json';\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\n\n@Component({\n selector: 'mt-work-center-process-request-type',\n standalone: true,\n imports: [CommonModule, Tabs, DiscussionThread, WorkCenterProcessPreviewJson],\n templateUrl: './work-center-process-request-type.html',\n})\nexport class WorkCenterProcessRequestType {\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n\n protected readonly activeTab = signal('requestDetails');\n protected readonly currentUserId = signal('');\n protected readonly tabOptions = [\n {\n label: 'Request Details',\n value: 'requestDetails',\n },\n {\n label: 'Discussion',\n value: 'discussion',\n },\n {\n label: 'Preview',\n value: 'preview',\n },\n ];\n protected readonly itemContext = computed(() =>\n readItemContext(this.details()),\n );\n protected readonly requestId = computed(\n () =>\n readNumber(this.itemContext(), 'requestId') ??\n readNumber(this.itemContext(), 'draftProcessId'),\n );\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\n protected readonly canRenderDiscussion = computed(\n () => this.discussionRecordId() > 0,\n );\n protected readonly canRenderPreview = computed(() => (this.requestId() ?? 0) > 0);\n\n protected onDiscussionReadStateChanged(\n state: DiscussionReadStateDto | null,\n ): void {\n const resolvedUserId = state?.userId?.trim();\n if (resolvedUserId) {\n this.currentUserId.set(resolvedUserId);\n }\n }\n}\n","<div class=\"mt-modal-content flex h-full flex-col gap-4 p-4\">\n <mt-tabs [(active)]=\"activeTab\" [options]=\"tabOptions\" />\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'requestDetails'\">\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process request details view will be added here.\n </p>\n </div>\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'discussion'\">\n @if (canRenderDiscussion()) {\n <div class=\"h-[70vh] min-h-[32rem]\">\n <mt-discussion-thread\n [moduleType]=\"'ProcessRequest'\"\n [recordId]=\"discussionRecordId()\"\n [currentUserId]=\"currentUserId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n (readStateChanged)=\"onDiscussionReadStateChanged($event)\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Discussion context is not available for this process request yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'preview'\">\n @if (canRenderPreview()) {\n <mt-work-center-process-preview-json [requestId]=\"requestId()\" />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this process request yet.\n </p>\n </div>\n }\n </div>\n</div>\n","import { Injectable, signal } from '@angular/core';\nimport { ClientForm } from '@masterteam/forms/client-form';\n\nexport interface WorkCenterActionFormValue {\n requestPropertyId?: number;\n propertyKey: string;\n value: unknown;\n}\n\n@Injectable()\nexport class WorkCenterItemActionContextStore {\n private readonly clientForm = signal<ClientForm | null>(null);\n\n setClientForm(clientForm: ClientForm | null): void {\n this.clientForm.set(clientForm);\n }\n\n resolveFormValues(): WorkCenterActionFormValue[] {\n const values = this.clientForm()?.getSubmitValues();\n return Array.isArray(values)\n ? values.map((value) => ({\n requestPropertyId: value.requestPropertyId,\n propertyKey: value.propertyKey,\n value: value.value,\n }))\n : [];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n OnDestroy,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Tabs } from '@masterteam/components/tabs';\nimport {\n DiscussionThread,\n type DiscussionReadStateDto,\n} from '@masterteam/discussion';\nimport { ClientForm } from '@masterteam/forms/client-form';\n\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\nimport { WorkCenterItemActionContextStore } from '../../work-center-item-modal-route/work-center-item-action-context.store';\nimport { WorkCenterProcessPreviewJson } from '../../work-center-item-modal/work-center-process-preview-json/work-center-process-preview-json';\nimport {\n readItemContext,\n readNumber,\n readString,\n} from '../work-center-types.helpers';\n\n@Component({\n selector: 'mt-work-center-process-step-type',\n standalone: true,\n imports: [\n CommonModule,\n Tabs,\n ClientForm,\n DiscussionThread,\n WorkCenterProcessPreviewJson,\n ],\n templateUrl: './work-center-process-step-type.html',\n})\nexport class WorkCenterProcessStepType implements OnDestroy {\n private readonly actionContext = inject(WorkCenterItemActionContextStore, {\n optional: true,\n });\n\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n private readonly clientForm = viewChild(ClientForm);\n\n protected readonly activeTab = signal('form');\n protected readonly currentUserId = signal('');\n protected readonly tabOptions = [\n {\n label: 'Form',\n value: 'form',\n },\n {\n label: 'Discussion',\n value: 'discussion',\n },\n {\n label: 'Preview',\n value: 'preview',\n },\n ];\n protected readonly itemContext = computed(() =>\n readItemContext(this.details()),\n );\n protected readonly requestId = computed(\n () =>\n readNumber(this.itemContext(), 'requestId') ??\n readNumber(this.itemContext(), 'draftProcessId'),\n );\n protected readonly moduleKey = computed(\n () => readString(this.itemContext(), 'moduleKey') ?? '',\n );\n protected readonly operationKey = computed(\n () => readString(this.itemContext(), 'operationKey') ?? '',\n );\n protected readonly moduleId = computed(() =>\n readNumber(this.itemContext(), 'moduleId'),\n );\n protected readonly levelId = computed(() =>\n readNumber(this.itemContext(), 'levelId'),\n );\n protected readonly levelDataId = computed(() =>\n readNumber(this.itemContext(), 'levelDataId'),\n );\n protected readonly moduleDataId = computed(() =>\n readNumber(this.itemContext(), 'moduleDataId'),\n );\n protected readonly requestSchemaId = computed(() =>\n readNumber(this.itemContext(), 'requestSchemaId'),\n );\n protected readonly draftProcessId = computed(\n () =>\n readNumber(this.itemContext(), 'draftProcessId') ??\n readNumber(this.itemContext(), 'requestId'),\n );\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\n protected readonly canRenderForm = computed(\n () => !!this.moduleKey() && !!this.operationKey(),\n );\n protected readonly canRenderDiscussion = computed(\n () => this.discussionRecordId() > 0,\n );\n protected readonly canRenderPreview = computed(() => (this.requestId() ?? 0) > 0);\n\n constructor() {\n effect(() => {\n this.actionContext?.setClientForm(this.clientForm() ?? null);\n });\n }\n\n protected onDiscussionReadStateChanged(\n state: DiscussionReadStateDto | null,\n ): void {\n const resolvedUserId = state?.userId?.trim();\n if (resolvedUserId) {\n this.currentUserId.set(resolvedUserId);\n }\n }\n\n ngOnDestroy(): void {\n this.actionContext?.setClientForm(null);\n }\n}\n","<div class=\"mt-modal-content flex h-full flex-col gap-4 p-4\">\n <mt-tabs [(active)]=\"activeTab\" [options]=\"tabOptions\" />\n\n <div class=\"flex-1 p-4\" [hidden]=\"activeTab() !== 'form'\">\n <div class=\"flex-1\">\n @if (canRenderForm()) {\n <mt-client-form\n [moduleKey]=\"moduleKey()\"\n [operationKey]=\"operationKey()\"\n [moduleId]=\"moduleId()\"\n [levelId]=\"levelId()\"\n [levelDataId]=\"levelDataId()\"\n [moduleDataId]=\"moduleDataId()\"\n [requestSchemaId]=\"requestSchemaId()\"\n [draftProcessId]=\"draftProcessId()\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process form context is not available for this item yet.\n </p>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'discussion'\">\n @if (canRenderDiscussion()) {\n <div class=\"h-[70vh] min-h-[32rem]\">\n <mt-discussion-thread\n [moduleType]=\"'ProcessRequest'\"\n [recordId]=\"discussionRecordId()\"\n [currentUserId]=\"currentUserId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n (readStateChanged)=\"onDiscussionReadStateChanged($event)\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Discussion context is not available for this process item yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'preview'\">\n @if (canRenderPreview()) {\n <mt-work-center-process-preview-json [requestId]=\"requestId()\" />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this process item yet.\n </p>\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input } from '@angular/core';\n\nimport { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\nimport { WorkCenterEscalationInstanceType } from '../work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type';\nimport { WorkCenterProcessRequestType } from '../work-center-types/work-center-process-request-type/work-center-process-request-type';\nimport { WorkCenterProcessStepType } from '../work-center-types/work-center-process-step-type/work-center-process-step-type';\n\n@Component({\n selector: 'mt-work-center-item-modal',\n standalone: true,\n imports: [\n CommonModule,\n WorkCenterProcessStepType,\n WorkCenterProcessRequestType,\n WorkCenterEscalationInstanceType,\n ],\n templateUrl: './work-center-item-modal.html',\n})\nexport class WorkCenterItemModal {\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n}\n","@if (details().type === \"ProcessStep\") {\n <mt-work-center-process-step-type [details]=\"details()\" />\n} @else if (details().type === \"ProcessRequest\") {\n <mt-work-center-process-request-type [details]=\"details()\" />\n} @else if (details().type === \"EscalationInstance\") {\n <mt-work-center-escalation-instance-type [details]=\"details()\" />\n} @else {\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\n <p class=\"text-sm text-surface-500\">This item type is not supported yet.</p>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n DynamicFieldConfig,\n DynamicFormConfig,\n ValidatorConfig,\n} from '@masterteam/components';\nimport { Button } from '@masterteam/components/button';\nimport { ModalRef } from '@masterteam/components/dialog';\nimport { ModalService } from '@masterteam/components/modal';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\n\nimport { WorkCenterRuntimeItemAction } from '../../../store/work-center/work-center.model';\n\n@Component({\n selector: 'mt-work-center-item-action-confirm-dialog',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, DynamicForm, Button],\n templateUrl: './work-center-item-action-confirm-dialog.html',\n})\nexport class WorkCenterItemActionConfirmDialog {\n private readonly ref = inject(ModalRef);\n readonly modal = inject(ModalService);\n\n readonly action = input.required<WorkCenterRuntimeItemAction>();\n\n protected readonly formControl = new FormControl<Record<string, unknown>>({});\n protected readonly actionLabel = computed(\n () => this.action().actionName?.display || this.action().actionKey,\n );\n protected readonly formConfig = computed<DynamicFormConfig>(() => ({\n sections: [\n {\n key: 'action-confirmation',\n type: 'none',\n fields: buildActionFields(\n this.action().payloadKeys,\n this.action().requiredPayloadKeys,\n ),\n },\n ],\n }));\n protected readonly hasFormFields = computed(\n () => this.formConfig().sections[0]?.fields.length > 0,\n );\n\n protected onCancel(): void {\n this.ref.close(null);\n }\n\n protected onConfirm(): void {\n if (this.formControl.invalid) {\n this.formControl.markAllAsTouched();\n return;\n }\n\n this.ref.close(this.formControl.getRawValue() ?? {});\n }\n}\n\nfunction buildActionFields(\n payloadKeys: string[] | undefined,\n requiredPayloadKeys: string[] | undefined,\n): DynamicFieldConfig[] {\n const requestedKeys = new Set(payloadKeys ?? []);\n const requiredKeys = new Set(requiredPayloadKeys ?? []);\n const fields: DynamicFieldConfig[] = [];\n\n if (requestedKeys.has('delegatedUser')) {\n fields.push(\n {\n key: 'delegatedUser',\n type: 'user-search',\n label: 'Delegated User',\n placeholder: 'Search user',\n apiUrl: 'Identity/users',\n optionLabel: 'displayName',\n optionValue: 'id',\n validators: buildRequiredValidators(requiredKeys.has('delegatedUser')),\n colSpan: 12,\n } as DynamicFieldConfig,\n );\n }\n\n if (requestedKeys.has('reason')) {\n fields.push(\n {\n key: 'reason',\n type: 'textarea',\n label: 'Reason',\n placeholder: 'Enter reason',\n rows: 4,\n validators: buildRequiredValidators(requiredKeys.has('reason')),\n colSpan: 12,\n } as DynamicFieldConfig,\n );\n }\n\n if (requestedKeys.has('note')) {\n fields.push(\n {\n key: 'note',\n type: 'textarea',\n label: 'Note',\n placeholder: 'Enter note',\n rows: 4,\n validators: buildRequiredValidators(requiredKeys.has('note')),\n colSpan: 12,\n } as DynamicFieldConfig,\n );\n }\n\n if (requestedKeys.has('attachments')) {\n fields.push(\n {\n key: 'attachments',\n type: 'upload-file',\n label: 'Attachments',\n endPoint: 'uploader',\n multiple: true,\n title: 'Upload Attachment',\n description: 'Click or drop a file to upload',\n validators: buildRequiredValidators(requiredKeys.has('attachments')),\n colSpan: 12,\n } as DynamicFieldConfig,\n );\n }\n\n return fields;\n}\n\nfunction buildRequiredValidators(required: boolean): ValidatorConfig[] {\n return required ? [ValidatorConfig.required()] : [];\n}\n","<div [class]=\"modal.contentClass +' p-4'\">\n @if (hasFormFields()) {\n <mt-dynamic-form [formConfig]=\"formConfig()\" [formControl]=\"formControl\" />\n } @else {\n <p class=\"text-sm text-surface-500\">\n Confirm {{ actionLabel() }} for this item.\n </p>\n }\n\n</div>\n\n<div [class]=\"modal.footerClass\">\n <mt-button label=\"Cancel\" severity=\"secondary\" variant=\"outlined\" (onClick)=\"onCancel()\" />\n <mt-button [label]=\"actionLabel()\" (onClick)=\"onConfirm()\" />\n</div>\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 { Button } from '@masterteam/components/button';\nimport { ModalService } from '@masterteam/components/modal';\nimport { ToastService } from '@masterteam/components/toast';\nimport { Subscription, map, take } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemActionsData,\n WorkCenterItemContextKey,\n WorkCenterRuntimeItemAction,\n} from '../../../store/work-center/work-center.model';\nimport { WorkCenterItemActionConfirmDialog } from '../work-center-item-action-confirm-dialog/work-center-item-action-confirm-dialog';\nimport { WorkCenterItemActionContextStore } from '../work-center-item-action-context.store';\n\ntype FooterActionSeverity = 'primary' | 'secondary' | '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, 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 modal = inject(ModalService);\n private readonly toast = inject(ToastService);\n private readonly actionContext = inject(WorkCenterItemActionContextStore);\n\n private loadSub?: Subscription;\n private executeSub?: Subscription;\n private lastContextKey: WorkCenterItemContextKey | null = null;\n\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\n readonly actionExecuted = output<void>();\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: action.actionName?.display || action.actionKey,\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 this.executeSub?.unsubscribe();\n }\n\n protected executeAction(action: ModalFooterAction): void {\n const contextKey = this.contextKey();\n const method = normalizeMethod(action.httpMethod);\n const url = action.url?.trim();\n\n if (\n !contextKey ||\n !method ||\n !url ||\n action.isAvailable === false ||\n !!this.pendingActionKey()\n ) {\n return;\n }\n\n if (action.needConfirmation) {\n this.openConfirmationDialog(action);\n return;\n }\n\n const payload = this.buildActionPayload(action);\n if (!this.ensurePayloadIsReady(action, payload)) {\n return;\n }\n\n this.runActionRequest(action, method, url, payload);\n }\n\n private openConfirmationDialog(action: ModalFooterAction): void {\n const ref = this.modal.openModal(\n WorkCenterItemActionConfirmDialog,\n 'dialog',\n {\n header: action.label,\n width: '40rem',\n dismissableMask: true,\n inputValues: {\n action,\n },\n },\n );\n\n ref.onClose\n .pipe(take(1))\n .subscribe((formValue: Record<string, unknown> | null) => {\n if (formValue == null) {\n return;\n }\n\n const method = normalizeMethod(action.httpMethod);\n const url = action.url?.trim();\n if (!method || !url) {\n return;\n }\n\n const payload = this.buildActionPayload(action, formValue);\n if (!this.ensurePayloadIsReady(action, payload)) {\n return;\n }\n\n this.runActionRequest(action, method, url, payload);\n });\n }\n\n private runActionRequest(\n action: ModalFooterAction,\n method: string,\n url: string,\n payload: Record<string, unknown> | undefined,\n ): void {\n this.error.set(null);\n this.pendingActionKey.set(action.actionKey);\n this.executeSub?.unsubscribe();\n\n this.executeSub = this.http\n .request<unknown>(method, url, buildRequestOptions(method, payload))\n .pipe(\n map((response) =>\n resolveActionSuccessMessage(\n response,\n `${action.label} completed successfully.`,\n ),\n ),\n )\n .subscribe({\n next: (message) => {\n this.pendingActionKey.set(null);\n this.toast.success(message);\n this.reloadTick.update((value) => value + 1);\n this.actionExecuted.emit();\n },\n error: (error: unknown) => {\n const message = resolveHttpErrorMessage(\n error,\n `Failed to execute ${action.label}.`,\n );\n\n this.pendingActionKey.set(null);\n this.error.set(message);\n this.toast.error(message);\n },\n });\n }\n\n private buildActionPayload(\n action: WorkCenterRuntimeItemAction,\n formValue?: Record<string, unknown>,\n ): Record<string, unknown> | undefined {\n const payloadKeys = action.payloadKeys ?? [];\n if (!payloadKeys.length) {\n return undefined;\n }\n\n const payload: Record<string, unknown> = {};\n\n for (const key of payloadKeys) {\n const formFieldValue = formValue?.[key];\n if (formFieldValue !== undefined) {\n payload[key] = normalizePayloadValue(key, formFieldValue);\n continue;\n }\n\n const externalValue = this.resolveExternalPayloadValue(key, action);\n if (externalValue !== undefined) {\n payload[key] = externalValue;\n continue;\n }\n\n const defaultValue = resolveDefaultPayloadValue(key);\n if (defaultValue !== undefined) {\n payload[key] = defaultValue;\n }\n }\n\n return Object.keys(payload).length ? payload : undefined;\n }\n\n private ensurePayloadIsReady(\n action: ModalFooterAction,\n payload: Record<string, unknown> | undefined,\n ): payload is Record<string, unknown> | undefined {\n const missingRequiredKeys = (action.requiredPayloadKeys ?? []).filter(\n (key) => isMissingPayloadValue(payload?.[key]),\n );\n\n if (!missingRequiredKeys.length) {\n return true;\n }\n\n const message = `Cannot execute ${action.label}. Missing: ${missingRequiredKeys.join(', ')}.`;\n this.error.set(message);\n this.toast.error(message);\n return false;\n }\n\n private resolveExternalPayloadValue(\n key: string,\n action: WorkCenterRuntimeItemAction,\n ): unknown {\n switch (key) {\n case 'stepId':\n return action.stepIds?.[0];\n case 'values':\n return this.actionContext.resolveFormValues();\n default:\n return undefined;\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 buildRequestOptions(\n method: string,\n payload: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n if (!payload || !methodSupportsBody(method)) {\n return { observe: 'body' };\n }\n\n return {\n body: payload,\n observe: 'body',\n };\n}\n\nfunction methodSupportsBody(method: string): boolean {\n return ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method);\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 normalizePayloadValue(key: string, value: unknown): unknown {\n if (key === 'attachments') {\n if (value == null) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n }\n\n return value;\n}\n\nfunction resolveDefaultPayloadValue(key: string): unknown {\n switch (key) {\n case 'attachments':\n return [];\n case 'delegatedUser':\n case 'note':\n case 'reason':\n return null;\n case 'values':\n return [];\n default:\n return undefined;\n }\n}\n\nfunction isMissingPayloadValue(value: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n return false;\n}\n\nfunction resolveActionSeverity(\n actionKey: string,\n index: number,\n): FooterActionSeverity {\n const normalized = actionKey.trim().toLowerCase();\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' ? undefined : '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 resolveActionSuccessMessage(\n response: unknown,\n fallback: string,\n): string {\n if (!response || typeof response !== 'object') {\n return fallback;\n }\n\n const apiResponse = response as {\n code?: number;\n message?: string | null;\n errors?: unknown;\n };\n\n if (typeof apiResponse.code === 'number' && apiResponse.code !== 1) {\n throw new Error(resolveEnvelopeErrorMessage(apiResponse, fallback));\n }\n\n return apiResponse.message?.trim() || fallback;\n}\n\nfunction resolveHttpErrorMessage(\n error: unknown,\n fallback: string,\n): 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","@if (shouldRender()) {\n @if (error(); as error) {\n <span class=\"me-auto max-w-md text-sm text-red-600\">\n {{ error }}\n </span>\n } @else if (loading() && !displayActions().length) {\n <span class=\"me-auto text-sm text-surface-500\">Loading actions...</span>\n }\n\n @for (action of displayActions(); track action.actionKey + action.url) {\n <mt-button\n [label]=\"action.label\"\n [severity]=\"action.severity\"\n [variant]=\"action.variant\"\n [disabled]=\"loading() || !!pendingActionKey()\"\n [loading]=\"pendingActionKey() === action.actionKey\"\n (onClick)=\"executeAction(action)\"\n />\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Drawer } from '@masterteam/components/drawer';\nimport { ModalService } from '@masterteam/components/modal';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { map } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemBasicInfoData,\n WorkCenterItemContextKey,\n} from '../../store/work-center/work-center.model';\nimport { WorkCenterItemModal } from '../work-center-item-modal/work-center-item-modal';\nimport { WorkCenterItemActionContextStore } from './work-center-item-action-context.store';\nimport { WorkCenterItemModalFooterActions } from './work-center-item-modal-footer-actions/work-center-item-modal-footer-actions';\n\n@Component({\n selector: 'mt-work-center-item-modal-route',\n standalone: true,\n imports: [\n CommonModule,\n Drawer,\n SkeletonModule,\n WorkCenterItemModal,\n WorkCenterItemModalFooterActions,\n ],\n providers: [WorkCenterItemActionContextStore],\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 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 this.decodeContextKey(this.contextKey()),\n );\n protected readonly drawerTitle = computed(\n () =>\n this.readDisplayField(this.details()?.item, 'title') ?? 'Item Details',\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 : 'Failed to load item details.',\n );\n this.loading.set(false);\n },\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n protected onActionExecuted(): void {\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 decodeContextKey(\n value: WorkCenterItemContextKey | null,\n ): WorkCenterItemContextKey | null {\n if (!value) {\n return null;\n }\n\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\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\n [visible]=\"drawerVisible()\"\n [loadingHeader]=\"loading()\"\n [title]=\"drawerTitle()\"\n [subtitle]=\"drawerSubtitle()\"\n [appendTo]=\"'system-content'\"\n styleClass=\"!w-[90%] !absolute \"\n position=\"right\"\n (visibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container content>\n @if (loading()) {\n <div class=\"p-4\" [class]=\"modal.contentClass\">\n <div class=\"flex min-h-[22rem] flex-col gap-5\">\n <div class=\"flex items-center gap-3\">\n <p-skeleton shape=\"circle\" size=\"3rem\" />\n <div class=\"flex flex-1 flex-col gap-2\">\n <p-skeleton width=\"12rem\" height=\"1rem\" />\n <p-skeleton width=\"8rem\" height=\"0.875rem\" />\n </div>\n </div>\n\n <div class=\"grid gap-3 md:grid-cols-2\">\n @for (_ of [1, 2, 3, 4]; track $index) {\n <p-skeleton height=\"5rem\" borderRadius=\"1rem\" />\n }\n </div>\n\n <p-skeleton height=\"16rem\" borderRadius=\"1rem\" />\n </div>\n </div>\n } @else if (error(); as errorMessage) {\n <div class=\"p-4\" [class]=\"modal.contentClass\">\n <div class=\"flex min-h-[22rem] items-center justify-center\">\n <p class=\"max-w-xl text-sm font-medium text-red-600\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n } @else if (details(); as details) {\n <mt-work-center-item-modal [details]=\"details\" />\n } @else {\n <div class=\"p-4\" [class]=\"modal.contentClass\">\n <div class=\"flex min-h-[22rem] items-center justify-center\">\n <p class=\"text-sm font-medium text-surface-500\">No item selected.</p>\n </div>\n </div>\n }\n </ng-container>\n\n @if (footerActionsMounted()) {\n <div footer [class]=\"modal.footerClass\">\n <mt-work-center-item-modal-footer-actions\n [contextKey]=\"resolvedContextKey()\"\n (actionExecuted)=\"onActionExecuted()\"\n (visibilityChange)=\"onFooterVisibilityChange($event)\"\n />\n </div>\n }\n</mt-drawer>\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","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../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-item-modal/work-center-process-preview-json/work-center-process-preview-json.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview-json/work-center-process-preview-json.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-item-modal-route/work-center-item-action-context.store.ts","../../../../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-action-confirm-dialog/work-center-item-action-confirm-dialog.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-action-confirm-dialog/work-center-item-action-confirm-dialog.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 WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\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 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","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\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\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 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 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 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}\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 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\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(value: number | undefined, fallback = 20): 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 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 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 propertyColumns;\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return 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\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 displayRow = { ...row };\r\n\r\n for (const column of columns) {\r\n const value = getValue(row, 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: 20,\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 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\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 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, 20),\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} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\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 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 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 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 ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\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 ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\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(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 columns: [],\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} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\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 runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\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 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 return this.store.dispatch([\r\n new HydrateFromContext(area, { runtimeFilters, page: 1 }),\r\n new LoadRuntime(area, 'filters-change'),\r\n ]);\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 { Component, computed, inject, input, output } from '@angular/core';\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 { Table } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterFilterRule,\r\n WorkCenterItemModalComponentInput,\r\n WorkCenterItemModalOptions,\r\n WorkCenterItemContextKey,\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\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 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(schema: WorkCenterRuntimeFilterSchema) {\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: OPERATOR_LABELS[operator] ?? toLabel(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 OPERATOR_LABELS[key] ||\r\n toLabel(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 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\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('Work Center');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n readonly openItemsInModal = input(true);\r\n readonly itemModal = input<WorkCenterItemModalOptions | null>(null);\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 protected readonly menuItems = this.facade.menuItems;\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 loading = this.facade.loading;\r\n\r\n protected readonly tableCurrentPage = computed(() =>\r\n Math.max((this.context().page ?? 1) - 1, 0),\r\n );\r\n protected readonly tableFirst = computed(\r\n () => this.tableCurrentPage() * (this.context().pageSize || 20),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema);\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: OPERATOR_LABELS[key] ?? toLabel(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 private readonly defaultModalStyleClass =\r\n '!w-[96vw] xl:!w-[calc(100%-8rem)] 2xl:!w-[calc(100%-12rem)] !absolute !shadow-none';\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 onLazyLoad(event: any): void {\r\n this.facade.applyTableLazyLoadAndLoad(this.area(), event);\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.applyRuntimeFiltersAndLoad(this.area(), mappedFilters);\r\n this.runtimeFiltersChanged.emit(mappedFilters);\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.facade.applyRuntimeFiltersAndLoad(this.area(), []);\r\n this.runtimeFiltersChanged.emit([]);\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 this.modal.openModal(modalOptions.component, 'drawer', {\r\n header: modalOptions?.header ?? 'Item Details',\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\r\n protected readonly rowsClickable = computed(() => this.openItemsInModal());\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]=\"pageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n>\r\n <ng-template #headerClientPageEnd>\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 </ng-template>\r\n\r\n <div class=\"flex flex-col gap-4\">\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\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\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 (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [lazy]=\"true\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"tableCurrentPage()\"\r\n [first]=\"tableFirst()\"\r\n (lazyLoad)=\"onLazyLoad($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\nexport function readItemContext(\n details: WorkCenterItemBasicInfoData,\n): Record<string, unknown> | null {\n const item = details.item;\n if (!item || typeof item !== 'object') {\n return null;\n }\n\n const context = item['context'];\n return context && typeof context === 'object'\n ? (context as Record<string, unknown>)\n : null;\n}\n\nexport function readNumber(\n source: Record<string, unknown> | null,\n key: string,\n): number | undefined {\n const value = source?.[key];\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n\n return undefined;\n}\n\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';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n OnDestroy,\n} from '@angular/core';\nimport {\n EntitiesPreview,\n EntityData,\n EntityUserValue,\n} from '@masterteam/components/entities';\nimport { Tabs } from '@masterteam/components/tabs';\nimport {\n DiscussionThread,\n type DiscussionReadStateDto,\n} from '@masterteam/discussion';\nimport {\n Connection,\n Node,\n StructureBuilder,\n} from '@masterteam/structure-builder';\nimport { Subscription } from 'rxjs';\n\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\n\ninterface EscalationPreviewResponse {\n message?: string | null;\n data: EscalationPreviewData;\n}\n\ninterface TranslatableValue {\n display?: string;\n en?: string;\n ar?: string;\n}\n\ninterface EscalationSchemaStep {\n id: number | string;\n name?: TranslatableValue;\n isInitial?: boolean;\n isFinal?: boolean;\n}\n\ninterface EscalationSchemaConnection {\n id?: number | string;\n source: number | string;\n target: number | string;\n}\n\ninterface EscalationPreviewData {\n initiatedBy?: Record<string, unknown>;\n startedAt?: Record<string, unknown>;\n reason?: string;\n attachments?: string[];\n schema?: {\n stepsSchema?: EscalationSchemaStep[];\n connections?: EscalationSchemaConnection[];\n };\n schemaSteps?: EscalationSchemaStep[];\n}\n\n@Component({\n selector: 'mt-work-center-escalation-instance-type',\n standalone: true,\n imports: [\n CommonModule,\n Tabs,\n DiscussionThread,\n EntitiesPreview,\n StructureBuilder,\n ],\n templateUrl: './work-center-escalation-instance-type.html',\n})\nexport class WorkCenterEscalationInstanceType implements OnDestroy {\n private readonly http = inject(HttpClient);\n private loadSub?: Subscription;\n\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n\n protected readonly activeTab = signal('escalationDetails');\n protected readonly currentUserId = signal('');\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly preview = signal<EscalationPreviewData | null>(null);\n protected readonly tabOptions = [\n {\n label: 'Escalation Details',\n value: 'escalationDetails',\n },\n {\n label: 'Discussion',\n value: 'discussion',\n },\n {\n label: 'Schema',\n value: 'schema',\n },\n ];\n protected readonly detailEntities = computed<EntityData[]>(() => {\n const preview = this.preview();\n if (!preview) {\n return [];\n }\n\n return [\n {\n key: 'initiatedBy',\n name: 'Initiated By',\n value: mapUserValue(preview.initiatedBy),\n viewType: 'User',\n order: 1,\n configuration: { size: 12 },\n },\n {\n key: 'startedAt',\n name: 'Started At',\n value: resolveDisplayValue(preview.startedAt),\n rawValue: resolveRawValue(preview.startedAt),\n viewType: 'DateTime',\n order: 2,\n configuration: { size: 12 },\n },\n {\n key: 'reason',\n name: 'Reason',\n value: preview.reason ?? '',\n viewType: 'LongText',\n order: 3,\n configuration: { size: 24 },\n },\n {\n key: 'attachments',\n name: 'Attachments',\n value: preview.attachments ?? [],\n viewType: 'Attachment',\n order: 4,\n configuration: { size: 24 },\n },\n ];\n });\n protected readonly schemaNodes = computed<Node[]>(() =>\n resolveSchemaSteps(this.preview()).map((step) => ({\n id: String(step.id),\n name: resolveTranslatable(step.name) || `Step ${step.id}`,\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\n })),\n );\n protected readonly schemaConnections = computed<Connection[]>(() =>\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\n id: String(\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\n ),\n from: String(connection.source),\n to: String(connection.target),\n })),\n );\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\n\n protected readonly itemContext = computed(() =>\n readItemContext(this.details()),\n );\n protected readonly instanceId = computed(\n () =>\n readNumber(this.itemContext(), 'escalationInstanceId') ??\n readNumber(this.itemContext(), 'instanceId'),\n );\n protected readonly resolvedInstanceId = computed(\n () => this.instanceId() ?? 0,\n );\n protected readonly canRenderDetails = computed(\n () => this.resolvedInstanceId() > 0,\n );\n protected readonly canRenderDiscussion = computed(\n () => this.resolvedInstanceId() > 0,\n );\n\n constructor() {\n effect(() => {\n const instanceId = this.resolvedInstanceId();\n\n if (instanceId > 0) {\n untracked(() => this.loadPreview(instanceId));\n return;\n }\n\n this.preview.set(null);\n this.error.set(null);\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n }\n\n protected onDiscussionReadStateChanged(\n state: DiscussionReadStateDto | null,\n ): void {\n const resolvedUserId = state?.userId?.trim();\n if (resolvedUserId) {\n this.currentUserId.set(resolvedUserId);\n }\n }\n\n private loadPreview(instanceId: number): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.error.set(null);\n\n this.loadSub = this.http\n .get<EscalationPreviewResponse>(`escalations/${instanceId}/preview`)\n .subscribe({\n next: (response) => {\n this.loading.set(false);\n this.preview.set(response.data ?? null);\n },\n error: (error) => {\n this.loading.set(false);\n this.preview.set(null);\n this.error.set(\n error?.error?.message ??\n error?.message ??\n 'Failed to load escalation preview',\n );\n },\n });\n }\n}\n\nfunction mapUserValue(value: unknown): EntityUserValue {\n if (!value || typeof value !== 'object') {\n return {\n displayName: '',\n userName: '',\n };\n }\n\n return {\n id: readString(value, 'id'),\n userName: readString(value, 'userName'),\n displayName:\n readString(value, 'displayName') ??\n readString(value, 'fullName') ??\n readString(value, 'userName') ??\n '',\n photoUrl: readString(value, 'photoUrl'),\n phoneNumber:\n readString(value, 'phoneNumber') ?? readString(value, 'mobileNumber'),\n email: readString(value, 'email') ?? readString(value, 'emailAddress'),\n };\n}\n\nfunction resolveSchemaSteps(\n preview: EscalationPreviewData | null,\n): EscalationSchemaStep[] {\n return preview?.schema?.stepsSchema ?? preview?.schemaSteps ?? [];\n}\n\nfunction resolveTranslatable(value: TranslatableValue | undefined): string {\n if (!value || typeof value !== 'object') {\n return '';\n }\n\n return value.display ?? value.en ?? value.ar ?? '';\n}\n\nfunction resolveDisplayValue(value: unknown): string {\n if (!value || typeof value !== 'object') {\n return typeof value === 'string' ? value : '';\n }\n\n return (\n readString(value, 'displayValue') ??\n readString(value, 'display') ??\n readString(value, 'actualValue') ??\n ''\n );\n}\n\nfunction resolveRawValue(value: unknown): string | undefined {\n if (!value || typeof value !== 'object') {\n return typeof value === 'string' ? value : undefined;\n }\n\n return (\n readString(value, 'actualValue') ??\n readString(value, 'displayValue') ??\n undefined\n );\n}\n\nfunction readString(value: unknown, key: string): string | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n const result = (value as Record<string, unknown>)[key];\n return typeof result === 'string' && result.length ? result : undefined;\n}\n","<div class=\"mt-modal-content flex h-full flex-col gap-4 p-4\">\n <mt-tabs [(active)]=\"activeTab\" [options]=\"tabOptions\" />\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'escalationDetails'\">\n @if (canRenderDetails()) {\n @if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Loading escalation details...\n </p>\n </div>\n } @else if (error(); as error) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">\n {{ error }}\n </p>\n </div>\n } @else if (preview()) {\n <mt-entities-preview [entities]=\"detailEntities()\" />\n }\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Escalation details context is not available for this item yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'discussion'\">\n @if (canRenderDiscussion()) {\n <div class=\"h-[70vh] min-h-[32rem]\">\n <mt-discussion-thread\n [moduleType]=\"'EscalationInstance'\"\n [recordId]=\"resolvedInstanceId()\"\n [currentUserId]=\"currentUserId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n (readStateChanged)=\"onDiscussionReadStateChanged($event)\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Discussion context is not available for this escalation yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'schema'\">\n @if (canRenderDetails()) {\n @if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Loading escalation schema...\n </p>\n </div>\n } @else if (error(); as error) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">\n {{ error }}\n </p>\n </div>\n } @else if (hasSchema()) {\n <div class=\"h-[70vh] overflow-hidden rounded-2xl\">\n <mt-structure-builder\n class=\"h-full\"\n [readonly]=\"true\"\n [nodes]=\"schemaNodes()\"\n [connections]=\"schemaConnections()\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Escalation schema is not available for this item yet.\n </p>\n </div>\n }\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Escalation schema context is not available for this item yet.\n </p>\n </div>\n }\n </div>\n</div>\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 signal,\n untracked,\n} from '@angular/core';\nimport { EntityData } from '@masterteam/components/entities';\nimport { Table } from '@masterteam/components/table';\nimport {\n Connection,\n Node,\n StructureBuilder,\n} from '@masterteam/structure-builder';\nimport { Subscription } from 'rxjs';\n\nimport { ApiEnvelope } from '../../../store/work-center/work-center.model';\n\ninterface ProcessPreviewStep {\n stepId?: number | string;\n stepName?: unknown;\n status?: unknown;\n targetUser?: Record<string, unknown> | null;\n actionUserInfo?: Record<string, unknown> | null;\n createdAt?: string | null;\n actionDate?: string | null;\n}\n\ninterface ProcessPreviewSchemaStep {\n id: number | string;\n name?: unknown;\n isInitial?: boolean;\n isFinal?: boolean;\n}\n\ninterface ProcessPreviewSchemaConnection {\n id?: number | string;\n source: number | string;\n target: number | string;\n}\n\ninterface ProcessPreviewData {\n steps?: ProcessPreviewStep[];\n schema?: {\n stepsSchema?: ProcessPreviewSchemaStep[];\n connections?: ProcessPreviewSchemaConnection[];\n } | null;\n}\n\n@Component({\n selector: 'mt-work-center-process-preview-json',\n standalone: true,\n imports: [CommonModule, Table, StructureBuilder],\n templateUrl: './work-center-process-preview-json.html',\n})\nexport class WorkCenterProcessPreviewJson implements OnDestroy {\n private readonly http = inject(HttpClient);\n private loadSub?: Subscription;\n\n readonly requestId = input<number | null | undefined>(null);\n readonly view = input<'approvals' | 'schema'>('approvals');\n\n protected readonly approvalColumns = [\n { key: 'stepName', label: 'Name' },\n { key: 'status', label: 'Status' },\n { key: 'user', label: 'User', type: 'entity' as const },\n { key: 'createdAt', label: 'Initiation Date', type: 'entity' as const },\n { key: 'actionDate', label: 'Action Date', type: 'entity' as const },\n ];\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly preview = signal<ProcessPreviewData | null>(null);\n protected readonly canRenderPreview = computed(\n () => (this.requestId() ?? 0) > 0,\n );\n protected readonly approvalRows = computed(() =>\n (this.preview()?.steps ?? []).map((step) => ({\n stepName: readDisplay(step.stepName) || String(step.stepId ?? '--'),\n status: readDisplay(step.status) || '--',\n user: buildEntity(\n 'User',\n 'User',\n (step.actionUserInfo ?? step.targetUser ?? null) as any,\n ),\n createdAt: buildEntity('Initiation Date', 'DateTime', step.createdAt ?? ''),\n actionDate: buildEntity('Action Date', 'DateTime', step.actionDate ?? ''),\n })),\n );\n protected readonly hasApprovals = computed(\n () => this.approvalRows().length > 0,\n );\n protected readonly schemaNodes = computed<Node[]>(() =>\n (this.preview()?.schema?.stepsSchema ?? []).map((step) => ({\n id: String(step.id),\n name: readDisplay(step.name) || String(step.id),\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\n })),\n );\n protected readonly schemaConnections = computed<Connection[]>(() =>\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\n id: String(\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\n ),\n from: String(connection.source),\n to: String(connection.target),\n })),\n );\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\n\n constructor() {\n effect(() => {\n const requestId = this.requestId() ?? 0;\n\n if (requestId > 0) {\n untracked(() => this.loadPreview(requestId));\n return;\n }\n\n this.loadSub?.unsubscribe();\n this.loading.set(false);\n this.error.set(null);\n this.preview.set(null);\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n }\n\n private loadPreview(requestId: number): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.error.set(null);\n\n this.loadSub = this.http\n .get<ApiEnvelope<ProcessPreviewData>>(`processes/${requestId}/preview`)\n .subscribe({\n next: (response) => {\n this.loading.set(false);\n this.preview.set(response.data ?? null);\n },\n error: (error) => {\n this.loading.set(false);\n this.preview.set(null);\n this.error.set(\n error?.error?.message ??\n error?.message ??\n 'Failed to load process preview',\n );\n },\n });\n }\n}\n\nfunction buildEntity(\n name: string,\n viewType: 'User' | 'DateTime',\n value: unknown,\n): EntityData {\n return {\n name,\n viewType,\n value: (value as any) ?? '',\n configuration: {\n hideName: true,\n },\n };\n}\n\nfunction readDisplay(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (value && typeof value === 'object') {\n return (\n readString(value as Record<string, unknown>, 'display') ??\n readString(value as Record<string, unknown>, 'en') ??\n readString(value as Record<string, unknown>, 'ar') ??\n ''\n );\n }\n\n return '';\n}\n\nfunction readString(source: Record<string, unknown>, key: string): string | undefined {\n const value = source[key];\n return typeof value === 'string' ? value : undefined;\n}\n","@if (!canRenderPreview()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this item yet.\n </p>\n </div>\n} @else if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\n </div>\n} @else if (error()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\n </div>\n} @else {\n @if (view() === 'schema') {\n @if (hasSchema()) {\n <div class=\"h-[70vh] overflow-hidden rounded-2xl\">\n <mt-structure-builder\n class=\"h-full\"\n [readonly]=\"true\"\n [nodes]=\"schemaNodes()\"\n [connections]=\"schemaConnections()\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process steps are not available for this item yet.\n </p>\n </div>\n }\n } @else if (hasApprovals()) {\n <mt-table\n [data]=\"approvalRows()\"\n [columns]=\"approvalColumns\"\n [showFilters]=\"false\"\n [generalSearch]=\"false\"\n [clickableRows]=\"false\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process approvals data is not available for this item yet.\n </p>\n </div>\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, input, signal } from '@angular/core';\nimport { Tabs } from '@masterteam/components/tabs';\nimport {\n DiscussionThread,\n type DiscussionReadStateDto,\n} from '@masterteam/discussion';\n\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\nimport { WorkCenterProcessPreviewJson } from '../../work-center-item-modal/work-center-process-preview-json/work-center-process-preview-json';\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\n\n@Component({\n selector: 'mt-work-center-process-request-type',\n standalone: true,\n imports: [CommonModule, Tabs, DiscussionThread, WorkCenterProcessPreviewJson],\n templateUrl: './work-center-process-request-type.html',\n})\nexport class WorkCenterProcessRequestType {\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n\n protected readonly activeTab = signal('requestDetails');\n protected readonly currentUserId = signal('');\n protected readonly tabOptions = [\n {\n label: 'Request Details',\n value: 'requestDetails',\n },\n {\n label: 'Approvals',\n value: 'approvals',\n },\n {\n label: 'Steps',\n value: 'schema',\n },\n {\n label: 'Discussion',\n value: 'discussion',\n },\n ];\n protected readonly itemContext = computed(() =>\n readItemContext(this.details()),\n );\n protected readonly requestId = computed(\n () =>\n readNumber(this.itemContext(), 'requestId') ??\n readNumber(this.itemContext(), 'draftProcessId'),\n );\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\n protected readonly canRenderDiscussion = computed(\n () => this.discussionRecordId() > 0,\n );\n protected readonly canRenderPreview = computed(\n () => (this.requestId() ?? 0) > 0,\n );\n\n protected onDiscussionReadStateChanged(\n state: DiscussionReadStateDto | null,\n ): void {\n const resolvedUserId = state?.userId?.trim();\n if (resolvedUserId) {\n this.currentUserId.set(resolvedUserId);\n }\n }\n}\n","<div class=\"mt-modal-content flex h-full flex-col gap-4 p-4\">\n <mt-tabs [(active)]=\"activeTab\" [options]=\"tabOptions\" />\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'requestDetails'\">\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process request details view will be added here.\n </p>\n </div>\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'approvals'\">\n @if (canRenderPreview()) {\n <mt-work-center-process-preview-json\n [requestId]=\"requestId()\"\n [view]=\"'approvals'\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this process request yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'schema'\">\n @if (canRenderPreview()) {\n <mt-work-center-process-preview-json\n [requestId]=\"requestId()\"\n [view]=\"'schema'\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this process request yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'discussion'\">\n @if (canRenderDiscussion()) {\n <div class=\"h-[70vh] min-h-[32rem]\">\n <mt-discussion-thread\n [moduleType]=\"'ProcessRequest'\"\n [recordId]=\"discussionRecordId()\"\n [currentUserId]=\"currentUserId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n (readStateChanged)=\"onDiscussionReadStateChanged($event)\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Discussion context is not available for this process request yet.\n </p>\n </div>\n }\n </div>\n</div>\n","import { Injectable, signal } from '@angular/core';\nimport { ClientForm } from '@masterteam/forms/client-form';\n\nexport interface WorkCenterActionFormValue {\n requestPropertyId?: number;\n propertyKey: string;\n value: unknown;\n}\n\n@Injectable()\nexport class WorkCenterItemActionContextStore {\n private readonly clientForm = signal<ClientForm | null>(null);\n\n setClientForm(clientForm: ClientForm | null): void {\n this.clientForm.set(clientForm);\n }\n\n resolveFormValues(): WorkCenterActionFormValue[] {\n const values = this.clientForm()?.getSubmitValues();\n return Array.isArray(values)\n ? values.map((value) => ({\n requestPropertyId: value.requestPropertyId,\n propertyKey: value.propertyKey,\n value: value.value,\n }))\n : [];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n OnDestroy,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Tabs } from '@masterteam/components/tabs';\nimport {\n DiscussionThread,\n type DiscussionReadStateDto,\n} from '@masterteam/discussion';\nimport { ClientForm } from '@masterteam/forms/client-form';\n\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\nimport { WorkCenterItemActionContextStore } from '../../work-center-item-modal-route/work-center-item-action-context.store';\nimport { WorkCenterProcessPreviewJson } from '../../work-center-item-modal/work-center-process-preview-json/work-center-process-preview-json';\nimport {\n readItemContext,\n readNumber,\n readString,\n} from '../work-center-types.helpers';\n\n@Component({\n selector: 'mt-work-center-process-step-type',\n standalone: true,\n imports: [\n CommonModule,\n Tabs,\n ClientForm,\n DiscussionThread,\n WorkCenterProcessPreviewJson,\n ],\n templateUrl: './work-center-process-step-type.html',\n})\nexport class WorkCenterProcessStepType implements OnDestroy {\n private readonly actionContext = inject(WorkCenterItemActionContextStore, {\n optional: true,\n });\n\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n private readonly clientForm = viewChild(ClientForm);\n\n protected readonly activeTab = signal('form');\n protected readonly currentUserId = signal('');\n protected readonly tabOptions = [\n {\n label: 'Form',\n value: 'form',\n },\n {\n label: 'Approvals',\n value: 'approvals',\n },\n {\n label: 'Steps',\n value: 'schema',\n },\n {\n label: 'Discussion',\n value: 'discussion',\n },\n ];\n protected readonly itemContext = computed(() =>\n readItemContext(this.details()),\n );\n protected readonly requestId = computed(\n () =>\n readNumber(this.itemContext(), 'requestId') ??\n readNumber(this.itemContext(), 'draftProcessId'),\n );\n protected readonly moduleKey = computed(\n () => readString(this.itemContext(), 'moduleKey') ?? '',\n );\n protected readonly operationKey = computed(\n () => readString(this.itemContext(), 'operationKey') ?? '',\n );\n protected readonly moduleId = computed(() =>\n readNumber(this.itemContext(), 'moduleId'),\n );\n protected readonly levelId = computed(() =>\n readNumber(this.itemContext(), 'levelId'),\n );\n protected readonly levelDataId = computed(() =>\n readNumber(this.itemContext(), 'levelDataId'),\n );\n protected readonly moduleDataId = computed(() =>\n readNumber(this.itemContext(), 'moduleDataId'),\n );\n protected readonly requestSchemaId = computed(() =>\n readNumber(this.itemContext(), 'requestSchemaId'),\n );\n protected readonly draftProcessId = computed(\n () =>\n readNumber(this.itemContext(), 'draftProcessId') ??\n readNumber(this.itemContext(), 'requestId'),\n );\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\n protected readonly canRenderForm = computed(\n () => !!this.moduleKey() && !!this.operationKey(),\n );\n protected readonly canRenderDiscussion = computed(\n () => this.discussionRecordId() > 0,\n );\n protected readonly canRenderPreview = computed(\n () => (this.requestId() ?? 0) > 0,\n );\n\n constructor() {\n effect(() => {\n this.actionContext?.setClientForm(this.clientForm() ?? null);\n });\n }\n\n protected onDiscussionReadStateChanged(\n state: DiscussionReadStateDto | null,\n ): void {\n const resolvedUserId = state?.userId?.trim();\n if (resolvedUserId) {\n this.currentUserId.set(resolvedUserId);\n }\n }\n\n ngOnDestroy(): void {\n this.actionContext?.setClientForm(null);\n }\n}\n","<div class=\"mt-modal-content flex h-full flex-col gap-4 p-4\">\n <mt-tabs [(active)]=\"activeTab\" [options]=\"tabOptions\" />\n\n <div class=\"flex-1 p-4\" [hidden]=\"activeTab() !== 'form'\">\n <div class=\"flex-1\">\n @if (canRenderForm()) {\n <mt-client-form\n [moduleKey]=\"moduleKey()\"\n [operationKey]=\"operationKey()\"\n [moduleId]=\"moduleId()\"\n [levelId]=\"levelId()\"\n [levelDataId]=\"levelDataId()\"\n [moduleDataId]=\"moduleDataId()\"\n [requestSchemaId]=\"requestSchemaId()\"\n [draftProcessId]=\"draftProcessId()\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process form context is not available for this item yet.\n </p>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'approvals'\">\n @if (canRenderPreview()) {\n <mt-work-center-process-preview-json\n [requestId]=\"requestId()\"\n [view]=\"'approvals'\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this process item yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'schema'\">\n @if (canRenderPreview()) {\n <mt-work-center-process-preview-json\n [requestId]=\"requestId()\"\n [view]=\"'schema'\"\n />\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Process preview is not available for this process item yet.\n </p>\n </div>\n }\n </div>\n\n <div class=\"flex-1\" [hidden]=\"activeTab() !== 'discussion'\">\n @if (canRenderDiscussion()) {\n <div class=\"h-[70vh] min-h-[32rem]\">\n <mt-discussion-thread\n [moduleType]=\"'ProcessRequest'\"\n [recordId]=\"discussionRecordId()\"\n [currentUserId]=\"currentUserId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n (readStateChanged)=\"onDiscussionReadStateChanged($event)\"\n />\n </div>\n } @else {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-2xl border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n Discussion context is not available for this process item yet.\n </p>\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input } from '@angular/core';\n\nimport { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\nimport { WorkCenterEscalationInstanceType } from '../work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type';\nimport { WorkCenterProcessRequestType } from '../work-center-types/work-center-process-request-type/work-center-process-request-type';\nimport { WorkCenterProcessStepType } from '../work-center-types/work-center-process-step-type/work-center-process-step-type';\n\n@Component({\n selector: 'mt-work-center-item-modal',\n standalone: true,\n imports: [\n CommonModule,\n WorkCenterProcessStepType,\n WorkCenterProcessRequestType,\n WorkCenterEscalationInstanceType,\n ],\n templateUrl: './work-center-item-modal.html',\n})\nexport class WorkCenterItemModal {\n readonly details = input.required<WorkCenterItemBasicInfoData>();\n}\n","@if (details().type === \"ProcessStep\") {\n <mt-work-center-process-step-type [details]=\"details()\" />\n} @else if (details().type === \"ProcessRequest\") {\n <mt-work-center-process-request-type [details]=\"details()\" />\n} @else if (details().type === \"EscalationInstance\") {\n <mt-work-center-escalation-instance-type [details]=\"details()\" />\n} @else {\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\n <p class=\"text-sm text-surface-500\">This item type is not supported yet.</p>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n DynamicFieldConfig,\n DynamicFormConfig,\n ValidatorConfig,\n} from '@masterteam/components';\nimport { Button } from '@masterteam/components/button';\nimport { ModalRef } from '@masterteam/components/dialog';\nimport { ModalService } from '@masterteam/components/modal';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\n\nimport { WorkCenterRuntimeItemAction } from '../../../store/work-center/work-center.model';\n\n@Component({\n selector: 'mt-work-center-item-action-confirm-dialog',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, DynamicForm, Button],\n templateUrl: './work-center-item-action-confirm-dialog.html',\n})\nexport class WorkCenterItemActionConfirmDialog {\n private readonly ref = inject(ModalRef);\n readonly modal = inject(ModalService);\n\n readonly action = input.required<WorkCenterRuntimeItemAction>();\n\n protected readonly formControl = new FormControl<Record<string, unknown>>({});\n protected readonly actionLabel = computed(\n () => this.action().actionName?.display || this.action().actionKey,\n );\n protected readonly formConfig = computed<DynamicFormConfig>(() => ({\n sections: [\n {\n key: 'action-confirmation',\n type: 'none',\n fields: buildActionFields(\n this.action().payloadKeys,\n this.action().requiredPayloadKeys,\n ),\n },\n ],\n }));\n protected readonly hasFormFields = computed(\n () => this.formConfig().sections[0]?.fields.length > 0,\n );\n\n protected onCancel(): void {\n this.ref.close(null);\n }\n\n protected onConfirm(): void {\n if (this.formControl.invalid) {\n this.formControl.markAllAsTouched();\n return;\n }\n\n this.ref.close(this.formControl.getRawValue() ?? {});\n }\n}\n\nfunction buildActionFields(\n payloadKeys: string[] | undefined,\n requiredPayloadKeys: string[] | undefined,\n): DynamicFieldConfig[] {\n const requestedKeys = new Set(payloadKeys ?? []);\n const requiredKeys = new Set(requiredPayloadKeys ?? []);\n const fields: DynamicFieldConfig[] = [];\n\n if (requestedKeys.has('delegatedUser')) {\n fields.push({\n key: 'delegatedUser',\n type: 'user-search',\n label: 'Delegated User',\n placeholder: 'Search user',\n apiUrl: 'Identity/users',\n optionLabel: 'displayName',\n optionValue: 'id',\n validators: buildRequiredValidators(requiredKeys.has('delegatedUser')),\n colSpan: 12,\n } as DynamicFieldConfig);\n }\n\n if (requestedKeys.has('reason')) {\n fields.push({\n key: 'reason',\n type: 'textarea',\n label: 'Reason',\n placeholder: 'Enter reason',\n rows: 4,\n validators: buildRequiredValidators(requiredKeys.has('reason')),\n colSpan: 12,\n } as DynamicFieldConfig);\n }\n\n if (requestedKeys.has('note')) {\n fields.push({\n key: 'note',\n type: 'textarea',\n label: 'Note',\n placeholder: 'Enter note',\n rows: 4,\n validators: buildRequiredValidators(requiredKeys.has('note')),\n colSpan: 12,\n } as DynamicFieldConfig);\n }\n\n if (requestedKeys.has('attachments')) {\n fields.push({\n key: 'attachments',\n type: 'upload-file',\n label: 'Attachments',\n endPoint: 'uploader',\n multiple: true,\n title: 'Upload Attachment',\n description: 'Click or drop a file to upload',\n validators: buildRequiredValidators(requiredKeys.has('attachments')),\n colSpan: 12,\n } as DynamicFieldConfig);\n }\n\n return fields;\n}\n\nfunction buildRequiredValidators(required: boolean): ValidatorConfig[] {\n return required ? [ValidatorConfig.required()] : [];\n}\n","<div [class]=\"modal.contentClass + ' p-4'\">\n @if (hasFormFields()) {\n <mt-dynamic-form [formConfig]=\"formConfig()\" [formControl]=\"formControl\" />\n } @else {\n <p class=\"text-sm text-surface-500\">\n Confirm {{ actionLabel() }} for this item.\n </p>\n }\n</div>\n\n<div [class]=\"modal.footerClass\">\n <mt-button\n label=\"Cancel\"\n severity=\"secondary\"\n variant=\"outlined\"\n (onClick)=\"onCancel()\"\n />\n <mt-button [label]=\"actionLabel()\" (onClick)=\"onConfirm()\" />\n</div>\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 { Button } from '@masterteam/components/button';\nimport { ModalService } from '@masterteam/components/modal';\nimport { ToastService } from '@masterteam/components/toast';\nimport { Subscription, map, take } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemActionsData,\n WorkCenterItemContextKey,\n WorkCenterRuntimeItemAction,\n} from '../../../store/work-center/work-center.model';\nimport { WorkCenterItemActionConfirmDialog } from '../work-center-item-action-confirm-dialog/work-center-item-action-confirm-dialog';\nimport { WorkCenterItemActionContextStore } from '../work-center-item-action-context.store';\n\ntype FooterActionSeverity = 'primary' | 'secondary' | '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, 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 modal = inject(ModalService);\n private readonly toast = inject(ToastService);\n private readonly actionContext = inject(WorkCenterItemActionContextStore);\n\n private loadSub?: Subscription;\n private executeSub?: Subscription;\n private lastContextKey: WorkCenterItemContextKey | null = null;\n\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\n readonly actionExecuted = output<void>();\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: action.actionName?.display || action.actionKey,\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 this.executeSub?.unsubscribe();\n }\n\n protected executeAction(action: ModalFooterAction): void {\n const contextKey = this.contextKey();\n const method = normalizeMethod(action.httpMethod);\n const url = action.url?.trim();\n\n if (\n !contextKey ||\n !method ||\n !url ||\n action.isAvailable === false ||\n !!this.pendingActionKey()\n ) {\n return;\n }\n\n if (action.needConfirmation) {\n this.openConfirmationDialog(action);\n return;\n }\n\n const payload = this.buildActionPayload(action);\n if (!this.ensurePayloadIsReady(action, payload)) {\n return;\n }\n\n this.runActionRequest(action, method, url, payload);\n }\n\n private openConfirmationDialog(action: ModalFooterAction): void {\n const ref = this.modal.openModal(\n WorkCenterItemActionConfirmDialog,\n 'dialog',\n {\n header: action.label,\n width: '40rem',\n dismissableMask: true,\n inputValues: {\n action,\n },\n },\n );\n\n ref.onClose\n .pipe(take(1))\n .subscribe((formValue: Record<string, unknown> | null) => {\n if (formValue == null) {\n return;\n }\n\n const method = normalizeMethod(action.httpMethod);\n const url = action.url?.trim();\n if (!method || !url) {\n return;\n }\n\n const payload = this.buildActionPayload(action, formValue);\n if (!this.ensurePayloadIsReady(action, payload)) {\n return;\n }\n\n this.runActionRequest(action, method, url, payload);\n });\n }\n\n private runActionRequest(\n action: ModalFooterAction,\n method: string,\n url: string,\n payload: Record<string, unknown> | undefined,\n ): void {\n this.error.set(null);\n this.pendingActionKey.set(action.actionKey);\n this.executeSub?.unsubscribe();\n\n this.executeSub = this.http\n .request<unknown>(method, url, buildRequestOptions(method, payload))\n .pipe(\n map((response) =>\n resolveActionSuccessMessage(\n response,\n `${action.label} completed successfully.`,\n ),\n ),\n )\n .subscribe({\n next: (message) => {\n this.pendingActionKey.set(null);\n this.toast.success(message);\n this.reloadTick.update((value) => value + 1);\n this.actionExecuted.emit();\n },\n error: (error: unknown) => {\n const message = resolveHttpErrorMessage(\n error,\n `Failed to execute ${action.label}.`,\n );\n\n this.pendingActionKey.set(null);\n this.error.set(message);\n this.toast.error(message);\n },\n });\n }\n\n private buildActionPayload(\n action: WorkCenterRuntimeItemAction,\n formValue?: Record<string, unknown>,\n ): Record<string, unknown> | undefined {\n const payloadKeys = action.payloadKeys ?? [];\n if (!payloadKeys.length) {\n return undefined;\n }\n\n const payload: Record<string, unknown> = {};\n\n for (const key of payloadKeys) {\n const formFieldValue = formValue?.[key];\n if (formFieldValue !== undefined) {\n payload[key] = normalizePayloadValue(key, formFieldValue);\n continue;\n }\n\n const externalValue = this.resolveExternalPayloadValue(key, action);\n if (externalValue !== undefined) {\n payload[key] = externalValue;\n continue;\n }\n\n const defaultValue = resolveDefaultPayloadValue(key);\n if (defaultValue !== undefined) {\n payload[key] = defaultValue;\n }\n }\n\n return Object.keys(payload).length ? payload : undefined;\n }\n\n private ensurePayloadIsReady(\n action: ModalFooterAction,\n payload: Record<string, unknown> | undefined,\n ): payload is Record<string, unknown> | undefined {\n const missingRequiredKeys = (action.requiredPayloadKeys ?? []).filter(\n (key) => isMissingPayloadValue(payload?.[key]),\n );\n\n if (!missingRequiredKeys.length) {\n return true;\n }\n\n const message = `Cannot execute ${action.label}. Missing: ${missingRequiredKeys.join(', ')}.`;\n this.error.set(message);\n this.toast.error(message);\n return false;\n }\n\n private resolveExternalPayloadValue(\n key: string,\n action: WorkCenterRuntimeItemAction,\n ): unknown {\n switch (key) {\n case 'stepId':\n return action.stepIds?.[0];\n case 'values':\n return this.actionContext.resolveFormValues();\n default:\n return undefined;\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 buildRequestOptions(\n method: string,\n payload: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n if (!payload || !methodSupportsBody(method)) {\n return { observe: 'body' };\n }\n\n return {\n body: payload,\n observe: 'body',\n };\n}\n\nfunction methodSupportsBody(method: string): boolean {\n return ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method);\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 normalizePayloadValue(key: string, value: unknown): unknown {\n if (key === 'attachments') {\n if (value == null) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n }\n\n return value;\n}\n\nfunction resolveDefaultPayloadValue(key: string): unknown {\n switch (key) {\n case 'attachments':\n return [];\n case 'delegatedUser':\n case 'note':\n case 'reason':\n return null;\n case 'values':\n return [];\n default:\n return undefined;\n }\n}\n\nfunction isMissingPayloadValue(value: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n return false;\n}\n\nfunction resolveActionSeverity(\n actionKey: string,\n index: number,\n): FooterActionSeverity {\n const normalized = actionKey.trim().toLowerCase();\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' ? undefined : '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 resolveActionSuccessMessage(\n response: unknown,\n fallback: string,\n): string {\n if (!response || typeof response !== 'object') {\n return fallback;\n }\n\n const apiResponse = response as {\n code?: number;\n message?: string | null;\n errors?: unknown;\n };\n\n if (typeof apiResponse.code === 'number' && apiResponse.code !== 1) {\n throw new Error(resolveEnvelopeErrorMessage(apiResponse, fallback));\n }\n\n return apiResponse.message?.trim() || fallback;\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","@if (shouldRender()) {\n @if (error(); as error) {\n <span class=\"me-auto max-w-md text-sm text-red-600\">\n {{ error }}\n </span>\n } @else if (loading() && !displayActions().length) {\n <span class=\"me-auto text-sm text-surface-500\">Loading actions...</span>\n }\n\n @for (action of displayActions(); track action.actionKey + action.url) {\n <mt-button\n [label]=\"action.label\"\n [severity]=\"action.severity\"\n [variant]=\"action.variant\"\n [disabled]=\"loading() || !!pendingActionKey()\"\n [loading]=\"pendingActionKey() === action.actionKey\"\n (onClick)=\"executeAction(action)\"\n />\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 { Drawer } from '@masterteam/components/drawer';\nimport { ModalService } from '@masterteam/components/modal';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { map } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemBasicInfoData,\n WorkCenterItemContextKey,\n} from '../../store/work-center/work-center.model';\nimport { WorkCenterItemModal } from '../work-center-item-modal/work-center-item-modal';\nimport { WorkCenterItemActionContextStore } from './work-center-item-action-context.store';\nimport { WorkCenterItemModalFooterActions } from './work-center-item-modal-footer-actions/work-center-item-modal-footer-actions';\n\n@Component({\n selector: 'mt-work-center-item-modal-route',\n standalone: true,\n imports: [\n CommonModule,\n Drawer,\n SkeletonModule,\n WorkCenterItemModal,\n WorkCenterItemModalFooterActions,\n ],\n providers: [WorkCenterItemActionContextStore],\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 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 this.decodeContextKey(this.contextKey()),\n );\n protected readonly drawerTitle = computed(\n () =>\n this.readDisplayField(this.details()?.item, 'title') ?? 'Item Details',\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 : 'Failed to load item details.',\n );\n this.loading.set(false);\n },\n });\n\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n protected onActionExecuted(): void {\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 decodeContextKey(\n value: WorkCenterItemContextKey | null,\n ): WorkCenterItemContextKey | null {\n if (!value) {\n return null;\n }\n\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\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\n [visible]=\"drawerVisible()\"\n [loadingHeader]=\"loading()\"\n [title]=\"drawerTitle()\"\n [subtitle]=\"drawerSubtitle()\"\n [appendTo]=\"'system-content'\"\n styleClass=\"!w-[90%] !absolute \"\n position=\"right\"\n (visibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container content>\n @if (loading()) {\n <div class=\"p-4\" [class]=\"modal.contentClass\">\n <div class=\"flex min-h-[22rem] flex-col gap-5\">\n <div class=\"flex items-center gap-3\">\n <p-skeleton shape=\"circle\" size=\"3rem\" />\n <div class=\"flex flex-1 flex-col gap-2\">\n <p-skeleton width=\"12rem\" height=\"1rem\" />\n <p-skeleton width=\"8rem\" height=\"0.875rem\" />\n </div>\n </div>\n\n <div class=\"grid gap-3 md:grid-cols-2\">\n @for (_ of [1, 2, 3, 4]; track $index) {\n <p-skeleton height=\"5rem\" borderRadius=\"1rem\" />\n }\n </div>\n\n <p-skeleton height=\"16rem\" borderRadius=\"1rem\" />\n </div>\n </div>\n } @else if (error(); as errorMessage) {\n <div class=\"p-4\" [class]=\"modal.contentClass\">\n <div class=\"flex min-h-[22rem] items-center justify-center\">\n <p class=\"max-w-xl text-sm font-medium text-red-600\">\n {{ errorMessage }}\n </p>\n </div>\n </div>\n } @else if (details(); as details) {\n <mt-work-center-item-modal [details]=\"details\" />\n } @else {\n <div class=\"p-4\" [class]=\"modal.contentClass\">\n <div class=\"flex min-h-[22rem] items-center justify-center\">\n <p class=\"text-sm font-medium text-surface-500\">No item selected.</p>\n </div>\n </div>\n }\n </ng-container>\n\n @if (footerActionsMounted()) {\n <div footer [class]=\"modal.footerClass\">\n <mt-work-center-item-modal-footer-actions\n [contextKey]=\"resolvedContextKey()\"\n (actionExecuted)=\"onActionExecuted()\"\n (visibilityChange)=\"onFooterVisibilityChange($event)\"\n />\n </div>\n }\n</mt-drawer>\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","i1"],"mappings":"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"}
|