@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,170 @@
|
|
|
1
|
+
/** Hazard catalog scope for environmental and operational risk matrix records. */
|
|
2
|
+
const RISK_CATALOG_SCOPE_HAZARD = 'risk-management.hazard';
|
|
3
|
+
/** PPE items catalog scope for personal protective equipment risk matrices. */
|
|
4
|
+
const RISK_CATALOG_SCOPE_PPE_ITEMS = 'risk-management.ppe-items';
|
|
5
|
+
|
|
6
|
+
const AXMRiskManagementMenuKeys = {
|
|
7
|
+
Root: 'RiskManagement:Menu:Root',
|
|
8
|
+
RiskLikelihoods: 'RiskManagement:Menu:RiskLikelihoods',
|
|
9
|
+
RiskSeverities: 'RiskManagement:Menu:RiskSeverities',
|
|
10
|
+
RiskRatings: 'RiskManagement:Menu:RiskRatings',
|
|
11
|
+
RiskMatrixCells: 'RiskManagement:Menu:RiskMatrixCells',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Safety & Risk capabilities used by this module.
|
|
16
|
+
* Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
|
|
17
|
+
*/
|
|
18
|
+
const AXPSafetyRiskPermissionKeys = {
|
|
19
|
+
Access: 'SafetyRisk:Permission:Access',
|
|
20
|
+
MaintainSafety: 'SafetyRisk:Permission:MaintainSafety',
|
|
21
|
+
MaintainRisk: 'SafetyRisk:Permission:MaintainRisk',
|
|
22
|
+
MaintainHealth: 'SafetyRisk:Permission:MaintainHealth',
|
|
23
|
+
MaintainAssessments: 'SafetyRisk:Permission:MaintainAssessments',
|
|
24
|
+
Setup: 'SafetyRisk:Permission:Setup',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Prefer {@link AXPSafetyRiskPermissionKeys}.
|
|
28
|
+
* Legacy nested shape kept so existing imports compile during migration.
|
|
29
|
+
*/
|
|
30
|
+
const AXMRiskManagementPermissionKeys = {
|
|
31
|
+
RiskManagement: {
|
|
32
|
+
Management: AXPSafetyRiskPermissionKeys.MaintainRisk,
|
|
33
|
+
RiskLikelihood: {
|
|
34
|
+
Management: AXPSafetyRiskPermissionKeys.Setup,
|
|
35
|
+
View: AXPSafetyRiskPermissionKeys.Setup,
|
|
36
|
+
Create: AXPSafetyRiskPermissionKeys.Setup,
|
|
37
|
+
Update: AXPSafetyRiskPermissionKeys.Setup,
|
|
38
|
+
Delete: AXPSafetyRiskPermissionKeys.Setup,
|
|
39
|
+
},
|
|
40
|
+
RiskSeverity: {
|
|
41
|
+
Management: AXPSafetyRiskPermissionKeys.Setup,
|
|
42
|
+
View: AXPSafetyRiskPermissionKeys.Setup,
|
|
43
|
+
Create: AXPSafetyRiskPermissionKeys.Setup,
|
|
44
|
+
Update: AXPSafetyRiskPermissionKeys.Setup,
|
|
45
|
+
Delete: AXPSafetyRiskPermissionKeys.Setup,
|
|
46
|
+
},
|
|
47
|
+
RiskRating: {
|
|
48
|
+
Management: AXPSafetyRiskPermissionKeys.Setup,
|
|
49
|
+
View: AXPSafetyRiskPermissionKeys.Setup,
|
|
50
|
+
Create: AXPSafetyRiskPermissionKeys.Setup,
|
|
51
|
+
Update: AXPSafetyRiskPermissionKeys.Setup,
|
|
52
|
+
Delete: AXPSafetyRiskPermissionKeys.Setup,
|
|
53
|
+
},
|
|
54
|
+
RiskMatrixCell: {
|
|
55
|
+
Management: AXPSafetyRiskPermissionKeys.MaintainRisk,
|
|
56
|
+
View: AXPSafetyRiskPermissionKeys.MaintainRisk,
|
|
57
|
+
Create: AXPSafetyRiskPermissionKeys.MaintainRisk,
|
|
58
|
+
Update: AXPSafetyRiskPermissionKeys.MaintainRisk,
|
|
59
|
+
Delete: AXPSafetyRiskPermissionKeys.MaintainRisk,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//#region ---- Types ----
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region ---- Constants ----
|
|
67
|
+
const RISK_MATRIX_AXIS_PROPERTIES = [
|
|
68
|
+
'likelihoodId',
|
|
69
|
+
'severityId',
|
|
70
|
+
'riskRatingId',
|
|
71
|
+
];
|
|
72
|
+
const DEFAULT_RISK_MATRIX_AXIS_MAPPING = {
|
|
73
|
+
rowProperty: 'likelihoodId',
|
|
74
|
+
columnProperty: 'severityId',
|
|
75
|
+
depthProperty: 'riskRatingId',
|
|
76
|
+
};
|
|
77
|
+
const RISK_MATRIX_AXIS_PROPERTY_SELECT_OPTIONS = [
|
|
78
|
+
{
|
|
79
|
+
id: 'likelihoodId',
|
|
80
|
+
title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.likelihood-id.title',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 'severityId',
|
|
84
|
+
title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.severity-id.title',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 'riskRatingId',
|
|
88
|
+
title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.risk-rating-id.title',
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
const DEFAULT_RISK_MATRIX_ORIENTATION = 'likelihood-rows';
|
|
92
|
+
const RISK_MATRIX_ORIENTATION_OPTIONS = [
|
|
93
|
+
{
|
|
94
|
+
id: 'likelihood-rows',
|
|
95
|
+
title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.likelihood-rows',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: 'severity-rows',
|
|
99
|
+
title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.severity-rows',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
const RISK_MATRIX_ORIENTATION_TITLE_KEYS = {
|
|
103
|
+
'likelihood-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.likelihood-rows',
|
|
104
|
+
'severity-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.severity-rows',
|
|
105
|
+
};
|
|
106
|
+
//#endregion
|
|
107
|
+
|
|
108
|
+
//#region ---- Root Configuration ----
|
|
109
|
+
const config = {
|
|
110
|
+
i18n: 'risk-management',
|
|
111
|
+
module: 'RiskManagement',
|
|
112
|
+
route: 'risk-management',
|
|
113
|
+
};
|
|
114
|
+
const RootConfig = {
|
|
115
|
+
config,
|
|
116
|
+
module: {
|
|
117
|
+
route: config.route,
|
|
118
|
+
name: config.module,
|
|
119
|
+
title: '@risk-management:module.title',
|
|
120
|
+
icon: 'fa-light fa-chart-line',
|
|
121
|
+
},
|
|
122
|
+
entities: {
|
|
123
|
+
riskLikelihood: {
|
|
124
|
+
name: 'RiskLikelihood',
|
|
125
|
+
source: `${config.module}.RiskLikelihood`,
|
|
126
|
+
title: '@risk-management:risk-likelihoods.entities.risk-likelihood.title',
|
|
127
|
+
titlePlural: '@risk-management:risk-likelihoods.entities.risk-likelihood.plural',
|
|
128
|
+
icon: 'fa-light fa-signal',
|
|
129
|
+
},
|
|
130
|
+
riskSeverity: {
|
|
131
|
+
name: 'RiskSeverity',
|
|
132
|
+
source: `${config.module}.RiskSeverity`,
|
|
133
|
+
title: '@risk-management:risk-severities.entities.risk-severity.title',
|
|
134
|
+
titlePlural: '@risk-management:risk-severities.entities.risk-severity.plural',
|
|
135
|
+
icon: 'fa-light fa-gauge-high',
|
|
136
|
+
},
|
|
137
|
+
riskRating: {
|
|
138
|
+
name: 'RiskRating',
|
|
139
|
+
source: `${config.module}.RiskRating`,
|
|
140
|
+
title: '@risk-management:risk-ratings.entities.risk-rating.title',
|
|
141
|
+
titlePlural: '@risk-management:risk-ratings.entities.risk-rating.plural',
|
|
142
|
+
icon: 'fa-light fa-ranking-star',
|
|
143
|
+
},
|
|
144
|
+
riskMatrixCell: {
|
|
145
|
+
name: 'RiskMatrixCell',
|
|
146
|
+
source: `${config.module}.RiskMatrixCell`,
|
|
147
|
+
title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.title',
|
|
148
|
+
titlePlural: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.plural',
|
|
149
|
+
icon: 'fa-light fa-table-cells',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
//#endregion
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
|
|
157
|
+
//#endregion
|
|
158
|
+
|
|
159
|
+
//#endregion
|
|
160
|
+
|
|
161
|
+
//#endregion
|
|
162
|
+
|
|
163
|
+
//#region ---- Contracts barrel ----
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Generated bundle index. Do not edit.
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
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 };
|
|
170
|
+
//# sourceMappingURL=acorex-platform-module-risk-management-client-contracts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-risk-management-client-contracts.mjs","sources":["../../../../libs/modules/risk-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/risk-management/contracts/src/menu.keys.ts","../../../../libs/modules/risk-management/contracts/src/permission.keys.ts","../../../../libs/modules/risk-management/contracts/src/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/contracts/src/root-config.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-likelihood/risk-likelihood.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-matrix-cell/risk-matrix-cell.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-rating/risk-rating.types.ts","../../../../libs/modules/risk-management/contracts/src/entities/risk-severity/risk-severity.types.ts","../../../../libs/modules/risk-management/contracts/src/index.ts","../../../../libs/modules/risk-management/contracts/src/acorex-platform-module-risk-management-client-contracts.ts"],"sourcesContent":["/** Hazard catalog scope for environmental and operational risk matrix records. */\nexport const RISK_CATALOG_SCOPE_HAZARD = 'risk-management.hazard';\n\n/** PPE items catalog scope for personal protective equipment risk matrices. */\nexport const RISK_CATALOG_SCOPE_PPE_ITEMS = 'risk-management.ppe-items';\n","export const AXMRiskManagementMenuKeys = {\n Root: 'RiskManagement:Menu:Root',\n RiskLikelihoods: 'RiskManagement:Menu:RiskLikelihoods',\n RiskSeverities: 'RiskManagement:Menu:RiskSeverities',\n RiskRatings: 'RiskManagement:Menu:RiskRatings',\n RiskMatrixCells: 'RiskManagement:Menu:RiskMatrixCells',\n} as const;\n","/**\n * Safety & Risk capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPSafetyRiskPermissionKeys = {\n Access: 'SafetyRisk:Permission:Access',\n MaintainSafety: 'SafetyRisk:Permission:MaintainSafety',\n MaintainRisk: 'SafetyRisk:Permission:MaintainRisk',\n MaintainHealth: 'SafetyRisk:Permission:MaintainHealth',\n MaintainAssessments: 'SafetyRisk:Permission:MaintainAssessments',\n Setup: 'SafetyRisk:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPSafetyRiskPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMRiskManagementPermissionKeys = {\n RiskManagement: {\n Management: AXPSafetyRiskPermissionKeys.MaintainRisk,\n\n RiskLikelihood: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskSeverity: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskRating: {\n Management: AXPSafetyRiskPermissionKeys.Setup,\n View: AXPSafetyRiskPermissionKeys.Setup,\n Create: AXPSafetyRiskPermissionKeys.Setup,\n Update: AXPSafetyRiskPermissionKeys.Setup,\n Delete: AXPSafetyRiskPermissionKeys.Setup,\n },\n RiskMatrixCell: {\n Management: AXPSafetyRiskPermissionKeys.MaintainRisk,\n View: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Create: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Update: AXPSafetyRiskPermissionKeys.MaintainRisk,\n Delete: AXPSafetyRiskPermissionKeys.MaintainRisk,\n },\n },\n} as const;\n","//#region ---- Types ----\n\n/** Lookup properties on RiskMatrixCell that can be assigned to matrix axes. */\nexport type AXMRiskMatrixAxisProperty = 'likelihoodId' | 'severityId' | 'riskRatingId';\n\nexport interface AXMRiskMatrixAxisMapping {\n rowProperty: AXMRiskMatrixAxisProperty;\n columnProperty: AXMRiskMatrixAxisProperty;\n depthProperty: AXMRiskMatrixAxisProperty;\n}\n\nexport type AXMRiskMatrixOrientation = 'likelihood-rows' | 'severity-rows';\n\n//#endregion\n\n//#region ---- Constants ----\n\nexport const RISK_MATRIX_AXIS_PROPERTIES: readonly AXMRiskMatrixAxisProperty[] = [\n 'likelihoodId',\n 'severityId',\n 'riskRatingId',\n] as const;\n\nexport const DEFAULT_RISK_MATRIX_AXIS_MAPPING: AXMRiskMatrixAxisMapping = {\n rowProperty: 'likelihoodId',\n columnProperty: 'severityId',\n depthProperty: 'riskRatingId',\n};\n\nexport const RISK_MATRIX_AXIS_PROPERTY_SELECT_OPTIONS = [\n {\n id: 'likelihoodId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.likelihood-id.title',\n },\n {\n id: 'severityId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.severity-id.title',\n },\n {\n id: 'riskRatingId',\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.risk-rating-id.title',\n },\n] as const;\n\nexport const DEFAULT_RISK_MATRIX_ORIENTATION: AXMRiskMatrixOrientation = 'likelihood-rows';\n\nexport const RISK_MATRIX_ORIENTATION_OPTIONS: Array<{ id: AXMRiskMatrixOrientation; title: string }> = [\n {\n id: 'likelihood-rows',\n title:\n '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.likelihood-rows',\n },\n {\n id: 'severity-rows',\n title:\n '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix-orientation.options.severity-rows',\n },\n];\n\nexport const RISK_MATRIX_ORIENTATION_TITLE_KEYS: Record<AXMRiskMatrixOrientation, string> = {\n 'likelihood-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.likelihood-rows',\n 'severity-rows': '@risk-management:risk-matrix-cells.components.risk-matrix.titles.severity-rows',\n};\n\n//#endregion\n","//#region ---- Root Configuration ----\n\nconst config = {\n i18n: 'risk-management',\n module: 'RiskManagement',\n route: 'risk-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: config.route,\n name: config.module,\n title: '@risk-management:module.title',\n icon: 'fa-light fa-chart-line',\n },\n entities: {\n riskLikelihood: {\n name: 'RiskLikelihood',\n source: `${config.module}.RiskLikelihood`,\n title: '@risk-management:risk-likelihoods.entities.risk-likelihood.title',\n titlePlural: '@risk-management:risk-likelihoods.entities.risk-likelihood.plural',\n icon: 'fa-light fa-signal',\n },\n riskSeverity: {\n name: 'RiskSeverity',\n source: `${config.module}.RiskSeverity`,\n title: '@risk-management:risk-severities.entities.risk-severity.title',\n titlePlural: '@risk-management:risk-severities.entities.risk-severity.plural',\n icon: 'fa-light fa-gauge-high',\n },\n riskRating: {\n name: 'RiskRating',\n source: `${config.module}.RiskRating`,\n title: '@risk-management:risk-ratings.entities.risk-rating.title',\n titlePlural: '@risk-management:risk-ratings.entities.risk-rating.plural',\n icon: 'fa-light fa-ranking-star',\n },\n riskMatrixCell: {\n name: 'RiskMatrixCell',\n source: `${config.module}.RiskMatrixCell`,\n title: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.title',\n titlePlural: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.plural',\n icon: 'fa-light fa-table-cells',\n },\n },\n};\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskLikelihoodEntityModel extends AXPEntityModel<string> {\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPCategoryListItem, AXPMultiLanguageString, type AXPSpreadsheetData, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskMatrixCellEntityModel extends AXPEntityModel<string> {\n /** Business code from identifier rule `risk-matrix-cell-code` (`RMC-{date:YYYY}-{seq:4}`). */\n code: string;\n title: string;\n likelihoodId: string[];\n likelihood?: Array<{ id: string; title?: string; code?: string }>;\n severityId: string[];\n severity?: Array<{ id: string; title?: string; code?: string }>;\n /** Likelihood rows × severity columns mapped to risk rating ids. */\n matrix?: AXPSpreadsheetData;\n categoryIds?: string[];\n categories?: AXPCategoryListItem[];\n /** Registered catalog scope keys (module providers). */\n catalogScopeKeys?: string[];\n /** Resolved scope labels for list display (enriched by catalog-scope resolver middleware). */\n catalogScopes?: Array<{ name: string; title: AXPMultiLanguageString | string; cssClass?: string }>;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskRatingEntityModel extends AXPEntityModel<string> {\n /** Business code from identifier rule `risk-rating-code` (`RR-{date:YYYY}-{seq:4}`). */\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n /** Color from `material-design` palette (`color` plugin, free mode). */\n color?: string;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n//#endregion\n\n//#region ---- Entity model ----\n\nexport interface AXMRiskManagementRiskSeverityEntityModel extends AXPEntityModel<string> {\n code: string;\n title: string;\n description?: string;\n levelValue: number;\n isArchived?: boolean;\n archivedAt?: Date | string;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\n\nexport * from './risk-matrix-axis-mapping';\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
|
|
2
|
+
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { inject, Injectable } from '@angular/core';
|
|
5
|
+
import { isString, isEmpty, defaultTo, get } from 'lodash';
|
|
6
|
+
import { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';
|
|
7
|
+
import { AXMRiskMatrixViewerService } from './acorex-platform-module-risk-management-client.mjs';
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region ---- Command ----
|
|
11
|
+
class AXMPreviewRiskMatrixCellCommand {
|
|
12
|
+
constructor() {
|
|
13
|
+
//#region ---- Services & Dependencies ----
|
|
14
|
+
this.entityService = inject(AXPEntityService);
|
|
15
|
+
this.translationService = inject(AXTranslationService);
|
|
16
|
+
this.riskMatrixViewer = inject(AXMRiskMatrixViewerService);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region ---- Command Implementation ----
|
|
20
|
+
async execute(input) {
|
|
21
|
+
try {
|
|
22
|
+
const riskMatrixCellId = this.resolveRiskMatrixCellId(input);
|
|
23
|
+
if (!riskMatrixCellId) {
|
|
24
|
+
return {
|
|
25
|
+
success: false,
|
|
26
|
+
message: {
|
|
27
|
+
text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const matrixRecord = await this.entityService
|
|
32
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.riskMatrixCell.name)
|
|
33
|
+
.data()
|
|
34
|
+
.byKey(riskMatrixCellId);
|
|
35
|
+
if (!matrixRecord) {
|
|
36
|
+
return {
|
|
37
|
+
success: false,
|
|
38
|
+
message: {
|
|
39
|
+
text: await this.translationService.translateAsync('@general:messages.entity.not-found'),
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const dialogTitle = await this.resolveDialogTitle(input, matrixRecord);
|
|
44
|
+
await this.riskMatrixViewer.open({
|
|
45
|
+
context: { ...matrixRecord },
|
|
46
|
+
title: dialogTitle,
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
kind: 'object',
|
|
51
|
+
data: undefined,
|
|
52
|
+
metadata: { refresh: false },
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
message: {
|
|
59
|
+
text: await this.translationService.translateAsync('@general:messages.generic.error.description'),
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region ---- Utility Methods ----
|
|
66
|
+
resolveRiskMatrixCellId(input) {
|
|
67
|
+
const ctxOpts = input.options;
|
|
68
|
+
const ctxData = input.data;
|
|
69
|
+
const candidates = [
|
|
70
|
+
input.riskMatrixCellId,
|
|
71
|
+
input.id,
|
|
72
|
+
ctxOpts?.riskMatrixCellId,
|
|
73
|
+
ctxOpts?.id,
|
|
74
|
+
ctxData?.['riskMatrixCellId'],
|
|
75
|
+
ctxData?.['riskMatrixId'],
|
|
76
|
+
ctxData?.['id'],
|
|
77
|
+
];
|
|
78
|
+
for (const candidate of candidates) {
|
|
79
|
+
if (isString(candidate) && !isEmpty(candidate)) {
|
|
80
|
+
return candidate;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
async resolveDialogTitle(input, matrixRecord) {
|
|
86
|
+
const previewLabel = (await this.translationService.translateAsync('@general:actions.preview.title')) || 'Preview';
|
|
87
|
+
const locale = this.translationService.getActiveLang?.() ?? 'en-US';
|
|
88
|
+
const explicitTitle = defaultTo(input.title, get(input, 'options.title'));
|
|
89
|
+
if (isString(explicitTitle) && !isEmpty(explicitTitle)) {
|
|
90
|
+
return `${previewLabel}: ${resolveMultiLanguageString(explicitTitle, locale).trim()}`;
|
|
91
|
+
}
|
|
92
|
+
const recordTitle = resolveMultiLanguageString(matrixRecord.title, locale).trim();
|
|
93
|
+
return recordTitle ? `${previewLabel}: ${recordTitle}` : previewLabel;
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPreviewRiskMatrixCellCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
96
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPreviewRiskMatrixCellCommand }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPreviewRiskMatrixCellCommand, decorators: [{
|
|
99
|
+
type: Injectable
|
|
100
|
+
}] });
|
|
101
|
+
|
|
102
|
+
export { AXMPreviewRiskMatrixCellCommand };
|
|
103
|
+
//# sourceMappingURL=acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs","sources":["../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/commands/preview-risk-matrix-cell.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, get, isEmpty, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport { type AXMRiskManagementRiskMatrixCellEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport { AXMRiskMatrixViewerService } from '../risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Command Types ----\n\nexport interface AXMPreviewRiskMatrixCellCommandInput {\n riskMatrixCellId?: string;\n id?: string;\n title?: string;\n data?: Record<string, unknown>;\n options?: Partial<AXMPreviewRiskMatrixCellCommandInput>;\n}\n\n//#endregion\n\n//#region ---- Command ----\n\n@Injectable()\nexport class AXMPreviewRiskMatrixCellCommand implements AXPCommand<AXMPreviewRiskMatrixCellCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly riskMatrixViewer = inject(AXMRiskMatrixViewerService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: AXMPreviewRiskMatrixCellCommandInput): AXPCommandExecuteResultPromise<void> {\n try {\n const riskMatrixCellId = this.resolveRiskMatrixCellId(input);\n if (!riskMatrixCellId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const matrixRecord = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskMatrixCell.name)\n .data<string, AXMRiskManagementRiskMatrixCellEntityModel>()\n .byKey(riskMatrixCellId);\n\n if (!matrixRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n const dialogTitle = await this.resolveDialogTitle(input, matrixRecord);\n\n await this.riskMatrixViewer.open({\n context: { ...matrixRecord },\n title: dialogTitle,\n });\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n } catch {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.error.description'),\n },\n };\n }\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private resolveRiskMatrixCellId(input: AXMPreviewRiskMatrixCellCommandInput): string | undefined {\n const ctxOpts = input.options;\n const ctxData = input.data;\n\n const candidates = [\n input.riskMatrixCellId,\n input.id,\n ctxOpts?.riskMatrixCellId,\n ctxOpts?.id,\n ctxData?.['riskMatrixCellId'],\n ctxData?.['riskMatrixId'],\n ctxData?.['id'],\n ];\n\n for (const candidate of candidates) {\n if (isString(candidate) && !isEmpty(candidate)) {\n return candidate;\n }\n }\n\n return undefined;\n }\n\n private async resolveDialogTitle(\n input: AXMPreviewRiskMatrixCellCommandInput,\n matrixRecord: AXMRiskManagementRiskMatrixCellEntityModel,\n ): Promise<string> {\n const previewLabel =\n (await this.translationService.translateAsync('@general:actions.preview.title')) || 'Preview';\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n\n const explicitTitle = defaultTo(input.title, get(input, 'options.title'));\n if (isString(explicitTitle) && !isEmpty(explicitTitle)) {\n return `${previewLabel}: ${resolveMultiLanguageString(explicitTitle, locale).trim()}`;\n }\n\n const recordTitle = resolveMultiLanguageString(matrixRecord.title, locale).trim();\n return recordTitle ? `${previewLabel}: ${recordTitle}` : previewLabel;\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|