@acorex-platform/module-risk-management-client 0.0.21
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-risk-management-client-contracts.mjs +170 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs +103 -0
- package/fesm2022/acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client.mjs +1089 -0
- package/fesm2022/acorex-platform-module-risk-management-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-module-risk-management-client-contracts.d.ts +201 -0
- package/types/acorex-platform-module-risk-management-client.d.ts +155 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-risk-management-client.mjs","sources":["../../../../libs/modules/risk-management/client/src/lib/menu.provider.ts","../../../../libs/modules/risk-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/manifest.ts","../../../../libs/modules/risk-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget.config.ts","../../../../libs/modules/risk-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/risk-management.module.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-rating-badge-color.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.html","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer.service.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer-open.util.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-column.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-edit.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-view.component.ts","../../../../libs/modules/risk-management/client/src/acorex-platform-module-risk-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport { AXMRiskManagementMenuKeys } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu provider ----\n\nexport class AXMRiskManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const entities = RootConfig.entities;\n const keys = AXPSafetyRiskPermissionKeys;\n\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMRiskManagementMenuKeys.Root,\n priority: 8950,\n text: `@${RootConfig.config.i18n}:module.menus.risk`,\n icon: module.icon,\n type: 'menu',\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: AXMRiskManagementMenuKeys.RiskMatrixCells,\n text: entities.riskMatrixCell.titlePlural,\n icon: entities.riskMatrixCell.icon,\n priority: 1,\n path: this.entityService.createPath(module.name, entities.riskMatrixCell.name),\n policy: {\n permissions: [keys.MaintainRisk],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskLikelihoods,\n text: entities.riskLikelihood.titlePlural,\n icon: entities.riskLikelihood.icon,\n priority: 2,\n path: this.entityService.createPath(module.name, entities.riskLikelihood.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskSeverities,\n text: entities.riskSeverity.titlePlural,\n icon: entities.riskSeverity.icon,\n priority: 3,\n path: this.entityService.createPath(module.name, entities.riskSeverity.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskRatings,\n text: entities.riskRating.titlePlural,\n icon: entities.riskRating.icon,\n priority: 4,\n path: this.entityService.createPath(module.name, entities.riskRating.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\r\n\r\nimport {\r\n AXPPermissionDefinitionProvider,\r\n AXPPermissionDefinitionProviderContext,\r\n} from '@acorex-platform/framework-client/auth';\r\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n//#endregion\r\n\r\n//#region ---- Permission Definition Provider ----\r\n\r\n/**\r\n * Registers risk capabilities into the shared Safety & Risk group.\r\n */\r\n@Injectable()\r\nexport class AXMRiskManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\r\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\r\n const keys = AXPSafetyRiskPermissionKeys;\r\n const groups = AXPCommonPermissionGroupKeys;\r\n const P = '@common:safety-risk.permissions';\r\n const G = '@common:permission-groups';\r\n\r\n context.addGroup(groups.SafetyRisk.Root, `${G}.safety-risk.title`, `${G}.safety-risk.description`, { order: 30 });\n\n context\n .addGroup(\n groups.SafetyRisk.Risk,\n `${G}.safety-risk-risk.title`,\n `${G}.safety-risk-risk.description`,\n { parent: groups.SafetyRisk.Root, order: 20 },\n )\n .addPermission(keys.MaintainRisk, `${P}.maintain-risk.title`, `${P}.maintain-risk.description`)\r\n .endPermission()\r\r\n .endGroup();\r\n }\r\n}\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Risk Management module manifest.\n */\nexport const RiskManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'workplace-safety',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport { RISK_CATALOG_SCOPE_HAZARD, RISK_CATALOG_SCOPE_PPE_ITEMS } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst RISK_MATRIX_CELL = `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}`;\n\nconst RISK_MATRIX_CELL_CATALOG_TARGETS = [RISK_MATRIX_CELL] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMRiskManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: RISK_CATALOG_SCOPE_HAZARD,\n title: '@risk-management:catalog-scopes.hazard.title',\n description: '@risk-management:catalog-scopes.hazard.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-triangle-exclamation',\n cssClass: 'warning-lighter-surface',\n order: 20,\n },\n {\n name: RISK_CATALOG_SCOPE_PPE_ITEMS,\n title: '@risk-management:catalog-scopes.ppe-items.title',\n description: '@risk-management:catalog-scopes.ppe-items.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-helmet-safety',\n cssClass: 'info-lighter-surface',\n order: 21,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_READONLY_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\n\n//#endregion\n\n//#region ---- Widget Config ----\n\nexport const AXMRiskMatrixWidget: AXPWidgetConfig<AXMRiskMatrixWidgetConfigType> = {\n name: 'risk-matrix-editor',\n title: 'Risk Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for mapping likelihood and severity combinations to risk ratings',\n icon: 'fa-light fa-table-cells',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./risk-matrix-widget-view.component').then((c) => c.AXMRiskMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./risk-matrix-widget-edit.component').then((c) => c.AXMRiskMatrixWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./risk-matrix-widget-column.component').then((c) => c.AXMRiskMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMRiskMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMRiskMatrixWidget } from './features/risk-matrix/risk-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Risk Management Widgets Provider ----\n\n@Injectable()\nexport class AXMRiskManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMRiskMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\nimport { RiskManagementManifest } from './manifest';\nimport { AXMRiskManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMRiskManagementWidgetsProvider } from './widget-definition.provider';\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: RiskManagementManifest,\n multi: true,\n },\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMRiskManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMRiskManagementMenuProvider),\n ),\n \n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementWidgetsProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}:Preview`,\n command: () =>\n import('./features/risk-matrix/commands/preview-risk-matrix-cell.command').then(\n (c) => c.AXMPreviewRiskMatrixCellCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMRiskManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { extractValue } from '@acorex-platform/framework-shared/core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n DEFAULT_RISK_MATRIX_AXIS_MAPPING,\n DEFAULT_RISK_MATRIX_ORIENTATION,\n RISK_MATRIX_AXIS_PROPERTIES,\n RISK_MATRIX_ORIENTATION_TITLE_KEYS,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixAxisProperty,\n type AXMRiskMatrixOrientation,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nexport function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty {\n return typeof value === 'string' && (RISK_MATRIX_AXIS_PROPERTIES as readonly string[]).includes(value);\n}\n\nexport function resolveRiskMatrixAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const rowProperty = isRiskMatrixAxisProperty(mapping?.rowProperty)\n ? mapping.rowProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.rowProperty;\n const columnProperty = isRiskMatrixAxisProperty(mapping?.columnProperty)\n ? mapping.columnProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.columnProperty;\n const depthProperty = isRiskMatrixAxisProperty(mapping?.depthProperty)\n ? mapping.depthProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.depthProperty;\n\n if (validateRiskMatrixAxisMapping({ rowProperty, columnProperty, depthProperty })) {\n return { rowProperty, columnProperty, depthProperty };\n }\n\n return { ...DEFAULT_RISK_MATRIX_AXIS_MAPPING };\n}\n\nexport function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation {\n return value === 'likelihood-rows' || value === 'severity-rows';\n}\n\n/**\n * Normalizes orientation from persisted strings or SelectionList row objects (`{ id }`).\n */\nexport function resolveRiskMatrixOrientation(value: unknown): AXMRiskMatrixOrientation {\n const candidate = extractValue(value, 'id') ?? value;\n\n return isRiskMatrixOrientation(candidate) ? candidate : DEFAULT_RISK_MATRIX_ORIENTATION;\n}\n\n/** Translation key for the spreadsheet corner title (`row axis / column axis`). */\nexport function resolveRiskMatrixTitleKey(orientation?: unknown): string {\n return RISK_MATRIX_ORIENTATION_TITLE_KEYS[resolveRiskMatrixOrientation(orientation)];\n}\n\nfunction pickDefinedAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): Partial<AXMRiskMatrixAxisMapping> {\n if (!mapping) {\n return {};\n }\n\n const picked: Partial<AXMRiskMatrixAxisMapping> = {};\n\n if (isRiskMatrixAxisProperty(mapping.rowProperty)) {\n picked.rowProperty = mapping.rowProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.columnProperty)) {\n picked.columnProperty = mapping.columnProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.depthProperty)) {\n picked.depthProperty = mapping.depthProperty;\n }\n\n return picked;\n}\n\nexport function resolveRiskMatrixAxisMappingFromOrientation(\n orientation?: unknown,\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const resolvedOrientation = resolveRiskMatrixOrientation(orientation);\n\n const orientationMapping: AXMRiskMatrixAxisMapping =\n resolvedOrientation === 'severity-rows'\n ? { rowProperty: 'severityId', columnProperty: 'likelihoodId', depthProperty: 'riskRatingId' }\n : { rowProperty: 'likelihoodId', columnProperty: 'severityId', depthProperty: 'riskRatingId' };\n\n return resolveRiskMatrixAxisMapping({\n ...pickDefinedAxisMapping(mapping),\n ...orientationMapping,\n });\n}\n\n/**\n * Persisted matrix shape is always likelihood × severity → risk rating.\n * Transpose only for display when severity is shown as rows.\n */\nexport function toDisplayMatrixData(\n canonical: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return canonical;\n }\n\n const display: AXPSpreadsheetData = {};\n\n Object.entries(canonical).forEach(([likelihoodId, severityMap]) => {\n if (!severityMap) {\n return;\n }\n\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n display[severityId] ??= {};\n display[severityId][likelihoodId] = ratingId;\n });\n });\n\n return display;\n}\n\n/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */\nexport function toCanonicalMatrixData(\n display: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return display;\n }\n\n const canonical: AXPSpreadsheetData = {};\n\n Object.entries(display).forEach(([severityId, likelihoodMap]) => {\n if (!likelihoodMap) {\n return;\n }\n\n Object.entries(likelihoodMap).forEach(([likelihoodId, ratingId]) => {\n canonical[likelihoodId] ??= {};\n canonical[likelihoodId][severityId] = ratingId;\n });\n });\n\n return canonical;\n}\n\n/** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */\nexport function normalizeRiskMatrixAxisIds(value: unknown): string[] {\n const items = Array.isArray(value) ? value : value != null ? [value] : [];\n\n return items\n .map((item) => {\n if (item != null && typeof item === 'object' && 'id' in item) {\n return String((item as { id: unknown }).id);\n }\n return item != null ? String(item) : '';\n })\n .filter((id) => id.length > 0);\n}\n\n/**\n * Drops matrix entries for axes no longer selected on the record.\n * Persisted shape stays likelihood × severity → risk rating.\n */\nexport function pruneMatrixToAxes(\n matrix: AXPSpreadsheetData,\n likelihoodIds: string[],\n severityIds: string[],\n): AXPSpreadsheetData {\n const likelihoodSet = new Set(likelihoodIds);\n const severitySet = new Set(severityIds);\n const pruned: AXPSpreadsheetData = {};\n\n Object.entries(matrix ?? {}).forEach(([likelihoodId, severityMap]) => {\n if (!likelihoodSet.has(likelihoodId) || severityMap == null) {\n return;\n }\n\n const row: Record<string, string | null> = {};\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n if (severitySet.has(severityId)) {\n row[severityId] = ratingId;\n }\n });\n\n if (Object.keys(row).length > 0) {\n pruned[likelihoodId] = row;\n }\n });\n\n return pruned;\n}\n\nexport function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean {\n const rowProperty = mapping.rowProperty;\n const columnProperty = mapping.columnProperty;\n const depthProperty = mapping.depthProperty;\n\n if (!isRiskMatrixAxisProperty(rowProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(columnProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(depthProperty)) {\n return false;\n }\n\n const values = [rowProperty, columnProperty, depthProperty];\n return new Set(values).size === values.length;\n}\n\n//#endregion\n","//#region ---- Constants ----\n\n/** Default matrix badge colors when {@link color} is not set on a risk rating record. */\nexport const DEFAULT_RISK_RATING_BADGE_COLORS = {\n low: 'warning-lighter-surface',\n medium: 'success-lighter-surface',\n high: 'danger-lighter-surface',\n} as const;\n\n//#endregion\n\n//#region ---- Helpers ----\n\nexport function resolveRiskRatingBadgeColor(rating: {\n code?: string;\n title?: string;\n color?: string | null;\n}): string | undefined {\n const color = rating.color?.trim();\n if (color) {\n return color;\n }\n\n const code = rating.code?.trim().toUpperCase();\n if (code?.endsWith('0001')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (code?.endsWith('0002')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (code?.endsWith('0003')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n const title = rating.title?.trim().toLowerCase();\n if (title === 'low') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (title === 'medium') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (title === 'high') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n return undefined;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetComponent,\n AXPSpreadsheetData,\n AXPSpreadsheetItem,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping, type AXMRiskMatrixAxisProperty, RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskLikelihoodEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskRatingEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskSeverityEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixTitleKey,\n toCanonicalMatrixData,\n toDisplayMatrixData,\n} from '../shared/risk-matrix-axis-mapping';\nimport { resolveRiskRatingBadgeColor } from '../shared/risk-rating-badge-color';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AxisEntityModel = {\n id: string;\n title: string;\n description?: string;\n color?: string;\n};\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix',\n standalone: true,\n imports: [CommonModule, AXPSpreadsheetComponent, AXTranslationModule],\n templateUrl: './risk-matrix.component.html',\n styleUrl: './risk-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-risk-matrix',\n },\n})\nexport class AXMRiskManagementRiskMatrixComponent {\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly likelihoodDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskLikelihood.name)\n .data<string, AXMRiskManagementRiskLikelihoodEntityModel>();\n private readonly severityDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskSeverity.name)\n .data<string, AXMRiskManagementRiskSeverityEntityModel>();\n private readonly riskRatingDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskRating.name)\n .data<string, AXMRiskManagementRiskRatingEntityModel>();\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /** Axis mapping. Defaults to likelihood × severity → risk rating. */\n axisMapping = input<Partial<AXMRiskMatrixAxisMapping>>({});\n\n /** Selected axis item ids from the parent matrix record. */\n likelihoodIds = input<string[] | null | undefined>(null);\n severityIds = input<string[] | null | undefined>(null);\n\n /** Controls row/column layout only; persisted matrix stays likelihood × severity. */\n matrixOrientation = input<string | null | undefined>(null);\n\n /** Matrix data: { [likelihoodId]: { [severityId]: riskRatingId } } */\n value = input<AXPSpreadsheetData>({});\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n valueChange = output<AXPSpreadsheetData>();\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n private readonly likelihoodItems = signal<AxisEntityModel[]>([]);\n private readonly severityItems = signal<AxisEntityModel[]>([]);\n private readonly depthItems = signal<AxisEntityModel[]>([]);\n private readonly hasLoadedAxesOnce = signal<boolean>(false);\n protected readonly isLoading = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly resolvedMatrixOrientation = computed(() =>\n resolveRiskMatrixOrientation(this.matrixOrientation()),\n );\n\n protected readonly resolvedAxisMapping = computed(() =>\n resolveRiskMatrixAxisMappingFromOrientation(this.resolvedMatrixOrientation(), this.axisMapping()),\n );\n\n protected readonly displayMatrix = computed(() =>\n toDisplayMatrixData(this.value(), this.resolvedMatrixOrientation()),\n );\n\n protected readonly matrixTitleKey = computed(() => resolveRiskMatrixTitleKey(this.resolvedMatrixOrientation()));\n\n protected readonly verticalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedRowItems()),\n );\n\n protected readonly horizontalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedColumnItems()),\n );\n\n protected readonly cellOptions = computed<AXPSpreadsheetItem[]>(() => this.toSpreadsheetItems(this.depthItems()));\n\n private readonly resolvedRowItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.rowProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n private readonly resolvedColumnItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.columnProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n protected readonly spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const ratingItems = this.depthItems();\n const cellOptions = this.toSpreadsheetItems(ratingItems);\n\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n cssClassField: 'color',\n dataSource: cellOptions.map((option, index) => ({\n id: option.id,\n title: option.title,\n description: option.description,\n color: ratingItems[index]?.color,\n })),\n },\n };\n\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id,\n widget: selectBoxWidget,\n }));\n });\n\n protected readonly spreadsheetRows = computed<Record<string, unknown>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.displayMatrix();\n\n return verticalTitles.map((row) => {\n const rowData: Record<string, unknown> = {\n name: row.id,\n _rowTitle: row.title,\n _rowDescription: row.description,\n };\n\n horizontalTitles.forEach((column) => {\n rowData[column.id] = matrixData[row.id]?.[column.id] ?? null;\n });\n\n return rowData;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n void this.loadMatrixAxes(likelihoodIds, severityIds);\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n private async loadMatrixAxes(\n likelihoodIds: string[] | null | undefined,\n severityIds: string[] | null | undefined,\n ): Promise<void> {\n const isInitialLoad = !this.hasLoadedAxesOnce();\n\n try {\n if (isInitialLoad) {\n this.isLoading.set(true);\n }\n\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelValue', dir: 'asc' as const }],\n };\n\n const [likelihoodResult, severityResult, depthResult] = await Promise.all([\n this.queryAxisItems('likelihoodId', query, likelihoodIds),\n this.queryAxisItems('severityId', query, severityIds),\n this.queryAxisItems('riskRatingId', query),\n ]);\n\n this.likelihoodItems.set(likelihoodResult);\n this.severityItems.set(severityResult);\n this.depthItems.set(depthResult);\n this.hasLoadedAxesOnce.set(true);\n } catch (error) {\n console.error('Error loading risk matrix axes:', error);\n this.likelihoodItems.set([]);\n this.severityItems.set([]);\n this.depthItems.set([]);\n } finally {\n if (isInitialLoad) {\n this.isLoading.set(false);\n }\n }\n }\n\n private async queryAxisItems(\n property: AXMRiskMatrixAxisProperty,\n query: {\n skip: number;\n take: number;\n sort: { field: string; dir: 'asc' }[];\n },\n selectedIds?: string[] | null,\n ): Promise<AxisEntityModel[]> {\n const accessor = this.getAxisDataAccessor(property);\n const result = await accessor.query(query);\n const items = (result.items ?? []).map((item) => {\n const base = {\n id: item.id,\n title: item.title,\n description: item.description,\n };\n\n if (property !== 'riskRatingId') {\n return base;\n }\n\n const rating = item as AXMRiskManagementRiskRatingEntityModel;\n const color = resolveRiskRatingBadgeColor(rating);\n return color ? { ...base, color } : base;\n });\n\n if (isEmpty(selectedIds)) {\n return items;\n }\n\n const selectedIdSet = new Set(selectedIds);\n return items.filter((item) => selectedIdSet.has(item.id));\n }\n\n private getAxisDataAccessor(property: AXMRiskMatrixAxisProperty) {\n switch (property) {\n case 'severityId':\n return this.severityDataAccessor;\n case 'riskRatingId':\n return this.riskRatingDataAccessor;\n case 'likelihoodId':\n default:\n return this.likelihoodDataAccessor;\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n private toSpreadsheetItems(items: AxisEntityModel[]): AXPSpreadsheetItem[] {\n const resolve = (v: unknown) => this.multiLanguageResolver.resolve(v as never);\n return items.map((item) => ({\n id: item.id,\n title: resolve(item.title),\n description: item.description ? resolve(item.description) : undefined,\n }));\n }\n\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, unknown>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const rowId = row['name'] as string | undefined;\n if (!rowId) {\n return;\n }\n\n matrixData[rowId] = {};\n horizontalTitles.forEach((column) => {\n matrixData[rowId][column.id] = (row[column.id] as string | null) ?? null;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void {\n const displayMatrix = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(toCanonicalMatrixData(displayMatrix, this.resolvedMatrixOrientation()));\n }\n\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isEmpty } from 'lodash';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenOptions {\n context: Record<string, unknown>;\n matrixPath?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ---- Risk Matrix Viewer Service ----\n\n/**\n * Opens a read-only risk matrix preview dialog from row or record context.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMRiskMatrixViewerService {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async open(options: AXMRiskMatrixViewerOpenOptions): Promise<void> {\n const matrixPath = defaultTo(options.matrixPath, 'matrix');\n const matrixValue = get(options.context, matrixPath);\n\n if (isEmpty(matrixValue)) {\n return;\n }\n\n const ref = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(this.resolveDialogTitle(options.title))\n .setSize('lg')\n .setCloseButton(true)\n .setContext({ ...options.context })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column');\n flex.formField('', (field) => {\n field\n .path(matrixPath)\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.close.title');\n });\n })\n .show();\n\n ref.close();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private resolveDialogTitle(title: string | undefined): string {\n const resolved = resolveEntityRowDisplayText(title, this.translation.getActiveLang());\n return resolved || 'Risk Matrix';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityRowDisplayTitle } from '@acorex-platform/framework-client/common';\n\nimport { AXMRiskMatrixViewerOpenOptions, AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenParams {\n context: Record<string, unknown>;\n matrixPath?: string;\n widgetOptions?: Record<string, unknown>;\n formatService: AXFormatService;\n activeLang: string;\n data?: Record<string, unknown>;\n entity?: AXPEntity | null;\n fallbackTitleKey?: string;\n}\n\n//#endregion\n\n//#region ---- Viewer Open Helper ----\n\nexport function buildRiskMatrixViewerOpenOptions(\n params: AXMRiskMatrixViewerOpenParams,\n): AXMRiskMatrixViewerOpenOptions {\n const matrixPath = params.matrixPath ?? 'matrix';\n const title = params.data\n ? resolveEntityRowDisplayTitle({\n data: params.data,\n widgetOptions: params.widgetOptions,\n formatService: params.formatService,\n activeLang: params.activeLang,\n entity: params.entity,\n })\n : '';\n\n return {\n context: params.context,\n matrixPath,\n title: title || params.fallbackTitleKey,\n };\n}\n\nexport async function openRiskMatrixViewer(\n viewer: AXMRiskMatrixViewerService,\n params: AXMRiskMatrixViewerOpenParams,\n): Promise<void> {\n await viewer.open(buildRiskMatrixViewerOpenOptions(params));\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\n\nimport { openRiskMatrixViewer } from './risk-matrix-viewer-open.util';\nimport { AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Component: Risk Matrix Widget Column ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-column',\n imports: [AXButtonModule, AXDecoratorModule],\n template: `\n <div class=\"flex items-center gap-2\">\n @if (hasMatrix()) {\n <ax-button class=\"ax-sm\" look=\"twotone\" color=\"default\" (click)=\"showPopup()\">\n <ax-icon>\n <i class=\"fa-light fa-table-cells\"></i>\n </ax-icon>\n </ax-button>\n } @else {\n <span>-</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<Record<string, unknown>> {\n //#region ---- Services & Dependencies ----\n\n private readonly riskMatrixViewer = inject(AXMRiskMatrixViewerService);\n private readonly formatService = inject(AXFormatService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n hasMatrix(): boolean {\n return !isEmpty(this.rawValue);\n }\n\n async showPopup(): Promise<void> {\n const rowData = this.rowData as Record<string, unknown> | undefined;\n if (!rowData || isEmpty(this.rawValue)) {\n return;\n }\n\n await openRiskMatrixViewer(this.riskMatrixViewer, {\n context: rowData,\n matrixPath: this.path,\n data: rowData,\n widgetOptions: { ...(this.options as Record<string, unknown>) },\n formatService: this.formatService,\n activeLang: this.translation.getActiveLang(),\n fallbackTitleKey: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix.title',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, ViewEncapsulation } from '@angular/core';\nimport { get, isEqual } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n normalizeRiskMatrixAxisIds,\n pruneMatrixToAxes,\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-edit',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n super();\n\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n const matrix = (this.getValue() as AXPSpreadsheetData) ?? {};\n const prunedMatrix = pruneMatrixToAxes(matrix, likelihoodIds, severityIds);\n\n if (!isEqual(matrix, prunedMatrix)) {\n this.setValue(prunedMatrix);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n return options?.['readonly'] ?? false;\n });\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'likelihoodId'));\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'severityId'));\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n private normalizeAxisIds(value: unknown): string[] {\n return normalizeRiskMatrixAxisIds(value);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { castArray, get } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-view',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Computed Properties ----\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'likelihoodId'));\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return this.normalizeAxisIds(get(this.contextService.data(), 'severityId'));\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n private normalizeAxisIds(value: unknown): string[] {\n return castArray(value)\n .map((item) => {\n if (item != null && typeof item === 'object' && 'id' in item) {\n return String((item as { id: unknown }).id);\n }\n return item != null ? String(item) : '';\n })\n .filter((id) => id.length > 0);\n }\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@acorex-platform/module-risk-management-client",
|
|
3
|
+
"version": "0.0.21",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"@angular/common": "^21.0.0",
|
|
7
|
+
"@angular/core": "^21.0.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"module": "fesm2022/acorex-platform-module-risk-management-client.mjs",
|
|
13
|
+
"typings": "types/acorex-platform-module-risk-management-client.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/acorex-platform-module-risk-management-client.d.ts",
|
|
20
|
+
"default": "./fesm2022/acorex-platform-module-risk-management-client.mjs"
|
|
21
|
+
},
|
|
22
|
+
"./contracts": {
|
|
23
|
+
"types": "./types/acorex-platform-module-risk-management-client-contracts.d.ts",
|
|
24
|
+
"default": "./fesm2022/acorex-platform-module-risk-management-client-contracts.mjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"type": "module"
|
|
28
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
|
|
2
|
+
import { AXPSpreadsheetData, AXPCategoryListItem, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';
|
|
3
|
+
|
|
4
|
+
/** Hazard catalog scope for environmental and operational risk matrix records. */
|
|
5
|
+
declare const RISK_CATALOG_SCOPE_HAZARD = "risk-management.hazard";
|
|
6
|
+
/** PPE items catalog scope for personal protective equipment risk matrices. */
|
|
7
|
+
declare const RISK_CATALOG_SCOPE_PPE_ITEMS = "risk-management.ppe-items";
|
|
8
|
+
|
|
9
|
+
declare const AXMRiskManagementMenuKeys: {
|
|
10
|
+
readonly Root: "RiskManagement:Menu:Root";
|
|
11
|
+
readonly RiskLikelihoods: "RiskManagement:Menu:RiskLikelihoods";
|
|
12
|
+
readonly RiskSeverities: "RiskManagement:Menu:RiskSeverities";
|
|
13
|
+
readonly RiskRatings: "RiskManagement:Menu:RiskRatings";
|
|
14
|
+
readonly RiskMatrixCells: "RiskManagement:Menu:RiskMatrixCells";
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Safety & Risk capabilities used by this module.
|
|
19
|
+
* Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
|
|
20
|
+
*/
|
|
21
|
+
declare const AXPSafetyRiskPermissionKeys: {
|
|
22
|
+
readonly Access: "SafetyRisk:Permission:Access";
|
|
23
|
+
readonly MaintainSafety: "SafetyRisk:Permission:MaintainSafety";
|
|
24
|
+
readonly MaintainRisk: "SafetyRisk:Permission:MaintainRisk";
|
|
25
|
+
readonly MaintainHealth: "SafetyRisk:Permission:MaintainHealth";
|
|
26
|
+
readonly MaintainAssessments: "SafetyRisk:Permission:MaintainAssessments";
|
|
27
|
+
readonly Setup: "SafetyRisk:Permission:Setup";
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated Prefer {@link AXPSafetyRiskPermissionKeys}.
|
|
31
|
+
* Legacy nested shape kept so existing imports compile during migration.
|
|
32
|
+
*/
|
|
33
|
+
declare const AXMRiskManagementPermissionKeys: {
|
|
34
|
+
readonly RiskManagement: {
|
|
35
|
+
readonly Management: "SafetyRisk:Permission:MaintainRisk";
|
|
36
|
+
readonly RiskLikelihood: {
|
|
37
|
+
readonly Management: "SafetyRisk:Permission:Setup";
|
|
38
|
+
readonly View: "SafetyRisk:Permission:Setup";
|
|
39
|
+
readonly Create: "SafetyRisk:Permission:Setup";
|
|
40
|
+
readonly Update: "SafetyRisk:Permission:Setup";
|
|
41
|
+
readonly Delete: "SafetyRisk:Permission:Setup";
|
|
42
|
+
};
|
|
43
|
+
readonly RiskSeverity: {
|
|
44
|
+
readonly Management: "SafetyRisk:Permission:Setup";
|
|
45
|
+
readonly View: "SafetyRisk:Permission:Setup";
|
|
46
|
+
readonly Create: "SafetyRisk:Permission:Setup";
|
|
47
|
+
readonly Update: "SafetyRisk:Permission:Setup";
|
|
48
|
+
readonly Delete: "SafetyRisk:Permission:Setup";
|
|
49
|
+
};
|
|
50
|
+
readonly RiskRating: {
|
|
51
|
+
readonly Management: "SafetyRisk:Permission:Setup";
|
|
52
|
+
readonly View: "SafetyRisk:Permission:Setup";
|
|
53
|
+
readonly Create: "SafetyRisk:Permission:Setup";
|
|
54
|
+
readonly Update: "SafetyRisk:Permission:Setup";
|
|
55
|
+
readonly Delete: "SafetyRisk:Permission:Setup";
|
|
56
|
+
};
|
|
57
|
+
readonly RiskMatrixCell: {
|
|
58
|
+
readonly Management: "SafetyRisk:Permission:MaintainRisk";
|
|
59
|
+
readonly View: "SafetyRisk:Permission:MaintainRisk";
|
|
60
|
+
readonly Create: "SafetyRisk:Permission:MaintainRisk";
|
|
61
|
+
readonly Update: "SafetyRisk:Permission:MaintainRisk";
|
|
62
|
+
readonly Delete: "SafetyRisk:Permission:MaintainRisk";
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/** Lookup properties on RiskMatrixCell that can be assigned to matrix axes. */
|
|
68
|
+
type AXMRiskMatrixAxisProperty = 'likelihoodId' | 'severityId' | 'riskRatingId';
|
|
69
|
+
interface AXMRiskMatrixAxisMapping {
|
|
70
|
+
rowProperty: AXMRiskMatrixAxisProperty;
|
|
71
|
+
columnProperty: AXMRiskMatrixAxisProperty;
|
|
72
|
+
depthProperty: AXMRiskMatrixAxisProperty;
|
|
73
|
+
}
|
|
74
|
+
type AXMRiskMatrixOrientation = 'likelihood-rows' | 'severity-rows';
|
|
75
|
+
declare const RISK_MATRIX_AXIS_PROPERTIES: readonly AXMRiskMatrixAxisProperty[];
|
|
76
|
+
declare const DEFAULT_RISK_MATRIX_AXIS_MAPPING: AXMRiskMatrixAxisMapping;
|
|
77
|
+
declare const RISK_MATRIX_AXIS_PROPERTY_SELECT_OPTIONS: readonly [{
|
|
78
|
+
readonly id: "likelihoodId";
|
|
79
|
+
readonly title: "@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.likelihood-id.title";
|
|
80
|
+
}, {
|
|
81
|
+
readonly id: "severityId";
|
|
82
|
+
readonly title: "@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.severity-id.title";
|
|
83
|
+
}, {
|
|
84
|
+
readonly id: "riskRatingId";
|
|
85
|
+
readonly title: "@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.risk-rating-id.title";
|
|
86
|
+
}];
|
|
87
|
+
declare const DEFAULT_RISK_MATRIX_ORIENTATION: AXMRiskMatrixOrientation;
|
|
88
|
+
declare const RISK_MATRIX_ORIENTATION_OPTIONS: Array<{
|
|
89
|
+
id: AXMRiskMatrixOrientation;
|
|
90
|
+
title: string;
|
|
91
|
+
}>;
|
|
92
|
+
declare const RISK_MATRIX_ORIENTATION_TITLE_KEYS: Record<AXMRiskMatrixOrientation, string>;
|
|
93
|
+
|
|
94
|
+
declare const RootConfig: {
|
|
95
|
+
config: {
|
|
96
|
+
i18n: string;
|
|
97
|
+
module: string;
|
|
98
|
+
route: string;
|
|
99
|
+
};
|
|
100
|
+
module: {
|
|
101
|
+
route: string;
|
|
102
|
+
name: string;
|
|
103
|
+
title: string;
|
|
104
|
+
icon: string;
|
|
105
|
+
};
|
|
106
|
+
entities: {
|
|
107
|
+
riskLikelihood: {
|
|
108
|
+
name: string;
|
|
109
|
+
source: string;
|
|
110
|
+
title: string;
|
|
111
|
+
titlePlural: string;
|
|
112
|
+
icon: string;
|
|
113
|
+
};
|
|
114
|
+
riskSeverity: {
|
|
115
|
+
name: string;
|
|
116
|
+
source: string;
|
|
117
|
+
title: string;
|
|
118
|
+
titlePlural: string;
|
|
119
|
+
icon: string;
|
|
120
|
+
};
|
|
121
|
+
riskRating: {
|
|
122
|
+
name: string;
|
|
123
|
+
source: string;
|
|
124
|
+
title: string;
|
|
125
|
+
titlePlural: string;
|
|
126
|
+
icon: string;
|
|
127
|
+
};
|
|
128
|
+
riskMatrixCell: {
|
|
129
|
+
name: string;
|
|
130
|
+
source: string;
|
|
131
|
+
title: string;
|
|
132
|
+
titlePlural: string;
|
|
133
|
+
icon: string;
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
interface AXMRiskManagementRiskLikelihoodEntityModel extends AXPEntityModel<string> {
|
|
139
|
+
code: string;
|
|
140
|
+
title: string;
|
|
141
|
+
description?: string;
|
|
142
|
+
levelValue: number;
|
|
143
|
+
isArchived?: boolean;
|
|
144
|
+
archivedAt?: Date | string;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
interface AXMRiskManagementRiskMatrixCellEntityModel extends AXPEntityModel<string> {
|
|
148
|
+
/** Business code from identifier rule `risk-matrix-cell-code` (`RMC-{date:YYYY}-{seq:4}`). */
|
|
149
|
+
code: string;
|
|
150
|
+
title: string;
|
|
151
|
+
likelihoodId: string[];
|
|
152
|
+
likelihood?: Array<{
|
|
153
|
+
id: string;
|
|
154
|
+
title?: string;
|
|
155
|
+
code?: string;
|
|
156
|
+
}>;
|
|
157
|
+
severityId: string[];
|
|
158
|
+
severity?: Array<{
|
|
159
|
+
id: string;
|
|
160
|
+
title?: string;
|
|
161
|
+
code?: string;
|
|
162
|
+
}>;
|
|
163
|
+
/** Likelihood rows × severity columns mapped to risk rating ids. */
|
|
164
|
+
matrix?: AXPSpreadsheetData;
|
|
165
|
+
categoryIds?: string[];
|
|
166
|
+
categories?: AXPCategoryListItem[];
|
|
167
|
+
/** Registered catalog scope keys (module providers). */
|
|
168
|
+
catalogScopeKeys?: string[];
|
|
169
|
+
/** Resolved scope labels for list display (enriched by catalog-scope resolver middleware). */
|
|
170
|
+
catalogScopes?: Array<{
|
|
171
|
+
name: string;
|
|
172
|
+
title: AXPMultiLanguageString | string;
|
|
173
|
+
cssClass?: string;
|
|
174
|
+
}>;
|
|
175
|
+
isArchived?: boolean;
|
|
176
|
+
archivedAt?: Date | string;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
interface AXMRiskManagementRiskRatingEntityModel extends AXPEntityModel<string> {
|
|
180
|
+
/** Business code from identifier rule `risk-rating-code` (`RR-{date:YYYY}-{seq:4}`). */
|
|
181
|
+
code: string;
|
|
182
|
+
title: string;
|
|
183
|
+
description?: string;
|
|
184
|
+
levelValue: number;
|
|
185
|
+
/** Color from `material-design` palette (`color` plugin, free mode). */
|
|
186
|
+
color?: string;
|
|
187
|
+
isArchived?: boolean;
|
|
188
|
+
archivedAt?: Date | string;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
interface AXMRiskManagementRiskSeverityEntityModel extends AXPEntityModel<string> {
|
|
192
|
+
code: string;
|
|
193
|
+
title: string;
|
|
194
|
+
description?: string;
|
|
195
|
+
levelValue: number;
|
|
196
|
+
isArchived?: boolean;
|
|
197
|
+
archivedAt?: Date | string;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export { AXMRiskManagementMenuKeys, AXMRiskManagementPermissionKeys, AXPSafetyRiskPermissionKeys, DEFAULT_RISK_MATRIX_AXIS_MAPPING, DEFAULT_RISK_MATRIX_ORIENTATION, RISK_CATALOG_SCOPE_HAZARD, RISK_CATALOG_SCOPE_PPE_ITEMS, RISK_MATRIX_AXIS_PROPERTIES, RISK_MATRIX_AXIS_PROPERTY_SELECT_OPTIONS, RISK_MATRIX_ORIENTATION_OPTIONS, RISK_MATRIX_ORIENTATION_TITLE_KEYS, RootConfig };
|
|
201
|
+
export type { AXMRiskManagementRiskLikelihoodEntityModel, AXMRiskManagementRiskMatrixCellEntityModel, AXMRiskManagementRiskRatingEntityModel, AXMRiskManagementRiskSeverityEntityModel, AXMRiskMatrixAxisMapping, AXMRiskMatrixAxisProperty, AXMRiskMatrixOrientation };
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';
|
|
2
|
+
import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
|
|
5
|
+
import { AXPColumnWidgetComponent, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
6
|
+
import * as _acorex_platform_module_risk_management_client_contracts from '@acorex-platform/module-risk-management-client/contracts';
|
|
7
|
+
import { AXMRiskMatrixAxisMapping, AXMRiskMatrixAxisProperty, AXMRiskMatrixOrientation } from '@acorex-platform/module-risk-management-client/contracts';
|
|
8
|
+
import { AXPSpreadsheetData, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetItem, AXPSpreadsheetColumn } from '@acorex-platform/framework-client/layout/components';
|
|
9
|
+
|
|
10
|
+
declare class AXMRiskManagementMenuProvider implements AXPMenuProvider {
|
|
11
|
+
private readonly entityService;
|
|
12
|
+
provide(context: AXPMenuProviderContext): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Registers risk capabilities into the shared Safety & Risk group.
|
|
17
|
+
*/
|
|
18
|
+
declare class AXMRiskManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
|
|
19
|
+
define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
|
|
20
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskManagementPermissionDefinitionProvider, never>;
|
|
21
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMRiskManagementPermissionDefinitionProvider>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare class AXMRiskManagementModule {
|
|
25
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskManagementModule, never>;
|
|
26
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMRiskManagementModule, never, [typeof i1.AXPWidgetCoreModule], never>;
|
|
27
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMRiskManagementModule>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
declare class AXMRiskManagementRiskMatrixComponent {
|
|
31
|
+
private readonly entityService;
|
|
32
|
+
private readonly likelihoodDataAccessor;
|
|
33
|
+
private readonly severityDataAccessor;
|
|
34
|
+
private readonly riskRatingDataAccessor;
|
|
35
|
+
private readonly multiLanguageResolver;
|
|
36
|
+
/** Axis mapping. Defaults to likelihood × severity → risk rating. */
|
|
37
|
+
axisMapping: _angular_core.InputSignal<Partial<AXMRiskMatrixAxisMapping>>;
|
|
38
|
+
/** Selected axis item ids from the parent matrix record. */
|
|
39
|
+
likelihoodIds: _angular_core.InputSignal<string[] | null | undefined>;
|
|
40
|
+
severityIds: _angular_core.InputSignal<string[] | null | undefined>;
|
|
41
|
+
/** Controls row/column layout only; persisted matrix stays likelihood × severity. */
|
|
42
|
+
matrixOrientation: _angular_core.InputSignal<string | null | undefined>;
|
|
43
|
+
/** Matrix data: { [likelihoodId]: { [severityId]: riskRatingId } } */
|
|
44
|
+
value: _angular_core.InputSignal<AXPSpreadsheetData>;
|
|
45
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
46
|
+
valueChange: _angular_core.OutputEmitterRef<AXPSpreadsheetData>;
|
|
47
|
+
cellChange: _angular_core.OutputEmitterRef<AXPSpreadsheetCellChangeEvent>;
|
|
48
|
+
private readonly likelihoodItems;
|
|
49
|
+
private readonly severityItems;
|
|
50
|
+
private readonly depthItems;
|
|
51
|
+
private readonly hasLoadedAxesOnce;
|
|
52
|
+
protected readonly isLoading: _angular_core.WritableSignal<boolean>;
|
|
53
|
+
protected readonly resolvedMatrixOrientation: _angular_core.Signal<_acorex_platform_module_risk_management_client_contracts.AXMRiskMatrixOrientation>;
|
|
54
|
+
protected readonly resolvedAxisMapping: _angular_core.Signal<AXMRiskMatrixAxisMapping>;
|
|
55
|
+
protected readonly displayMatrix: _angular_core.Signal<AXPSpreadsheetData>;
|
|
56
|
+
protected readonly matrixTitleKey: _angular_core.Signal<string>;
|
|
57
|
+
protected readonly verticalTitles: _angular_core.Signal<AXPSpreadsheetItem[]>;
|
|
58
|
+
protected readonly horizontalTitles: _angular_core.Signal<AXPSpreadsheetItem[]>;
|
|
59
|
+
protected readonly cellOptions: _angular_core.Signal<AXPSpreadsheetItem[]>;
|
|
60
|
+
private readonly resolvedRowItems;
|
|
61
|
+
private readonly resolvedColumnItems;
|
|
62
|
+
protected readonly spreadsheetColumns: _angular_core.Signal<AXPSpreadsheetColumn[]>;
|
|
63
|
+
protected readonly spreadsheetRows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
64
|
+
constructor();
|
|
65
|
+
private loadMatrixAxes;
|
|
66
|
+
private queryAxisItems;
|
|
67
|
+
private getAxisDataAccessor;
|
|
68
|
+
private toSpreadsheetItems;
|
|
69
|
+
private convertSpreadsheetRowsToMatrixData;
|
|
70
|
+
protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void;
|
|
71
|
+
protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void;
|
|
72
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskManagementRiskMatrixComponent, never>;
|
|
73
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskManagementRiskMatrixComponent, "axm-risk-matrix", never, { "axisMapping": { "alias": "axisMapping"; "required": false; "isSignal": true; }; "likelihoodIds": { "alias": "likelihoodIds"; "required": false; "isSignal": true; }; "severityIds": { "alias": "severityIds"; "required": false; "isSignal": true; }; "matrixOrientation": { "alias": "matrixOrientation"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "cellChange": "cellChange"; }, never, never, true, never>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface AXMRiskMatrixViewerOpenOptions {
|
|
77
|
+
context: Record<string, unknown>;
|
|
78
|
+
matrixPath?: string;
|
|
79
|
+
title?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Opens a read-only risk matrix preview dialog from row or record context.
|
|
83
|
+
*/
|
|
84
|
+
declare class AXMRiskMatrixViewerService {
|
|
85
|
+
private readonly layoutBuilder;
|
|
86
|
+
private readonly translation;
|
|
87
|
+
open(options: AXMRiskMatrixViewerOpenOptions): Promise<void>;
|
|
88
|
+
private resolveDialogTitle;
|
|
89
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixViewerService, never>;
|
|
90
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMRiskMatrixViewerService>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<Record<string, unknown>> {
|
|
94
|
+
private readonly riskMatrixViewer;
|
|
95
|
+
private readonly formatService;
|
|
96
|
+
private readonly translation;
|
|
97
|
+
hasMatrix(): boolean;
|
|
98
|
+
showPopup(): Promise<void>;
|
|
99
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetColumnComponent, never>;
|
|
100
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetColumnComponent, "axm-risk-matrix-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
declare class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {
|
|
104
|
+
constructor();
|
|
105
|
+
protected readonly: _angular_core.Signal<boolean>;
|
|
106
|
+
protected axisMapping: _angular_core.Signal<AXMRiskMatrixAxisMapping>;
|
|
107
|
+
protected matrixOrientation: _angular_core.Signal<_acorex_platform_module_risk_management_client_contracts.AXMRiskMatrixOrientation>;
|
|
108
|
+
protected likelihoodIds: _angular_core.Signal<string[]>;
|
|
109
|
+
protected severityIds: _angular_core.Signal<string[]>;
|
|
110
|
+
protected matrixValue: _angular_core.Signal<AXPSpreadsheetData>;
|
|
111
|
+
protected handleValueChange(data: AXPSpreadsheetData): void;
|
|
112
|
+
private normalizeAxisIds;
|
|
113
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetEditComponent, never>;
|
|
114
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetEditComponent, "axm-risk-matrix-widget-edit", never, {}, {}, never, never, true, never>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {
|
|
118
|
+
protected axisMapping: _angular_core.Signal<AXMRiskMatrixAxisMapping>;
|
|
119
|
+
protected matrixOrientation: _angular_core.Signal<_acorex_platform_module_risk_management_client_contracts.AXMRiskMatrixOrientation>;
|
|
120
|
+
protected likelihoodIds: _angular_core.Signal<string[]>;
|
|
121
|
+
protected severityIds: _angular_core.Signal<string[]>;
|
|
122
|
+
protected matrixValue: _angular_core.Signal<AXPSpreadsheetData>;
|
|
123
|
+
private normalizeAxisIds;
|
|
124
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetViewComponent, never>;
|
|
125
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetViewComponent, "axm-risk-matrix-widget-view", never, {}, {}, never, never, true, never>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
declare function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty;
|
|
129
|
+
declare function resolveRiskMatrixAxisMapping(mapping?: Partial<AXMRiskMatrixAxisMapping> | null): AXMRiskMatrixAxisMapping;
|
|
130
|
+
declare function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation;
|
|
131
|
+
/**
|
|
132
|
+
* Normalizes orientation from persisted strings or SelectionList row objects (`{ id }`).
|
|
133
|
+
*/
|
|
134
|
+
declare function resolveRiskMatrixOrientation(value: unknown): AXMRiskMatrixOrientation;
|
|
135
|
+
/** Translation key for the spreadsheet corner title (`row axis / column axis`). */
|
|
136
|
+
declare function resolveRiskMatrixTitleKey(orientation?: unknown): string;
|
|
137
|
+
declare function resolveRiskMatrixAxisMappingFromOrientation(orientation?: unknown, mapping?: Partial<AXMRiskMatrixAxisMapping> | null): AXMRiskMatrixAxisMapping;
|
|
138
|
+
/**
|
|
139
|
+
* Persisted matrix shape is always likelihood × severity → risk rating.
|
|
140
|
+
* Transpose only for display when severity is shown as rows.
|
|
141
|
+
*/
|
|
142
|
+
declare function toDisplayMatrixData(canonical: AXPSpreadsheetData, orientation?: unknown): AXPSpreadsheetData;
|
|
143
|
+
/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */
|
|
144
|
+
declare function toCanonicalMatrixData(display: AXPSpreadsheetData, orientation?: unknown): AXPSpreadsheetData;
|
|
145
|
+
/** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */
|
|
146
|
+
declare function normalizeRiskMatrixAxisIds(value: unknown): string[];
|
|
147
|
+
/**
|
|
148
|
+
* Drops matrix entries for axes no longer selected on the record.
|
|
149
|
+
* Persisted shape stays likelihood × severity → risk rating.
|
|
150
|
+
*/
|
|
151
|
+
declare function pruneMatrixToAxes(matrix: AXPSpreadsheetData, likelihoodIds: string[], severityIds: string[]): AXPSpreadsheetData;
|
|
152
|
+
declare function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean;
|
|
153
|
+
|
|
154
|
+
export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation, normalizeRiskMatrixAxisIds, pruneMatrixToAxes, resolveRiskMatrixAxisMapping, resolveRiskMatrixAxisMappingFromOrientation, resolveRiskMatrixOrientation, resolveRiskMatrixTitleKey, toCanonicalMatrixData, toDisplayMatrixData, validateRiskMatrixAxisMapping };
|
|
155
|
+
export type { AXMRiskMatrixViewerOpenOptions };
|