@acorex-platform/module-risk-management-client 0.0.37 → 0.0.46
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-entities-risk-likelihood-scale.mjs +361 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.mjs +364 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.mjs +388 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.mjs +361 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-D6WaBLYS.mjs +72 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-D6WaBLYS.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood-scale.entity-CVdw2sfd.mjs +311 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood-scale.entity-CVdw2sfd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix-cell.entity-b97tbRDA.mjs → acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix.entity-Chp-843O.mjs} +131 -115
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix.entity-Chp-843O.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating-scale.entity-Cjg7aGMl.mjs +338 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating-scale.entity-Cjg7aGMl.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity-scale.entity-Cgti6Xeo.mjs +311 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity-scale.entity-Cgti6Xeo.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts.mjs +233 -49
- package/fesm2022/acorex-platform-module-risk-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-risk-management-client-local-entities.mjs +4 -4
- package/fesm2022/acorex-platform-module-risk-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs → acorex-platform-module-risk-management-client-preview-risk-matrix.command-gVKnE3c0.mjs} +14 -12
- package/fesm2022/acorex-platform-module-risk-management-client-preview-risk-matrix.command-gVKnE3c0.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-risk-management-client.mjs +439 -230
- package/fesm2022/acorex-platform-module-risk-management-client.mjs.map +1 -1
- package/package.json +13 -13
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.d.ts +5 -0
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.d.ts +5 -0
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.d.ts +5 -0
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.d.ts +5 -0
- package/types/acorex-platform-module-risk-management-client-contracts.d.ts +157 -65
- package/types/acorex-platform-module-risk-management-client.d.ts +77 -31
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.mjs +0 -222
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.mjs +0 -348
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.mjs +0 -227
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.mjs +0 -222
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-Dc6Me3H6.mjs +0 -72
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-Dc6Me3H6.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood.entity-DzwLi3Ga.mjs +0 -172
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood.entity-DzwLi3Ga.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix-cell.entity-b97tbRDA.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating.entity-CreMsiCu.mjs +0 -177
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating.entity-CreMsiCu.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity.entity-bEyLH8dE.mjs +0 -172
- package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity.entity-bEyLH8dE.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs.map +0 -1
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.d.ts +0 -5
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.d.ts +0 -5
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.d.ts +0 -5
- package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.d.ts +0 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { AXPModuleManifest, AXPCategoryListItem, AXPMultiLanguageString, AXPSpreadsheetData } from '@acorex-platform/framework-shared/core';
|
|
1
2
|
import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
|
|
2
|
-
import { AXPSpreadsheetData, AXPCategoryListItem, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';
|
|
3
3
|
|
|
4
4
|
/** Hazard catalog scope for environmental and operational risk matrix records. */
|
|
5
5
|
declare const RISK_CATALOG_SCOPE_HAZARD = "risk-management.hazard";
|
|
@@ -8,10 +8,10 @@ declare const RISK_CATALOG_SCOPE_PPE_ITEMS = "risk-management.ppe-items";
|
|
|
8
8
|
|
|
9
9
|
declare const AXMRiskManagementMenuKeys: {
|
|
10
10
|
readonly Root: "RiskManagement:Menu:Root";
|
|
11
|
-
readonly
|
|
12
|
-
readonly
|
|
13
|
-
readonly
|
|
14
|
-
readonly
|
|
11
|
+
readonly RiskLikelihoodScales: "RiskManagement:Menu:RiskLikelihoodScales";
|
|
12
|
+
readonly RiskSeverityScales: "RiskManagement:Menu:RiskSeverityScales";
|
|
13
|
+
readonly RiskRatingScales: "RiskManagement:Menu:RiskRatingScales";
|
|
14
|
+
readonly RiskMatrices: "RiskManagement:Menu:RiskMatrices";
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -33,28 +33,28 @@ declare const AXPSafetyRiskPermissionKeys: {
|
|
|
33
33
|
declare const AXMRiskManagementPermissionKeys: {
|
|
34
34
|
readonly RiskManagement: {
|
|
35
35
|
readonly Management: "SafetyRisk:Permission:MaintainRisk";
|
|
36
|
-
readonly
|
|
36
|
+
readonly RiskLikelihoodScale: {
|
|
37
37
|
readonly Management: "SafetyRisk:Permission:Setup";
|
|
38
38
|
readonly View: "SafetyRisk:Permission:Setup";
|
|
39
39
|
readonly Create: "SafetyRisk:Permission:Setup";
|
|
40
40
|
readonly Update: "SafetyRisk:Permission:Setup";
|
|
41
41
|
readonly Delete: "SafetyRisk:Permission:Setup";
|
|
42
42
|
};
|
|
43
|
-
readonly
|
|
43
|
+
readonly RiskSeverityScale: {
|
|
44
44
|
readonly Management: "SafetyRisk:Permission:Setup";
|
|
45
45
|
readonly View: "SafetyRisk:Permission:Setup";
|
|
46
46
|
readonly Create: "SafetyRisk:Permission:Setup";
|
|
47
47
|
readonly Update: "SafetyRisk:Permission:Setup";
|
|
48
48
|
readonly Delete: "SafetyRisk:Permission:Setup";
|
|
49
49
|
};
|
|
50
|
-
readonly
|
|
50
|
+
readonly RiskRatingScale: {
|
|
51
51
|
readonly Management: "SafetyRisk:Permission:Setup";
|
|
52
52
|
readonly View: "SafetyRisk:Permission:Setup";
|
|
53
53
|
readonly Create: "SafetyRisk:Permission:Setup";
|
|
54
54
|
readonly Update: "SafetyRisk:Permission:Setup";
|
|
55
55
|
readonly Delete: "SafetyRisk:Permission:Setup";
|
|
56
56
|
};
|
|
57
|
-
readonly
|
|
57
|
+
readonly RiskMatrix: {
|
|
58
58
|
readonly Management: "SafetyRisk:Permission:MaintainRisk";
|
|
59
59
|
readonly View: "SafetyRisk:Permission:MaintainRisk";
|
|
60
60
|
readonly Create: "SafetyRisk:Permission:MaintainRisk";
|
|
@@ -64,7 +64,7 @@ declare const AXMRiskManagementPermissionKeys: {
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
/**
|
|
67
|
+
/** Spreadsheet axis slots. Values are display keys, not RiskMatrix FK field names. */
|
|
68
68
|
type AXMRiskMatrixAxisProperty = 'likelihoodId' | 'severityId' | 'riskRatingId';
|
|
69
69
|
interface AXMRiskMatrixAxisMapping {
|
|
70
70
|
rowProperty: AXMRiskMatrixAxisProperty;
|
|
@@ -74,16 +74,6 @@ interface AXMRiskMatrixAxisMapping {
|
|
|
74
74
|
type AXMRiskMatrixOrientation = 'likelihood-rows' | 'severity-rows';
|
|
75
75
|
declare const RISK_MATRIX_AXIS_PROPERTIES: readonly AXMRiskMatrixAxisProperty[];
|
|
76
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
77
|
declare const DEFAULT_RISK_MATRIX_ORIENTATION: AXMRiskMatrixOrientation;
|
|
88
78
|
declare const RISK_MATRIX_ORIENTATION_OPTIONS: Array<{
|
|
89
79
|
id: AXMRiskMatrixOrientation;
|
|
@@ -104,28 +94,28 @@ declare const RootConfig: {
|
|
|
104
94
|
icon: string;
|
|
105
95
|
};
|
|
106
96
|
entities: {
|
|
107
|
-
|
|
97
|
+
riskLikelihoodScale: {
|
|
108
98
|
name: string;
|
|
109
99
|
source: string;
|
|
110
100
|
title: string;
|
|
111
101
|
titlePlural: string;
|
|
112
102
|
icon: string;
|
|
113
103
|
};
|
|
114
|
-
|
|
104
|
+
riskSeverityScale: {
|
|
115
105
|
name: string;
|
|
116
106
|
source: string;
|
|
117
107
|
title: string;
|
|
118
108
|
titlePlural: string;
|
|
119
109
|
icon: string;
|
|
120
110
|
};
|
|
121
|
-
|
|
111
|
+
riskRatingScale: {
|
|
122
112
|
name: string;
|
|
123
113
|
source: string;
|
|
124
114
|
title: string;
|
|
125
115
|
titlePlural: string;
|
|
126
116
|
icon: string;
|
|
127
117
|
};
|
|
128
|
-
|
|
118
|
+
riskMatrix: {
|
|
129
119
|
name: string;
|
|
130
120
|
source: string;
|
|
131
121
|
title: string;
|
|
@@ -135,71 +125,173 @@ declare const RootConfig: {
|
|
|
135
125
|
};
|
|
136
126
|
};
|
|
137
127
|
|
|
138
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Risk Management module manifest.
|
|
130
|
+
*/
|
|
131
|
+
declare const RiskManagementManifest: AXPModuleManifest;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Likelihood scale level managed via repeater on {@link AXMRiskManagementRiskLikelihoodScaleEntityModel}.
|
|
135
|
+
* Stable `id` values remain on levels for other lookups; matrix cells key by `code`.
|
|
136
|
+
*/
|
|
137
|
+
interface AXMRiskLikelihoodLevelItemModel {
|
|
138
|
+
id?: string;
|
|
139
|
+
/** Level code used as the risk-matrix axis / cell key. */
|
|
140
|
+
code?: string;
|
|
141
|
+
title: string;
|
|
142
|
+
score: number;
|
|
143
|
+
/**
|
|
144
|
+
* Optional explicit order. When omitted, repeater array index defines order
|
|
145
|
+
* (`RepeaterLayout` + `allowReorder`).
|
|
146
|
+
*/
|
|
147
|
+
order?: number;
|
|
148
|
+
}
|
|
149
|
+
interface AXMRiskManagementRiskLikelihoodScaleEntityModel extends AXPEntityModel<string> {
|
|
150
|
+
/** Business code from identifier rule `risk-likelihood-scale-code` (`RLS-{date:YYYY}-{seq:4}`). */
|
|
139
151
|
code: string;
|
|
140
152
|
title: string;
|
|
141
153
|
description?: string;
|
|
142
|
-
|
|
154
|
+
/** Likelihood levels managed via repeater. */
|
|
155
|
+
levels: AXMRiskLikelihoodLevelItemModel[];
|
|
143
156
|
isArchived?: boolean;
|
|
144
157
|
archivedAt?: Date | string;
|
|
145
158
|
}
|
|
146
159
|
|
|
147
|
-
|
|
148
|
-
|
|
160
|
+
/** Sorts levels by explicit `order`, then `score`, then array index. */
|
|
161
|
+
declare function sortRiskLikelihoodLevels(levels: AXMRiskLikelihoodLevelItemModel[] | null | undefined): AXMRiskLikelihoodLevelItemModel[];
|
|
162
|
+
/** Returns level codes in display order (skips items without code). */
|
|
163
|
+
declare function resolveRiskLikelihoodLevelCodes(levels: AXMRiskLikelihoodLevelItemModel[] | null | undefined): string[];
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Rating scale level managed via repeater on {@link AXMRiskManagementRiskRatingScaleEntityModel}.
|
|
167
|
+
* Stable `id` values remain on levels for other lookups; matrix cells key by `code`.
|
|
168
|
+
*/
|
|
169
|
+
interface AXMRiskRatingLevelItemModel {
|
|
170
|
+
id?: string;
|
|
171
|
+
/** Level code used as the risk-matrix cell rating value. */
|
|
172
|
+
code?: string;
|
|
173
|
+
title: string;
|
|
174
|
+
score: number;
|
|
175
|
+
/** Surface CSS class from `color-chooser` (`success-lighter-surface` or `axp-hex-4caf50`). */
|
|
176
|
+
color?: string;
|
|
177
|
+
/**
|
|
178
|
+
* Optional explicit order. When omitted, repeater array index defines order
|
|
179
|
+
* (`RepeaterLayout` + `allowReorder`).
|
|
180
|
+
*/
|
|
181
|
+
order?: number;
|
|
182
|
+
}
|
|
183
|
+
interface AXMRiskManagementRiskRatingScaleEntityModel extends AXPEntityModel<string> {
|
|
184
|
+
/** Business code from identifier rule `risk-rating-scale-code` (`RRS-{date:YYYY}-{seq:4}`). */
|
|
149
185
|
code: string;
|
|
150
186
|
title: string;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
title?: string;
|
|
155
|
-
code?: string;
|
|
156
|
-
}>;
|
|
157
|
-
/** @deprecated Use `likelihoodIds`. Kept so existing documents still resolve in widgets. */
|
|
158
|
-
likelihoodId?: string[];
|
|
159
|
-
severityIds: string[];
|
|
160
|
-
severityList?: Array<{
|
|
161
|
-
id: string;
|
|
162
|
-
title?: string;
|
|
163
|
-
code?: string;
|
|
164
|
-
}>;
|
|
165
|
-
/** @deprecated Use `severityIds`. Kept so existing documents still resolve in widgets. */
|
|
166
|
-
severityId?: string[];
|
|
167
|
-
/** Likelihood rows × severity columns mapped to risk rating ids. */
|
|
168
|
-
matrix?: AXPSpreadsheetData;
|
|
169
|
-
categoryIds?: string[];
|
|
170
|
-
categories?: AXPCategoryListItem[];
|
|
171
|
-
/** Registered catalog scope keys (module providers). */
|
|
172
|
-
catalogScopeKeys?: string[];
|
|
173
|
-
/** Resolved scope labels for list display (enriched by catalog-scope resolver middleware). */
|
|
174
|
-
catalogScopes?: Array<{
|
|
175
|
-
name: string;
|
|
176
|
-
title: AXPMultiLanguageString | string;
|
|
177
|
-
cssClass?: string;
|
|
178
|
-
}>;
|
|
187
|
+
description?: string;
|
|
188
|
+
/** Rating levels managed via repeater. */
|
|
189
|
+
levels: AXMRiskRatingLevelItemModel[];
|
|
179
190
|
isArchived?: boolean;
|
|
180
191
|
archivedAt?: Date | string;
|
|
181
192
|
}
|
|
182
193
|
|
|
183
|
-
|
|
184
|
-
|
|
194
|
+
/**
|
|
195
|
+
* Severity scale level managed via repeater on {@link AXMRiskManagementRiskSeverityScaleEntityModel}.
|
|
196
|
+
* Stable `id` values remain on levels for other lookups; matrix cells key by `code`.
|
|
197
|
+
*/
|
|
198
|
+
interface AXMRiskSeverityLevelItemModel {
|
|
199
|
+
id?: string;
|
|
200
|
+
/** Level code used as the risk-matrix axis / cell key. */
|
|
201
|
+
code?: string;
|
|
202
|
+
title: string;
|
|
203
|
+
score: number;
|
|
204
|
+
/**
|
|
205
|
+
* Optional explicit order. When omitted, repeater array index defines order
|
|
206
|
+
* (`RepeaterLayout` + `allowReorder`).
|
|
207
|
+
*/
|
|
208
|
+
order?: number;
|
|
209
|
+
}
|
|
210
|
+
interface AXMRiskManagementRiskSeverityScaleEntityModel extends AXPEntityModel<string> {
|
|
211
|
+
/** Business code from identifier rule `risk-severity-scale-code` (`RSS-{date:YYYY}-{seq:4}`). */
|
|
185
212
|
code: string;
|
|
186
213
|
title: string;
|
|
187
214
|
description?: string;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
color?: string;
|
|
215
|
+
/** Severity levels managed via repeater. */
|
|
216
|
+
levels: AXMRiskSeverityLevelItemModel[];
|
|
191
217
|
isArchived?: boolean;
|
|
192
218
|
archivedAt?: Date | string;
|
|
193
219
|
}
|
|
194
220
|
|
|
195
|
-
|
|
221
|
+
/** Lookup expose snapshot for a selected scale (`levels` drive matrix axes). */
|
|
222
|
+
interface AXMRiskMatrixScaleRef<TLevel> {
|
|
223
|
+
id?: string;
|
|
224
|
+
title?: string;
|
|
225
|
+
code?: string;
|
|
226
|
+
levels?: TLevel[];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* One matrix cell keyed by selected-scale **level codes** (not scale entities or level ids).
|
|
230
|
+
*/
|
|
231
|
+
interface AXMRiskMatrixCellValueObject {
|
|
232
|
+
likelihoodLevelCode: string;
|
|
233
|
+
severityLevelCode: string;
|
|
234
|
+
ratingLevelCode: string;
|
|
235
|
+
}
|
|
236
|
+
/** Alias matching the design name {@link AXMRiskMatrixCellValueObject}. */
|
|
237
|
+
type RiskMatrixCellValueObject = AXMRiskMatrixCellValueObject;
|
|
238
|
+
interface AXMRiskManagementRiskMatrixEntityModel extends AXPEntityModel<string> {
|
|
239
|
+
/** Business code from identifier rule `risk-matrix-code` (`RMC-{date:YYYY}-{seq:4}`). */
|
|
196
240
|
code: string;
|
|
197
241
|
title: string;
|
|
198
242
|
description?: string;
|
|
199
|
-
|
|
243
|
+
/** Controls spreadsheet row/column layout only. Persisted `cells` stay likelihood × severity. */
|
|
244
|
+
matrixOrientation?: AXMRiskMatrixOrientation;
|
|
245
|
+
/** Selected likelihood scale that supplies axis levels. */
|
|
246
|
+
likelihoodScaleId: string;
|
|
247
|
+
likelihoodScale?: AXMRiskMatrixScaleRef<AXMRiskLikelihoodLevelItemModel>;
|
|
248
|
+
/** Selected severity scale that supplies axis levels. */
|
|
249
|
+
severityScaleId: string;
|
|
250
|
+
severityScale?: AXMRiskMatrixScaleRef<AXMRiskSeverityLevelItemModel>;
|
|
251
|
+
/** Selected rating scale that supplies cell-value levels. */
|
|
252
|
+
ratingScaleId: string;
|
|
253
|
+
ratingScale?: AXMRiskMatrixScaleRef<AXMRiskRatingLevelItemModel>;
|
|
254
|
+
/** Likelihood × severity combinations mapped to rating level codes. */
|
|
255
|
+
cells: AXMRiskMatrixCellValueObject[];
|
|
256
|
+
categoryIds?: string[];
|
|
257
|
+
categories?: AXPCategoryListItem[];
|
|
258
|
+
/** Registered catalog scope keys (module providers). */
|
|
259
|
+
catalogScopeKeys?: string[];
|
|
260
|
+
/** Resolved scope labels for list display (enriched by catalog-scope resolver middleware). */
|
|
261
|
+
catalogScopes?: Array<{
|
|
262
|
+
name: string;
|
|
263
|
+
title: AXPMultiLanguageString | string;
|
|
264
|
+
cssClass?: string;
|
|
265
|
+
}>;
|
|
200
266
|
isArchived?: boolean;
|
|
201
267
|
archivedAt?: Date | string;
|
|
202
268
|
}
|
|
203
269
|
|
|
204
|
-
|
|
205
|
-
|
|
270
|
+
declare function isRiskMatrixCellValueObject(value: unknown): value is AXMRiskMatrixCellValueObject;
|
|
271
|
+
declare function normalizeRiskMatrixCellValueObject(value: unknown): AXMRiskMatrixCellValueObject | null;
|
|
272
|
+
/** Converts persisted cells into the spreadsheet shape used by the matrix widget. */
|
|
273
|
+
declare function toRiskMatrixSpreadsheetData(cells: AXMRiskMatrixCellValueObject[] | null | undefined): AXPSpreadsheetData;
|
|
274
|
+
/** Converts spreadsheet values (likelihood × severity → rating) into cell value objects. */
|
|
275
|
+
declare function fromRiskMatrixSpreadsheetData(matrix: AXPSpreadsheetData | null | undefined): AXMRiskMatrixCellValueObject[];
|
|
276
|
+
/**
|
|
277
|
+
* Accepts persisted `cells` or a legacy nested spreadsheet object and returns cell value objects.
|
|
278
|
+
*/
|
|
279
|
+
declare function resolveRiskMatrixCells(value: unknown): AXMRiskMatrixCellValueObject[];
|
|
280
|
+
/**
|
|
281
|
+
* Drops cells whose level codes are no longer on the selected scales.
|
|
282
|
+
* Persisted shape stays likelihood × severity → rating.
|
|
283
|
+
*/
|
|
284
|
+
declare function pruneRiskMatrixCells(cells: AXMRiskMatrixCellValueObject[] | null | undefined, likelihoodCodes: string[], severityCodes: string[], ratingCodes?: string[]): AXMRiskMatrixCellValueObject[];
|
|
285
|
+
|
|
286
|
+
/** Sorts levels by explicit `order`, then `score`, then array index. */
|
|
287
|
+
declare function sortRiskRatingLevels(levels: AXMRiskRatingLevelItemModel[] | null | undefined): AXMRiskRatingLevelItemModel[];
|
|
288
|
+
/** Returns level codes in display order (skips items without code). */
|
|
289
|
+
declare function resolveRiskRatingLevelCodes(levels: AXMRiskRatingLevelItemModel[] | null | undefined): string[];
|
|
290
|
+
|
|
291
|
+
/** Sorts levels by explicit `order`, then `score`, then array index. */
|
|
292
|
+
declare function sortRiskSeverityLevels(levels: AXMRiskSeverityLevelItemModel[] | null | undefined): AXMRiskSeverityLevelItemModel[];
|
|
293
|
+
/** Returns level codes in display order (skips items without code). */
|
|
294
|
+
declare function resolveRiskSeverityLevelCodes(levels: AXMRiskSeverityLevelItemModel[] | null | undefined): string[];
|
|
295
|
+
|
|
296
|
+
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_ORIENTATION_OPTIONS, RISK_MATRIX_ORIENTATION_TITLE_KEYS, RiskManagementManifest, RootConfig, fromRiskMatrixSpreadsheetData, isRiskMatrixCellValueObject, normalizeRiskMatrixCellValueObject, pruneRiskMatrixCells, resolveRiskLikelihoodLevelCodes, resolveRiskMatrixCells, resolveRiskRatingLevelCodes, resolveRiskSeverityLevelCodes, sortRiskLikelihoodLevels, sortRiskRatingLevels, sortRiskSeverityLevels, toRiskMatrixSpreadsheetData };
|
|
297
|
+
export type { AXMRiskLikelihoodLevelItemModel, AXMRiskManagementRiskLikelihoodScaleEntityModel, AXMRiskManagementRiskMatrixEntityModel, AXMRiskManagementRiskRatingScaleEntityModel, AXMRiskManagementRiskSeverityScaleEntityModel, AXMRiskMatrixAxisMapping, AXMRiskMatrixAxisProperty, AXMRiskMatrixCellValueObject, AXMRiskMatrixOrientation, AXMRiskMatrixScaleRef, AXMRiskRatingLevelItemModel, AXMRiskSeverityLevelItemModel, RiskMatrixCellValueObject };
|
|
@@ -4,8 +4,10 @@ import * as _angular_core from '@angular/core';
|
|
|
4
4
|
import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
|
|
5
5
|
import { AXPColumnWidgetComponent, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
6
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';
|
|
7
|
+
import { AXMRiskMatrixAxisMapping, AXMRiskLikelihoodLevelItemModel, AXMRiskSeverityLevelItemModel, AXMRiskRatingLevelItemModel, AXMRiskMatrixCellValueObject, AXMRiskMatrixAxisProperty, AXMRiskMatrixOrientation } from '@acorex-platform/module-risk-management-client/contracts';
|
|
8
8
|
import { AXPSpreadsheetData, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetItem, AXPSpreadsheetColumn } from '@acorex-platform/framework-client/layout/components';
|
|
9
|
+
import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
|
|
10
|
+
import { AXPSpreadsheetData as AXPSpreadsheetData$1 } from '@acorex-platform/framework-shared/core';
|
|
9
11
|
|
|
10
12
|
declare class AXMRiskManagementMenuProvider implements AXPMenuProvider {
|
|
11
13
|
private readonly entityService;
|
|
@@ -29,18 +31,23 @@ declare class AXMRiskManagementModule {
|
|
|
29
31
|
|
|
30
32
|
declare class AXMRiskManagementRiskMatrixComponent {
|
|
31
33
|
private readonly entityService;
|
|
32
|
-
private readonly
|
|
33
|
-
private readonly
|
|
34
|
-
private readonly
|
|
34
|
+
private readonly likelihoodScaleDataAccessor;
|
|
35
|
+
private readonly severityScaleDataAccessor;
|
|
36
|
+
private readonly riskRatingScaleDataAccessor;
|
|
35
37
|
private readonly multiLanguageResolver;
|
|
36
38
|
/** Axis mapping. Defaults to likelihood × severity → risk rating. */
|
|
37
39
|
axisMapping: _angular_core.InputSignal<Partial<AXMRiskMatrixAxisMapping>>;
|
|
38
|
-
/** Selected
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
/** Selected scale ids from the parent matrix record. Axes load from that scale's levels. */
|
|
41
|
+
likelihoodScaleId: _angular_core.InputSignal<string | null | undefined>;
|
|
42
|
+
severityScaleId: _angular_core.InputSignal<string | null | undefined>;
|
|
43
|
+
ratingScaleId: _angular_core.InputSignal<string | null | undefined>;
|
|
44
|
+
/** Lookup expose snapshots — used in create before (or instead of) byKey. */
|
|
45
|
+
likelihoodScaleLevels: _angular_core.InputSignal<AXMRiskLikelihoodLevelItemModel[] | null | undefined>;
|
|
46
|
+
severityScaleLevels: _angular_core.InputSignal<AXMRiskSeverityLevelItemModel[] | null | undefined>;
|
|
47
|
+
ratingScaleLevels: _angular_core.InputSignal<AXMRiskRatingLevelItemModel[] | null | undefined>;
|
|
48
|
+
/** Controls row/column layout only; persisted cells stay likelihood × severity. */
|
|
42
49
|
matrixOrientation: _angular_core.InputSignal<string | null | undefined>;
|
|
43
|
-
/**
|
|
50
|
+
/** Spreadsheet data keyed by **level codes**: { [likelihoodCode]: { [severityCode]: ratingCode } } */
|
|
44
51
|
value: _angular_core.InputSignal<AXPSpreadsheetData>;
|
|
45
52
|
readonly: _angular_core.InputSignal<boolean>;
|
|
46
53
|
valueChange: _angular_core.OutputEmitterRef<AXPSpreadsheetData>;
|
|
@@ -48,11 +55,14 @@ declare class AXMRiskManagementRiskMatrixComponent {
|
|
|
48
55
|
private readonly likelihoodItems;
|
|
49
56
|
private readonly severityItems;
|
|
50
57
|
private readonly depthItems;
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
/** Drops overlapping create-mode loads so an earlier request cannot wipe later rating levels. */
|
|
59
|
+
private loadAxesRequestId;
|
|
53
60
|
protected readonly resolvedMatrixOrientation: _angular_core.Signal<_acorex_platform_module_risk_management_client_contracts.AXMRiskMatrixOrientation>;
|
|
54
61
|
protected readonly resolvedAxisMapping: _angular_core.Signal<AXMRiskMatrixAxisMapping>;
|
|
55
62
|
protected readonly displayMatrix: _angular_core.Signal<AXPSpreadsheetData>;
|
|
63
|
+
protected readonly spreadsheetIdentity: _angular_core.Signal<string>;
|
|
64
|
+
/** Create mode: do not open empty cell editors before rating levels are loaded. */
|
|
65
|
+
protected readonly cellSelectLocked: _angular_core.Signal<boolean>;
|
|
56
66
|
protected readonly matrixTitleKey: _angular_core.Signal<string>;
|
|
57
67
|
protected readonly verticalTitles: _angular_core.Signal<AXPSpreadsheetItem[]>;
|
|
58
68
|
protected readonly horizontalTitles: _angular_core.Signal<AXPSpreadsheetItem[]>;
|
|
@@ -63,14 +73,22 @@ declare class AXMRiskManagementRiskMatrixComponent {
|
|
|
63
73
|
protected readonly spreadsheetRows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
64
74
|
constructor();
|
|
65
75
|
private loadMatrixAxes;
|
|
76
|
+
private applyAxisItems;
|
|
66
77
|
private queryAxisItems;
|
|
67
|
-
private
|
|
78
|
+
private readScaleLevels;
|
|
79
|
+
private mapLikelihoodLevels;
|
|
80
|
+
private mapSeverityLevels;
|
|
81
|
+
private mapRatingLevels;
|
|
82
|
+
private mapAxisLevels;
|
|
83
|
+
private toAxisLevelKey;
|
|
84
|
+
private loadScaleWithLevels;
|
|
85
|
+
private queryScaleById;
|
|
68
86
|
private toSpreadsheetItems;
|
|
69
87
|
private convertSpreadsheetRowsToMatrixData;
|
|
70
88
|
protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void;
|
|
71
89
|
protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void;
|
|
72
90
|
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; }; "
|
|
91
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskManagementRiskMatrixComponent, "axm-risk-matrix", never, { "axisMapping": { "alias": "axisMapping"; "required": false; "isSignal": true; }; "likelihoodScaleId": { "alias": "likelihoodScaleId"; "required": false; "isSignal": true; }; "severityScaleId": { "alias": "severityScaleId"; "required": false; "isSignal": true; }; "ratingScaleId": { "alias": "ratingScaleId"; "required": false; "isSignal": true; }; "likelihoodScaleLevels": { "alias": "likelihoodScaleLevels"; "required": false; "isSignal": true; }; "severityScaleLevels": { "alias": "severityScaleLevels"; "required": false; "isSignal": true; }; "ratingScaleLevels": { "alias": "ratingScaleLevels"; "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
92
|
}
|
|
75
93
|
|
|
76
94
|
interface AXMRiskMatrixViewerOpenOptions {
|
|
@@ -100,29 +118,46 @@ declare class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponen
|
|
|
100
118
|
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
119
|
}
|
|
102
120
|
|
|
103
|
-
declare class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<
|
|
121
|
+
declare class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXMRiskMatrixCellValueObject[]> {
|
|
104
122
|
constructor();
|
|
105
123
|
protected readonly: _angular_core.Signal<boolean>;
|
|
106
124
|
protected axisMapping: _angular_core.Signal<AXMRiskMatrixAxisMapping>;
|
|
107
125
|
protected matrixOrientation: _angular_core.Signal<_acorex_platform_module_risk_management_client_contracts.AXMRiskMatrixOrientation>;
|
|
108
|
-
protected
|
|
109
|
-
protected
|
|
110
|
-
protected
|
|
111
|
-
protected
|
|
126
|
+
protected likelihoodScaleId: _angular_core.Signal<string | undefined>;
|
|
127
|
+
protected severityScaleId: _angular_core.Signal<string | undefined>;
|
|
128
|
+
protected ratingScaleId: _angular_core.Signal<string | undefined>;
|
|
129
|
+
protected likelihoodScaleLevels: _angular_core.Signal<AXMRiskLikelihoodLevelItemModel[] | undefined>;
|
|
130
|
+
protected severityScaleLevels: _angular_core.Signal<AXMRiskSeverityLevelItemModel[] | undefined>;
|
|
131
|
+
protected ratingScaleLevels: _angular_core.Signal<AXMRiskRatingLevelItemModel[] | undefined>;
|
|
132
|
+
protected likelihoodCodes: _angular_core.Signal<string[]>;
|
|
133
|
+
protected severityCodes: _angular_core.Signal<string[]>;
|
|
134
|
+
protected ratingCodes: _angular_core.Signal<string[]>;
|
|
135
|
+
protected matrixValue: _angular_core.Signal<AXPSpreadsheetData$1>;
|
|
136
|
+
protected handleValueChange(data: AXPSpreadsheetData$1): void;
|
|
137
|
+
private resolveScaleId;
|
|
138
|
+
private resolveScaleLevels;
|
|
112
139
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetEditComponent, never>;
|
|
113
140
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetEditComponent, "axm-risk-matrix-widget-edit", never, {}, {}, never, never, true, never>;
|
|
114
141
|
}
|
|
115
142
|
|
|
116
|
-
declare class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<
|
|
143
|
+
declare class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXMRiskMatrixCellValueObject[]> {
|
|
117
144
|
protected axisMapping: _angular_core.Signal<AXMRiskMatrixAxisMapping>;
|
|
118
145
|
protected matrixOrientation: _angular_core.Signal<_acorex_platform_module_risk_management_client_contracts.AXMRiskMatrixOrientation>;
|
|
119
|
-
protected
|
|
120
|
-
protected
|
|
121
|
-
protected
|
|
146
|
+
protected likelihoodScaleId: _angular_core.Signal<string | undefined>;
|
|
147
|
+
protected severityScaleId: _angular_core.Signal<string | undefined>;
|
|
148
|
+
protected ratingScaleId: _angular_core.Signal<string | undefined>;
|
|
149
|
+
protected likelihoodScaleLevels: _angular_core.Signal<AXMRiskLikelihoodLevelItemModel[] | undefined>;
|
|
150
|
+
protected severityScaleLevels: _angular_core.Signal<AXMRiskSeverityLevelItemModel[] | undefined>;
|
|
151
|
+
protected ratingScaleLevels: _angular_core.Signal<AXMRiskRatingLevelItemModel[] | undefined>;
|
|
152
|
+
protected matrixValue: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPSpreadsheetData>;
|
|
153
|
+
private resolveScaleId;
|
|
154
|
+
private resolveScaleLevels;
|
|
122
155
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRiskMatrixWidgetViewComponent, never>;
|
|
123
156
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMRiskMatrixWidgetViewComponent, "axm-risk-matrix-widget-view", never, {}, {}, never, never, true, never>;
|
|
124
157
|
}
|
|
125
158
|
|
|
159
|
+
type RiskMatrixScaleIdField = 'likelihoodScaleId' | 'severityScaleId' | 'ratingScaleId';
|
|
160
|
+
type RiskMatrixScaleSnapshotField = 'likelihoodScale' | 'severityScale' | 'ratingScale';
|
|
126
161
|
declare function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty;
|
|
127
162
|
declare function resolveRiskMatrixAxisMapping(mapping?: Partial<AXMRiskMatrixAxisMapping> | null): AXMRiskMatrixAxisMapping;
|
|
128
163
|
declare function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation;
|
|
@@ -141,18 +176,29 @@ declare function toDisplayMatrixData(canonical: AXPSpreadsheetData, orientation?
|
|
|
141
176
|
/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */
|
|
142
177
|
declare function toCanonicalMatrixData(display: AXPSpreadsheetData, orientation?: unknown): AXPSpreadsheetData;
|
|
143
178
|
/**
|
|
144
|
-
* Reads selected axis
|
|
145
|
-
*
|
|
179
|
+
* Reads selected axis **level codes** from a risk-matrix record.
|
|
180
|
+
* Codes come from the selected scale snapshot (`*.scale.levels`), never from scale entity ids.
|
|
146
181
|
*/
|
|
147
|
-
declare function
|
|
148
|
-
/**
|
|
149
|
-
declare function
|
|
182
|
+
declare function resolveRiskMatrixAxisCodes(data: unknown, axis: 'likelihood' | 'severity' | 'rating'): string[];
|
|
183
|
+
/** Resolves a lookup uuid that may be stored as a string or `{ id }` row. */
|
|
184
|
+
declare function resolveRiskMatrixScaleId(value: unknown): string | undefined;
|
|
150
185
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
186
|
+
* Create mode may have the snapshot (`ratingScale.id`) before `ratingScaleId` is committed.
|
|
187
|
+
* Edit mode has both after GET join.
|
|
153
188
|
*/
|
|
154
|
-
declare function
|
|
189
|
+
declare function resolveRiskMatrixScaleIdFromRecord(data: unknown, idField: RiskMatrixScaleIdField, snapshotField: RiskMatrixScaleSnapshotField): string | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* Widget-context scale id: path `getValue` first, then the full record snapshot.
|
|
192
|
+
*/
|
|
193
|
+
declare function resolveRiskMatrixWidgetScaleId(getValue: (path: string) => unknown, data: unknown, idField: RiskMatrixScaleIdField, snapshotField: RiskMatrixScaleSnapshotField): string | undefined;
|
|
194
|
+
/**
|
|
195
|
+
* Nested `levels` from a lookup expose snapshot (`likelihoodScale.levels`, …).
|
|
196
|
+
* Empty arrays are treated as missing so create-mode can still fetch by id.
|
|
197
|
+
*/
|
|
198
|
+
declare function resolveRiskMatrixScaleLevels<T>(data: unknown, snapshotField: RiskMatrixScaleSnapshotField, levelsFromPath?: unknown): T[] | undefined;
|
|
199
|
+
/** Widget-context scale levels: nested path, then snapshot on the record. */
|
|
200
|
+
declare function resolveRiskMatrixWidgetScaleLevels<T>(getValue: (path: string) => unknown, data: unknown, snapshotField: RiskMatrixScaleSnapshotField): T[] | undefined;
|
|
155
201
|
declare function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean;
|
|
156
202
|
|
|
157
|
-
export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation,
|
|
203
|
+
export { AXMRiskManagementMenuProvider, AXMRiskManagementModule, AXMRiskManagementPermissionDefinitionProvider, AXMRiskManagementRiskMatrixComponent, AXMRiskMatrixViewerService, AXMRiskMatrixWidgetColumnComponent, AXMRiskMatrixWidgetEditComponent, AXMRiskMatrixWidgetViewComponent, isRiskMatrixAxisProperty, isRiskMatrixOrientation, resolveRiskMatrixAxisCodes, resolveRiskMatrixAxisMapping, resolveRiskMatrixAxisMappingFromOrientation, resolveRiskMatrixOrientation, resolveRiskMatrixScaleId, resolveRiskMatrixScaleIdFromRecord, resolveRiskMatrixScaleLevels, resolveRiskMatrixTitleKey, resolveRiskMatrixWidgetScaleId, resolveRiskMatrixWidgetScaleLevels, toCanonicalMatrixData, toDisplayMatrixData, validateRiskMatrixAxisMapping };
|
|
158
204
|
export type { AXMRiskMatrixViewerOpenOptions };
|