@valtimo/decision 13.44.0 → 13.45.0
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/valtimo-decision.mjs +27 -23
- package/fesm2022/valtimo-decision.mjs.map +1 -1
- package/lib/decision-display/decision-display.component.d.ts +2 -2
- package/lib/decision-display/decision-display.component.d.ts.map +1 -1
- package/lib/decision-modeler/decision-modeler.component.d.ts +1 -0
- package/lib/decision-modeler/decision-modeler.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -10,8 +10,6 @@ import { RouterModule } from '@angular/router';
|
|
|
10
10
|
import * as i7 from '@angular/common';
|
|
11
11
|
import { CommonModule } from '@angular/common';
|
|
12
12
|
import { AuthGuardService } from '@valtimo/security';
|
|
13
|
-
import DmnJS from 'dmn-js/dist/dmn-modeler.development.js';
|
|
14
|
-
import DmnViewer from 'dmn-js/dist/dmn-viewer.development.js';
|
|
15
13
|
import * as i1$1 from '@angular/forms';
|
|
16
14
|
import { Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
17
15
|
import * as i3 from '@ngx-translate/core';
|
|
@@ -20,9 +18,7 @@ import * as i4$1 from '@valtimo/components';
|
|
|
20
18
|
import { runAfterCarbonModalClosed, ValtimoCdsModalDirective, CarbonMultiInputModule, PendingChangesComponent, WidgetModule, SelectModule as SelectModule$1, RenderInPageHeaderDirective, FitPageDirective, OverflowMenuComponent, OverflowMenuOptionComponent, OverflowMenuTriggerComponent, ConfirmationModalModule, CarbonListModule, ModalModule as ModalModule$1, SpinnerModule } from '@valtimo/components';
|
|
21
19
|
import * as i4 from 'carbon-components-angular';
|
|
22
20
|
import { ModalModule, ButtonModule, InputModule, LayerModule, SelectModule, IconModule, TagModule, FileUploaderModule } from 'carbon-components-angular';
|
|
23
|
-
import { migrateDiagram } from '@bpmn-io/dmn-migrate';
|
|
24
21
|
import { Deploy16, Download16, ArrowLeft16, Upload16, Add16 } from '@carbon/icons';
|
|
25
|
-
import DmnViewer$1 from 'dmn-js';
|
|
26
22
|
|
|
27
23
|
/*
|
|
28
24
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -669,6 +665,7 @@ class DecisionModelerComponent extends PendingChangesComponent {
|
|
|
669
665
|
literalExpression: 'dmn-icon-literal-expression',
|
|
670
666
|
};
|
|
671
667
|
this.testIds = DECISION_MODELER_TEST_IDS;
|
|
668
|
+
this._destroyed = false;
|
|
672
669
|
this.versionSelectionDisabled$ = new BehaviorSubject(true);
|
|
673
670
|
this.isCreating$ = new BehaviorSubject(false);
|
|
674
671
|
this.selectionId$ = new BehaviorSubject('');
|
|
@@ -745,6 +742,7 @@ class DecisionModelerComponent extends PendingChangesComponent {
|
|
|
745
742
|
this.pageTitleService.disableReset();
|
|
746
743
|
}
|
|
747
744
|
ngOnDestroy() {
|
|
745
|
+
this._destroyed = true;
|
|
748
746
|
// Reset the shared page state first: a failing teardown of the editor or the page header
|
|
749
747
|
// would otherwise leave this page's breadcrumbs and title behind on the next screen.
|
|
750
748
|
this.breadcrumbService.clearThirdBreadcrumb();
|
|
@@ -875,29 +873,32 @@ class DecisionModelerComponent extends PendingChangesComponent {
|
|
|
875
873
|
// A new decision table is always created in the editable modeler. For existing tables the
|
|
876
874
|
// edit permissions decide whether to render the editable modeler or a read-only viewer.
|
|
877
875
|
if (this.route.snapshot.params?.['id'] === 'create') {
|
|
878
|
-
this.createEditor(false)
|
|
879
|
-
|
|
876
|
+
this.createEditor(false).then(() => {
|
|
877
|
+
if (!this._destroyed)
|
|
878
|
+
this.loadEmptyDecisionTable();
|
|
879
|
+
});
|
|
880
880
|
return;
|
|
881
881
|
}
|
|
882
882
|
this.hasEditPermissions$
|
|
883
883
|
.pipe(take(1))
|
|
884
884
|
.subscribe(hasEditPermissions => this.createEditor(!hasEditPermissions));
|
|
885
885
|
}
|
|
886
|
-
createEditor(readOnly) {
|
|
886
|
+
async createEditor(readOnly) {
|
|
887
|
+
// Loaded on demand: the dmn-js modeler is the single largest dependency in the workspace and
|
|
888
|
+
// is only needed once a decision table is actually opened.
|
|
889
|
+
const { default: DmnEditorCtor } = readOnly
|
|
890
|
+
? await import('dmn-js/lib/Viewer')
|
|
891
|
+
: await import('dmn-js/lib/Modeler');
|
|
892
|
+
if (this._destroyed)
|
|
893
|
+
return;
|
|
887
894
|
this.$container = $('.editor-container');
|
|
888
895
|
this.$tabs = $('.editor-tabs');
|
|
889
|
-
this.dmnEditor =
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
: new DmnJS({
|
|
896
|
-
container: this.$container,
|
|
897
|
-
height: 500,
|
|
898
|
-
width: '100%',
|
|
899
|
-
keyboard: { bindTo: window },
|
|
900
|
-
});
|
|
896
|
+
this.dmnEditor = new DmnEditorCtor({
|
|
897
|
+
container: this.$container,
|
|
898
|
+
height: 500,
|
|
899
|
+
width: '100%',
|
|
900
|
+
...(readOnly ? {} : { keyboard: { bindTo: window } }),
|
|
901
|
+
});
|
|
901
902
|
this.setTabEvents();
|
|
902
903
|
this.setModelerEvents();
|
|
903
904
|
this._editorReady$.next(true);
|
|
@@ -944,8 +945,8 @@ class DecisionModelerComponent extends PendingChangesComponent {
|
|
|
944
945
|
.subscribe();
|
|
945
946
|
}
|
|
946
947
|
migrateAndLoadDecisionXml(decision) {
|
|
947
|
-
from(
|
|
948
|
-
.pipe(switchMap(xml => this.dmnEditor.importXML(xml)), tap(() => this.setEditor()), catchError(() => {
|
|
948
|
+
from(import('@bpmn-io/dmn-migrate'))
|
|
949
|
+
.pipe(switchMap(({ migrateDiagram }) => migrateDiagram(decision.dmnXml)), switchMap(xml => this.dmnEditor.importXML(xml)), tap(() => this.setEditor()), catchError(() => {
|
|
949
950
|
this.showNotification('error', 'decisions.loadFailure');
|
|
950
951
|
return of(null);
|
|
951
952
|
}))
|
|
@@ -1038,8 +1039,10 @@ class DecisionDisplayComponent {
|
|
|
1038
1039
|
this.decisionService = decisionService;
|
|
1039
1040
|
this.route = route;
|
|
1040
1041
|
}
|
|
1041
|
-
ngOnInit() {
|
|
1042
|
-
|
|
1042
|
+
async ngOnInit() {
|
|
1043
|
+
// Loaded on demand: dmn-js is only needed on the decision table screens.
|
|
1044
|
+
const { default: DmnViewerCtor } = await import('dmn-js');
|
|
1045
|
+
this.viewer = new DmnViewerCtor({
|
|
1043
1046
|
container: '#canvas',
|
|
1044
1047
|
});
|
|
1045
1048
|
this.decisionId = this.route.snapshot.paramMap.get('id');
|
|
@@ -1056,6 +1059,7 @@ class DecisionDisplayComponent {
|
|
|
1056
1059
|
});
|
|
1057
1060
|
}
|
|
1058
1061
|
async migrateAndLoadDecisionXml(decision) {
|
|
1062
|
+
const { migrateDiagram } = await import('@bpmn-io/dmn-migrate');
|
|
1059
1063
|
const decisionXml = await migrateDiagram(decision.dmnXml);
|
|
1060
1064
|
if (decisionXml) {
|
|
1061
1065
|
this.viewer.importXML(decisionXml, error => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-decision.mjs","sources":["../../../../projects/valtimo/decision/src/lib/models/decision.model.ts","../../../../projects/valtimo/decision/src/lib/models/decision-management.model.ts","../../../../projects/valtimo/decision/src/lib/models/index.ts","../../../../projects/valtimo/decision/src/lib/services/decision-state.service.ts","../../../../projects/valtimo/decision/src/lib/services/decision.service.ts","../../../../projects/valtimo/decision/src/lib/services/index.ts","../../../../projects/valtimo/decision/src/lib/constants/decision.test-ids.ts","../../../../projects/valtimo/decision/src/lib/constants/index.ts","../../../../projects/valtimo/decision/src/lib/utils/dmn-template.ts","../../../../projects/valtimo/decision/src/lib/decision-form-modal/decision-form-modal.component.ts","../../../../projects/valtimo/decision/src/lib/decision-form-modal/decision-form-modal.component.html","../../../../projects/valtimo/decision/src/lib/decision-modeler/empty-decision.ts","../../../../projects/valtimo/decision/src/lib/decision-modeler/decision-modeler.component.ts","../../../../projects/valtimo/decision/src/lib/decision-modeler/decision-modeler.component.html","../../../../projects/valtimo/decision/src/lib/decision-display/decision-display.component.ts","../../../../projects/valtimo/decision/src/lib/decision-display/decision-display.component.html","../../../../projects/valtimo/decision/src/lib/utils/decision.utils.ts","../../../../projects/valtimo/decision/src/lib/decision-deploy/decision-deploy.component.ts","../../../../projects/valtimo/decision/src/lib/decision-deploy/decision-deploy.component.html","../../../../projects/valtimo/decision/src/lib/decision-list/decision-list.component.ts","../../../../projects/valtimo/decision/src/lib/decision-list/decision-list.component.html","../../../../projects/valtimo/decision/src/lib/decision-routing.module.ts","../../../../projects/valtimo/decision/src/lib/decision.module.ts","../../../../projects/valtimo/decision/src/public-api.ts","../../../../projects/valtimo/decision/src/valtimo-decision.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Decision {\n category: string;\n decisionRequirementsDefinitionId: string;\n decisionRequirementsDefinitionKey: string;\n deploymentId: string;\n historyTimeToLive: number;\n id: string;\n key: string;\n name: string;\n resource: string;\n tenantId: string;\n version: number;\n versionTag: string;\n}\n\nexport interface DecisionXml {\n id: string;\n dmnXml: string;\n}\n\nexport interface DecisionInputVariable {\n /** Human-readable column header shown in the decision table. */\n label: string;\n /** The process variable / FEEL expression the input column evaluates. */\n expression: string;\n}\n\nexport interface DecisionFormValue {\n name: string;\n inputVariables: DecisionInputVariable[];\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ManagementContext} from '@valtimo/shared';\n\ninterface DecisionManagementRouteData {\n context: ManagementContext;\n}\nexport {DecisionManagementRouteData};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decision.model';\nexport * from './decision-management.model';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, startWith, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DecisionStateService {\n private readonly _refreshDecisions$ = new Subject<null>();\n\n get refreshDecisions$(): Observable<null> {\n return this._refreshDecisions$.asObservable().pipe(startWith(null));\n }\n\n refreshDecisions(): void {\n this._refreshDecisions$.next(null);\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {BaseApiService, ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {Decision, DecisionXml} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DecisionService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public deployDmn(dmn: File): Observable<{identifier: string}> {\n const formData: FormData = new FormData();\n formData.append('file', dmn);\n formData.append('deployment-name', 'dmnTableDeploy');\n formData.append('deployment-source', 'process application');\n\n return this.httpClient.post<{identifier: string}>(\n this.getApiUrl('/v1/process/definition/deployment'),\n formData\n );\n }\n\n public getDecisions(): Observable<Decision[]> {\n return this.httpClient.get<Decision[]>(\n this.getApiUrl('/operaton-rest/engine/default/decision-definition')\n );\n }\n\n public getUnlinkedDecisions(): Observable<Decision[]> {\n // Only the \"global\" decision tables: those not linked to a case or building block definition.\n return this.httpClient.get<Decision[]>(this.getApiUrl('/management/v1/decision-definition'));\n }\n\n public getDecisionById(decisionId: string): Observable<Decision> {\n return this.httpClient.get<Decision>(\n this.getApiUrl(`/operaton-rest/engine/default/decision-definition/${decisionId}`)\n );\n }\n\n public getLatestDecisionByKey(decisionKey: string): Observable<Decision> {\n return this.httpClient.get<Decision>(\n this.getApiUrl(`/operaton-rest/engine/default/decision-definition/key/${decisionKey}`)\n );\n }\n\n public getDecisionXml(decisionId: string): Observable<DecisionXml> {\n return this.httpClient.get<DecisionXml>(\n this.getApiUrl(`/operaton-rest/engine/default/decision-definition/${decisionId}/xml`)\n );\n }\n\n public listCaseDecisionDefinitions(\n caseDefinitionKey: string,\n versionTag: string\n ): Observable<Decision[]> {\n return this.httpClient.get<Decision[]>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition`\n )\n );\n }\n\n public deployCaseDecisionDefinition(\n caseDefinitionKey: string,\n versionTag: string,\n dmn: File\n ): Observable<{identifier: string}> {\n const formData = new FormData();\n formData.append('file', dmn);\n\n return this.httpClient.post<{identifier: string}>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition`\n ),\n formData,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '204'),\n }\n );\n }\n\n public deleteCaseDecisionDefinition(\n caseDefinitionKey: string,\n versionTag: string,\n decisionDefinitionKey: string\n ): Observable<any> {\n return this.httpClient.delete<any>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition/${decisionDefinitionKey}`\n )\n );\n }\n\n public listBuildingBlockDecisionDefinitions(\n key: string,\n versionTag: string\n ): Observable<Decision[]> {\n return this.httpClient.get<Decision[]>(\n this.getApiUrl(\n `/management/v1/building-block/${key}/version/${versionTag}/decision-definition`\n )\n );\n }\n\n public deployBuildingBlockDecisionDefinition(\n key: string,\n versionTag: string,\n dmn: File\n ): Observable<{identifier: string}> {\n const formData = new FormData();\n formData.append('file', dmn);\n\n return this.httpClient.post<{identifier: string}>(\n this.getApiUrl(\n `/management/v1/building-block/${key}/version/${versionTag}/decision-definition`\n ),\n formData,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '204'),\n }\n );\n }\n\n public deleteBuildingBlockDecisionDefinition(\n key: string,\n versionTag: string,\n decisionDefinitionKey: string\n ): Observable<any> {\n return this.httpClient.delete<any>(\n this.getApiUrl(\n `/management/v1/building-block/${key}/version/${versionTag}/decision-definition/${decisionDefinitionKey}`\n )\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decision-state.service';\nexport * from './decision.service';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DECISION_LIST_TEST_IDS = {\n uploadButton: 'decisionListUploadButton',\n createButton: 'decisionListCreateButton',\n} as const;\n\nexport const DECISION_UPLOAD_TEST_IDS = {\n submitButton: 'decisionUploadModalSubmitButton',\n} as const;\n\nexport const DECISION_FORM_TEST_IDS = {\n nameInput: 'decisionFormModalNameInput',\n inputVariables: 'decisionFormModalInputVariables',\n submitButton: 'decisionFormModalSubmitButton',\n} as const;\n\nexport const DECISION_MODELER_TEST_IDS = {\n deployButton: 'decisionModelerDeployButton',\n backButton: 'decisionModelerBackButton',\n readOnlyTag: 'decisionModelerReadOnlyTag',\n} as const;\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decision.test-ids';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DecisionFormValue, DecisionInputVariable, DecisionXml} from '../models';\n\nconst DEFAULT_DECISION_KEY = 'decision';\n\nfunction escapeXmlAttribute(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction escapeXmlText(value: string): string {\n return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\n/**\n * Derives a valid DMN decision key (an XML NCName) from a human-readable name.\n * The decision key doubles as the identifier referenced from a process'\n * business rule task, so it must be a stable, valid identifier.\n */\nfunction toDecisionKey(name: string): string {\n const cleaned = (name ?? '')\n .trim()\n .replace(/[^A-Za-z0-9_-]+/g, '_')\n .replace(/^[_-]+|[_-]+$/g, '');\n\n if (!cleaned) return DEFAULT_DECISION_KEY;\n\n return /^[A-Za-z_]/.test(cleaned) ? cleaned : `${DEFAULT_DECISION_KEY}_${cleaned}`;\n}\n\n/**\n * Derives the name of the `.dmn` file that is deployed for a created decision.\n */\nfunction toDecisionFileName(name: string): string {\n return `${toDecisionKey(name)}.dmn`;\n}\n\n/**\n * Normalizes input columns: trims label/expression, drops rows without a process\n * variable (the expression is required), defaults the label to the process\n * variable name when it is left blank, and guarantees at least one (empty) input\n * column so the decision table always has an input to work with.\n */\nfunction normalizeInputVariables(\n inputVariables: DecisionInputVariable[] | undefined\n): DecisionInputVariable[] {\n const cleaned = (inputVariables ?? [])\n .map(({label, expression}) => ({\n label: (label ?? '').trim(),\n expression: (expression ?? '').trim(),\n }))\n .filter(({expression}) => expression.length > 0)\n .map(({label, expression}) => ({label: label || expression, expression}));\n\n return cleaned.length ? cleaned : [{label: '', expression: ''}];\n}\n\n/**\n * Builds a deployable DMN 1.3 decision table seeded with one input column per\n * provided input variable and a single output. Each input column gets its\n * process variable as the input expression and, optionally, a human-readable\n * label as the column header. Seeding this up front means the created table is\n * functional immediately - the user only has to add rules before deploying.\n */\nfunction createDmnXml({name, inputVariables}: DecisionFormValue): DecisionXml {\n const key = toDecisionKey(name);\n const safeName = escapeXmlAttribute((name ?? '').trim() || key);\n const inputs = normalizeInputVariables(inputVariables);\n\n const inputsXml = inputs\n .map(({label, expression}, index) => {\n const labelAttr = label ? ` label=\"${escapeXmlAttribute(label)}\"` : '';\n return ` <input id=\"Input_${index + 1}\"${labelAttr}>\n <inputExpression id=\"InputExpression_${index + 1}\" typeRef=\"string\">\n <text>${escapeXmlText(expression)}</text>\n </inputExpression>\n </input>`;\n })\n .join('\\n');\n\n const inputEntriesXml = inputs\n .map(\n (_, index) => ` <inputEntry id=\"UnaryTests_${index + 1}\">\n <text></text>\n </inputEntry>`\n )\n .join('\\n');\n\n const dmnXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20191111/MODEL/\" xmlns:dmndi=\"https://www.omg.org/spec/DMN/20191111/DMNDI/\" xmlns:dc=\"http://www.omg.org/spec/DMN/20180521/DC/\" id=\"Definitions_${key}\" name=\"${safeName}\" namespace=\"http://camunda.org/schema/1.0/dmn\">\n <decision id=\"${key}\" name=\"${safeName}\">\n <decisionTable id=\"DecisionTable_${key}\">\n${inputsXml}\n <output id=\"Output_1\" label=\"Output\" name=\"result\" typeRef=\"string\" />\n <rule id=\"DecisionRule_1\">\n${inputEntriesXml}\n <outputEntry id=\"LiteralExpression_1\">\n <text></text>\n </outputEntry>\n </rule>\n </decisionTable>\n </decision>\n <dmndi:DMNDI>\n <dmndi:DMNDiagram>\n <dmndi:DMNShape dmnElementRef=\"${key}\">\n <dc:Bounds height=\"80\" width=\"180\" x=\"160\" y=\"100\" />\n </dmndi:DMNShape>\n </dmndi:DMNDiagram>\n </dmndi:DMNDI>\n</definitions>\n`;\n\n return {id: '', dmnXml};\n}\n\nfunction childrenByLocalName(parent: Element, localName: string): Element[] {\n return Array.from(parent.children).filter(child => child.localName === localName);\n}\n\nfunction firstChildByLocalName(parent: Element, localName: string): Element | null {\n return childrenByLocalName(parent, localName)[0] ?? null;\n}\n\nfunction uniqueId(doc: Document, prefix: string): string {\n let id: string;\n do {\n id = `${prefix}_${Math.random().toString(36).slice(2, 10)}`;\n } while (doc.querySelector(`[id=\"${id}\"]`));\n return id;\n}\n\n/**\n * Reads the editable form values (decision name and input columns) from an\n * existing DMN XML document.\n */\nfunction parseDecisionForm(xml: string): DecisionFormValue {\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n\n const decision = doc.getElementsByTagNameNS('*', 'decision')[0];\n const name = decision?.getAttribute('name') || decision?.getAttribute('id') || '';\n\n const inputVariables = Array.from(doc.getElementsByTagNameNS('*', 'input')).map(input => {\n const inputExpression = input.getElementsByTagNameNS('*', 'inputExpression')[0];\n const text = inputExpression?.getElementsByTagNameNS('*', 'text')[0];\n const expression = (text?.textContent ?? '').trim();\n const label = (input.getAttribute('label') ?? '').trim();\n // A label equal to the expression means it was defaulted, so present it as blank.\n return {label: label === expression ? '' : label, expression};\n });\n\n return {name, inputVariables};\n}\n\nfunction setInputColumn(\n input: Element,\n {label, expression}: DecisionInputVariable,\n doc: Document,\n ns: string | null\n): void {\n if (label) {\n input.setAttribute('label', label);\n } else {\n input.removeAttribute('label');\n }\n\n let inputExpression = firstChildByLocalName(input, 'inputExpression');\n if (!inputExpression) {\n inputExpression = doc.createElementNS(ns, 'inputExpression');\n inputExpression.setAttribute('id', uniqueId(doc, 'InputExpression'));\n inputExpression.setAttribute('typeRef', 'string');\n input.appendChild(inputExpression);\n }\n\n let text = firstChildByLocalName(inputExpression, 'text');\n if (!text) {\n text = doc.createElementNS(ns, 'text');\n inputExpression.appendChild(text);\n }\n text.textContent = expression;\n}\n\nfunction createInputElement(\n inputVariable: DecisionInputVariable,\n doc: Document,\n ns: string | null\n): Element {\n const input = doc.createElementNS(ns, 'input');\n input.setAttribute('id', uniqueId(doc, 'Input'));\n setInputColumn(input, inputVariable, doc, ns);\n return input;\n}\n\nfunction createEmptyInputEntry(doc: Document, ns: string | null): Element {\n const entry = doc.createElementNS(ns, 'inputEntry');\n entry.setAttribute('id', uniqueId(doc, 'UnaryTests'));\n const text = doc.createElementNS(ns, 'text');\n text.textContent = '';\n entry.appendChild(text);\n return entry;\n}\n\n/**\n * Patches an existing DMN XML document with a new decision name and set of input\n * columns, while preserving the decision key, outputs, rules and diagram. Input\n * columns are reconciled positionally: existing columns are updated (label +\n * expression), extra columns add an input (and a blank entry to every rule), and\n * removed columns drop the input (and their rule entries).\n */\nfunction updateDmnXml(xml: string, {name, inputVariables}: DecisionFormValue): string {\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n\n if (doc.getElementsByTagName('parsererror').length > 0) {\n return xml;\n }\n\n const trimmedName = (name ?? '').trim();\n\n const decision = doc.getElementsByTagNameNS('*', 'decision')[0];\n if (decision && trimmedName) {\n decision.setAttribute('name', trimmedName);\n }\n\n const decisionTable = doc.getElementsByTagNameNS('*', 'decisionTable')[0];\n if (!decisionTable) {\n return new XMLSerializer().serializeToString(doc);\n }\n\n const ns = decisionTable.namespaceURI;\n const targets = normalizeInputVariables(inputVariables);\n\n const existingInputs = childrenByLocalName(decisionTable, 'input');\n const rules = childrenByLocalName(decisionTable, 'rule');\n\n // Build the final ordered list of input columns, reusing existing nodes where possible.\n const finalInputs = targets.map((inputVariable, index) => {\n const existing = existingInputs[index];\n if (existing) {\n setInputColumn(existing, inputVariable, doc, ns);\n return existing;\n }\n return createInputElement(inputVariable, doc, ns);\n });\n\n // Remove all existing inputs, then re-insert the final ones in order before the outputs/rules.\n existingInputs.forEach(input => input.remove());\n const anchor =\n firstChildByLocalName(decisionTable, 'output') ??\n firstChildByLocalName(decisionTable, 'rule') ??\n null;\n finalInputs.forEach(input => decisionTable.insertBefore(input, anchor));\n\n // Reconcile each rule's input entries to match the number of input columns.\n rules.forEach(rule => {\n const entries = childrenByLocalName(rule, 'inputEntry');\n\n for (let index = entries.length; index < finalInputs.length; index++) {\n const firstOutputEntry = firstChildByLocalName(rule, 'outputEntry');\n rule.insertBefore(createEmptyInputEntry(doc, ns), firstOutputEntry);\n }\n\n for (let index = entries.length - 1; index >= finalInputs.length; index--) {\n entries[index].remove();\n }\n });\n\n return new XMLSerializer().serializeToString(doc);\n}\n\nexport {createDmnXml, toDecisionKey, toDecisionFileName, parseDecisionForm, updateDmnXml};\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {FormBuilder, FormControl, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonMultiInputModule,\n MultiInputOutput,\n MultiInputValues,\n runAfterCarbonModalClosed,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {DECISION_FORM_TEST_IDS} from '../constants';\nimport {DecisionFormValue, DecisionInputVariable} from '../models';\n\n@Component({\n selector: 'valtimo-decision-form-modal',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './decision-form-modal.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n ModalModule,\n ButtonModule,\n InputModule,\n LayerModule,\n ValtimoCdsModalDirective,\n CarbonMultiInputModule,\n ],\n styleUrl: './decision-form-modal.component.scss',\n})\nexport class DecisionFormModalComponent {\n @Input() public titleKey = 'decisions.createModal.title';\n @Input() public submitKey = 'interface.create';\n\n @Output() submitEvent = new EventEmitter<DecisionFormValue>();\n\n public readonly MAX_INPUT_VARIABLES = 100;\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly defaultInputVariables$ = new BehaviorSubject<MultiInputValues>([\n {key: '', value: ''},\n ]);\n\n /** True when a row has a label but no process variable (the process variable is required). */\n public readonly $inputVariablesInvalid = signal<boolean>(false);\n\n protected readonly testIds = DECISION_FORM_TEST_IDS;\n\n public readonly form = this.formBuilder.group({\n name: this.formBuilder.control('', [Validators.required]),\n });\n\n private _inputVariables: DecisionInputVariable[] = [];\n\n public get name(): FormControl<string> {\n return this.form.get('name') as FormControl<string>;\n }\n\n constructor(private readonly formBuilder: FormBuilder) {}\n\n public open(initial?: DecisionFormValue): void {\n const inputVariables = initial?.inputVariables ?? [];\n this._inputVariables = inputVariables.map(({label, expression}) => ({label, expression}));\n // The multi-input renders key (left) then value (right); the process variable is\n // the first column, so it maps to key and the label maps to value.\n this.defaultInputVariables$.next(\n inputVariables.length\n ? inputVariables.map(({label, expression}) => ({key: expression, value: label}))\n : [{key: '', value: ''}]\n );\n this.updateInputVariablesValidity();\n this.form.reset({name: initial?.name ?? ''});\n this.modalOpen$.next(true);\n }\n\n /** Convenience used by the \"create\" trigger, which opens an empty form. */\n public openModal(): void {\n this.open();\n }\n\n public closeModal(): void {\n this.modalOpen$.next(false);\n runAfterCarbonModalClosed(() => {\n this.form.reset({name: ''});\n this._inputVariables = [];\n this.$inputVariablesInvalid.set(false);\n this.defaultInputVariables$.next([{key: '', value: ''}]);\n });\n }\n\n public onInputVariablesChange(values: MultiInputOutput): void {\n this._inputVariables = ((values as MultiInputValues) ?? []).map(row => ({\n label: row.value ?? '',\n expression: row.key ?? '',\n }));\n this.updateInputVariablesValidity();\n }\n\n public submit(): void {\n if (this.form.invalid || this.$inputVariablesInvalid()) {\n this.form.markAllAsTouched();\n return;\n }\n\n const name = (this.form.getRawValue().name ?? '').trim();\n const inputVariables = this._inputVariables\n .map(({label, expression}) => ({label: label.trim(), expression: expression.trim()}))\n .filter(({expression}) => expression.length > 0);\n\n this.submitEvent.emit({name, inputVariables});\n this.closeModal();\n }\n\n private updateInputVariablesValidity(): void {\n this.$inputVariablesInvalid.set(\n this._inputVariables.some(\n ({label, expression}) => label.trim().length > 0 && expression.trim().length === 0\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal showFooter=\"true\" valtimoCdsModal [open]=\"modalOpen$ | async\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ titleKey | translate }}</h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [invalid]=\"name.touched && name.invalid\">\n <span>{{ 'decisions.createModal.name' | translate }}</span>\n\n <input\n cdsText\n formControlName=\"name\"\n [attr.data-test-id]=\"testIds.nameInput\"\n [invalid]=\"name.touched && name.invalid\"\n placeholder=\"{{ 'decisions.createModal.namePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <div *ngIf=\"name.touched && name.invalid\" class=\"cds--form-requirement\">\n {{ 'decisions.createModal.nameRequired' | translate }}\n </div>\n </div>\n\n <valtimo-carbon-multi-input\n *ngIf=\"modalOpen$ | async\"\n type=\"keyValue\"\n [attr.data-test-id]=\"testIds.inputVariables\"\n [titleTranslationKey]=\"'decisions.createModal.inputVariables'\"\n [tooltip]=\"'decisions.createModal.inputVariablesHelper' | translate\"\n [keyColumnTitle]=\"'decisions.createModal.inputExpression' | translate\"\n [valueColumnTitle]=\"'decisions.createModal.inputLabel' | translate\"\n [addRowTranslationKey]=\"'decisions.createModal.addInputVariable'\"\n [defaultValues]=\"defaultInputVariables$ | async\"\n [initialAmountOfRows]=\"1\"\n [minimumAmountOfRows]=\"1\"\n [maxRows]=\"MAX_INPUT_VARIABLES\"\n [margin]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"onInputVariablesChange($event)\"\n ></valtimo-carbon-multi-input>\n\n <div *ngIf=\"$inputVariablesInvalid()\" class=\"cds--form-requirement\">\n {{ 'decisions.createModal.inputExpressionRequired' | translate }}\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"form.invalid || $inputVariablesInvalid()\"\n (click)=\"submit()\"\n [attr.data-test-id]=\"testIds.submitButton\"\n >\n {{ submitKey | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DecisionXml} from '../models';\n\nconst EMPTY_DECISION: DecisionXml = {\n id: '',\n dmnXml: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20191111/MODEL/\" xmlns:dmndi=\"https://www.omg.org/spec/DMN/20191111/DMNDI/\" xmlns:dc=\"http://www.omg.org/spec/DMN/20180521/DC/\" id=\"Definitions_1h198v9\" name=\"DRD\" namespace=\"http://camunda.org/schema/1.0/dmn\" xmlns:modeler=\"http://camunda.org/schema/modeler/1.0\" exporter=\"Camunda Modeler\" exporterVersion=\"5.2.0\" modeler:executionPlatform=\"Camunda Cloud\" modeler:executionPlatformVersion=\"8.0.0\">\n <decision id=\"Decision_1e18q76\" name=\"Decision 1\">\n <decisionTable id=\"DecisionTable_1apu23m\">\n <input id=\"Input_1\">\n <inputExpression id=\"InputExpression_1\" typeRef=\"string\">\n <text></text>\n </inputExpression>\n </input>\n <output id=\"Output_1\" typeRef=\"string\" />\n </decisionTable>\n </decision>\n <dmndi:DMNDI>\n <dmndi:DMNDiagram>\n <dmndi:DMNShape dmnElementRef=\"Decision_1e18q76\">\n <dc:Bounds height=\"80\" width=\"180\" x=\"160\" y=\"100\" />\n </dmndi:DMNShape>\n </dmndi:DMNDiagram>\n </dmndi:DMNDI>\n</definitions>\n`,\n};\n\nexport {EMPTY_DECISION};\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DECISION_MODELER_TEST_IDS} from '../constants';\nimport {DecisionService} from '../services/decision.service';\nimport {AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport DmnJS from 'dmn-js/dist/dmn-modeler.development.js';\nimport DmnViewer from 'dmn-js/dist/dmn-viewer.development.js';\nimport {ActivatedRoute, Router, RouterModule} from '@angular/router';\nimport {DecisionFormValue, DecisionXml} from '../models';\nimport {\n createDmnXml,\n parseDecisionForm,\n toDecisionFileName,\n updateDmnXml,\n} from '../utils/dmn-template';\nimport {DecisionFormModalComponent} from '../decision-form-modal/decision-form-modal.component';\nimport {migrateDiagram} from '@bpmn-io/dmn-migrate';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n from,\n map,\n Observable,\n of,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n BreadcrumbService,\n ConfirmationModalModule,\n FitPageDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n PageHeaderService,\n PageTitleService,\n PendingChangesComponent,\n RenderInPageHeaderDirective,\n SelectedValue,\n SelectModule as ValtimoSelectModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {EMPTY_DECISION} from './empty-decision';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n IconModule,\n IconService,\n ModalModule,\n SelectModule,\n TagModule,\n} from 'carbon-components-angular';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n DraftVersionService,\n EditPermissionsService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n getContextObservable,\n GlobalNotificationService,\n ManagementContext,\n} from '@valtimo/shared';\nimport {ArrowLeft16, Deploy16, Download16} from '@carbon/icons';\n\ndeclare const $: any;\n\n@Component({\n selector: 'valtimo-decision-modeler',\n standalone: true,\n templateUrl: './decision-modeler.component.html',\n styleUrls: ['./decision-modeler.component.scss'],\n imports: [\n CommonModule,\n RouterModule,\n ModalModule,\n SelectModule,\n WidgetModule,\n ValtimoSelectModule,\n TranslateModule,\n RenderInPageHeaderDirective,\n ButtonModule,\n IconModule,\n TagModule,\n FitPageDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n DecisionFormModalComponent,\n ConfirmationModalModule,\n ],\n})\nexport class DecisionModelerComponent\n extends PendingChangesComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n @ViewChild('decisionEdit') edit: DecisionFormModalComponent;\n\n private CLASS_NAMES = {\n drd: 'dmn-icon-lasso-tool',\n decisionTable: 'dmn-icon-decision-table',\n literalExpression: 'dmn-icon-literal-expression',\n };\n\n protected readonly testIds = DECISION_MODELER_TEST_IDS;\n\n private $container!: any;\n private $tabs!: any;\n private dmnEditor!: DmnJS | DmnViewer;\n\n public readonly versionSelectionDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly isCreating$ = new BehaviorSubject<boolean>(false);\n public readonly selectionId$ = new BehaviorSubject<string>('');\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n // Emits once the dmn-js editor instance has been created, so XML import can wait for it.\n private readonly _editorReady$ = new BehaviorSubject<boolean>(false);\n\n private _fileName!: string;\n private _createSeed: DecisionFormValue | null = null;\n private _decisionKey: string | null = null;\n\n public readonly caseManagementRouteParams$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly buildingBlockManagementRouteParams$: Observable<\n BuildingBlockManagementParams | undefined\n > = getBuildingBlockManagementRouteParams(this.route);\n\n public readonly context$: Observable<ManagementContext | null> = getContextObservable(this.route);\n public readonly isIndependent$ = this.context$.pipe(map(context => context === 'independent'));\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n this.caseManagementRouteParams$,\n this.buildingBlockManagementRouteParams$,\n this.context$,\n ]).pipe(\n switchMap(([caseParams, buildingBlockParams, context]) => {\n // Building block decision tables can only be edited on a draft (non-final) version.\n if (context === 'buildingBlock') {\n return this.draftVersionService.isDraftVersionBuildingBlock(\n buildingBlockParams?.buildingBlockDefinitionKey ?? '',\n buildingBlockParams?.buildingBlockDefinitionVersionTag ?? ''\n );\n }\n return this.editPermissionsService.hasPermissionsToEditBasedOnContext(\n caseParams,\n context ?? ''\n );\n }),\n shareReplay({bufferSize: 1, refCount: false})\n );\n\n // The editor is shown as a read-only viewer when the user cannot edit (e.g. a final case or\n // building block definition) and is not creating a new decision table.\n public readonly readOnly$: Observable<boolean> = combineLatest([\n this.isCreating$,\n this.hasEditPermissions$,\n ]).pipe(map(([isCreating, hasEditPermissions]) => !isCreating && !hasEditPermissions));\n\n private readonly decisionId$ = this.route.params.pipe(\n map(params => params?.id),\n tap(id => {\n this.isCreating$.next(id === 'create');\n this.versionSelectionDisabled$.next(true);\n }),\n filter(id => !!id && id !== 'create')\n );\n\n public readonly decision$ = this.decisionId$.pipe(\n switchMap(id => this.decisionService.getDecisionById(id)),\n tap(decision => {\n this._fileName = decision.resource;\n this._decisionKey = decision?.key ?? null;\n if (decision) this.selectionId$.next(decision.id);\n })\n );\n\n public readonly decisionTitle$ = this.decision$.pipe(\n map(d => d?.name || d?.key || '-'),\n tap(title => this.pageTitleService.setCustomPageTitle(title))\n );\n\n private readonly _refreshDecisionSelectItems$ = new BehaviorSubject<null>(null);\n public readonly decisionVersionSelectItems$ = this._refreshDecisionSelectItems$.pipe(\n switchMap(() => combineLatest([this.decision$, this.decisionService.getUnlinkedDecisions()])),\n map(([current, list]) => {\n const filtered = list.filter(d => d.key === current.key);\n return [...filtered.map(d => ({id: d.id, text: d.version.toString()}))].sort(\n (a, b) => +(b.text ?? '') - +(a.text ?? '')\n );\n }),\n tap(() => this.versionSelectionDisabled$.next(false))\n );\n\n public readonly decisionXml$ = this.decisionId$.pipe(\n switchMap(id => this.decisionService.getDecisionXml(id)),\n // Wait until the editor (modeler or read-only viewer) has been created before importing.\n switchMap(xml =>\n this._editorReady$.pipe(\n filter(Boolean),\n take(1),\n map(() => xml)\n )\n ),\n tap(xml => xml && this.loadDecisionXml(xml))\n );\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly pageTitleService: PageTitleService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly notificationService: GlobalNotificationService,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly draftVersionService: DraftVersionService\n ) {\n super();\n this.iconService.registerAll([Deploy16, Download16, ArrowLeft16]);\n this._createSeed = this.extractCreateSeed();\n }\n\n private extractCreateSeed(): DecisionFormValue | null {\n const navigationState =\n this.router.getCurrentNavigation()?.extras?.state ??\n (typeof history !== 'undefined' ? history.state : undefined);\n\n const name = navigationState?.['decisionName'];\n const inputVariables = navigationState?.['inputVariables'];\n\n if (typeof name === 'string' && name) {\n return {\n name,\n inputVariables: Array.isArray(inputVariables)\n ? inputVariables\n .filter((variable: unknown): variable is Record<string, unknown> => !!variable)\n .map(variable => ({\n label: String(variable['label'] ?? ''),\n expression: String(variable['expression'] ?? ''),\n }))\n : [],\n };\n }\n\n return null;\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n // Reset the shared page state first: a failing teardown of the editor or the page header\n // would otherwise leave this page's breadcrumbs and title behind on the next screen.\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this.pageTitleService.enableReset();\n\n try {\n this.dmnEditor?.destroy();\n } catch (err) {\n console.error('dmn editor destroy error', err);\n }\n }\n\n public ngAfterViewInit(): void {\n this.initEditor();\n\n this.context$.pipe(take(1)).subscribe(context => {\n if (!context) return;\n\n if (context === 'buildingBlock') {\n this.buildingBlockManagementRouteParams$.pipe(take(1)).subscribe(params => {\n if (params) this.initBuildingBlockBreadcrumbs(params);\n });\n } else {\n this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {\n if (params) this.initBreadcrumbs(params, context);\n });\n }\n });\n }\n\n public switchVersion(decisionId: string | SelectedValue): void {\n if (!decisionId) return;\n\n this.router.navigate(['../', decisionId], {relativeTo: this.route});\n this._refreshDecisionSelectItems$.next(null);\n }\n\n public deploy(): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(\n map(result => new File([(result as any).xml], this._fileName, {type: 'text/xml'})),\n switchMap(file => combineLatest([of(file), this.context$])),\n switchMap(([file, context]) => {\n if (context === 'independent') {\n return this.decisionService.deployDmn(file);\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.deployBuildingBlockDecisionDefinition(\n params?.buildingBlockDefinitionKey ?? '',\n params?.buildingBlockDefinitionVersionTag ?? '',\n file\n )\n )\n );\n }\n return this.caseManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.deployCaseDecisionDefinition(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? '',\n file\n )\n )\n );\n }),\n tap((res: {identifier: string}) => {\n this.switchVersion(res.identifier);\n this.showNotification('success', 'decisions.deploySuccess');\n }),\n catchError(() => {\n this.showNotification('error', 'decisions.deployFailure');\n\n return of(null);\n })\n )\n .subscribe();\n }\n\n public download(): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(\n map(result => new File([(result as any).xml], 'decision.dmn', {type: 'text/xml'})),\n tap(file => {\n const link = document.createElement('a');\n link.download = 'diagram.dmn';\n link.href = window.URL.createObjectURL(file);\n link.click();\n window.URL.revokeObjectURL(link.href);\n link.remove();\n })\n )\n .subscribe();\n }\n\n public openEditModal(): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(take(1))\n .subscribe(result => this.edit.open(parseDecisionForm((result as any).xml)));\n }\n\n public onEditDecision(value: DecisionFormValue): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(\n map(result => updateDmnXml((result as any).xml, value)),\n switchMap(xml => this.dmnEditor.importXML(xml)),\n tap(() => {\n this.setEditor();\n if (value.name) this.pageTitleService.setCustomPageTitle(value.name);\n }),\n catchError(() => {\n this.showNotification('error', 'decisions.loadFailure');\n return of(null);\n })\n )\n .subscribe();\n }\n\n public onDeleteClick(): void {\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(): void {\n const decisionKey = this._decisionKey;\n if (!decisionKey) return;\n\n this.context$\n .pipe(\n take(1),\n switchMap(context => {\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deleteBuildingBlockDecisionDefinition(\n params?.buildingBlockDefinitionKey ?? '',\n params?.buildingBlockDefinitionVersionTag ?? '',\n decisionKey\n )\n )\n );\n }\n return this.caseManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deleteCaseDecisionDefinition(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? '',\n decisionKey\n )\n )\n );\n })\n )\n .subscribe({\n next: () => {\n this.navigateBack();\n this.showNotification('success', 'decisions.deleteSuccess');\n },\n error: () => this.showNotification('error', 'decisions.deleteFailure'),\n });\n }\n\n public navigateBack(): void {\n this.context$.pipe(take(1)).subscribe(context => {\n if (context === 'independent') {\n this.router.navigate(['/decision-tables']);\n } else {\n this.router.navigate(['../'], {relativeTo: this.route});\n }\n });\n }\n\n private showNotification(notification: null | 'success' | 'error', message: string): void {\n if (!notification) return;\n\n this.notificationService.showToast({\n caption: this.translateService.instant(message),\n type: notification,\n title: this.translateService.instant(`interface.${notification}`),\n });\n }\n\n private initEditor(): void {\n // A new decision table is always created in the editable modeler. For existing tables the\n // edit permissions decide whether to render the editable modeler or a read-only viewer.\n if (this.route.snapshot.params?.['id'] === 'create') {\n this.createEditor(false);\n this.loadEmptyDecisionTable();\n return;\n }\n\n this.hasEditPermissions$\n .pipe(take(1))\n .subscribe(hasEditPermissions => this.createEditor(!hasEditPermissions));\n }\n\n private createEditor(readOnly: boolean): void {\n this.$container = $('.editor-container');\n this.$tabs = $('.editor-tabs');\n this.dmnEditor = readOnly\n ? new DmnViewer({\n container: this.$container,\n height: 500,\n width: '100%',\n })\n : new DmnJS({\n container: this.$container,\n height: 500,\n width: '100%',\n keyboard: {bindTo: window},\n });\n this.setTabEvents();\n this.setModelerEvents();\n this._editorReady$.next(true);\n }\n\n private loadEmptyDecisionTable(): void {\n if (this._createSeed) {\n this._fileName = toDecisionFileName(this._createSeed.name);\n this.pageTitleService.setCustomPageTitle(this._createSeed.name);\n this.loadDecisionXml(createDmnXml(this._createSeed));\n return;\n }\n\n this._fileName = 'decision.dmn';\n this.loadDecisionXml(EMPTY_DECISION);\n }\n\n private setTabEvents(): void {\n this.$tabs.delegate('.tab', 'click', async (event: any) => {\n const index = +event.currentTarget.getAttribute('data-id');\n const view = this.dmnEditor.getViews()[index];\n try {\n await this.dmnEditor.open(view);\n } catch (err) {\n console.error('tab open error', err);\n }\n });\n }\n\n private setModelerEvents(): void {\n this.dmnEditor.on('views.changed', event => {\n const {views, activeView} = event;\n this.$tabs.empty();\n views.forEach((v, i) => {\n const className = this.CLASS_NAMES[v.type];\n const tab = $(\n `<div class=\"tab ${v === activeView ? 'active' : ''}\" data-id=\"${i}\"><span class=\"${className}\"></span>${v.element.name || v.element.id}</div>`\n );\n this.$tabs.append(tab);\n });\n });\n }\n\n private loadDecisionXml(decision: DecisionXml): void {\n from(this.dmnEditor.importXML(decision.dmnXml))\n .pipe(\n tap(() => this.setEditor()),\n catchError(() => {\n this.migrateAndLoadDecisionXml(decision);\n return of(null);\n })\n )\n .subscribe();\n }\n\n private migrateAndLoadDecisionXml(decision: DecisionXml): void {\n from(migrateDiagram(decision.dmnXml))\n .pipe(\n switchMap(xml => this.dmnEditor.importXML(xml)),\n tap(() => this.setEditor()),\n catchError(() => {\n this.showNotification('error', 'decisions.loadFailure');\n return of(null);\n })\n )\n .subscribe();\n }\n\n private setEditor(): void {\n const view = this.dmnEditor.getActiveView();\n if (view?.type === 'drd') {\n const canvas = this.dmnEditor.getActiveViewer().get('canvas');\n canvas.zoom('fit-viewport');\n }\n }\n\n private initBreadcrumbs(params: CaseManagementParams, context: ManagementContext): void {\n if (context === 'independent') return;\n\n const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,\n href: route,\n });\n\n const routeWithDecisions = `${route}/decisions`;\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [routeWithDecisions],\n content: this.translateService.instant('caseManagement.tabs.decision'),\n href: routeWithDecisions,\n });\n }\n\n private initBuildingBlockBreadcrumbs(params: BuildingBlockManagementParams): void {\n const route = `/building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}`;\n const generalRoute = `${route}/general`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [generalRoute],\n content: `${params.buildingBlockDefinitionKey} (${params.buildingBlockDefinitionVersionTag})`,\n href: generalRoute,\n });\n\n const routeWithDecisions = `${route}/decisions`;\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [routeWithDecisions],\n content: this.translateService.instant('buildingBlockManagement.tabs.decisions'),\n href: routeWithDecisions,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n decisionXml: decisionXml$ | async,\n decisionTitle: decisionTitle$ | async,\n } as obs\"\n fitPage\n [disableOverflow]=\"true\"\n class=\"dmn-editor\"\n>\n <ng-container *ngTemplateOutlet=\"diagram\"></ng-container>\n</div>\n\n<ng-template #diagram>\n <div class=\"editor-parent\">\n <div class=\"editor-container\"></div>\n <div class=\"editor-tabs\"></div>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n selectionId: selectionId$ | async,\n isCreating: isCreating$ | async,\n context: context$ | async,\n compactMode: compactMode$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n readOnly: readOnly$ | async,\n } as obs\"\n class=\"decision-modeler-actions\"\n >\n <cds-tag *ngIf=\"obs.readOnly\" type=\"blue\" [attr.data-test-id]=\"testIds.readOnlyTag\">{{\n 'decisions.readOnly' | translate\n }}</cds-tag>\n\n <ng-container *ngTemplateOutlet=\"versionSelection\"></ng-container>\n\n <button\n *ngIf=\"obs.context === 'case' || obs.isCreating\"\n cdsButton=\"secondary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack()\"\n [attr.data-test-id]=\"testIds.backButton\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n\n <span>{{ 'interface.back' | translate }}</span>\n </button>\n\n @if (obs.selectionId && !obs.isCreating) {\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.hasEditPermissions\"\n (click)=\"deploy()\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [attr.data-test-id]=\"testIds.deployButton\"\n >\n {{ 'decisions.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <v-overflow-menu class=\"overflow-button\" placement=\"bottom-end\">\n <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n <v-overflow-menu-option [disabled]=\"!obs.hasEditPermissions\" (selected)=\"openEditModal()\"\n >{{ 'interface.edit' | translate }}\n </v-overflow-menu-option>\n <v-overflow-menu-option (selected)=\"download()\"\n >{{ 'interface.export' | translate }}\n </v-overflow-menu-option>\n <v-overflow-menu-option\n [disabled]=\"!obs.hasEditPermissions || obs.context === 'independent'\"\n type=\"danger\"\n (selected)=\"onDeleteClick()\"\n >{{ 'interface.delete' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n } @else {\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.hasEditPermissions\"\n (click)=\"deploy()\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [attr.data-test-id]=\"testIds.deployButton\"\n >\n {{ 'decisions.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n }\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #versionSelection>\n <ng-container\n *ngIf=\"{\n selectItems: (decisionVersionSelectItems$ | async) || [],\n isIndependent: isIndependent$ | async,\n versionSelectionDisabled: versionSelectionDisabled$ | async,\n selectionId: selectionId$ | async,\n } as obs\"\n >\n <v-select\n *ngIf=\"obs.isIndependent\"\n name=\"version\"\n [title]=\"'decisions.version' | translate\"\n [disabled]=\"obs.versionSelectionDisabled\"\n [clearable]=\"false\"\n [loading]=\"obs.selectItems.length === 0\"\n [items]=\"obs.selectItems\"\n [defaultSelectionId]=\"obs.selectionId\"\n [widthInPx]=\"120\"\n (selectedChange)=\"switchVersion($event)\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<valtimo-decision-form-modal\n #decisionEdit\n titleKey=\"decisions.editModal.title\"\n submitKey=\"interface.save\"\n (submitEvent)=\"onEditDecision($event)\"\n></valtimo-decision-form-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"decisions.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"decisions.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute, RouterModule} from '@angular/router';\nimport {DecisionService} from '../services/decision.service';\nimport {DecisionXml} from '../models';\nimport DmnViewer from 'dmn-js';\nimport {migrateDiagram} from '@bpmn-io/dmn-migrate';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-decision-display',\n standalone: true,\n templateUrl: './decision-display.component.html',\n styleUrls: ['./decision-display.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, RouterModule, TranslateModule],\n})\nexport class DecisionDisplayComponent implements OnInit {\n public viewer: DmnViewer;\n private decisionId: string;\n public decisionXml: string;\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.viewer = new DmnViewer({\n container: '#canvas',\n });\n this.decisionId = this.route.snapshot.paramMap.get('id')!;\n this.loadDecisionXml();\n }\n\n loadDecisionXml(): void {\n this.decisionService.getDecisionXml(this.decisionId).subscribe((decision: DecisionXml) => {\n this.viewer.importXML(decision.dmnXml, error => {\n if (error) {\n this.migrateAndLoadDecisionXml(decision);\n }\n });\n this.decisionXml = decision.dmnXml;\n });\n }\n\n async migrateAndLoadDecisionXml(decision: DecisionXml): Promise<void> {\n const decisionXml = await migrateDiagram(decision.dmnXml);\n\n if (decisionXml) {\n this.viewer.importXML(decisionXml, error => {\n if (error) {\n console.error('Error importing migrated XML', error);\n }\n });\n this.decisionXml = decisionXml;\n }\n }\n\n download(): void {\n const file = new Blob([this.decisionXml], {type: 'text/xml'});\n const link = document.createElement('a');\n link.download = `decision_table_${this.decisionId}.dmn`;\n link.href = window.URL.createObjectURL(file);\n link.click();\n window.URL.revokeObjectURL(link.href);\n link.remove();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3\">\n <button (click)=\"download()\" class=\"btn btn-primary btn-space mr-0\">\n <i class=\"fa fa-save\"></i> \n <span>{{ 'Download' | translate }}</span>\n </button>\n </div>\n </div>\n <div id=\"canvas\" class=\"canvas-dmn\"></div>\n </div>\n</div>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Decision} from '../models';\n\nexport function filterLatestDecisionVersions(decisions: Decision[]): Decision[] {\n return decisions.reduce((acc: Decision[], curr: Decision) => {\n const existing = acc.find(d => d.key === curr.key);\n if (existing && existing.version >= curr.version) return acc;\n if (existing && existing.version < curr.version)\n return [...acc.filter(d => d.key !== curr.key), curr];\n return [...acc, curr];\n }, []);\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {Component, EventEmitter, Output} from '@angular/core';\nimport {FormBuilder, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n ButtonModule,\n FileUploaderModule,\n LayerModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, switchMap, take} from 'rxjs';\nimport {DECISION_UPLOAD_TEST_IDS} from '../constants';\nimport {ValtimoCdsModalDirective} from '@valtimo/components';\nimport {\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n getContextObservable,\n} from '@valtimo/shared';\nimport {DecisionService, DecisionStateService} from '../services';\n\n@Component({\n selector: 'valtimo-decision-deploy',\n standalone: true,\n templateUrl: './decision-deploy.component.html',\n styleUrls: ['./decision-deploy.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ButtonModule,\n LayerModule,\n FileUploaderModule,\n ReactiveFormsModule,\n ValtimoCdsModalDirective,\n ],\n})\nexport class DecisionDeployComponent {\n @Output() deploySuccessful = new EventEmitter();\n\n public dmn: File | null = null;\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n protected readonly testIds = DECISION_UPLOAD_TEST_IDS;\n\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);\n public readonly buildingBlockManagementRouteParams$ =\n getBuildingBlockManagementRouteParams(this.route);\n public readonly context$ = getContextObservable(this.route);\n\n public readonly ACCEPTED_FILES: string[] = ['dmn'];\n\n public readonly form = this.formBuilder.group({\n file: this.formBuilder.control(new Set<any>(), [Validators.required]),\n });\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly stateService: DecisionStateService,\n private readonly route: ActivatedRoute,\n private readonly formBuilder: FormBuilder\n ) {}\n\n public get selectedDmnFile(): File | null {\n const fileSet = this.form.value?.file;\n return fileSet?.size ? fileSet.values().next().value?.file || null : null;\n }\n\n public onChange(files: FileList): void {\n this.dmn = files.item(0);\n }\n\n public deployDmn(): void {\n const dmnFile = this.selectedDmnFile;\n if (!dmnFile) return;\n\n this.context$\n .pipe(\n take(1),\n switchMap(context => {\n if (context === 'case') {\n return this.caseManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployCaseDecisionDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n dmnFile\n )\n )\n );\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployBuildingBlockDecisionDefinition(\n params.buildingBlockDefinitionKey,\n params.buildingBlockDefinitionVersionTag,\n dmnFile\n )\n )\n );\n }\n return this.decisionService.deployDmn(dmnFile);\n })\n )\n .subscribe(() => {\n this.closeModal();\n this.deploySuccessful.emit();\n this.stateService.refreshDecisions();\n });\n }\n\n public openModal() {\n this.modalOpen$.next(true);\n }\n\n public closeModal(): void {\n this.modalOpen$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal showFooter=\"true\" valtimoCdsModal [open]=\"modalOpen$ | async\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'decisions.upload.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"ACCEPTED_FILES\"\n [multiple]=\"false\"\n buttonType=\"primary\"\n [title]=\"'decisions.upload.fileUploaderTitle' | translate\"\n [description]=\"'decisions.upload.fileUploaderDescription' | translate\"\n [buttonText]=\"'decisions.upload.fileUploaderButton' | translate\"\n formControlName=\"file\"\n >\n </cds-file-uploader>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!selectedDmnFile\"\n (click)=\"deployDmn()\"\n [attr.data-test-id]=\"testIds.submitButton\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectorRef, Component, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute, Router, RouterModule} from '@angular/router';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {DecisionFormValue, Decision} from '../models';\nimport {filterLatestDecisionVersions} from '../utils/decision.utils';\nimport {parseDecisionForm, toDecisionFileName, updateDmnXml} from '../utils/dmn-template';\nimport {DecisionService} from '../services/decision.service';\nimport {\n EditPermissionsService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n getContextObservable,\n GlobalNotificationService,\n ManagementContext,\n} from '@valtimo/shared';\nimport {DecisionStateService} from '../services';\nimport {DecisionDeployComponent} from '../decision-deploy/decision-deploy.component';\nimport {DecisionFormModalComponent} from '../decision-form-modal/decision-form-modal.component';\nimport {DECISION_LIST_TEST_IDS} from '../constants';\nimport {\n ActionItem,\n CarbonListModule,\n ConfirmationModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {Add16, Upload16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-decision-list',\n standalone: true,\n templateUrl: './decision-list.component.html',\n styleUrls: ['./decision-list.component.scss'],\n imports: [\n CommonModule,\n RouterModule,\n CarbonListModule,\n IconModule,\n WidgetModule,\n DecisionDeployComponent,\n DecisionFormModalComponent,\n ConfirmationModalModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class DecisionListComponent {\n @ViewChild('decisionDeploy') deploy: DecisionDeployComponent;\n @ViewChild('decisionCreate') create: DecisionFormModalComponent;\n @ViewChild('decisionEdit') edit: DecisionFormModalComponent;\n\n public fields = [\n {key: 'key', label: 'Key'},\n {key: 'name', label: 'Name'},\n {key: 'version', label: 'Version'},\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n disabled$: () => this.hasEditPermissions$.pipe(map(canEdit => !canEdit)),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClick.bind(this),\n type: 'danger',\n disabled$: () =>\n this.hasEditPermissions$.pipe(map(canEdit => !canEdit || this._context !== 'case')),\n },\n ];\n\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n protected readonly testIds = DECISION_LIST_TEST_IDS;\n\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);\n public readonly buildingBlockManagementRouteParams$ =\n getBuildingBlockManagementRouteParams(this.route);\n public readonly context$ = getContextObservable(this.route);\n\n readonly decisionsLatestVersions$ = this.stateService.refreshDecisions$.pipe(\n switchMap(() => this.context$),\n switchMap(context => {\n if (context === 'case') {\n return this.caseManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.listCaseDecisionDefinitions(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.listBuildingBlockDecisionDefinitions(\n params.buildingBlockDefinitionKey,\n params.buildingBlockDefinitionVersionTag\n )\n )\n );\n }\n return this.decisionService.getUnlinkedDecisions();\n }),\n map(filterLatestDecisionVersions),\n tap(() => {\n this.loading$.next(false);\n this.cdr.detectChanges();\n })\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n this.caseManagementRouteParams$,\n this.context$,\n ]).pipe(\n switchMap(([params, context]) => {\n return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context);\n })\n );\n\n private _editDecision: Decision | null = null;\n private _editXml: string | null = null;\n private _decisionToDelete: Decision | null = null;\n private _context: ManagementContext | null = null;\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly iconService: IconService,\n private readonly router: Router,\n private readonly stateService: DecisionStateService,\n private readonly route: ActivatedRoute,\n private readonly cdr: ChangeDetectorRef,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly notificationService: GlobalNotificationService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([Upload16, Add16]);\n this.context$.pipe(take(1)).subscribe(context => (this._context = context));\n }\n\n public viewDecisionTable(decision: Decision): void {\n this.context$.pipe(take(1)).subscribe(context => {\n if (context === 'buildingBlock') {\n this.buildingBlockManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}/decisions/${decision.id}`\n );\n });\n } else if (context === 'case') {\n this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/decisions/${decision.id}`\n );\n });\n } else {\n this.router.navigate(['/decision-tables/edit/' + decision.id]);\n }\n });\n }\n\n public onCreateDecision(value: DecisionFormValue): void {\n const state = {decisionName: value.name, inputVariables: value.inputVariables};\n\n this.context$.pipe(take(1)).subscribe(context => {\n if (context === 'buildingBlock') {\n this.buildingBlockManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}/decisions/create`,\n {state}\n );\n });\n } else if (context === 'case') {\n this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/decisions/create`,\n {state}\n );\n });\n } else {\n this.router.navigate(['/decision-tables/edit/create'], {state});\n }\n });\n }\n\n public openEditModal(decision: Decision): void {\n this.decisionService\n .getDecisionXml(decision.id)\n .pipe(take(1))\n .subscribe(xml => {\n this._editDecision = decision;\n this._editXml = xml.dmnXml;\n this.edit.open(parseDecisionForm(xml.dmnXml));\n });\n }\n\n public onEditDecision(value: DecisionFormValue): void {\n if (!this._editXml || !this._editDecision) return;\n\n const patchedXml = updateDmnXml(this._editXml, value);\n const fileName = this._editDecision.resource || toDecisionFileName(this._editDecision.key);\n const file = new File([patchedXml], fileName, {type: 'text/xml'});\n\n this.deployFileForContext(file).subscribe({\n next: () => {\n this.showNotification('success', 'decisions.deploySuccess');\n this.stateService.refreshDecisions();\n },\n error: () => this.showNotification('error', 'decisions.deployFailure'),\n });\n }\n\n public onDeleteClick(decision: Decision): void {\n this._decisionToDelete = decision;\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(): void {\n if (!this._decisionToDelete) return;\n\n const decisionKey = this._decisionToDelete.key;\n\n this.caseManagementRouteParams$\n .pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deleteCaseDecisionDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n decisionKey\n )\n )\n )\n .subscribe({\n next: () => {\n this.showNotification('success', 'decisions.deleteSuccess');\n this.stateService.refreshDecisions();\n },\n error: () => this.showNotification('error', 'decisions.deleteFailure'),\n });\n }\n\n private deployFileForContext(file: File): Observable<{identifier: string}> {\n return this.context$.pipe(\n take(1),\n switchMap(context => {\n if (context === 'case') {\n return this.caseManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployCaseDecisionDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n file\n )\n )\n );\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployBuildingBlockDecisionDefinition(\n params.buildingBlockDefinitionKey,\n params.buildingBlockDefinitionVersionTag,\n file\n )\n )\n );\n }\n return this.decisionService.deployDmn(file);\n })\n );\n }\n\n private showNotification(type: 'success' | 'error', message: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(message),\n type,\n title: this.translateService.instant(`interface.${type}`),\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [items]=\"(decisionsLatestVersions$ | async) || []\"\n [loading]=\"loading$ | async\"\n [fields]=\"fields\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"viewDecisionTable($event)\"\n [header]=\"false\"\n [isSearchable]=\"true\"\n>\n <ng-container carbonToolbarContent>\n <ng-container *ngIf=\"{canEdit: hasEditPermissions$ | async} as obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n [disabled]=\"!obs.canEdit\"\n (click)=\"this.deploy.openModal()\"\n [attr.data-test-id]=\"testIds.uploadButton\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.canEdit\"\n (click)=\"this.create.openModal()\"\n [attr.data-test-id]=\"testIds.createButton\"\n >\n {{ 'decisions.create' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </ng-container>\n</valtimo-carbon-list>\n\n<valtimo-decision-deploy #decisionDeploy></valtimo-decision-deploy>\n\n<valtimo-decision-form-modal\n #decisionCreate\n (submitEvent)=\"onCreateDecision($event)\"\n></valtimo-decision-form-modal>\n\n<valtimo-decision-form-modal\n #decisionEdit\n titleKey=\"decisions.editModal.title\"\n submitKey=\"interface.save\"\n (submitEvent)=\"onEditDecision($event)\"\n></valtimo-decision-form-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"decisions.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"decisions.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {DecisionModelerComponent} from './decision-modeler/decision-modeler.component';\nimport {DecisionDisplayComponent} from './decision-display/decision-display.component';\nimport {DecisionManagementRouteData} from './models/decision-management.model';\nimport {DecisionListComponent} from './decision-list/decision-list.component';\n\nconst routes: Routes = [\n {\n path: 'decision-tables',\n component: DecisionListComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Decision tables',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n {\n path: 'decision-tables/:id',\n component: DecisionDisplayComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Decision tables',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n {\n path: 'decision-tables/edit/:id',\n component: DecisionModelerComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Edit decision table',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n {\n path: 'decision-tables/edit/create',\n component: DecisionModelerComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Create decision table',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DecisionRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {DecisionRoutingModule} from './decision-routing.module';\nimport {DecisionDeployComponent} from './decision-deploy/decision-deploy.component';\nimport {DecisionFormModalComponent} from './decision-form-modal/decision-form-modal.component';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {DecisionDisplayComponent} from './decision-display/decision-display.component';\nimport {DecisionListComponent} from './decision-list/decision-list.component';\nimport {\n CarbonListModule,\n ModalModule,\n SelectModule,\n SpinnerModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DecisionModelerComponent} from './decision-modeler/decision-modeler.component';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\n\n@NgModule({\n imports: [\n DecisionRoutingModule,\n WidgetModule,\n TranslateModule,\n ModalModule,\n CommonModule,\n FormsModule,\n SelectModule,\n SpinnerModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n DecisionDeployComponent,\n DecisionFormModalComponent,\n DecisionModelerComponent,\n DecisionListComponent,\n DecisionDisplayComponent,\n ],\n exports: [DecisionModelerComponent],\n})\nexport class DecisionModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of decision\n */\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/decision.module';\nexport * from './lib/decision-modeler/decision-modeler.component';\nexport * from './lib/decision-display/decision-display.component';\nexport * from './lib/decision-list/decision-list.component';\nexport * from './lib/decision-deploy/decision-deploy.component';\nexport * from './lib/decision-form-modal/decision-form-modal.component';\nexport * from './lib/constants';\nexport * from './lib/utils/decision.utils';\nexport * from './lib/utils/dmn-template';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i5","i1.DecisionService","i4","ValtimoSelectModule","DmnViewer","i1.DecisionStateService","i3","i6","i4.DecisionStateService","i8","ModalModule","SelectModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-decision.mjs","sources":["../../../../projects/valtimo/decision/src/lib/models/decision.model.ts","../../../../projects/valtimo/decision/src/lib/models/decision-management.model.ts","../../../../projects/valtimo/decision/src/lib/models/index.ts","../../../../projects/valtimo/decision/src/lib/services/decision-state.service.ts","../../../../projects/valtimo/decision/src/lib/services/decision.service.ts","../../../../projects/valtimo/decision/src/lib/services/index.ts","../../../../projects/valtimo/decision/src/lib/constants/decision.test-ids.ts","../../../../projects/valtimo/decision/src/lib/constants/index.ts","../../../../projects/valtimo/decision/src/lib/utils/dmn-template.ts","../../../../projects/valtimo/decision/src/lib/decision-form-modal/decision-form-modal.component.ts","../../../../projects/valtimo/decision/src/lib/decision-form-modal/decision-form-modal.component.html","../../../../projects/valtimo/decision/src/lib/decision-modeler/empty-decision.ts","../../../../projects/valtimo/decision/src/lib/decision-modeler/decision-modeler.component.ts","../../../../projects/valtimo/decision/src/lib/decision-modeler/decision-modeler.component.html","../../../../projects/valtimo/decision/src/lib/decision-display/decision-display.component.ts","../../../../projects/valtimo/decision/src/lib/decision-display/decision-display.component.html","../../../../projects/valtimo/decision/src/lib/utils/decision.utils.ts","../../../../projects/valtimo/decision/src/lib/decision-deploy/decision-deploy.component.ts","../../../../projects/valtimo/decision/src/lib/decision-deploy/decision-deploy.component.html","../../../../projects/valtimo/decision/src/lib/decision-list/decision-list.component.ts","../../../../projects/valtimo/decision/src/lib/decision-list/decision-list.component.html","../../../../projects/valtimo/decision/src/lib/decision-routing.module.ts","../../../../projects/valtimo/decision/src/lib/decision.module.ts","../../../../projects/valtimo/decision/src/public-api.ts","../../../../projects/valtimo/decision/src/valtimo-decision.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Decision {\n category: string;\n decisionRequirementsDefinitionId: string;\n decisionRequirementsDefinitionKey: string;\n deploymentId: string;\n historyTimeToLive: number;\n id: string;\n key: string;\n name: string;\n resource: string;\n tenantId: string;\n version: number;\n versionTag: string;\n}\n\nexport interface DecisionXml {\n id: string;\n dmnXml: string;\n}\n\nexport interface DecisionInputVariable {\n /** Human-readable column header shown in the decision table. */\n label: string;\n /** The process variable / FEEL expression the input column evaluates. */\n expression: string;\n}\n\nexport interface DecisionFormValue {\n name: string;\n inputVariables: DecisionInputVariable[];\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ManagementContext} from '@valtimo/shared';\n\ninterface DecisionManagementRouteData {\n context: ManagementContext;\n}\nexport {DecisionManagementRouteData};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decision.model';\nexport * from './decision-management.model';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, startWith, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DecisionStateService {\n private readonly _refreshDecisions$ = new Subject<null>();\n\n get refreshDecisions$(): Observable<null> {\n return this._refreshDecisions$.asObservable().pipe(startWith(null));\n }\n\n refreshDecisions(): void {\n this._refreshDecisions$.next(null);\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {BaseApiService, ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {Decision, DecisionXml} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DecisionService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public deployDmn(dmn: File): Observable<{identifier: string}> {\n const formData: FormData = new FormData();\n formData.append('file', dmn);\n formData.append('deployment-name', 'dmnTableDeploy');\n formData.append('deployment-source', 'process application');\n\n return this.httpClient.post<{identifier: string}>(\n this.getApiUrl('/v1/process/definition/deployment'),\n formData\n );\n }\n\n public getDecisions(): Observable<Decision[]> {\n return this.httpClient.get<Decision[]>(\n this.getApiUrl('/operaton-rest/engine/default/decision-definition')\n );\n }\n\n public getUnlinkedDecisions(): Observable<Decision[]> {\n // Only the \"global\" decision tables: those not linked to a case or building block definition.\n return this.httpClient.get<Decision[]>(this.getApiUrl('/management/v1/decision-definition'));\n }\n\n public getDecisionById(decisionId: string): Observable<Decision> {\n return this.httpClient.get<Decision>(\n this.getApiUrl(`/operaton-rest/engine/default/decision-definition/${decisionId}`)\n );\n }\n\n public getLatestDecisionByKey(decisionKey: string): Observable<Decision> {\n return this.httpClient.get<Decision>(\n this.getApiUrl(`/operaton-rest/engine/default/decision-definition/key/${decisionKey}`)\n );\n }\n\n public getDecisionXml(decisionId: string): Observable<DecisionXml> {\n return this.httpClient.get<DecisionXml>(\n this.getApiUrl(`/operaton-rest/engine/default/decision-definition/${decisionId}/xml`)\n );\n }\n\n public listCaseDecisionDefinitions(\n caseDefinitionKey: string,\n versionTag: string\n ): Observable<Decision[]> {\n return this.httpClient.get<Decision[]>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition`\n )\n );\n }\n\n public deployCaseDecisionDefinition(\n caseDefinitionKey: string,\n versionTag: string,\n dmn: File\n ): Observable<{identifier: string}> {\n const formData = new FormData();\n formData.append('file', dmn);\n\n return this.httpClient.post<{identifier: string}>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition`\n ),\n formData,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '204'),\n }\n );\n }\n\n public deleteCaseDecisionDefinition(\n caseDefinitionKey: string,\n versionTag: string,\n decisionDefinitionKey: string\n ): Observable<any> {\n return this.httpClient.delete<any>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition/${decisionDefinitionKey}`\n )\n );\n }\n\n public listBuildingBlockDecisionDefinitions(\n key: string,\n versionTag: string\n ): Observable<Decision[]> {\n return this.httpClient.get<Decision[]>(\n this.getApiUrl(\n `/management/v1/building-block/${key}/version/${versionTag}/decision-definition`\n )\n );\n }\n\n public deployBuildingBlockDecisionDefinition(\n key: string,\n versionTag: string,\n dmn: File\n ): Observable<{identifier: string}> {\n const formData = new FormData();\n formData.append('file', dmn);\n\n return this.httpClient.post<{identifier: string}>(\n this.getApiUrl(\n `/management/v1/building-block/${key}/version/${versionTag}/decision-definition`\n ),\n formData,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '204'),\n }\n );\n }\n\n public deleteBuildingBlockDecisionDefinition(\n key: string,\n versionTag: string,\n decisionDefinitionKey: string\n ): Observable<any> {\n return this.httpClient.delete<any>(\n this.getApiUrl(\n `/management/v1/building-block/${key}/version/${versionTag}/decision-definition/${decisionDefinitionKey}`\n )\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decision-state.service';\nexport * from './decision.service';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DECISION_LIST_TEST_IDS = {\n uploadButton: 'decisionListUploadButton',\n createButton: 'decisionListCreateButton',\n} as const;\n\nexport const DECISION_UPLOAD_TEST_IDS = {\n submitButton: 'decisionUploadModalSubmitButton',\n} as const;\n\nexport const DECISION_FORM_TEST_IDS = {\n nameInput: 'decisionFormModalNameInput',\n inputVariables: 'decisionFormModalInputVariables',\n submitButton: 'decisionFormModalSubmitButton',\n} as const;\n\nexport const DECISION_MODELER_TEST_IDS = {\n deployButton: 'decisionModelerDeployButton',\n backButton: 'decisionModelerBackButton',\n readOnlyTag: 'decisionModelerReadOnlyTag',\n} as const;\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decision.test-ids';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DecisionFormValue, DecisionInputVariable, DecisionXml} from '../models';\n\nconst DEFAULT_DECISION_KEY = 'decision';\n\nfunction escapeXmlAttribute(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction escapeXmlText(value: string): string {\n return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\n/**\n * Derives a valid DMN decision key (an XML NCName) from a human-readable name.\n * The decision key doubles as the identifier referenced from a process'\n * business rule task, so it must be a stable, valid identifier.\n */\nfunction toDecisionKey(name: string): string {\n const cleaned = (name ?? '')\n .trim()\n .replace(/[^A-Za-z0-9_-]+/g, '_')\n .replace(/^[_-]+|[_-]+$/g, '');\n\n if (!cleaned) return DEFAULT_DECISION_KEY;\n\n return /^[A-Za-z_]/.test(cleaned) ? cleaned : `${DEFAULT_DECISION_KEY}_${cleaned}`;\n}\n\n/**\n * Derives the name of the `.dmn` file that is deployed for a created decision.\n */\nfunction toDecisionFileName(name: string): string {\n return `${toDecisionKey(name)}.dmn`;\n}\n\n/**\n * Normalizes input columns: trims label/expression, drops rows without a process\n * variable (the expression is required), defaults the label to the process\n * variable name when it is left blank, and guarantees at least one (empty) input\n * column so the decision table always has an input to work with.\n */\nfunction normalizeInputVariables(\n inputVariables: DecisionInputVariable[] | undefined\n): DecisionInputVariable[] {\n const cleaned = (inputVariables ?? [])\n .map(({label, expression}) => ({\n label: (label ?? '').trim(),\n expression: (expression ?? '').trim(),\n }))\n .filter(({expression}) => expression.length > 0)\n .map(({label, expression}) => ({label: label || expression, expression}));\n\n return cleaned.length ? cleaned : [{label: '', expression: ''}];\n}\n\n/**\n * Builds a deployable DMN 1.3 decision table seeded with one input column per\n * provided input variable and a single output. Each input column gets its\n * process variable as the input expression and, optionally, a human-readable\n * label as the column header. Seeding this up front means the created table is\n * functional immediately - the user only has to add rules before deploying.\n */\nfunction createDmnXml({name, inputVariables}: DecisionFormValue): DecisionXml {\n const key = toDecisionKey(name);\n const safeName = escapeXmlAttribute((name ?? '').trim() || key);\n const inputs = normalizeInputVariables(inputVariables);\n\n const inputsXml = inputs\n .map(({label, expression}, index) => {\n const labelAttr = label ? ` label=\"${escapeXmlAttribute(label)}\"` : '';\n return ` <input id=\"Input_${index + 1}\"${labelAttr}>\n <inputExpression id=\"InputExpression_${index + 1}\" typeRef=\"string\">\n <text>${escapeXmlText(expression)}</text>\n </inputExpression>\n </input>`;\n })\n .join('\\n');\n\n const inputEntriesXml = inputs\n .map(\n (_, index) => ` <inputEntry id=\"UnaryTests_${index + 1}\">\n <text></text>\n </inputEntry>`\n )\n .join('\\n');\n\n const dmnXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20191111/MODEL/\" xmlns:dmndi=\"https://www.omg.org/spec/DMN/20191111/DMNDI/\" xmlns:dc=\"http://www.omg.org/spec/DMN/20180521/DC/\" id=\"Definitions_${key}\" name=\"${safeName}\" namespace=\"http://camunda.org/schema/1.0/dmn\">\n <decision id=\"${key}\" name=\"${safeName}\">\n <decisionTable id=\"DecisionTable_${key}\">\n${inputsXml}\n <output id=\"Output_1\" label=\"Output\" name=\"result\" typeRef=\"string\" />\n <rule id=\"DecisionRule_1\">\n${inputEntriesXml}\n <outputEntry id=\"LiteralExpression_1\">\n <text></text>\n </outputEntry>\n </rule>\n </decisionTable>\n </decision>\n <dmndi:DMNDI>\n <dmndi:DMNDiagram>\n <dmndi:DMNShape dmnElementRef=\"${key}\">\n <dc:Bounds height=\"80\" width=\"180\" x=\"160\" y=\"100\" />\n </dmndi:DMNShape>\n </dmndi:DMNDiagram>\n </dmndi:DMNDI>\n</definitions>\n`;\n\n return {id: '', dmnXml};\n}\n\nfunction childrenByLocalName(parent: Element, localName: string): Element[] {\n return Array.from(parent.children).filter(child => child.localName === localName);\n}\n\nfunction firstChildByLocalName(parent: Element, localName: string): Element | null {\n return childrenByLocalName(parent, localName)[0] ?? null;\n}\n\nfunction uniqueId(doc: Document, prefix: string): string {\n let id: string;\n do {\n id = `${prefix}_${Math.random().toString(36).slice(2, 10)}`;\n } while (doc.querySelector(`[id=\"${id}\"]`));\n return id;\n}\n\n/**\n * Reads the editable form values (decision name and input columns) from an\n * existing DMN XML document.\n */\nfunction parseDecisionForm(xml: string): DecisionFormValue {\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n\n const decision = doc.getElementsByTagNameNS('*', 'decision')[0];\n const name = decision?.getAttribute('name') || decision?.getAttribute('id') || '';\n\n const inputVariables = Array.from(doc.getElementsByTagNameNS('*', 'input')).map(input => {\n const inputExpression = input.getElementsByTagNameNS('*', 'inputExpression')[0];\n const text = inputExpression?.getElementsByTagNameNS('*', 'text')[0];\n const expression = (text?.textContent ?? '').trim();\n const label = (input.getAttribute('label') ?? '').trim();\n // A label equal to the expression means it was defaulted, so present it as blank.\n return {label: label === expression ? '' : label, expression};\n });\n\n return {name, inputVariables};\n}\n\nfunction setInputColumn(\n input: Element,\n {label, expression}: DecisionInputVariable,\n doc: Document,\n ns: string | null\n): void {\n if (label) {\n input.setAttribute('label', label);\n } else {\n input.removeAttribute('label');\n }\n\n let inputExpression = firstChildByLocalName(input, 'inputExpression');\n if (!inputExpression) {\n inputExpression = doc.createElementNS(ns, 'inputExpression');\n inputExpression.setAttribute('id', uniqueId(doc, 'InputExpression'));\n inputExpression.setAttribute('typeRef', 'string');\n input.appendChild(inputExpression);\n }\n\n let text = firstChildByLocalName(inputExpression, 'text');\n if (!text) {\n text = doc.createElementNS(ns, 'text');\n inputExpression.appendChild(text);\n }\n text.textContent = expression;\n}\n\nfunction createInputElement(\n inputVariable: DecisionInputVariable,\n doc: Document,\n ns: string | null\n): Element {\n const input = doc.createElementNS(ns, 'input');\n input.setAttribute('id', uniqueId(doc, 'Input'));\n setInputColumn(input, inputVariable, doc, ns);\n return input;\n}\n\nfunction createEmptyInputEntry(doc: Document, ns: string | null): Element {\n const entry = doc.createElementNS(ns, 'inputEntry');\n entry.setAttribute('id', uniqueId(doc, 'UnaryTests'));\n const text = doc.createElementNS(ns, 'text');\n text.textContent = '';\n entry.appendChild(text);\n return entry;\n}\n\n/**\n * Patches an existing DMN XML document with a new decision name and set of input\n * columns, while preserving the decision key, outputs, rules and diagram. Input\n * columns are reconciled positionally: existing columns are updated (label +\n * expression), extra columns add an input (and a blank entry to every rule), and\n * removed columns drop the input (and their rule entries).\n */\nfunction updateDmnXml(xml: string, {name, inputVariables}: DecisionFormValue): string {\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n\n if (doc.getElementsByTagName('parsererror').length > 0) {\n return xml;\n }\n\n const trimmedName = (name ?? '').trim();\n\n const decision = doc.getElementsByTagNameNS('*', 'decision')[0];\n if (decision && trimmedName) {\n decision.setAttribute('name', trimmedName);\n }\n\n const decisionTable = doc.getElementsByTagNameNS('*', 'decisionTable')[0];\n if (!decisionTable) {\n return new XMLSerializer().serializeToString(doc);\n }\n\n const ns = decisionTable.namespaceURI;\n const targets = normalizeInputVariables(inputVariables);\n\n const existingInputs = childrenByLocalName(decisionTable, 'input');\n const rules = childrenByLocalName(decisionTable, 'rule');\n\n // Build the final ordered list of input columns, reusing existing nodes where possible.\n const finalInputs = targets.map((inputVariable, index) => {\n const existing = existingInputs[index];\n if (existing) {\n setInputColumn(existing, inputVariable, doc, ns);\n return existing;\n }\n return createInputElement(inputVariable, doc, ns);\n });\n\n // Remove all existing inputs, then re-insert the final ones in order before the outputs/rules.\n existingInputs.forEach(input => input.remove());\n const anchor =\n firstChildByLocalName(decisionTable, 'output') ??\n firstChildByLocalName(decisionTable, 'rule') ??\n null;\n finalInputs.forEach(input => decisionTable.insertBefore(input, anchor));\n\n // Reconcile each rule's input entries to match the number of input columns.\n rules.forEach(rule => {\n const entries = childrenByLocalName(rule, 'inputEntry');\n\n for (let index = entries.length; index < finalInputs.length; index++) {\n const firstOutputEntry = firstChildByLocalName(rule, 'outputEntry');\n rule.insertBefore(createEmptyInputEntry(doc, ns), firstOutputEntry);\n }\n\n for (let index = entries.length - 1; index >= finalInputs.length; index--) {\n entries[index].remove();\n }\n });\n\n return new XMLSerializer().serializeToString(doc);\n}\n\nexport {createDmnXml, toDecisionKey, toDecisionFileName, parseDecisionForm, updateDmnXml};\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {FormBuilder, FormControl, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonMultiInputModule,\n MultiInputOutput,\n MultiInputValues,\n runAfterCarbonModalClosed,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {DECISION_FORM_TEST_IDS} from '../constants';\nimport {DecisionFormValue, DecisionInputVariable} from '../models';\n\n@Component({\n selector: 'valtimo-decision-form-modal',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './decision-form-modal.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n ModalModule,\n ButtonModule,\n InputModule,\n LayerModule,\n ValtimoCdsModalDirective,\n CarbonMultiInputModule,\n ],\n styleUrl: './decision-form-modal.component.scss',\n})\nexport class DecisionFormModalComponent {\n @Input() public titleKey = 'decisions.createModal.title';\n @Input() public submitKey = 'interface.create';\n\n @Output() submitEvent = new EventEmitter<DecisionFormValue>();\n\n public readonly MAX_INPUT_VARIABLES = 100;\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly defaultInputVariables$ = new BehaviorSubject<MultiInputValues>([\n {key: '', value: ''},\n ]);\n\n /** True when a row has a label but no process variable (the process variable is required). */\n public readonly $inputVariablesInvalid = signal<boolean>(false);\n\n protected readonly testIds = DECISION_FORM_TEST_IDS;\n\n public readonly form = this.formBuilder.group({\n name: this.formBuilder.control('', [Validators.required]),\n });\n\n private _inputVariables: DecisionInputVariable[] = [];\n\n public get name(): FormControl<string> {\n return this.form.get('name') as FormControl<string>;\n }\n\n constructor(private readonly formBuilder: FormBuilder) {}\n\n public open(initial?: DecisionFormValue): void {\n const inputVariables = initial?.inputVariables ?? [];\n this._inputVariables = inputVariables.map(({label, expression}) => ({label, expression}));\n // The multi-input renders key (left) then value (right); the process variable is\n // the first column, so it maps to key and the label maps to value.\n this.defaultInputVariables$.next(\n inputVariables.length\n ? inputVariables.map(({label, expression}) => ({key: expression, value: label}))\n : [{key: '', value: ''}]\n );\n this.updateInputVariablesValidity();\n this.form.reset({name: initial?.name ?? ''});\n this.modalOpen$.next(true);\n }\n\n /** Convenience used by the \"create\" trigger, which opens an empty form. */\n public openModal(): void {\n this.open();\n }\n\n public closeModal(): void {\n this.modalOpen$.next(false);\n runAfterCarbonModalClosed(() => {\n this.form.reset({name: ''});\n this._inputVariables = [];\n this.$inputVariablesInvalid.set(false);\n this.defaultInputVariables$.next([{key: '', value: ''}]);\n });\n }\n\n public onInputVariablesChange(values: MultiInputOutput): void {\n this._inputVariables = ((values as MultiInputValues) ?? []).map(row => ({\n label: row.value ?? '',\n expression: row.key ?? '',\n }));\n this.updateInputVariablesValidity();\n }\n\n public submit(): void {\n if (this.form.invalid || this.$inputVariablesInvalid()) {\n this.form.markAllAsTouched();\n return;\n }\n\n const name = (this.form.getRawValue().name ?? '').trim();\n const inputVariables = this._inputVariables\n .map(({label, expression}) => ({label: label.trim(), expression: expression.trim()}))\n .filter(({expression}) => expression.length > 0);\n\n this.submitEvent.emit({name, inputVariables});\n this.closeModal();\n }\n\n private updateInputVariablesValidity(): void {\n this.$inputVariablesInvalid.set(\n this._inputVariables.some(\n ({label, expression}) => label.trim().length > 0 && expression.trim().length === 0\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal showFooter=\"true\" valtimoCdsModal [open]=\"modalOpen$ | async\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ titleKey | translate }}</h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [invalid]=\"name.touched && name.invalid\">\n <span>{{ 'decisions.createModal.name' | translate }}</span>\n\n <input\n cdsText\n formControlName=\"name\"\n [attr.data-test-id]=\"testIds.nameInput\"\n [invalid]=\"name.touched && name.invalid\"\n placeholder=\"{{ 'decisions.createModal.namePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <div *ngIf=\"name.touched && name.invalid\" class=\"cds--form-requirement\">\n {{ 'decisions.createModal.nameRequired' | translate }}\n </div>\n </div>\n\n <valtimo-carbon-multi-input\n *ngIf=\"modalOpen$ | async\"\n type=\"keyValue\"\n [attr.data-test-id]=\"testIds.inputVariables\"\n [titleTranslationKey]=\"'decisions.createModal.inputVariables'\"\n [tooltip]=\"'decisions.createModal.inputVariablesHelper' | translate\"\n [keyColumnTitle]=\"'decisions.createModal.inputExpression' | translate\"\n [valueColumnTitle]=\"'decisions.createModal.inputLabel' | translate\"\n [addRowTranslationKey]=\"'decisions.createModal.addInputVariable'\"\n [defaultValues]=\"defaultInputVariables$ | async\"\n [initialAmountOfRows]=\"1\"\n [minimumAmountOfRows]=\"1\"\n [maxRows]=\"MAX_INPUT_VARIABLES\"\n [margin]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"onInputVariablesChange($event)\"\n ></valtimo-carbon-multi-input>\n\n <div *ngIf=\"$inputVariablesInvalid()\" class=\"cds--form-requirement\">\n {{ 'decisions.createModal.inputExpressionRequired' | translate }}\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"form.invalid || $inputVariablesInvalid()\"\n (click)=\"submit()\"\n [attr.data-test-id]=\"testIds.submitButton\"\n >\n {{ submitKey | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DecisionXml} from '../models';\n\nconst EMPTY_DECISION: DecisionXml = {\n id: '',\n dmnXml: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20191111/MODEL/\" xmlns:dmndi=\"https://www.omg.org/spec/DMN/20191111/DMNDI/\" xmlns:dc=\"http://www.omg.org/spec/DMN/20180521/DC/\" id=\"Definitions_1h198v9\" name=\"DRD\" namespace=\"http://camunda.org/schema/1.0/dmn\" xmlns:modeler=\"http://camunda.org/schema/modeler/1.0\" exporter=\"Camunda Modeler\" exporterVersion=\"5.2.0\" modeler:executionPlatform=\"Camunda Cloud\" modeler:executionPlatformVersion=\"8.0.0\">\n <decision id=\"Decision_1e18q76\" name=\"Decision 1\">\n <decisionTable id=\"DecisionTable_1apu23m\">\n <input id=\"Input_1\">\n <inputExpression id=\"InputExpression_1\" typeRef=\"string\">\n <text></text>\n </inputExpression>\n </input>\n <output id=\"Output_1\" typeRef=\"string\" />\n </decisionTable>\n </decision>\n <dmndi:DMNDI>\n <dmndi:DMNDiagram>\n <dmndi:DMNShape dmnElementRef=\"Decision_1e18q76\">\n <dc:Bounds height=\"80\" width=\"180\" x=\"160\" y=\"100\" />\n </dmndi:DMNShape>\n </dmndi:DMNDiagram>\n </dmndi:DMNDI>\n</definitions>\n`,\n};\n\nexport {EMPTY_DECISION};\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DECISION_MODELER_TEST_IDS} from '../constants';\nimport {DecisionService} from '../services/decision.service';\nimport {AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport type DmnJS from 'dmn-js/lib/Modeler';\nimport type DmnViewer from 'dmn-js/lib/Viewer';\nimport {ActivatedRoute, Router, RouterModule} from '@angular/router';\nimport {DecisionFormValue, DecisionXml} from '../models';\nimport {\n createDmnXml,\n parseDecisionForm,\n toDecisionFileName,\n updateDmnXml,\n} from '../utils/dmn-template';\nimport {DecisionFormModalComponent} from '../decision-form-modal/decision-form-modal.component';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n from,\n map,\n Observable,\n of,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n BreadcrumbService,\n ConfirmationModalModule,\n FitPageDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n PageHeaderService,\n PageTitleService,\n PendingChangesComponent,\n RenderInPageHeaderDirective,\n SelectedValue,\n SelectModule as ValtimoSelectModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {EMPTY_DECISION} from './empty-decision';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n IconModule,\n IconService,\n ModalModule,\n SelectModule,\n TagModule,\n} from 'carbon-components-angular';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n DraftVersionService,\n EditPermissionsService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n getContextObservable,\n GlobalNotificationService,\n ManagementContext,\n} from '@valtimo/shared';\nimport {ArrowLeft16, Deploy16, Download16} from '@carbon/icons';\n\ndeclare const $: any;\n\n@Component({\n selector: 'valtimo-decision-modeler',\n standalone: true,\n templateUrl: './decision-modeler.component.html',\n styleUrls: ['./decision-modeler.component.scss'],\n imports: [\n CommonModule,\n RouterModule,\n ModalModule,\n SelectModule,\n WidgetModule,\n ValtimoSelectModule,\n TranslateModule,\n RenderInPageHeaderDirective,\n ButtonModule,\n IconModule,\n TagModule,\n FitPageDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n DecisionFormModalComponent,\n ConfirmationModalModule,\n ],\n})\nexport class DecisionModelerComponent\n extends PendingChangesComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n @ViewChild('decisionEdit') edit: DecisionFormModalComponent;\n\n private CLASS_NAMES = {\n drd: 'dmn-icon-lasso-tool',\n decisionTable: 'dmn-icon-decision-table',\n literalExpression: 'dmn-icon-literal-expression',\n };\n\n protected readonly testIds = DECISION_MODELER_TEST_IDS;\n\n private $container!: any;\n private $tabs!: any;\n private dmnEditor!: DmnJS | DmnViewer;\n private _destroyed = false;\n\n public readonly versionSelectionDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly isCreating$ = new BehaviorSubject<boolean>(false);\n public readonly selectionId$ = new BehaviorSubject<string>('');\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n // Emits once the dmn-js editor instance has been created, so XML import can wait for it.\n private readonly _editorReady$ = new BehaviorSubject<boolean>(false);\n\n private _fileName!: string;\n private _createSeed: DecisionFormValue | null = null;\n private _decisionKey: string | null = null;\n\n public readonly caseManagementRouteParams$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly buildingBlockManagementRouteParams$: Observable<\n BuildingBlockManagementParams | undefined\n > = getBuildingBlockManagementRouteParams(this.route);\n\n public readonly context$: Observable<ManagementContext | null> = getContextObservable(this.route);\n public readonly isIndependent$ = this.context$.pipe(map(context => context === 'independent'));\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n this.caseManagementRouteParams$,\n this.buildingBlockManagementRouteParams$,\n this.context$,\n ]).pipe(\n switchMap(([caseParams, buildingBlockParams, context]) => {\n // Building block decision tables can only be edited on a draft (non-final) version.\n if (context === 'buildingBlock') {\n return this.draftVersionService.isDraftVersionBuildingBlock(\n buildingBlockParams?.buildingBlockDefinitionKey ?? '',\n buildingBlockParams?.buildingBlockDefinitionVersionTag ?? ''\n );\n }\n return this.editPermissionsService.hasPermissionsToEditBasedOnContext(\n caseParams,\n context ?? ''\n );\n }),\n shareReplay({bufferSize: 1, refCount: false})\n );\n\n // The editor is shown as a read-only viewer when the user cannot edit (e.g. a final case or\n // building block definition) and is not creating a new decision table.\n public readonly readOnly$: Observable<boolean> = combineLatest([\n this.isCreating$,\n this.hasEditPermissions$,\n ]).pipe(map(([isCreating, hasEditPermissions]) => !isCreating && !hasEditPermissions));\n\n private readonly decisionId$ = this.route.params.pipe(\n map(params => params?.id),\n tap(id => {\n this.isCreating$.next(id === 'create');\n this.versionSelectionDisabled$.next(true);\n }),\n filter(id => !!id && id !== 'create')\n );\n\n public readonly decision$ = this.decisionId$.pipe(\n switchMap(id => this.decisionService.getDecisionById(id)),\n tap(decision => {\n this._fileName = decision.resource;\n this._decisionKey = decision?.key ?? null;\n if (decision) this.selectionId$.next(decision.id);\n })\n );\n\n public readonly decisionTitle$ = this.decision$.pipe(\n map(d => d?.name || d?.key || '-'),\n tap(title => this.pageTitleService.setCustomPageTitle(title))\n );\n\n private readonly _refreshDecisionSelectItems$ = new BehaviorSubject<null>(null);\n public readonly decisionVersionSelectItems$ = this._refreshDecisionSelectItems$.pipe(\n switchMap(() => combineLatest([this.decision$, this.decisionService.getUnlinkedDecisions()])),\n map(([current, list]) => {\n const filtered = list.filter(d => d.key === current.key);\n return [...filtered.map(d => ({id: d.id, text: d.version.toString()}))].sort(\n (a, b) => +(b.text ?? '') - +(a.text ?? '')\n );\n }),\n tap(() => this.versionSelectionDisabled$.next(false))\n );\n\n public readonly decisionXml$ = this.decisionId$.pipe(\n switchMap(id => this.decisionService.getDecisionXml(id)),\n // Wait until the editor (modeler or read-only viewer) has been created before importing.\n switchMap(xml =>\n this._editorReady$.pipe(\n filter(Boolean),\n take(1),\n map(() => xml)\n )\n ),\n tap(xml => xml && this.loadDecisionXml(xml))\n );\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly pageTitleService: PageTitleService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly notificationService: GlobalNotificationService,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly draftVersionService: DraftVersionService\n ) {\n super();\n this.iconService.registerAll([Deploy16, Download16, ArrowLeft16]);\n this._createSeed = this.extractCreateSeed();\n }\n\n private extractCreateSeed(): DecisionFormValue | null {\n const navigationState =\n this.router.getCurrentNavigation()?.extras?.state ??\n (typeof history !== 'undefined' ? history.state : undefined);\n\n const name = navigationState?.['decisionName'];\n const inputVariables = navigationState?.['inputVariables'];\n\n if (typeof name === 'string' && name) {\n return {\n name,\n inputVariables: Array.isArray(inputVariables)\n ? inputVariables\n .filter((variable: unknown): variable is Record<string, unknown> => !!variable)\n .map(variable => ({\n label: String(variable['label'] ?? ''),\n expression: String(variable['expression'] ?? ''),\n }))\n : [],\n };\n }\n\n return null;\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this._destroyed = true;\n\n // Reset the shared page state first: a failing teardown of the editor or the page header\n // would otherwise leave this page's breadcrumbs and title behind on the next screen.\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this.pageTitleService.enableReset();\n\n try {\n this.dmnEditor?.destroy();\n } catch (err) {\n console.error('dmn editor destroy error', err);\n }\n }\n\n public ngAfterViewInit(): void {\n this.initEditor();\n\n this.context$.pipe(take(1)).subscribe(context => {\n if (!context) return;\n\n if (context === 'buildingBlock') {\n this.buildingBlockManagementRouteParams$.pipe(take(1)).subscribe(params => {\n if (params) this.initBuildingBlockBreadcrumbs(params);\n });\n } else {\n this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {\n if (params) this.initBreadcrumbs(params, context);\n });\n }\n });\n }\n\n public switchVersion(decisionId: string | SelectedValue): void {\n if (!decisionId) return;\n\n this.router.navigate(['../', decisionId], {relativeTo: this.route});\n this._refreshDecisionSelectItems$.next(null);\n }\n\n public deploy(): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(\n map(result => new File([(result as any).xml], this._fileName, {type: 'text/xml'})),\n switchMap(file => combineLatest([of(file), this.context$])),\n switchMap(([file, context]) => {\n if (context === 'independent') {\n return this.decisionService.deployDmn(file);\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.deployBuildingBlockDecisionDefinition(\n params?.buildingBlockDefinitionKey ?? '',\n params?.buildingBlockDefinitionVersionTag ?? '',\n file\n )\n )\n );\n }\n return this.caseManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.deployCaseDecisionDefinition(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? '',\n file\n )\n )\n );\n }),\n tap((res: {identifier: string}) => {\n this.switchVersion(res.identifier);\n this.showNotification('success', 'decisions.deploySuccess');\n }),\n catchError(() => {\n this.showNotification('error', 'decisions.deployFailure');\n\n return of(null);\n })\n )\n .subscribe();\n }\n\n public download(): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(\n map(result => new File([(result as any).xml], 'decision.dmn', {type: 'text/xml'})),\n tap(file => {\n const link = document.createElement('a');\n link.download = 'diagram.dmn';\n link.href = window.URL.createObjectURL(file);\n link.click();\n window.URL.revokeObjectURL(link.href);\n link.remove();\n })\n )\n .subscribe();\n }\n\n public openEditModal(): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(take(1))\n .subscribe(result => this.edit.open(parseDecisionForm((result as any).xml)));\n }\n\n public onEditDecision(value: DecisionFormValue): void {\n from(this.dmnEditor.saveXML({format: true}))\n .pipe(\n map(result => updateDmnXml((result as any).xml, value)),\n switchMap(xml => this.dmnEditor.importXML(xml)),\n tap(() => {\n this.setEditor();\n if (value.name) this.pageTitleService.setCustomPageTitle(value.name);\n }),\n catchError(() => {\n this.showNotification('error', 'decisions.loadFailure');\n return of(null);\n })\n )\n .subscribe();\n }\n\n public onDeleteClick(): void {\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(): void {\n const decisionKey = this._decisionKey;\n if (!decisionKey) return;\n\n this.context$\n .pipe(\n take(1),\n switchMap(context => {\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deleteBuildingBlockDecisionDefinition(\n params?.buildingBlockDefinitionKey ?? '',\n params?.buildingBlockDefinitionVersionTag ?? '',\n decisionKey\n )\n )\n );\n }\n return this.caseManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deleteCaseDecisionDefinition(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? '',\n decisionKey\n )\n )\n );\n })\n )\n .subscribe({\n next: () => {\n this.navigateBack();\n this.showNotification('success', 'decisions.deleteSuccess');\n },\n error: () => this.showNotification('error', 'decisions.deleteFailure'),\n });\n }\n\n public navigateBack(): void {\n this.context$.pipe(take(1)).subscribe(context => {\n if (context === 'independent') {\n this.router.navigate(['/decision-tables']);\n } else {\n this.router.navigate(['../'], {relativeTo: this.route});\n }\n });\n }\n\n private showNotification(notification: null | 'success' | 'error', message: string): void {\n if (!notification) return;\n\n this.notificationService.showToast({\n caption: this.translateService.instant(message),\n type: notification,\n title: this.translateService.instant(`interface.${notification}`),\n });\n }\n\n private initEditor(): void {\n // A new decision table is always created in the editable modeler. For existing tables the\n // edit permissions decide whether to render the editable modeler or a read-only viewer.\n if (this.route.snapshot.params?.['id'] === 'create') {\n this.createEditor(false).then(() => {\n if (!this._destroyed) this.loadEmptyDecisionTable();\n });\n return;\n }\n\n this.hasEditPermissions$\n .pipe(take(1))\n .subscribe(hasEditPermissions => this.createEditor(!hasEditPermissions));\n }\n\n private async createEditor(readOnly: boolean): Promise<void> {\n // Loaded on demand: the dmn-js modeler is the single largest dependency in the workspace and\n // is only needed once a decision table is actually opened.\n const {default: DmnEditorCtor} = readOnly\n ? await import('dmn-js/lib/Viewer')\n : await import('dmn-js/lib/Modeler');\n\n if (this._destroyed) return;\n\n this.$container = $('.editor-container');\n this.$tabs = $('.editor-tabs');\n this.dmnEditor = new DmnEditorCtor({\n container: this.$container,\n height: 500,\n width: '100%',\n ...(readOnly ? {} : {keyboard: {bindTo: window}}),\n });\n this.setTabEvents();\n this.setModelerEvents();\n this._editorReady$.next(true);\n }\n\n private loadEmptyDecisionTable(): void {\n if (this._createSeed) {\n this._fileName = toDecisionFileName(this._createSeed.name);\n this.pageTitleService.setCustomPageTitle(this._createSeed.name);\n this.loadDecisionXml(createDmnXml(this._createSeed));\n return;\n }\n\n this._fileName = 'decision.dmn';\n this.loadDecisionXml(EMPTY_DECISION);\n }\n\n private setTabEvents(): void {\n this.$tabs.delegate('.tab', 'click', async (event: any) => {\n const index = +event.currentTarget.getAttribute('data-id');\n const view = this.dmnEditor.getViews()[index];\n try {\n await this.dmnEditor.open(view);\n } catch (err) {\n console.error('tab open error', err);\n }\n });\n }\n\n private setModelerEvents(): void {\n this.dmnEditor.on('views.changed', event => {\n const {views, activeView} = event;\n this.$tabs.empty();\n views.forEach((v, i) => {\n const className = this.CLASS_NAMES[v.type];\n const tab = $(\n `<div class=\"tab ${v === activeView ? 'active' : ''}\" data-id=\"${i}\"><span class=\"${className}\"></span>${v.element.name || v.element.id}</div>`\n );\n this.$tabs.append(tab);\n });\n });\n }\n\n private loadDecisionXml(decision: DecisionXml): void {\n from(this.dmnEditor.importXML(decision.dmnXml))\n .pipe(\n tap(() => this.setEditor()),\n catchError(() => {\n this.migrateAndLoadDecisionXml(decision);\n return of(null);\n })\n )\n .subscribe();\n }\n\n private migrateAndLoadDecisionXml(decision: DecisionXml): void {\n from(import('@bpmn-io/dmn-migrate'))\n .pipe(\n switchMap(({migrateDiagram}) => migrateDiagram(decision.dmnXml)),\n switchMap(xml => this.dmnEditor.importXML(xml)),\n tap(() => this.setEditor()),\n catchError(() => {\n this.showNotification('error', 'decisions.loadFailure');\n return of(null);\n })\n )\n .subscribe();\n }\n\n private setEditor(): void {\n const view = this.dmnEditor.getActiveView();\n if (view?.type === 'drd') {\n const canvas = this.dmnEditor.getActiveViewer().get('canvas');\n canvas.zoom('fit-viewport');\n }\n }\n\n private initBreadcrumbs(params: CaseManagementParams, context: ManagementContext): void {\n if (context === 'independent') return;\n\n const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,\n href: route,\n });\n\n const routeWithDecisions = `${route}/decisions`;\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [routeWithDecisions],\n content: this.translateService.instant('caseManagement.tabs.decision'),\n href: routeWithDecisions,\n });\n }\n\n private initBuildingBlockBreadcrumbs(params: BuildingBlockManagementParams): void {\n const route = `/building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}`;\n const generalRoute = `${route}/general`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [generalRoute],\n content: `${params.buildingBlockDefinitionKey} (${params.buildingBlockDefinitionVersionTag})`,\n href: generalRoute,\n });\n\n const routeWithDecisions = `${route}/decisions`;\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [routeWithDecisions],\n content: this.translateService.instant('buildingBlockManagement.tabs.decisions'),\n href: routeWithDecisions,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n decisionXml: decisionXml$ | async,\n decisionTitle: decisionTitle$ | async,\n } as obs\"\n fitPage\n [disableOverflow]=\"true\"\n class=\"dmn-editor\"\n>\n <ng-container *ngTemplateOutlet=\"diagram\"></ng-container>\n</div>\n\n<ng-template #diagram>\n <div class=\"editor-parent\">\n <div class=\"editor-container\"></div>\n <div class=\"editor-tabs\"></div>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n selectionId: selectionId$ | async,\n isCreating: isCreating$ | async,\n context: context$ | async,\n compactMode: compactMode$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n readOnly: readOnly$ | async,\n } as obs\"\n class=\"decision-modeler-actions\"\n >\n <cds-tag *ngIf=\"obs.readOnly\" type=\"blue\" [attr.data-test-id]=\"testIds.readOnlyTag\">{{\n 'decisions.readOnly' | translate\n }}</cds-tag>\n\n <ng-container *ngTemplateOutlet=\"versionSelection\"></ng-container>\n\n <button\n *ngIf=\"obs.context === 'case' || obs.isCreating\"\n cdsButton=\"secondary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack()\"\n [attr.data-test-id]=\"testIds.backButton\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n\n <span>{{ 'interface.back' | translate }}</span>\n </button>\n\n @if (obs.selectionId && !obs.isCreating) {\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.hasEditPermissions\"\n (click)=\"deploy()\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [attr.data-test-id]=\"testIds.deployButton\"\n >\n {{ 'decisions.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <v-overflow-menu class=\"overflow-button\" placement=\"bottom-end\">\n <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n <v-overflow-menu-option [disabled]=\"!obs.hasEditPermissions\" (selected)=\"openEditModal()\"\n >{{ 'interface.edit' | translate }}\n </v-overflow-menu-option>\n <v-overflow-menu-option (selected)=\"download()\"\n >{{ 'interface.export' | translate }}\n </v-overflow-menu-option>\n <v-overflow-menu-option\n [disabled]=\"!obs.hasEditPermissions || obs.context === 'independent'\"\n type=\"danger\"\n (selected)=\"onDeleteClick()\"\n >{{ 'interface.delete' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n } @else {\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.hasEditPermissions\"\n (click)=\"deploy()\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [attr.data-test-id]=\"testIds.deployButton\"\n >\n {{ 'decisions.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n }\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #versionSelection>\n <ng-container\n *ngIf=\"{\n selectItems: (decisionVersionSelectItems$ | async) || [],\n isIndependent: isIndependent$ | async,\n versionSelectionDisabled: versionSelectionDisabled$ | async,\n selectionId: selectionId$ | async,\n } as obs\"\n >\n <v-select\n *ngIf=\"obs.isIndependent\"\n name=\"version\"\n [title]=\"'decisions.version' | translate\"\n [disabled]=\"obs.versionSelectionDisabled\"\n [clearable]=\"false\"\n [loading]=\"obs.selectItems.length === 0\"\n [items]=\"obs.selectItems\"\n [defaultSelectionId]=\"obs.selectionId\"\n [widthInPx]=\"120\"\n (selectedChange)=\"switchVersion($event)\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<valtimo-decision-form-modal\n #decisionEdit\n titleKey=\"decisions.editModal.title\"\n submitKey=\"interface.save\"\n (submitEvent)=\"onEditDecision($event)\"\n></valtimo-decision-form-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"decisions.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"decisions.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute, RouterModule} from '@angular/router';\nimport {DecisionService} from '../services/decision.service';\nimport {DecisionXml} from '../models';\nimport type DmnViewer from 'dmn-js';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-decision-display',\n standalone: true,\n templateUrl: './decision-display.component.html',\n styleUrls: ['./decision-display.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, RouterModule, TranslateModule],\n})\nexport class DecisionDisplayComponent implements OnInit {\n public viewer: DmnViewer;\n private decisionId: string;\n public decisionXml: string;\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly route: ActivatedRoute\n ) {}\n\n async ngOnInit(): Promise<void> {\n // Loaded on demand: dmn-js is only needed on the decision table screens.\n const {default: DmnViewerCtor} = await import('dmn-js');\n\n this.viewer = new DmnViewerCtor({\n container: '#canvas',\n });\n this.decisionId = this.route.snapshot.paramMap.get('id')!;\n this.loadDecisionXml();\n }\n\n loadDecisionXml(): void {\n this.decisionService.getDecisionXml(this.decisionId).subscribe((decision: DecisionXml) => {\n this.viewer.importXML(decision.dmnXml, error => {\n if (error) {\n this.migrateAndLoadDecisionXml(decision);\n }\n });\n this.decisionXml = decision.dmnXml;\n });\n }\n\n async migrateAndLoadDecisionXml(decision: DecisionXml): Promise<void> {\n const {migrateDiagram} = await import('@bpmn-io/dmn-migrate');\n const decisionXml = await migrateDiagram(decision.dmnXml);\n\n if (decisionXml) {\n this.viewer.importXML(decisionXml, error => {\n if (error) {\n console.error('Error importing migrated XML', error);\n }\n });\n this.decisionXml = decisionXml;\n }\n }\n\n download(): void {\n const file = new Blob([this.decisionXml], {type: 'text/xml'});\n const link = document.createElement('a');\n link.download = `decision_table_${this.decisionId}.dmn`;\n link.href = window.URL.createObjectURL(file);\n link.click();\n window.URL.revokeObjectURL(link.href);\n link.remove();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3\">\n <button (click)=\"download()\" class=\"btn btn-primary btn-space mr-0\">\n <i class=\"fa fa-save\"></i> \n <span>{{ 'Download' | translate }}</span>\n </button>\n </div>\n </div>\n <div id=\"canvas\" class=\"canvas-dmn\"></div>\n </div>\n</div>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Decision} from '../models';\n\nexport function filterLatestDecisionVersions(decisions: Decision[]): Decision[] {\n return decisions.reduce((acc: Decision[], curr: Decision) => {\n const existing = acc.find(d => d.key === curr.key);\n if (existing && existing.version >= curr.version) return acc;\n if (existing && existing.version < curr.version)\n return [...acc.filter(d => d.key !== curr.key), curr];\n return [...acc, curr];\n }, []);\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {Component, EventEmitter, Output} from '@angular/core';\nimport {FormBuilder, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n ButtonModule,\n FileUploaderModule,\n LayerModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, switchMap, take} from 'rxjs';\nimport {DECISION_UPLOAD_TEST_IDS} from '../constants';\nimport {ValtimoCdsModalDirective} from '@valtimo/components';\nimport {\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n getContextObservable,\n} from '@valtimo/shared';\nimport {DecisionService, DecisionStateService} from '../services';\n\n@Component({\n selector: 'valtimo-decision-deploy',\n standalone: true,\n templateUrl: './decision-deploy.component.html',\n styleUrls: ['./decision-deploy.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ButtonModule,\n LayerModule,\n FileUploaderModule,\n ReactiveFormsModule,\n ValtimoCdsModalDirective,\n ],\n})\nexport class DecisionDeployComponent {\n @Output() deploySuccessful = new EventEmitter();\n\n public dmn: File | null = null;\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n protected readonly testIds = DECISION_UPLOAD_TEST_IDS;\n\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);\n public readonly buildingBlockManagementRouteParams$ =\n getBuildingBlockManagementRouteParams(this.route);\n public readonly context$ = getContextObservable(this.route);\n\n public readonly ACCEPTED_FILES: string[] = ['dmn'];\n\n public readonly form = this.formBuilder.group({\n file: this.formBuilder.control(new Set<any>(), [Validators.required]),\n });\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly stateService: DecisionStateService,\n private readonly route: ActivatedRoute,\n private readonly formBuilder: FormBuilder\n ) {}\n\n public get selectedDmnFile(): File | null {\n const fileSet = this.form.value?.file;\n return fileSet?.size ? fileSet.values().next().value?.file || null : null;\n }\n\n public onChange(files: FileList): void {\n this.dmn = files.item(0);\n }\n\n public deployDmn(): void {\n const dmnFile = this.selectedDmnFile;\n if (!dmnFile) return;\n\n this.context$\n .pipe(\n take(1),\n switchMap(context => {\n if (context === 'case') {\n return this.caseManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployCaseDecisionDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n dmnFile\n )\n )\n );\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployBuildingBlockDecisionDefinition(\n params.buildingBlockDefinitionKey,\n params.buildingBlockDefinitionVersionTag,\n dmnFile\n )\n )\n );\n }\n return this.decisionService.deployDmn(dmnFile);\n })\n )\n .subscribe(() => {\n this.closeModal();\n this.deploySuccessful.emit();\n this.stateService.refreshDecisions();\n });\n }\n\n public openModal() {\n this.modalOpen$.next(true);\n }\n\n public closeModal(): void {\n this.modalOpen$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal showFooter=\"true\" valtimoCdsModal [open]=\"modalOpen$ | async\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'decisions.upload.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"ACCEPTED_FILES\"\n [multiple]=\"false\"\n buttonType=\"primary\"\n [title]=\"'decisions.upload.fileUploaderTitle' | translate\"\n [description]=\"'decisions.upload.fileUploaderDescription' | translate\"\n [buttonText]=\"'decisions.upload.fileUploaderButton' | translate\"\n formControlName=\"file\"\n >\n </cds-file-uploader>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!selectedDmnFile\"\n (click)=\"deployDmn()\"\n [attr.data-test-id]=\"testIds.submitButton\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectorRef, Component, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute, Router, RouterModule} from '@angular/router';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {DecisionFormValue, Decision} from '../models';\nimport {filterLatestDecisionVersions} from '../utils/decision.utils';\nimport {parseDecisionForm, toDecisionFileName, updateDmnXml} from '../utils/dmn-template';\nimport {DecisionService} from '../services/decision.service';\nimport {\n EditPermissionsService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n getContextObservable,\n GlobalNotificationService,\n ManagementContext,\n} from '@valtimo/shared';\nimport {DecisionStateService} from '../services';\nimport {DecisionDeployComponent} from '../decision-deploy/decision-deploy.component';\nimport {DecisionFormModalComponent} from '../decision-form-modal/decision-form-modal.component';\nimport {DECISION_LIST_TEST_IDS} from '../constants';\nimport {\n ActionItem,\n CarbonListModule,\n ConfirmationModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {Add16, Upload16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-decision-list',\n standalone: true,\n templateUrl: './decision-list.component.html',\n styleUrls: ['./decision-list.component.scss'],\n imports: [\n CommonModule,\n RouterModule,\n CarbonListModule,\n IconModule,\n WidgetModule,\n DecisionDeployComponent,\n DecisionFormModalComponent,\n ConfirmationModalModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class DecisionListComponent {\n @ViewChild('decisionDeploy') deploy: DecisionDeployComponent;\n @ViewChild('decisionCreate') create: DecisionFormModalComponent;\n @ViewChild('decisionEdit') edit: DecisionFormModalComponent;\n\n public fields = [\n {key: 'key', label: 'Key'},\n {key: 'name', label: 'Name'},\n {key: 'version', label: 'Version'},\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n disabled$: () => this.hasEditPermissions$.pipe(map(canEdit => !canEdit)),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClick.bind(this),\n type: 'danger',\n disabled$: () =>\n this.hasEditPermissions$.pipe(map(canEdit => !canEdit || this._context !== 'case')),\n },\n ];\n\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n protected readonly testIds = DECISION_LIST_TEST_IDS;\n\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);\n public readonly buildingBlockManagementRouteParams$ =\n getBuildingBlockManagementRouteParams(this.route);\n public readonly context$ = getContextObservable(this.route);\n\n readonly decisionsLatestVersions$ = this.stateService.refreshDecisions$.pipe(\n switchMap(() => this.context$),\n switchMap(context => {\n if (context === 'case') {\n return this.caseManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.listCaseDecisionDefinitions(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n switchMap(params =>\n this.decisionService.listBuildingBlockDecisionDefinitions(\n params.buildingBlockDefinitionKey,\n params.buildingBlockDefinitionVersionTag\n )\n )\n );\n }\n return this.decisionService.getUnlinkedDecisions();\n }),\n map(filterLatestDecisionVersions),\n tap(() => {\n this.loading$.next(false);\n this.cdr.detectChanges();\n })\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n this.caseManagementRouteParams$,\n this.context$,\n ]).pipe(\n switchMap(([params, context]) => {\n return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context);\n })\n );\n\n private _editDecision: Decision | null = null;\n private _editXml: string | null = null;\n private _decisionToDelete: Decision | null = null;\n private _context: ManagementContext | null = null;\n\n constructor(\n private readonly decisionService: DecisionService,\n private readonly iconService: IconService,\n private readonly router: Router,\n private readonly stateService: DecisionStateService,\n private readonly route: ActivatedRoute,\n private readonly cdr: ChangeDetectorRef,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly notificationService: GlobalNotificationService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([Upload16, Add16]);\n this.context$.pipe(take(1)).subscribe(context => (this._context = context));\n }\n\n public viewDecisionTable(decision: Decision): void {\n this.context$.pipe(take(1)).subscribe(context => {\n if (context === 'buildingBlock') {\n this.buildingBlockManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}/decisions/${decision.id}`\n );\n });\n } else if (context === 'case') {\n this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/decisions/${decision.id}`\n );\n });\n } else {\n this.router.navigate(['/decision-tables/edit/' + decision.id]);\n }\n });\n }\n\n public onCreateDecision(value: DecisionFormValue): void {\n const state = {decisionName: value.name, inputVariables: value.inputVariables};\n\n this.context$.pipe(take(1)).subscribe(context => {\n if (context === 'buildingBlock') {\n this.buildingBlockManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}/decisions/create`,\n {state}\n );\n });\n } else if (context === 'case') {\n this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {\n this.router.navigateByUrl(\n `case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/decisions/create`,\n {state}\n );\n });\n } else {\n this.router.navigate(['/decision-tables/edit/create'], {state});\n }\n });\n }\n\n public openEditModal(decision: Decision): void {\n this.decisionService\n .getDecisionXml(decision.id)\n .pipe(take(1))\n .subscribe(xml => {\n this._editDecision = decision;\n this._editXml = xml.dmnXml;\n this.edit.open(parseDecisionForm(xml.dmnXml));\n });\n }\n\n public onEditDecision(value: DecisionFormValue): void {\n if (!this._editXml || !this._editDecision) return;\n\n const patchedXml = updateDmnXml(this._editXml, value);\n const fileName = this._editDecision.resource || toDecisionFileName(this._editDecision.key);\n const file = new File([patchedXml], fileName, {type: 'text/xml'});\n\n this.deployFileForContext(file).subscribe({\n next: () => {\n this.showNotification('success', 'decisions.deploySuccess');\n this.stateService.refreshDecisions();\n },\n error: () => this.showNotification('error', 'decisions.deployFailure'),\n });\n }\n\n public onDeleteClick(decision: Decision): void {\n this._decisionToDelete = decision;\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(): void {\n if (!this._decisionToDelete) return;\n\n const decisionKey = this._decisionToDelete.key;\n\n this.caseManagementRouteParams$\n .pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deleteCaseDecisionDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n decisionKey\n )\n )\n )\n .subscribe({\n next: () => {\n this.showNotification('success', 'decisions.deleteSuccess');\n this.stateService.refreshDecisions();\n },\n error: () => this.showNotification('error', 'decisions.deleteFailure'),\n });\n }\n\n private deployFileForContext(file: File): Observable<{identifier: string}> {\n return this.context$.pipe(\n take(1),\n switchMap(context => {\n if (context === 'case') {\n return this.caseManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployCaseDecisionDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n file\n )\n )\n );\n }\n if (context === 'buildingBlock') {\n return this.buildingBlockManagementRouteParams$.pipe(\n take(1),\n switchMap(params =>\n this.decisionService.deployBuildingBlockDecisionDefinition(\n params.buildingBlockDefinitionKey,\n params.buildingBlockDefinitionVersionTag,\n file\n )\n )\n );\n }\n return this.decisionService.deployDmn(file);\n })\n );\n }\n\n private showNotification(type: 'success' | 'error', message: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(message),\n type,\n title: this.translateService.instant(`interface.${type}`),\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [items]=\"(decisionsLatestVersions$ | async) || []\"\n [loading]=\"loading$ | async\"\n [fields]=\"fields\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"viewDecisionTable($event)\"\n [header]=\"false\"\n [isSearchable]=\"true\"\n>\n <ng-container carbonToolbarContent>\n <ng-container *ngIf=\"{canEdit: hasEditPermissions$ | async} as obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n [disabled]=\"!obs.canEdit\"\n (click)=\"this.deploy.openModal()\"\n [attr.data-test-id]=\"testIds.uploadButton\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.canEdit\"\n (click)=\"this.create.openModal()\"\n [attr.data-test-id]=\"testIds.createButton\"\n >\n {{ 'decisions.create' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </ng-container>\n</valtimo-carbon-list>\n\n<valtimo-decision-deploy #decisionDeploy></valtimo-decision-deploy>\n\n<valtimo-decision-form-modal\n #decisionCreate\n (submitEvent)=\"onCreateDecision($event)\"\n></valtimo-decision-form-modal>\n\n<valtimo-decision-form-modal\n #decisionEdit\n titleKey=\"decisions.editModal.title\"\n submitKey=\"interface.save\"\n (submitEvent)=\"onEditDecision($event)\"\n></valtimo-decision-form-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"decisions.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"decisions.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {DecisionModelerComponent} from './decision-modeler/decision-modeler.component';\nimport {DecisionDisplayComponent} from './decision-display/decision-display.component';\nimport {DecisionManagementRouteData} from './models/decision-management.model';\nimport {DecisionListComponent} from './decision-list/decision-list.component';\n\nconst routes: Routes = [\n {\n path: 'decision-tables',\n component: DecisionListComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Decision tables',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n {\n path: 'decision-tables/:id',\n component: DecisionDisplayComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Decision tables',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n {\n path: 'decision-tables/edit/:id',\n component: DecisionModelerComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Edit decision table',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n {\n path: 'decision-tables/edit/create',\n component: DecisionModelerComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Create decision table',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as DecisionManagementRouteData,\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DecisionRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {DecisionRoutingModule} from './decision-routing.module';\nimport {DecisionDeployComponent} from './decision-deploy/decision-deploy.component';\nimport {DecisionFormModalComponent} from './decision-form-modal/decision-form-modal.component';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {DecisionDisplayComponent} from './decision-display/decision-display.component';\nimport {DecisionListComponent} from './decision-list/decision-list.component';\nimport {\n CarbonListModule,\n ModalModule,\n SelectModule,\n SpinnerModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DecisionModelerComponent} from './decision-modeler/decision-modeler.component';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\n\n@NgModule({\n imports: [\n DecisionRoutingModule,\n WidgetModule,\n TranslateModule,\n ModalModule,\n CommonModule,\n FormsModule,\n SelectModule,\n SpinnerModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n DecisionDeployComponent,\n DecisionFormModalComponent,\n DecisionModelerComponent,\n DecisionListComponent,\n DecisionDisplayComponent,\n ],\n exports: [DecisionModelerComponent],\n})\nexport class DecisionModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of decision\n */\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/decision.module';\nexport * from './lib/decision-modeler/decision-modeler.component';\nexport * from './lib/decision-display/decision-display.component';\nexport * from './lib/decision-list/decision-list.component';\nexport * from './lib/decision-deploy/decision-deploy.component';\nexport * from './lib/decision-form-modal/decision-form-modal.component';\nexport * from './lib/constants';\nexport * from './lib/utils/decision.utils';\nexport * from './lib/utils/dmn-template';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i5","i1.DecisionService","i4","ValtimoSelectModule","i1.DecisionStateService","i3","i6","i4.DecisionStateService","i8","ModalModule","SelectModule"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { OnInit } from '@angular/core';
|
|
|
2
2
|
import { ActivatedRoute } from '@angular/router';
|
|
3
3
|
import { DecisionService } from '../services/decision.service';
|
|
4
4
|
import { DecisionXml } from '../models';
|
|
5
|
-
import DmnViewer from 'dmn-js';
|
|
5
|
+
import type DmnViewer from 'dmn-js';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class DecisionDisplayComponent implements OnInit {
|
|
8
8
|
private readonly decisionService;
|
|
@@ -11,7 +11,7 @@ export declare class DecisionDisplayComponent implements OnInit {
|
|
|
11
11
|
private decisionId;
|
|
12
12
|
decisionXml: string;
|
|
13
13
|
constructor(decisionService: DecisionService, route: ActivatedRoute);
|
|
14
|
-
ngOnInit(): void
|
|
14
|
+
ngOnInit(): Promise<void>;
|
|
15
15
|
loadDecisionXml(): void;
|
|
16
16
|
migrateAndLoadDecisionXml(decision: DecisionXml): Promise<void>;
|
|
17
17
|
download(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-display.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/decision/src/lib/decision-display/decision-display.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,MAAM,EAAoB,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAC,cAAc,EAAe,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,SAAS,MAAM,QAAQ,CAAC;;
|
|
1
|
+
{"version":3,"file":"decision-display.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/decision/src/lib/decision-display/decision-display.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,MAAM,EAAoB,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAC,cAAc,EAAe,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,QAAQ,CAAC;;AAGpC,qBAQa,wBAAyB,YAAW,MAAM;IAMnD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK;IANjB,MAAM,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,UAAU,CAAS;IACpB,WAAW,EAAE,MAAM,CAAC;gBAGR,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,cAAc;IAGlC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,eAAe,IAAI,IAAI;IAWjB,yBAAyB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrE,QAAQ,IAAI,IAAI;yCA9CL,wBAAwB;2CAAxB,wBAAwB;CAuDpC"}
|
|
@@ -31,6 +31,7 @@ export declare class DecisionModelerComponent extends PendingChangesComponent im
|
|
|
31
31
|
private $container;
|
|
32
32
|
private $tabs;
|
|
33
33
|
private dmnEditor;
|
|
34
|
+
private _destroyed;
|
|
34
35
|
readonly versionSelectionDisabled$: BehaviorSubject<boolean>;
|
|
35
36
|
readonly isCreating$: BehaviorSubject<boolean>;
|
|
36
37
|
readonly selectionId$: BehaviorSubject<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-modeler.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/decision/src/lib/decision-modeler/decision-modeler.component.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAa,SAAS,EAAE,MAAM,EAAY,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAC,cAAc,EAAE,MAAM,EAAe,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAE,WAAW,EAAC,MAAM,WAAW,CAAC;AAOzD,OAAO,EAAC,0BAA0B,EAAC,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"decision-modeler.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/decision/src/lib/decision-modeler/decision-modeler.component.ts"],"names":[],"mappings":"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"}
|