@acorex-platform/module-workplacesafety-management-client 0.0.28 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-isnVDChu.mjs +549 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-isnVDChu.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs +739 -806
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-CZFCMX6R.mjs +93 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-CZFCMX6R.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-C-qrrqOV.mjs → acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-D7hofHR0.mjs} +8 -93
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-D7hofHR0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-BBhH7KP1.mjs → acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-tMrUDnCb.mjs} +48 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-tMrUDnCb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-index-kF37zgd4.mjs → acorex-platform-module-workplacesafety-management-client-index-yxxC7i6A.mjs} +391 -92
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-yxxC7i6A.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs +42 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-CQtVhCgw.mjs +101 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-CQtVhCgw.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs +221 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs +61 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-C2X3VpEt.mjs → acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-Dd9xdo_y.mjs} +3 -7
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-Dd9xdo_y.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs +557 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BJsg3pHZ.mjs → acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs} +13 -25
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client.mjs +1 -460
- package/fesm2022/acorex-platform-module-workplacesafety-management-client.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-platform-module-workplacesafety-management-client-contracts.d.ts +89 -140
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-C-qrrqOV.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-BBhH7KP1.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-risk-ppe-rule-status.provider-DtqzcWh0.mjs +0 -42
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-risk-ppe-rule-status.provider-DtqzcWh0.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-kF37zgd4.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-C2X3VpEt.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BJsg3pHZ.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/catalog-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/catalog-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/hierarchy-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/hierarchy-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/ppe-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/ppe-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview.util.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/risk-matrix-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/risk-matrix-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/work-step-table-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/work-step-table-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview-modal.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview-modal.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-catalog-section-preview',\n templateUrl: './catalog-section-preview.component.html',\n styleUrl: './catalog-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXTranslationModule, AsyncPipe],\n host: {\n class: 'axm-catalog-section-preview block',\n },\n})\nexport class AXMCatalogSectionPreviewComponent {\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n}\n\n//#endregion\n","<div class=\"axm-catalog-section-preview\">\n @if (items().length > 0) {\n <!-- ----- Linked catalog items as a document bullet list ----- -->\n <ul class=\"__list\">\n @for (item of items(); track item.id) {\n <li class=\"__item\">\n <span class=\"__title\">{{ item.title }}</span>\n <!--->\n <!-- ----- Optional business code after the item title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </li>\n }\n </ul>\n }\n <!-- ----- Empty catalog section ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMControlHierarchyDiagramComponent } from '../control-hierarchy-diagram/control-hierarchy-diagram.component';\nimport { AXMControlHierarchyDiagramService } from '../control-hierarchy-diagram/control-hierarchy-diagram.service';\nimport {\n resolveControlHierarchyDiagramViewType,\n type AXMControlHierarchyDiagramItem,\n type AXMControlHierarchyDiagramViewType,\n} from '../control-hierarchy-diagram/control-hierarchy-diagram.types';\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-hierarchy-section-preview',\n templateUrl: './hierarchy-section-preview.component.html',\n styleUrl: './hierarchy-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMControlHierarchyDiagramComponent],\n host: {\n class: 'axm-hierarchy-section-preview block',\n },\n})\nexport class AXMHierarchySectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly diagramService = inject(AXMControlHierarchyDiagramService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n readonly viewType = input<unknown>();\n readonly showTitle = input<boolean | undefined>(undefined);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly diagramItems = signal<AXMControlHierarchyDiagramItem[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly resolvedViewType = computed<AXMControlHierarchyDiagramViewType>(() =>\n resolveControlHierarchyDiagramViewType(this.viewType() as Parameters<typeof resolveControlHierarchyDiagramViewType>[0]),\n );\n\n protected readonly resolvedShowTitle = computed(() => this.showTitle() === true);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.diagramItems.set([]);\n return;\n }\n\n try {\n const loaded = await this.diagramService.loadDiagramItemsByLevelIds(catalogItems.map((item) => item.id));\n if (!isCancelled()) {\n this.diagramItems.set(loaded);\n }\n } catch {\n if (!isCancelled()) {\n this.diagramItems.set([]);\n }\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Control hierarchy diagram using saved section widget options ----- -->\n<axm-control-hierarchy-diagram\n [viewType]=\"resolvedViewType()\"\n [items]=\"diagramItems()\"\n [showTitle]=\"resolvedShowTitle()\"\n [showViewTypeSelector]=\"false\"\n/>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMPpeItemViewerComponent } from '../ppe-item-viewer/ppe-item-viewer.component';\nimport { AXMPpeItemViewerService } from '../ppe-item-viewer/ppe-item-viewer.service';\nimport type { AXMPpeItemViewerDisplayItem, AXMPpeItemViewerLayout } from '../ppe-item-viewer/ppe-item-viewer.types';\nimport { resolvePpeItemViewerLayout } from '../ppe-item-viewer/ppe-item-viewer.util';\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-ppe-section-preview',\n templateUrl: './ppe-section-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMPpeItemViewerComponent],\n host: {\n class: 'axm-ppe-section-preview block',\n },\n})\nexport class AXMPpeSectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly ppeItemViewerService = inject(AXMPpeItemViewerService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n readonly layout = input<unknown>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(false);\n protected readonly displayItems = signal<AXMPpeItemViewerDisplayItem[]>([]);\n protected readonly selectedIds = signal<string[]>([]);\n\n protected readonly resolvedLayout = computed<AXMPpeItemViewerLayout>(() =>\n resolvePpeItemViewerLayout(this.layout() as Parameters<typeof resolvePpeItemViewerLayout>[0]),\n );\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSelectedIdsChange(ids: string[]): void {\n this.selectedIds.set(ids);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.displayItems.set([]);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n const fallback = catalogItems.map((item) => this.toDisplayItem(item));\n try {\n const loaded = await this.ppeItemViewerService.loadDisplayItems(catalogItems.map((item) => item.id));\n if (isCancelled()) {\n return;\n }\n const byId = new Map(loaded.map((row) => [row.id, row]));\n this.displayItems.set(fallback.map((item) => byId.get(item.id) ?? item));\n } catch {\n if (!isCancelled()) {\n this.displayItems.set(fallback);\n }\n } finally {\n if (!isCancelled()) {\n this.loading.set(false);\n }\n }\n }\n\n private toDisplayItem(item: AXMSafetyPlanPreviewCatalogItem): AXMPpeItemViewerDisplayItem {\n return {\n id: item.id,\n title: item.title,\n code: item.code,\n imageUrl: null,\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- PPE Item viewer (same component as Questionnaire; checkboxes can be toggled) ----- -->\n<axm-ppe-item-viewer\n [items]=\"displayItems()\"\n [layout]=\"resolvedLayout()\"\n [selectedIds]=\"selectedIds()\"\n [loading]=\"loading()\"\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\n/>\n","//#region ----- Imports -----\n\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport {\n isStepTableSectionType,\n normalizeStepTableColumns,\n resolveSectionTypeKey,\n sortStepTableColumns,\n stepTableColumnTitle,\n type AXMSafetyPlanSectionBuilderItemValue,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMStepTableCellValue,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport type {\n AXMSafetyPlanPreviewCatalogItem,\n AXMSafetyPlanSectionPreviewKind,\n} from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Display helpers -----\n\nexport function toSafetyPlanPreviewDisplayText(value: unknown, locale: string): string {\n return resolveEntityRowDisplayText(value, locale).trim();\n}\n\nexport function resolveSafetyPlanPreviewSectionTitle(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n locale: string,\n): string {\n return (\n toSafetyPlanPreviewDisplayText(section.title, locale) ||\n toSafetyPlanPreviewDisplayText(section.sectionType?.title, locale) ||\n toSafetyPlanPreviewDisplayText(section.sectionType?.code, locale)\n );\n}\n\n/**\n * Maps a section type to a preview renderer. New document kinds (SWMS, JSA, SOP, Permit)\n * can add cases here without changing the editor.\n */\nexport function resolveSafetyPlanSectionPreviewKind(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): AXMSafetyPlanSectionPreviewKind {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return 'work-step-table';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'RiskMatrix') {\n return 'risk-matrix';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'Ppe') {\n return 'ppe';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'HierarchyLevel') {\n return 'hierarchy';\n }\n return 'catalog';\n}\n\n/** True when the section has at least one previewable item (catalog row or work-step row). */\nexport function safetyPlanPreviewSectionHasItems(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): boolean {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return (section.items ?? []).some((item) => item.stepTableRow != null);\n }\n return collectSafetyPlanPreviewCatalogItems(section, '').length > 0;\n}\n\nexport function collectSafetyPlanPreviewCatalogItems(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n locale: string,\n): AXMSafetyPlanPreviewCatalogItem[] {\n const linked: AXMSafetyPlanPreviewCatalogItem[] = [];\n const seen = new Set<string>();\n\n for (const slot of section.items ?? []) {\n for (const item of flattenCatalogSlot(slot, locale)) {\n if (!item.id || seen.has(item.id)) {\n continue;\n }\n seen.add(item.id);\n linked.push(item);\n }\n }\n\n return linked;\n}\n\nexport function resolveSafetyPlanPreviewStepTableColumns(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): AXMStepTableColumnDef[] {\n return sortStepTableColumns(normalizeStepTableColumns(section.columns));\n}\n\nexport function formatSafetyPlanPreviewStepTableCell(\n cell: AXMStepTableCellValue | undefined,\n locale: string,\n): string {\n if (!cell) {\n return '';\n }\n const fromRefs = (cell.refs ?? [])\n .map((ref) => toSafetyPlanPreviewDisplayText(ref.title, locale) || String(ref.code ?? '').trim())\n .filter((text) => text.length > 0);\n if (fromRefs.length) {\n return fromRefs.join(', ');\n }\n const text = cell.textValue?.trim();\n if (text) {\n return text;\n }\n if (typeof cell.numberValue === 'number' && Number.isFinite(cell.numberValue)) {\n return String(cell.numberValue);\n }\n return '';\n}\n\nexport function stepTablePreviewColumnLabel(column: AXMStepTableColumnDef, locale: string): string {\n return (\n toSafetyPlanPreviewDisplayText(column.title, locale) ||\n toSafetyPlanPreviewDisplayText(column.sectionType?.title, locale) ||\n stepTableColumnTitle(column)\n );\n}\n\nfunction flattenCatalogSlot(\n slot: AXMSafetyPlanSectionBuilderItemValue,\n locale: string,\n): AXMSafetyPlanPreviewCatalogItem[] {\n const ids = Array.isArray(slot.itemIds) ? slot.itemIds : [];\n const snapshots = Array.isArray(slot.items) ? slot.items : [];\n const items: AXMSafetyPlanPreviewCatalogItem[] = [];\n\n for (let index = 0; index < ids.length; index += 1) {\n const id = String(ids[index] ?? '').trim();\n if (!id) {\n continue;\n }\n const snapshot = snapshots.find((entry) => entry?.id === id) ?? snapshots[index];\n const title =\n toSafetyPlanPreviewDisplayText(snapshot?.title, locale) ||\n String(snapshot?.code ?? '').trim() ||\n id;\n items.push({\n id,\n title,\n code: snapshot?.code,\n });\n }\n\n if (items.length === 0 && snapshots.length > 0) {\n for (const snapshot of snapshots) {\n const id = String(snapshot?.id ?? '').trim();\n if (!id) {\n continue;\n }\n items.push({\n id,\n title: toSafetyPlanPreviewDisplayText(snapshot.title, locale) || String(snapshot.code ?? '').trim() || id,\n code: snapshot.code,\n });\n }\n }\n\n return items;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService, AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { RISK_MANAGEMENT_RISK_MATRIX_CELL_ENTITY } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep } from 'lodash';\n\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\nimport { toSafetyPlanPreviewDisplayText } from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXMRiskMatrixCellRecord {\n id: string;\n title?: unknown;\n code?: unknown;\n}\n\ninterface AXMRiskMatrixPreviewItem {\n id: string;\n title: string;\n code?: string;\n context: Record<string, unknown>;\n layout: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-risk-matrix-preview',\n templateUrl: './risk-matrix-preview.component.html',\n styleUrl: './risk-matrix-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXLoadingModule, AXTranslationModule, AXPLayoutRendererComponent],\n host: {\n class: 'axm-risk-matrix-preview block',\n },\n})\nexport class AXMRiskMatrixPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(false);\n protected readonly matrices = signal<AXMRiskMatrixPreviewItem[]>([]);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.matrices.set([]);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n try {\n const loaded = await this.queryByIds(catalogItems.map((item) => item.id));\n if (isCancelled()) {\n return;\n }\n const byId = new Map(loaded.map((row) => [row.id, row]));\n const locale = this.translationService.getActiveLang() ?? 'en-US';\n this.matrices.set(\n catalogItems.flatMap((item) => {\n const row = byId.get(item.id);\n if (!row) {\n return [];\n }\n return [this.toPreviewItem(item, row, locale)];\n }),\n );\n } catch {\n if (!isCancelled()) {\n this.matrices.set([]);\n }\n } finally {\n if (!isCancelled()) {\n this.loading.set(false);\n }\n }\n }\n\n private async queryByIds(ids: string[]): Promise<AXMRiskMatrixCellRecord[]> {\n const dataAccessor = this.entityService\n .withEntity(RISK_MANAGEMENT_RISK_MATRIX_CELL_ENTITY)\n .data<string, AXMRiskMatrixCellRecord>();\n\n try {\n const result = await dataAccessor.query({\n skip: 0,\n take: Math.max(ids.length, 100),\n filter:\n ids.length === 1\n ? { field: 'id', operator: { type: 'equal' }, value: ids[0] }\n : { field: 'id', operator: { type: 'in' }, value: ids },\n });\n return result?.items ?? [];\n } catch {\n const loaded: AXMRiskMatrixCellRecord[] = [];\n for (const id of ids) {\n try {\n const row = await dataAccessor.byKey(id);\n if (row) {\n loaded.push(row);\n }\n } catch {\n /* skip missing rows */\n }\n }\n return loaded;\n }\n }\n\n private toPreviewItem(\n catalogItem: AXMSafetyPlanPreviewCatalogItem,\n row: AXMRiskMatrixCellRecord,\n locale: string,\n ): AXMRiskMatrixPreviewItem {\n const code = typeof row.code === 'string' ? row.code.trim() : catalogItem.code;\n return {\n id: catalogItem.id,\n title: toSafetyPlanPreviewDisplayText(row.title, locale) || catalogItem.title,\n code: code && code.length > 0 ? code : undefined,\n context: { ...row },\n layout: cloneDeep(this.buildMatrixLayout()),\n };\n }\n\n //#endregion\n\n //#region ----- Layout -----\n\n private buildMatrixLayout(): AXPWidgetNode {\n return this.layoutBuilder\n .create()\n .flex((flex) => {\n flex.mode('view').setDirection('column');\n flex.formField('', (field) => {\n field\n .path('matrix')\n .setShowLabel(false)\n .mode('view')\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n })\n .build();\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-risk-matrix-preview\">\n @if (loading()) {\n <!-- ----- Loading indicator while risk matrix records are fetched ----- -->\n <ax-loading></ax-loading>\n }\n <!-- ----- Empty state when no risk matrices are selected ----- -->\n @else if (matrices().length === 0) {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n <!-- ----- Selected risk matrices rendered with the RiskMatrix widget ----- -->\n @else {\n <div class=\"__items\">\n @for (item of matrices(); track item.id) {\n <article class=\"__item\">\n <header class=\"__item-header\">\n <h4 class=\"__item-title\">{{ item.title }}</h4>\n <!--->\n <!-- ----- Optional business code after the matrix title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </header>\n <div class=\"__matrix\">\n <axp-layout-renderer [layout]=\"item.layout\" [context]=\"item.context\" mode=\"view\" look=\"container\" />\n </div>\n </article>\n }\n </div>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n stepTableColumnKey,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMSafetyPlanStepTableRowBuilderPayload,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport {\n formatSafetyPlanPreviewStepTableCell,\n resolveSafetyPlanPreviewStepTableColumns,\n stepTablePreviewColumnLabel,\n} from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-work-step-table-preview',\n templateUrl: './work-step-table-preview.component.html',\n styleUrl: './work-step-table-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXTranslationModule, AsyncPipe],\n host: {\n class: 'axm-work-step-table-preview block',\n },\n})\nexport class AXMWorkStepTablePreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly section = input.required<AXMSafetyPlanSectionBuilderSectionValue>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly columns = computed(() => resolveSafetyPlanPreviewStepTableColumns(this.section()));\n\n protected readonly rows = computed((): AXMSafetyPlanStepTableRowBuilderPayload[] =>\n (this.section().items ?? [])\n .map((item) => item.stepTableRow)\n .filter((row): row is AXMSafetyPlanStepTableRowBuilderPayload => !!row)\n .sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0)),\n );\n\n //#endregion\n\n //#region ----- Display -----\n\n protected columnLabel(column: AXMStepTableColumnDef): string {\n return stepTablePreviewColumnLabel(column, this.translationService.getActiveLang() ?? 'en-US');\n }\n\n protected cellText(\n row: AXMSafetyPlanStepTableRowBuilderPayload,\n column: AXMStepTableColumnDef,\n ): string {\n const key = stepTableColumnKey(column);\n const cell = (row.cells ?? []).find((entry) => entry.columnKey === key);\n return formatSafetyPlanPreviewStepTableCell(cell, this.translationService.getActiveLang() ?? 'en-US');\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-work-step-table-preview\">\n @if (columns().length > 0 && rows().length > 0) {\n <!-- ----- Read-only work-step table ----- -->\n <div class=\"__table-wrap\">\n <table class=\"__table\">\n <thead>\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <th>{{ columnLabel(column) }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <td>{{ cellText(row, column) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- ----- Empty work-step table ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXMSafetyPlanSectionBuilderSectionValue } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport { AXMCatalogSectionPreviewComponent } from './catalog-section-preview.component';\nimport { AXMHierarchySectionPreviewComponent } from './hierarchy-section-preview.component';\nimport { AXMPpeSectionPreviewComponent } from './ppe-section-preview.component';\nimport { AXMRiskMatrixPreviewComponent } from './risk-matrix-preview.component';\nimport { AXMWorkStepTablePreviewComponent } from './work-step-table-preview.component';\nimport {\n collectSafetyPlanPreviewCatalogItems,\n resolveSafetyPlanPreviewSectionTitle,\n resolveSafetyPlanSectionPreviewKind,\n safetyPlanPreviewSectionHasItems,\n} from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-section-preview',\n templateUrl: './safety-plan-section-preview.component.html',\n styleUrl: './safety-plan-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXMCatalogSectionPreviewComponent,\n AXMHierarchySectionPreviewComponent,\n AXMPpeSectionPreviewComponent,\n AXMRiskMatrixPreviewComponent,\n AXMWorkStepTablePreviewComponent,\n ],\n host: {\n class: 'axm-safety-plan-section-preview',\n '[class.block]': 'hasItems()',\n '[hidden]': '!hasItems()',\n },\n})\nexport class AXMSafetyPlanSectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly section = input.required<AXMSafetyPlanSectionBuilderSectionValue>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n private readonly locale = computed(() => this.translationService.getActiveLang() ?? 'en-US');\n\n protected readonly kind = computed(() => resolveSafetyPlanSectionPreviewKind(this.section()));\n\n protected readonly title = computed(() =>\n resolveSafetyPlanPreviewSectionTitle(this.section(), this.locale()),\n );\n\n protected readonly catalogItems = computed(() =>\n collectSafetyPlanPreviewCatalogItems(this.section(), this.locale()),\n );\n\n protected readonly hasItems = computed(() => safetyPlanPreviewSectionHasItems(this.section()));\n\n //#endregion\n}\n\n//#endregion\n","@if (hasItems()) {\n <!-- ----- Section with at least one item ----- -->\n <section class=\"axm-safety-plan-section-preview\">\n <header class=\"__header\">\n <h3 class=\"__title\">{{ title() }}</h3>\n </header>\n\n @switch (kind()) {\n @case ('work-step-table') {\n <axm-work-step-table-preview [section]=\"section()\" />\n }\n @case ('risk-matrix') {\n <axm-risk-matrix-preview [items]=\"catalogItems()\" />\n }\n @case ('ppe') {\n <axm-ppe-section-preview [items]=\"catalogItems()\" [layout]=\"section().widgetOptions?.layout\" />\n }\n @case ('hierarchy') {\n <axm-hierarchy-section-preview\n [items]=\"catalogItems()\"\n [viewType]=\"section().widgetOptions?.viewType\"\n [showTitle]=\"section().widgetOptions?.showTitle\"\n />\n }\n @default {\n <axm-catalog-section-preview [items]=\"catalogItems()\" />\n }\n }\n </section>\n}\n","//#region ----- Imports -----\n\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation,\n} from '@angular/core';\nimport type { AXMSafetyPlanSectionBuilderValue } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { normalizeSafetyPlanSectionBuilderValue } from '../safety-plan-sections-page/safety-plan-section-builder.types';\n\nimport { AXMSafetyPlanSectionPreviewComponent } from './safety-plan-section-preview.component';\nimport { safetyPlanPreviewSectionHasItems } from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-preview-modal',\n templateUrl: './safety-plan-preview-modal.component.html',\n styleUrl: './safety-plan-preview-modal.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTranslationModule, AsyncPipe, AXMSafetyPlanSectionPreviewComponent],\n host: {\n class: 'axm-safety-plan-preview-modal-host flex flex-col w-full h-full',\n },\n})\nexport class AXMSafetyPlanPreviewModalComponent extends AXBasePageComponent {\n //#region ----- Inputs -----\n\n readonly structure = input<AXMSafetyPlanSectionBuilderValue>({ sections: [] });\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly sections = computed(() => {\n const raw = this.safeInputValue(this.structure);\n return [...normalizeSafetyPlanSectionBuilderValue(raw).sections]\n .sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0))\n .filter((section) => safetyPlanPreviewSectionHasItems(section));\n });\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private safeInputValue<T>(inputOrValue: T | (() => T)): T {\n return typeof inputOrValue === 'function' ? (inputOrValue as () => T)() : (inputOrValue as T);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-safety-plan-preview-modal __content-area\">\n @if (sections().length === 0) {\n <!-- ----- Empty state when the plan has no sections ----- -->\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty' | translate | async }}\n </p>\n }\n <!-- ----- Read-only document blocks in configured section order ----- -->\n @else {\n <div class=\"__document\">\n @for (section of sections(); track section.id) {\n <axm-safety-plan-section-preview [section]=\"section\" />\n }\n </div>\n }\n</div>\n"],"names":["i2"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { extractRequestErrorInfo } from '@acorex-platform/framework-client/commo
|
|
|
3
3
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { inject, Injectable } from '@angular/core';
|
|
6
|
-
import { resolveEntityRefId, enrichSectionTypeSnapshot, isStepTableSectionType, normalizeStepTableColumns, normalizeStepTableRows, stepTableColumnTitle, RootConfig, dedupeSafetyPlanSectionStructure,
|
|
6
|
+
import { resolveEntityRefId, enrichSectionTypeSnapshot, isStepTableSectionType, normalizeStepTableColumns, normalizeStepTableRows, stepTableColumnTitle, RootConfig, dedupeSafetyPlanSectionStructure, collectBuiltInRepeatableSectionTypeIds } from '@acorex-platform/module-workplacesafety-management-client/contracts';
|
|
7
7
|
import { AXPDataGenerator } from '@acorex-platform/framework-client/core';
|
|
8
8
|
|
|
9
9
|
function createSafetyPlanSectionBuilderDefaultValue() {
|
|
@@ -40,6 +40,7 @@ function safetyPlanSectionsToBuilderValue(rows) {
|
|
|
40
40
|
sortOrder: row.sortOrder ?? index + 1,
|
|
41
41
|
workStepTypeId,
|
|
42
42
|
workStepType: legacyItem?.workStepType,
|
|
43
|
+
widgetOptions: normalizeWidgetOptions(row.widgetOptions),
|
|
43
44
|
columns: [],
|
|
44
45
|
items: (row.items ?? []).map((item, itemIndex) => ({
|
|
45
46
|
id: `${row.id}__item_${itemIndex + 1}`,
|
|
@@ -97,6 +98,7 @@ function builderValueToSafetyPlanSectionPayloads(value, safetyPlanId) {
|
|
|
97
98
|
workStepTypeId: section.workStepTypeId,
|
|
98
99
|
workStepType: section.workStepType,
|
|
99
100
|
columns: section.columns,
|
|
101
|
+
widgetOptions: section.widgetOptions,
|
|
100
102
|
items: section.items.map((item) => ({
|
|
101
103
|
...item,
|
|
102
104
|
itemIds: [...(item.itemIds ?? [])],
|
|
@@ -160,11 +162,18 @@ function normalizeSection(section, index) {
|
|
|
160
162
|
workStepTypeId,
|
|
161
163
|
workStepType: section.workStepType,
|
|
162
164
|
columns: normalizeStepTableColumns(section.columns),
|
|
165
|
+
widgetOptions: normalizeWidgetOptions(section.widgetOptions),
|
|
163
166
|
items: Array.isArray(section.items)
|
|
164
167
|
? section.items.map((item) => normalizeItem(item, id, sectionTypeId, section.sectionType))
|
|
165
168
|
: [],
|
|
166
169
|
};
|
|
167
170
|
}
|
|
171
|
+
function normalizeWidgetOptions(value) {
|
|
172
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
return { ...value };
|
|
176
|
+
}
|
|
168
177
|
function normalizeItem(item, sectionId, sectionTypeId, sectionType) {
|
|
169
178
|
const isStepTable = isStepTableSectionType(sectionTypeId, sectionType);
|
|
170
179
|
if (isStepTable && item.stepTableRow) {
|
|
@@ -220,20 +229,8 @@ class AXMSaveSafetyPlanSectionsCommand {
|
|
|
220
229
|
const workStepData = this.entityService.withEntity(workStepEntityRef).data();
|
|
221
230
|
try {
|
|
222
231
|
const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds(sectionTypeEntityRef);
|
|
223
|
-
// Dedupe accidental ghost rows
|
|
232
|
+
// Dedupe accidental ghost rows (same type-section source materialized twice).
|
|
224
233
|
const value = dedupeSafetyPlanSectionStructure(rawValue, { repeatableSectionTypeIds });
|
|
225
|
-
const duplicateTypeId = findDuplicateSafetyPlanSectionTypeId(value.sections ?? [], {
|
|
226
|
-
repeatableSectionTypeIds,
|
|
227
|
-
});
|
|
228
|
-
if (duplicateTypeId) {
|
|
229
|
-
return {
|
|
230
|
-
success: false,
|
|
231
|
-
message: {
|
|
232
|
-
type: 'error',
|
|
233
|
-
text: SAFETY_PLAN_SECTION_DUPLICATE_SECTION_TYPE_MESSAGE_KEY,
|
|
234
|
-
},
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
234
|
const existing = await this.queryPlanSections(sectionData, safetyPlanId);
|
|
238
235
|
const existingRows = existing.items ?? [];
|
|
239
236
|
const existingIds = new Set(existingRows.map((row) => String(row.id ?? '')));
|
|
@@ -293,6 +290,7 @@ class AXMSaveSafetyPlanSectionsCommand {
|
|
|
293
290
|
sourceSafetyPlanTypeSectionId: payload.sourceSafetyPlanTypeSectionId,
|
|
294
291
|
sortOrder: payload.sortOrder,
|
|
295
292
|
items: itemRows,
|
|
293
|
+
...(payload.widgetOptions !== undefined ? { widgetOptions: payload.widgetOptions } : {}),
|
|
296
294
|
};
|
|
297
295
|
if (existingIds.has(payload.id)) {
|
|
298
296
|
await sectionData.update(payload.id, entityPayload);
|
|
@@ -329,16 +327,6 @@ class AXMSaveSafetyPlanSectionsCommand {
|
|
|
329
327
|
return mapEntityStorageErrorToCommandResult(error);
|
|
330
328
|
}
|
|
331
329
|
const httpInfo = extractRequestErrorInfo(error);
|
|
332
|
-
if (httpInfo?.code === SAFETY_PLAN_SECTION_DUPLICATE_SECTION_TYPE_CODE) {
|
|
333
|
-
return {
|
|
334
|
-
success: false,
|
|
335
|
-
message: {
|
|
336
|
-
type: 'error',
|
|
337
|
-
code: SAFETY_PLAN_SECTION_DUPLICATE_SECTION_TYPE_CODE,
|
|
338
|
-
text: SAFETY_PLAN_SECTION_DUPLICATE_SECTION_TYPE_MESSAGE_KEY,
|
|
339
|
-
},
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
330
|
const text = (typeof httpInfo?.message === 'string' && httpInfo.message.startsWith('@')
|
|
343
331
|
? httpInfo.message
|
|
344
332
|
: null) ??
|
|
@@ -458,4 +446,4 @@ var saveSafetyPlanSections_command = /*#__PURE__*/Object.freeze({
|
|
|
458
446
|
});
|
|
459
447
|
|
|
460
448
|
export { AXMSaveSafetyPlanSectionsCommand as A, SAFETY_PLAN_SECTIONS_SAVE_COMMAND as S, safetyPlanSectionsToBuilderValue as a, saveSafetyPlanSections_command as b, hydrateStepTableSectionsWithWorkSteps as h, normalizeSafetyPlanSectionBuilderValue as n, summarizeStepTableRow as s };
|
|
461
|
-
//# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-
|
|
449
|
+
//# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-builder.types.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/save-safety-plan-sections.command.ts"],"sourcesContent":["import { AXPDataGenerator } from '@acorex-platform/framework-client/core';\nimport {\n enrichSectionTypeSnapshot,\n isStepTableSectionType,\n normalizeStepTableColumns,\n normalizeStepTableRows,\n resolveEntityRefId,\n stepTableColumnTitle,\n type AXMSafetyPlanSectionBuilderItemValue,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMSafetyPlanSectionBuilderValue,\n type AXMSafetyPlanStepTableRowBuilderPayload,\n type AXMStepTableCellValue,\n type AXMStepTableColumnDef,\n type AXMWorkplaceSafetyManagementSafetyPlanSectionEntityModel,\n type AXMWorkplaceSafetyManagementSafetyPlanWorkStepEntityModel,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nexport function createSafetyPlanSectionBuilderDefaultValue(): AXMSafetyPlanSectionBuilderValue {\n return { sections: [] };\n}\n\nexport function normalizeSafetyPlanSectionBuilderValue(\n value: AXMSafetyPlanSectionBuilderValue | null | undefined,\n): AXMSafetyPlanSectionBuilderValue {\n if (!value || !Array.isArray(value.sections)) {\n return createSafetyPlanSectionBuilderDefaultValue();\n }\n\n return {\n sections: value.sections.map((section, index) => normalizeSection(section, index)),\n };\n}\n\nexport function safetyPlanSectionsToBuilderValue(\n rows: AXMWorkplaceSafetyManagementSafetyPlanSectionEntityModel[],\n): AXMSafetyPlanSectionBuilderValue {\n const ordered = [...rows].sort(\n (a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0) || String(a.code ?? '').localeCompare(String(b.code ?? '')),\n );\n return {\n sections: ordered.map((row, index) => {\n const legacyItem = row.items?.[0];\n const sectionTypeId =\n resolveEntityRefId(legacyItem?.sectionTypeId) ??\n resolveEntityRefId(legacyItem?.sectionType) ??\n '';\n const workStepTypeId =\n resolveEntityRefId(legacyItem?.workStepTypeId) ??\n resolveEntityRefId(legacyItem?.workStepType) ??\n undefined;\n return {\n id: row.id,\n sectionTypeId,\n sectionType: enrichSectionTypeSnapshot(sectionTypeId, legacyItem?.sectionType),\n title: row.title,\n description: row.description ?? '',\n safetyPlanId: row.safetyPlanId,\n code: row.code,\n sourceSafetyPlanTypeSectionId: row.sourceSafetyPlanTypeSectionId,\n sortOrder: row.sortOrder ?? index + 1,\n workStepTypeId,\n workStepType: legacyItem?.workStepType,\n widgetOptions: normalizeWidgetOptions(row.widgetOptions),\n columns: [],\n items: (row.items ?? []).map((item, itemIndex) => ({\n id: `${row.id}__item_${itemIndex + 1}`,\n itemIds: [...(item.itemIds ?? [])],\n items: item.items ? [...item.items] : [],\n })),\n };\n }),\n };\n}\n\n/** Merges SafetyPlanWorkStep row entities into Step Table sections. */\nexport function hydrateStepTableSectionsWithWorkSteps(\n value: AXMSafetyPlanSectionBuilderValue,\n workSteps: AXMWorkplaceSafetyManagementSafetyPlanWorkStepEntityModel[],\n columnsByWorkStepTypeId?: ReadonlyMap<string, AXMStepTableColumnDef[]>,\n): AXMSafetyPlanSectionBuilderValue {\n const bySection = new Map<string, AXMWorkplaceSafetyManagementSafetyPlanWorkStepEntityModel[]>();\n for (const step of workSteps) {\n const sectionId = resolveEntityRefId(step.safetyPlanSectionId) ?? '';\n if (!sectionId) {\n continue;\n }\n const list = bySection.get(sectionId) ?? [];\n list.push(step);\n bySection.set(sectionId, list);\n }\n\n return {\n sections: value.sections.map((section) => {\n if (!isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return section;\n }\n const steps = [...(bySection.get(section.id) ?? [])].sort(\n (a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0) || String(a.code ?? '').localeCompare(String(b.code ?? '')),\n );\n const workStepTypeId =\n section.workStepTypeId ||\n (steps[0] ? resolveEntityRefId(steps[0].workStepTypeId) ?? undefined : undefined);\n const columns =\n (workStepTypeId && columnsByWorkStepTypeId?.get(workStepTypeId)) ||\n normalizeStepTableColumns(steps[0]?.columns) ||\n section.columns ||\n [];\n return {\n ...section,\n workStepTypeId,\n workStepType: section.workStepType ?? steps[0]?.workStepType,\n columns,\n items: steps.map((step) => toBuilderItemFromWorkStepRow(step, columns)),\n };\n }),\n };\n}\n\nexport function builderValueToSafetyPlanSectionPayloads(\n value: AXMSafetyPlanSectionBuilderValue,\n safetyPlanId: string,\n): Array<{\n id: string;\n safetyPlanId: string;\n title: string;\n description?: string;\n sectionTypeId: string;\n sectionType?: AXMSafetyPlanSectionBuilderSectionValue['sectionType'];\n sourceSafetyPlanTypeSectionId?: string;\n sortOrder: number;\n workStepTypeId?: string;\n workStepType?: AXMSafetyPlanSectionBuilderSectionValue['workStepType'];\n columns?: AXMStepTableColumnDef[];\n widgetOptions?: AXMSafetyPlanSectionBuilderSectionValue['widgetOptions'];\n items: AXMSafetyPlanSectionBuilderItemValue[];\n}> {\n return value.sections.map((section, index) => ({\n id: section.id,\n safetyPlanId,\n title: section.title,\n description: section.description?.trim() ? section.description.trim() : undefined,\n sectionTypeId: section.sectionTypeId,\n sectionType: section.sectionType,\n sourceSafetyPlanTypeSectionId: section.sourceSafetyPlanTypeSectionId,\n sortOrder: typeof section.sortOrder === 'number' ? section.sortOrder : index + 1,\n workStepTypeId: section.workStepTypeId,\n workStepType: section.workStepType,\n columns: section.columns,\n widgetOptions: section.widgetOptions,\n items: section.items.map((item) => ({\n ...item,\n itemIds: [...(item.itemIds ?? [])],\n items: item.items ? [...item.items] : [],\n stepTableRow: item.stepTableRow ? normalizeStepTableRowPayload(item.stepTableRow) : undefined,\n })),\n }));\n}\n\nfunction toBuilderItemFromWorkStepRow(\n step: AXMWorkplaceSafetyManagementSafetyPlanWorkStepEntityModel,\n columns: AXMStepTableColumnDef[],\n): AXMSafetyPlanSectionBuilderItemValue {\n const normalizedColumns = normalizeStepTableColumns(columns.length ? columns : step.columns);\n const cells =\n normalizeStepTableRows(\n [{ id: step.id, sortOrder: step.sortOrder ?? 1, cells: step.cells ?? [] }],\n normalizedColumns,\n )[0]?.cells ??\n step.cells ??\n [];\n const title = step.title?.trim() || summarizeStepTableRow(cells, normalizedColumns);\n return {\n id: step.id,\n itemIds: [step.id],\n items: [{ id: step.id, title, code: step.code }],\n stepTableRow: {\n cells,\n code: step.code,\n sortOrder: step.sortOrder,\n title,\n },\n };\n}\n\nexport function summarizeStepTableRow(\n cells: AXMStepTableCellValue[],\n columns: AXMStepTableColumnDef[],\n): string {\n for (const column of columns) {\n const key = column.sectionTypeId;\n const cell = cells.find((entry) => entry.columnKey === key);\n if (!cell) {\n continue;\n }\n const fromRefs = cell.refs?.[0]?.title || cell.refs?.[0]?.code;\n if (fromRefs) {\n return fromRefs;\n }\n if (cell.textValue?.trim()) {\n return cell.textValue.trim();\n }\n }\n return columns[0] ? stepTableColumnTitle(columns[0]) : 'Row';\n}\n\nfunction normalizeSection(\n section: Partial<AXMSafetyPlanSectionBuilderSectionValue>,\n index: number,\n): AXMSafetyPlanSectionBuilderSectionValue {\n const id = typeof section.id === 'string' && section.id ? section.id : AXPDataGenerator.uuid();\n const sectionTypeId = resolveEntityRefId(section.sectionTypeId) ?? '';\n const workStepTypeId = resolveEntityRefId(section.workStepTypeId) ?? undefined;\n return {\n id,\n sectionTypeId,\n sectionType: enrichSectionTypeSnapshot(sectionTypeId, section.sectionType),\n title: typeof section.title === 'string' ? section.title : '',\n description: typeof section.description === 'string' ? section.description : '',\n safetyPlanId: typeof section.safetyPlanId === 'string' ? section.safetyPlanId : undefined,\n code: typeof section.code === 'string' ? section.code : undefined,\n sourceSafetyPlanTypeSectionId:\n typeof section.sourceSafetyPlanTypeSectionId === 'string'\n ? section.sourceSafetyPlanTypeSectionId\n : undefined,\n sortOrder: typeof section.sortOrder === 'number' ? section.sortOrder : index + 1,\n required: section.required === true,\n workStepTypeId,\n workStepType: section.workStepType,\n columns: normalizeStepTableColumns(section.columns),\n widgetOptions: normalizeWidgetOptions(section.widgetOptions),\n items: Array.isArray(section.items)\n ? section.items.map((item) => normalizeItem(item, id, sectionTypeId, section.sectionType))\n : [],\n };\n}\n\nfunction normalizeWidgetOptions(\n value: AXMSafetyPlanSectionBuilderSectionValue['widgetOptions'] | unknown,\n): AXMSafetyPlanSectionBuilderSectionValue['widgetOptions'] | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined;\n }\n return { ...(value as NonNullable<AXMSafetyPlanSectionBuilderSectionValue['widgetOptions']>) };\n}\n\nfunction normalizeItem(\n item: Partial<AXMSafetyPlanSectionBuilderItemValue>,\n sectionId: string,\n sectionTypeId: string,\n sectionType: AXMSafetyPlanSectionBuilderSectionValue['sectionType'],\n): AXMSafetyPlanSectionBuilderItemValue {\n const isStepTable = isStepTableSectionType(sectionTypeId, sectionType);\n if (isStepTable && item.stepTableRow) {\n const stepTableRow = normalizeStepTableRowPayload(item.stepTableRow);\n const stepId =\n typeof item.id === 'string' && item.id && !item.id.includes('__item_') && !item.id.includes('__entity_')\n ? item.id\n : AXPDataGenerator.uuid();\n const title = stepTableRow.title?.trim() || 'Row';\n return {\n id: stepId,\n itemIds: [stepId],\n items: [{ id: stepId, title, code: stepTableRow.code }],\n stepTableRow,\n };\n }\n\n const id = typeof item.id === 'string' && item.id ? item.id : AXPDataGenerator.uuid();\n return {\n id: id.includes('__item_') || id.includes('__entity_') ? id : `${sectionId}__item_${id}`,\n itemIds: Array.isArray(item.itemIds) ? item.itemIds.filter((x): x is string => typeof x === 'string') : [],\n items: Array.isArray(item.items) ? item.items : [],\n };\n}\n\nfunction normalizeStepTableRowPayload(\n payload: AXMSafetyPlanStepTableRowBuilderPayload,\n): AXMSafetyPlanStepTableRowBuilderPayload {\n return {\n cells: Array.isArray(payload.cells) ? payload.cells : [],\n code: typeof payload.code === 'string' ? payload.code : undefined,\n sortOrder: typeof payload.sortOrder === 'number' ? payload.sortOrder : undefined,\n title: typeof payload.title === 'string' ? payload.title : undefined,\n };\n}\n\nexport type {\n AXMSafetyPlanSectionBuilderItemValue,\n AXMSafetyPlanSectionBuilderSectionValue,\n AXMSafetyPlanSectionBuilderValue,\n AXMSafetyPlanStepTableRowBuilderPayload,\n};\n","import {\n AXPEntityService,\n isAXPMiddlewareAbortError,\n mapEntityStorageErrorToCommandResult,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXMSafetyPlanSectionBuilderValue,\n RootConfig,\n collectBuiltInRepeatableSectionTypeIds,\n dedupeSafetyPlanSectionStructure,\n isStepTableSectionType,\n normalizeStepTableColumns,\n resolveEntityRefId,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n builderValueToSafetyPlanSectionPayloads,\n safetyPlanSectionsToBuilderValue,\n summarizeStepTableRow,\n} from './safety-plan-section-builder.types';\n\nexport const SAFETY_PLAN_SECTIONS_SAVE_COMMAND = 'SafetyPlan:Sections:Save';\n\nexport interface SaveSafetyPlanSectionsInput {\n id: string;\n value: AXMSafetyPlanSectionBuilderValue;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMSaveSafetyPlanSectionsCommand implements AXPCommand<SaveSafetyPlanSectionsInput, unknown> {\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: SaveSafetyPlanSectionsInput): AXPCommandExecuteResultPromise<unknown> {\n const safetyPlanId = input?.id;\n const rawValue = input?.value ?? { sections: [] };\n\n if (!safetyPlanId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const sectionEntityRef = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanSection.name}`;\n const sectionTypeEntityRef = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;\n const workStepEntityRef = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanWorkStep.name}`;\n const sectionData = this.entityService.withEntity(sectionEntityRef).data();\n const workStepData = this.entityService.withEntity(workStepEntityRef).data();\n\n try {\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds(sectionTypeEntityRef);\n\n // Dedupe accidental ghost rows (same type-section source materialized twice).\n const value = dedupeSafetyPlanSectionStructure(rawValue, { repeatableSectionTypeIds });\n\n const existing = await this.queryPlanSections(sectionData, safetyPlanId);\n const existingRows = existing.items ?? [];\n const existingIds = new Set(existingRows.map((row) => String((row as { id?: string }).id ?? '')));\n const nextIds = new Set(value.sections.map((section) => section.id));\n\n for (const row of existingRows) {\n const rowId = String((row as { id?: string }).id ?? '');\n if (rowId && !nextIds.has(rowId)) {\n await this.deleteWorkStepsForSection(workStepData, rowId);\n await sectionData.delete(rowId);\n }\n }\n\n const payloads = builderValueToSafetyPlanSectionPayloads(value, safetyPlanId);\n for (const payload of payloads) {\n const isStepTable = isStepTableSectionType(payload.sectionTypeId, payload.sectionType);\n const columns = normalizeStepTableColumns(payload.columns);\n\n if (isStepTable) {\n await this.syncWorkStepsForSection(\n workStepData,\n safetyPlanId,\n payload.id,\n payload.workStepTypeId,\n payload.workStepType,\n columns,\n payload.items,\n );\n }\n\n const itemRows = isStepTable\n ? [\n {\n sectionTypeId: payload.sectionTypeId,\n sectionType: payload.sectionType,\n workStepTypeId: payload.workStepTypeId,\n workStepType: payload.workStepType,\n itemIds: payload.items\n .map((item) => item.id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0),\n items: payload.items.map((item) => ({\n id: item.id,\n title:\n item.stepTableRow?.title ??\n summarizeStepTableRow(item.stepTableRow?.cells ?? [], columns) ??\n item.items?.[0]?.title,\n code: item.stepTableRow?.code ?? item.items?.[0]?.code,\n })),\n },\n ]\n : payload.items.length > 0\n ? payload.items.map(({ itemIds, items }) => ({\n sectionTypeId: payload.sectionTypeId,\n sectionType: payload.sectionType,\n itemIds,\n items,\n }))\n : [\n {\n sectionTypeId: payload.sectionTypeId,\n sectionType: payload.sectionType,\n itemIds: [] as string[],\n items: [] as { id: string; title?: string; code?: string }[],\n },\n ];\n\n const entityPayload = {\n safetyPlanId: payload.safetyPlanId,\n title: payload.title,\n description: payload.description,\n sourceSafetyPlanTypeSectionId: payload.sourceSafetyPlanTypeSectionId,\n sortOrder: payload.sortOrder,\n items: itemRows,\n ...(payload.widgetOptions !== undefined ? { widgetOptions: payload.widgetOptions } : {}),\n };\n\n if (existingIds.has(payload.id)) {\n await sectionData.update(payload.id, entityPayload as never);\n } else {\n await sectionData.create({ ...entityPayload, id: payload.id } as never);\n }\n }\n\n const refreshed = await this.queryPlanSections(sectionData, safetyPlanId);\n const deduped = dedupeSafetyPlanSectionStructure(\n safetyPlanSectionsToBuilderValue(\n (refreshed.items ?? []) as Parameters<typeof safetyPlanSectionsToBuilderValue>[0],\n ),\n { repeatableSectionTypeIds },\n );\n const keepIds = new Set(deduped.sections.map((section) => section.id));\n\n for (const row of refreshed.items ?? []) {\n const rowId = String((row as { id?: string }).id ?? '');\n if (rowId && !keepIds.has(rowId)) {\n await this.deleteWorkStepsForSection(workStepData, rowId);\n await sectionData.delete(rowId);\n }\n }\n\n const cleaned =\n keepIds.size === (refreshed.items ?? []).length\n ? refreshed\n : await this.queryPlanSections(sectionData, safetyPlanId);\n\n const sections = (cleaned.items ?? []).filter((row) =>\n keepIds.has(String((row as { id?: string }).id ?? '')),\n );\n\n return {\n success: true,\n kind: 'object',\n data: { id: safetyPlanId, value, sections },\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.success.description'),\n },\n };\n } catch (error) {\n if (isAXPMiddlewareAbortError(error)) {\n return mapEntityStorageErrorToCommandResult(error);\n }\n\n const httpInfo = extractRequestErrorInfo(error);\n const text =\n (typeof httpInfo?.message === 'string' && httpInfo.message.startsWith('@')\n ? httpInfo.message\n : null) ??\n (error instanceof Error && error.message.startsWith('@') ? error.message : null) ??\n (await this.translationService.translateAsync('@general:messages.generic.error.description'));\n\n return {\n success: false,\n message: { type: 'error', text },\n };\n }\n }\n\n private async syncWorkStepsForSection(\n workStepData: ReturnType<ReturnType<AXPEntityService['withEntity']>['data']>,\n safetyPlanId: string,\n sectionId: string,\n workStepTypeId: string | undefined,\n workStepType: { id: string; title?: string; code?: string } | undefined,\n columns: ReturnType<typeof normalizeStepTableColumns>,\n items: ReturnType<typeof builderValueToSafetyPlanSectionPayloads>[number]['items'],\n ): Promise<void> {\n const existing = await workStepData.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanSectionId', operator: { type: 'equal' }, value: sectionId }],\n },\n } as never);\n\n const existingRows = existing.items ?? [];\n const existingIds = new Set(existingRows.map((row) => String((row as { id?: string }).id ?? '')));\n const nextIds = new Set(\n items.map((item) => item.id).filter((id): id is string => typeof id === 'string' && id.length > 0),\n );\n\n for (const row of existingRows) {\n const rowId = String((row as { id?: string }).id ?? '');\n if (rowId && !nextIds.has(rowId)) {\n await workStepData.delete(rowId);\n }\n }\n\n if (!workStepTypeId) {\n return;\n }\n\n for (const [index, item] of items.entries()) {\n const stepTableRow = item.stepTableRow;\n if (!stepTableRow || !item.id) {\n continue;\n }\n const title =\n stepTableRow.title?.trim() ||\n summarizeStepTableRow(stepTableRow.cells ?? [], columns) ||\n item.items?.[0]?.title;\n const entityPayload = {\n safetyPlanId,\n safetyPlanSectionId: sectionId,\n workStepTypeId,\n workStepType: workStepType ?? { id: workStepTypeId },\n title,\n columns,\n cells: stepTableRow.cells ?? [],\n sortOrder: stepTableRow.sortOrder ?? index + 1,\n };\n\n if (existingIds.has(item.id)) {\n await workStepData.update(item.id, entityPayload as never);\n } else {\n await workStepData.create({ ...entityPayload, id: item.id } as never);\n }\n }\n }\n\n private async deleteWorkStepsForSection(\n workStepData: ReturnType<ReturnType<AXPEntityService['withEntity']>['data']>,\n sectionId: string,\n ): Promise<void> {\n const existing = await workStepData.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanSectionId', operator: { type: 'equal' }, value: sectionId }],\n },\n } as never);\n for (const row of existing.items ?? []) {\n const rowId = String((row as { id?: string }).id ?? '');\n if (rowId) {\n await workStepData.delete(rowId);\n }\n }\n }\n\n private async loadRepeatableSectionTypeIds(sectionTypeEntityRef: string): Promise<string[]> {\n const builtIn = collectBuiltInRepeatableSectionTypeIds();\n try {\n // Prefer client-side filtering — boolean equality filters can miss stored values.\n const result = await this.entityService.withEntity(sectionTypeEntityRef).data().query({\n skip: 0,\n take: 1000,\n } as never);\n const fromQuery = (result.items ?? [])\n .filter((row) => (row as { isRepeatable?: unknown }).isRepeatable === true)\n .map((row) => resolveEntityRefId((row as { id?: unknown }).id))\n .filter((id): id is string => !!id);\n return [...new Set([...fromQuery, ...builtIn])];\n } catch {\n return builtIn;\n }\n }\n\n private queryPlanSections(\n sectionData: ReturnType<ReturnType<AXPEntityService['withEntity']>['data']>,\n safetyPlanId: string,\n ) {\n return sectionData.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanId', operator: { type: 'equal' }, value: safetyPlanId }],\n },\n } as never);\n }\n}\n"],"names":[],"mappings":"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"}
|