@valtimo/decision 12.14.1 → 13.0.1
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 +489 -416
- package/fesm2022/valtimo-decision.mjs.map +1 -1
- package/lib/decision-deploy/decision-deploy.component.d.ts +18 -7
- package/lib/decision-deploy/decision-deploy.component.d.ts.map +1 -1
- package/lib/decision-display/decision-display.component.d.ts +5 -7
- package/lib/decision-display/decision-display.component.d.ts.map +1 -1
- package/lib/decision-list/decision-list.component.d.ts +16 -9
- package/lib/decision-list/decision-list.component.d.ts.map +1 -1
- package/lib/decision-modeler/decision-modeler.component.d.ts +27 -12
- package/lib/decision-modeler/decision-modeler.component.d.ts.map +1 -1
- package/lib/decision-routing.module.d.ts.map +1 -1
- package/lib/decision.module.d.ts +11 -12
- package/lib/decision.module.d.ts.map +1 -1
- package/lib/models/decision-management.model.d.ts +6 -0
- package/lib/models/decision-management.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/services/decision.service.d.ts +25 -0
- package/lib/services/decision.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +6 -8
- package/public-api.d.ts +3 -1
- package/public-api.d.ts.map +1 -1
- package/esm2022/lib/decision-deploy/decision-deploy.component.mjs +0 -54
- package/esm2022/lib/decision-display/decision-display.component.mjs +0 -74
- package/esm2022/lib/decision-list/decision-list.component.mjs +0 -74
- package/esm2022/lib/decision-modeler/decision-modeler.component.mjs +0 -213
- package/esm2022/lib/decision-modeler/empty-decision.mjs +0 -41
- package/esm2022/lib/decision-routing.module.mjs +0 -65
- package/esm2022/lib/decision.component.mjs +0 -35
- package/esm2022/lib/decision.module.mjs +0 -87
- package/esm2022/lib/decision.service.mjs +0 -54
- package/esm2022/lib/models/decision.model.mjs +0 -17
- package/esm2022/lib/models/index.mjs +0 -17
- package/esm2022/lib/services/decision-state.service.mjs +0 -38
- package/esm2022/lib/services/index.mjs +0 -17
- package/esm2022/public-api.mjs +0 -23
- package/esm2022/valtimo-decision.mjs +0 -5
- package/lib/decision.component.d.ts +0 -12
- package/lib/decision.component.d.ts.map +0 -1
- package/lib/decision.service.d.ts +0 -19
- package/lib/decision.service.d.ts.map +0 -1
|
@@ -1,62 +1,30 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable,
|
|
3
|
-
import * as
|
|
4
|
-
import { ROLE_ADMIN } from '@valtimo/config';
|
|
5
|
-
import { Subject, startWith, BehaviorSubject, switchMap, map, tap, filter, combineLatest, from, take, catchError, of } from 'rxjs';
|
|
6
|
-
import { Upload16 } from '@carbon/icons';
|
|
7
|
-
import * as i2 from '@angular/common/http';
|
|
8
|
-
import * as i2$1 from 'carbon-components-angular';
|
|
9
|
-
import { ButtonModule, IconModule } from 'carbon-components-angular';
|
|
10
|
-
import * as i2$2 from '@angular/router';
|
|
2
|
+
import { Injectable, Component, ViewEncapsulation, EventEmitter, Output, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/router';
|
|
11
4
|
import { RouterModule } from '@angular/router';
|
|
12
|
-
import * as
|
|
5
|
+
import * as i7 from '@angular/common';
|
|
13
6
|
import { CommonModule } from '@angular/common';
|
|
14
|
-
import * as i3 from '@valtimo/components';
|
|
15
|
-
import { WidgetModule, ListModule, ModalModule, SelectModule, SpinnerModule, CarbonListModule } from '@valtimo/components';
|
|
16
|
-
import * as i4 from '@ngx-translate/core';
|
|
17
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
18
7
|
import { AuthGuardService } from '@valtimo/security';
|
|
8
|
+
import * as i6 from '@valtimo/shared';
|
|
9
|
+
import { BaseApiService, InterceptorSkip, getCaseManagementRouteParams, getContextObservable, ROLE_ADMIN } from '@valtimo/shared';
|
|
19
10
|
import DmnJS from 'dmn-js/dist/dmn-modeler.development.js';
|
|
20
11
|
import { migrateDiagram } from '@bpmn-io/dmn-migrate';
|
|
21
|
-
import
|
|
12
|
+
import { BehaviorSubject, combineLatest, switchMap, map, tap, filter, take, from, of, catchError, Subject, startWith } from 'rxjs';
|
|
13
|
+
import * as i4 from '@valtimo/components';
|
|
14
|
+
import { PendingChangesComponent, WidgetModule, SelectModule as SelectModule$1, RenderInPageHeaderDirective, FitPageDirective, CarbonListModule, ModalModule as ModalModule$1, SpinnerModule } from '@valtimo/components';
|
|
15
|
+
import * as i3 from '@ngx-translate/core';
|
|
16
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
17
|
+
import * as i6$1 from 'carbon-components-angular';
|
|
18
|
+
import { ModalModule, SelectModule, ButtonModule, IconModule, DialogModule, LayerModule, FileUploaderModule } from 'carbon-components-angular';
|
|
19
|
+
import { Deploy16, Download16, ArrowLeft16, Upload16 } from '@carbon/icons';
|
|
20
|
+
import * as i1 from '@angular/common/http';
|
|
21
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
22
22
|
import DmnViewer from 'dmn-js';
|
|
23
|
-
import * as i3$1 from '
|
|
24
|
-
import { FormsModule } from '@angular/forms';
|
|
25
|
-
|
|
26
|
-
/*
|
|
27
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
28
|
-
*
|
|
29
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
30
|
-
* you may not use this file except in compliance with the License.
|
|
31
|
-
* You may obtain a copy of the License at
|
|
32
|
-
*
|
|
33
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
34
|
-
*
|
|
35
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
36
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
37
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
38
|
-
* See the License for the specific language governing permissions and
|
|
39
|
-
* limitations under the License.
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
/*
|
|
43
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
44
|
-
*
|
|
45
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
46
|
-
* you may not use this file except in compliance with the License.
|
|
47
|
-
* You may obtain a copy of the License at
|
|
48
|
-
*
|
|
49
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
50
|
-
*
|
|
51
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
52
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
53
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
54
|
-
* See the License for the specific language governing permissions and
|
|
55
|
-
* limitations under the License.
|
|
56
|
-
*/
|
|
23
|
+
import * as i3$1 from '@angular/forms';
|
|
24
|
+
import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
57
25
|
|
|
58
26
|
/*
|
|
59
|
-
* Copyright 2015-
|
|
27
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
60
28
|
*
|
|
61
29
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
62
30
|
* you may not use this file except in compliance with the License.
|
|
@@ -70,43 +38,9 @@ import { FormsModule } from '@angular/forms';
|
|
|
70
38
|
* See the License for the specific language governing permissions and
|
|
71
39
|
* limitations under the License.
|
|
72
40
|
*/
|
|
73
|
-
class DecisionService {
|
|
74
|
-
constructor(configService, http) {
|
|
75
|
-
this.configService = configService;
|
|
76
|
-
this.http = http;
|
|
77
|
-
this.valtimoApiConfig = configService.config.valtimoApi;
|
|
78
|
-
}
|
|
79
|
-
deployDmn(dmn) {
|
|
80
|
-
const formData = new FormData();
|
|
81
|
-
formData.append('file', dmn);
|
|
82
|
-
formData.append('deployment-name', 'dmnTableDeploy');
|
|
83
|
-
formData.append('deployment-source', 'process application');
|
|
84
|
-
return this.http.post(`${this.valtimoApiConfig.endpointUri}v1/process/definition/deployment`, formData);
|
|
85
|
-
}
|
|
86
|
-
getDecisions() {
|
|
87
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}camunda-rest/engine/default/decision-definition`);
|
|
88
|
-
}
|
|
89
|
-
getDecisionById(decisionId) {
|
|
90
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}camunda-rest/engine/default/decision-definition/${decisionId}`);
|
|
91
|
-
}
|
|
92
|
-
getLatestDecisionByKey(decisionKey) {
|
|
93
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}camunda-rest/engine/default/decision-definition/key/${decisionKey}`);
|
|
94
|
-
}
|
|
95
|
-
getDecisionXml(decisionId) {
|
|
96
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}camunda-rest/engine/default/decision-definition/${decisionId}/xml`);
|
|
97
|
-
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
99
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionService, providedIn: 'root' }); }
|
|
100
|
-
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionService, decorators: [{
|
|
102
|
-
type: Injectable,
|
|
103
|
-
args: [{
|
|
104
|
-
providedIn: 'root',
|
|
105
|
-
}]
|
|
106
|
-
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }] });
|
|
107
41
|
|
|
108
42
|
/*
|
|
109
|
-
* Copyright 2015-
|
|
43
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
110
44
|
*
|
|
111
45
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
112
46
|
* you may not use this file except in compliance with the License.
|
|
@@ -120,28 +54,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
120
54
|
* See the License for the specific language governing permissions and
|
|
121
55
|
* limitations under the License.
|
|
122
56
|
*/
|
|
123
|
-
class DecisionStateService {
|
|
124
|
-
constructor() {
|
|
125
|
-
this._refreshDecisions$ = new Subject();
|
|
126
|
-
}
|
|
127
|
-
get refreshDecisions$() {
|
|
128
|
-
return this._refreshDecisions$.asObservable().pipe(startWith(null));
|
|
129
|
-
}
|
|
130
|
-
refreshDecisions() {
|
|
131
|
-
this._refreshDecisions$.next(null);
|
|
132
|
-
}
|
|
133
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
134
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionStateService, providedIn: 'root' }); }
|
|
135
|
-
}
|
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionStateService, decorators: [{
|
|
137
|
-
type: Injectable,
|
|
138
|
-
args: [{
|
|
139
|
-
providedIn: 'root',
|
|
140
|
-
}]
|
|
141
|
-
}] });
|
|
142
57
|
|
|
143
58
|
/*
|
|
144
|
-
* Copyright 2015-
|
|
59
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
145
60
|
*
|
|
146
61
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
147
62
|
* you may not use this file except in compliance with the License.
|
|
@@ -157,147 +72,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
157
72
|
*/
|
|
158
73
|
|
|
159
74
|
/*
|
|
160
|
-
* Copyright 2015-
|
|
161
|
-
*
|
|
162
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
163
|
-
* you may not use this file except in compliance with the License.
|
|
164
|
-
* You may obtain a copy of the License at
|
|
165
|
-
*
|
|
166
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
167
|
-
*
|
|
168
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
169
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
170
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
171
|
-
* See the License for the specific language governing permissions and
|
|
172
|
-
* limitations under the License.
|
|
173
|
-
*/
|
|
174
|
-
class DecisionDeployComponent {
|
|
175
|
-
constructor(decisionService, stateService) {
|
|
176
|
-
this.decisionService = decisionService;
|
|
177
|
-
this.stateService = stateService;
|
|
178
|
-
this.dmn = null;
|
|
179
|
-
this.deploySuccessful = new EventEmitter();
|
|
180
|
-
}
|
|
181
|
-
onChange(files) {
|
|
182
|
-
this.dmn = files.item(0);
|
|
183
|
-
}
|
|
184
|
-
deployDmn() {
|
|
185
|
-
this.decisionService.deployDmn(this.dmn).subscribe(() => {
|
|
186
|
-
this.modal.hide();
|
|
187
|
-
this.deploySuccessful.emit();
|
|
188
|
-
this.stateService.refreshDecisions();
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
openModal() {
|
|
192
|
-
this.modal.show();
|
|
193
|
-
}
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionDeployComponent, deps: [{ token: DecisionService }, { token: DecisionStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DecisionDeployComponent, selector: "valtimo-decision-deploy", outputs: { deploySuccessful: "deploySuccessful" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["decisionDeployModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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-modal\n #decisionDeployModal\n elementId=\"decisionDeployModal\"\n title=\"Upload Decision table\"\n [showFooter]=\"true\"\n>\n <div body>\n <div class=\"mt-3\">{{ 'decisions.upload.description' | translate }}</div>\n <div class=\"form-group mt-3 mb-3\">\n <input type=\"file\" id=\"file\" accept=\".dmn\" (change)=\"onChange($event.target.files)\" />\n </div>\n </div>\n <div footer>\n <div class=\"mb-0 p-3 text-right\">\n <button\n [disabled]=\"!dmn\"\n class=\"btn btn-primary btn-space\"\n type=\"button\"\n (click)=\"deployDmn()\"\n >\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n", styles: ["/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "component", type: i3.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
196
|
-
}
|
|
197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionDeployComponent, decorators: [{
|
|
198
|
-
type: Component,
|
|
199
|
-
args: [{ selector: 'valtimo-decision-deploy', template: "<!--\n ~ Copyright 2015-2024 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-modal\n #decisionDeployModal\n elementId=\"decisionDeployModal\"\n title=\"Upload Decision table\"\n [showFooter]=\"true\"\n>\n <div body>\n <div class=\"mt-3\">{{ 'decisions.upload.description' | translate }}</div>\n <div class=\"form-group mt-3 mb-3\">\n <input type=\"file\" id=\"file\" accept=\".dmn\" (change)=\"onChange($event.target.files)\" />\n </div>\n </div>\n <div footer>\n <div class=\"mb-0 p-3 text-right\">\n <button\n [disabled]=\"!dmn\"\n class=\"btn btn-primary btn-space\"\n type=\"button\"\n (click)=\"deployDmn()\"\n >\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n", styles: ["/*!\n * Copyright 2015-2024 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"] }]
|
|
200
|
-
}], ctorParameters: () => [{ type: DecisionService }, { type: DecisionStateService }], propDecorators: { deploySuccessful: [{
|
|
201
|
-
type: Output
|
|
202
|
-
}], modal: [{
|
|
203
|
-
type: ViewChild,
|
|
204
|
-
args: ['decisionDeployModal']
|
|
205
|
-
}] } });
|
|
206
|
-
|
|
207
|
-
/*
|
|
208
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
209
|
-
*
|
|
210
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
211
|
-
* you may not use this file except in compliance with the License.
|
|
212
|
-
* You may obtain a copy of the License at
|
|
213
|
-
*
|
|
214
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
215
|
-
*
|
|
216
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
217
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
218
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
219
|
-
* See the License for the specific language governing permissions and
|
|
220
|
-
* limitations under the License.
|
|
221
|
-
*/
|
|
222
|
-
class DecisionListComponent {
|
|
223
|
-
constructor(decisionService, iconService, router, configService, stateService) {
|
|
224
|
-
this.decisionService = decisionService;
|
|
225
|
-
this.iconService = iconService;
|
|
226
|
-
this.router = router;
|
|
227
|
-
this.configService = configService;
|
|
228
|
-
this.stateService = stateService;
|
|
229
|
-
this.fields = [
|
|
230
|
-
{ key: 'key', label: 'Key' },
|
|
231
|
-
{ key: 'name', label: 'Name' },
|
|
232
|
-
{ key: 'version', label: 'Version' },
|
|
233
|
-
];
|
|
234
|
-
this.loading$ = new BehaviorSubject(true);
|
|
235
|
-
this.decisionsLatestVersions$ = this.stateService.refreshDecisions$.pipe(switchMap(() => this.decisionService.getDecisions()), map(decisions => decisions.reduce((acc, curr) => {
|
|
236
|
-
const findInAcc = acc.find(decision => decision.key === curr.key);
|
|
237
|
-
if (findInAcc && findInAcc.version > curr.version) {
|
|
238
|
-
return acc;
|
|
239
|
-
}
|
|
240
|
-
else if (findInAcc && findInAcc.version < curr.version) {
|
|
241
|
-
const newAcc = acc.filter(decision => decision.key !== curr.key);
|
|
242
|
-
return [...newAcc, curr];
|
|
243
|
-
}
|
|
244
|
-
return [...acc, curr];
|
|
245
|
-
}, [])), tap(() => this.loading$.next(false)));
|
|
246
|
-
this.iconService.registerAll([Upload16]);
|
|
247
|
-
this.experimentalEditing = this.configService.config.featureToggles.experimentalDmnEditing;
|
|
248
|
-
}
|
|
249
|
-
viewDecisionTable(decision) {
|
|
250
|
-
if (this.experimentalEditing) {
|
|
251
|
-
this.router.navigate(['/decision-tables/edit', decision.id]);
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
this.router.navigate(['/decision-tables', decision.id]);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionListComponent, deps: [{ token: DecisionService }, { token: i2$1.IconService }, { token: i2$2.Router }, { token: i1.ConfigService }, { token: DecisionStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
258
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DecisionListComponent, selector: "valtimo-decision-list", viewQueries: [{ propertyName: "deploy", first: true, predicate: ["decisionDeploy"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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<ng-container *ngIf=\"decisionsLatestVersions$ | async as decisions\">\n <ng-container *ngIf=\"(loading$ | async) === false\">\n <valtimo-carbon-list\n [items]=\"decisions\"\n [fields]=\"fields\"\n (rowClicked)=\"viewDecisionTable($event)\"\n [header]=\"false\"\n [isSearchable]=\"true\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"this.deploy.openModal()\">\n {{ 'Upload' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n </ng-container>\n</ng-container>\n\n<valtimo-decision-deploy #decisionDeploy></valtimo-decision-deploy>\n\n<ng-container *ngIf=\"loading$ | async\">\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-container>\n", styles: ["/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: DecisionDeployComponent, selector: "valtimo-decision-deploy", outputs: ["deploySuccessful"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
259
|
-
}
|
|
260
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionListComponent, decorators: [{
|
|
261
|
-
type: Component,
|
|
262
|
-
args: [{ selector: 'valtimo-decision-list', template: "<!--\n ~ Copyright 2015-2024 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<ng-container *ngIf=\"decisionsLatestVersions$ | async as decisions\">\n <ng-container *ngIf=\"(loading$ | async) === false\">\n <valtimo-carbon-list\n [items]=\"decisions\"\n [fields]=\"fields\"\n (rowClicked)=\"viewDecisionTable($event)\"\n [header]=\"false\"\n [isSearchable]=\"true\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"this.deploy.openModal()\">\n {{ 'Upload' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n </ng-container>\n</ng-container>\n\n<valtimo-decision-deploy #decisionDeploy></valtimo-decision-deploy>\n\n<ng-container *ngIf=\"loading$ | async\">\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-container>\n", styles: ["/*!\n * Copyright 2015-2024 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"] }]
|
|
263
|
-
}], ctorParameters: () => [{ type: DecisionService }, { type: i2$1.IconService }, { type: i2$2.Router }, { type: i1.ConfigService }, { type: DecisionStateService }], propDecorators: { deploy: [{
|
|
264
|
-
type: ViewChild,
|
|
265
|
-
args: ['decisionDeploy']
|
|
266
|
-
}] } });
|
|
267
|
-
|
|
268
|
-
/*
|
|
269
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
270
|
-
*
|
|
271
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
272
|
-
* you may not use this file except in compliance with the License.
|
|
273
|
-
* You may obtain a copy of the License at
|
|
274
|
-
*
|
|
275
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
276
|
-
*
|
|
277
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
278
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
279
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
280
|
-
* See the License for the specific language governing permissions and
|
|
281
|
-
* limitations under the License.
|
|
282
|
-
*/
|
|
283
|
-
class DecisionComponent {
|
|
284
|
-
constructor(configService) {
|
|
285
|
-
this.configService = configService;
|
|
286
|
-
this.experimentalEditing = this.configService.config.featureToggles.experimentalDmnEditing;
|
|
287
|
-
}
|
|
288
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
289
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DecisionComponent, selector: "valtimo-decision", viewQueries: [{ propertyName: "list", first: true, predicate: ["decisionList"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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-->\n <!-- *ngIf=\"experimentalEditing\"-->\n <!-- class=\"btn btn-primary btn-space\"-->\n <!-- [routerLink]=\"'edit/create'\"-->\n <!-- >-->\n <!-- <i class=\"icon mdi mdi-plus mr-1\"></i>-->\n <!-- {{ 'Create decision table' | translate }}-->\n <!-- </button>-->\n </div>\n </div>\n <valtimo-decision-list #decisionList></valtimo-decision-list>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "component", type: DecisionListComponent, selector: "valtimo-decision-list" }] }); }
|
|
290
|
-
}
|
|
291
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecisionComponent, decorators: [{
|
|
292
|
-
type: Component,
|
|
293
|
-
args: [{ selector: 'valtimo-decision', template: "<!--\n ~ Copyright 2015-2024 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-->\n <!-- *ngIf=\"experimentalEditing\"-->\n <!-- class=\"btn btn-primary btn-space\"-->\n <!-- [routerLink]=\"'edit/create'\"-->\n <!-- >-->\n <!-- <i class=\"icon mdi mdi-plus mr-1\"></i>-->\n <!-- {{ 'Create decision table' | translate }}-->\n <!-- </button>-->\n </div>\n </div>\n <valtimo-decision-list #decisionList></valtimo-decision-list>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 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"] }]
|
|
294
|
-
}], ctorParameters: () => [{ type: i1.ConfigService }], propDecorators: { list: [{
|
|
295
|
-
type: ViewChild,
|
|
296
|
-
args: ['decisionList']
|
|
297
|
-
}] } });
|
|
298
|
-
|
|
299
|
-
/*
|
|
300
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
75
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
301
76
|
*
|
|
302
77
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
303
78
|
* you may not use this file except in compliance with the License.
|
|
@@ -336,15 +111,82 @@ const EMPTY_DECISION = {
|
|
|
336
111
|
`,
|
|
337
112
|
};
|
|
338
113
|
|
|
339
|
-
|
|
340
|
-
|
|
114
|
+
/*
|
|
115
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
116
|
+
*
|
|
117
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
118
|
+
* you may not use this file except in compliance with the License.
|
|
119
|
+
* You may obtain a copy of the License at
|
|
120
|
+
*
|
|
121
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
122
|
+
*
|
|
123
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
124
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
125
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
126
|
+
* See the License for the specific language governing permissions and
|
|
127
|
+
* limitations under the License.
|
|
128
|
+
*/
|
|
129
|
+
class DecisionService extends BaseApiService {
|
|
130
|
+
constructor(httpClient, configService) {
|
|
131
|
+
super(httpClient, configService);
|
|
132
|
+
this.httpClient = httpClient;
|
|
133
|
+
this.configService = configService;
|
|
134
|
+
}
|
|
135
|
+
deployDmn(dmn) {
|
|
136
|
+
const formData = new FormData();
|
|
137
|
+
formData.append('file', dmn);
|
|
138
|
+
formData.append('deployment-name', 'dmnTableDeploy');
|
|
139
|
+
formData.append('deployment-source', 'process application');
|
|
140
|
+
return this.httpClient.post(this.getApiUrl('/v1/process/definition/deployment'), formData);
|
|
141
|
+
}
|
|
142
|
+
getDecisions() {
|
|
143
|
+
return this.httpClient.get(this.getApiUrl('/operaton-rest/engine/default/decision-definition'));
|
|
144
|
+
}
|
|
145
|
+
getDecisionById(decisionId) {
|
|
146
|
+
return this.httpClient.get(this.getApiUrl(`/operaton-rest/engine/default/decision-definition/${decisionId}`));
|
|
147
|
+
}
|
|
148
|
+
getLatestDecisionByKey(decisionKey) {
|
|
149
|
+
return this.httpClient.get(this.getApiUrl(`/operaton-rest/engine/default/decision-definition/key/${decisionKey}`));
|
|
150
|
+
}
|
|
151
|
+
getDecisionXml(decisionId) {
|
|
152
|
+
return this.httpClient.get(this.getApiUrl(`/operaton-rest/engine/default/decision-definition/${decisionId}/xml`));
|
|
153
|
+
}
|
|
154
|
+
listCaseDecisionDefinitions(caseDefinitionKey, versionTag) {
|
|
155
|
+
return this.httpClient.get(this.getApiUrl(`/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition`));
|
|
156
|
+
}
|
|
157
|
+
deployCaseDecisionDefinition(caseDefinitionKey, versionTag, dmn) {
|
|
158
|
+
const formData = new FormData();
|
|
159
|
+
formData.append('file', dmn);
|
|
160
|
+
return this.httpClient.post(this.getApiUrl(`/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition`), formData, {
|
|
161
|
+
headers: new HttpHeaders().set(InterceptorSkip, '204'),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
deleteCaseDecisionDefinition(caseDefinitionKey, versionTag, decisionDefinitionKey) {
|
|
165
|
+
return this.httpClient.delete(this.getApiUrl(`/management/v1/case-definition/${caseDefinitionKey}/version/${versionTag}/decision-definition/${decisionDefinitionKey}`));
|
|
166
|
+
}
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionService, deps: [{ token: i1.HttpClient }, { token: i6.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
168
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionService, providedIn: 'root' }); }
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionService, decorators: [{
|
|
171
|
+
type: Injectable,
|
|
172
|
+
args: [{
|
|
173
|
+
providedIn: 'root',
|
|
174
|
+
}]
|
|
175
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i6.ConfigService }] });
|
|
176
|
+
|
|
177
|
+
class DecisionModelerComponent extends PendingChangesComponent {
|
|
178
|
+
constructor(decisionService, route, router, translateService, pageTitleService, breadcrumbService, iconService, pageHeaderService, notificationService, editPermissionsService) {
|
|
179
|
+
super();
|
|
341
180
|
this.decisionService = decisionService;
|
|
342
181
|
this.route = route;
|
|
343
182
|
this.router = router;
|
|
344
|
-
this.alertService = alertService;
|
|
345
183
|
this.translateService = translateService;
|
|
346
|
-
this.layoutService = layoutService;
|
|
347
184
|
this.pageTitleService = pageTitleService;
|
|
185
|
+
this.breadcrumbService = breadcrumbService;
|
|
186
|
+
this.iconService = iconService;
|
|
187
|
+
this.pageHeaderService = pageHeaderService;
|
|
188
|
+
this.notificationService = notificationService;
|
|
189
|
+
this.editPermissionsService = editPermissionsService;
|
|
348
190
|
this.CLASS_NAMES = {
|
|
349
191
|
drd: 'dmn-icon-lasso-tool',
|
|
350
192
|
decisionTable: 'dmn-icon-decision-table',
|
|
@@ -352,123 +194,69 @@ class DecisionModelerComponent {
|
|
|
352
194
|
};
|
|
353
195
|
this.versionSelectionDisabled$ = new BehaviorSubject(true);
|
|
354
196
|
this.isCreating$ = new BehaviorSubject(false);
|
|
355
|
-
this.decisionId$ = this.route.params.pipe(map(params => params?.id), tap(decisionId => this.isCreating$.next(decisionId === 'create')), filter(decisionId => !!decisionId && decisionId !== 'create'), tap(() => this.versionSelectionDisabled$.next(true)));
|
|
356
197
|
this.selectionId$ = new BehaviorSubject('');
|
|
357
|
-
this.
|
|
358
|
-
|
|
198
|
+
this.createdDecisionVersionSelectItems$ = new BehaviorSubject([]);
|
|
199
|
+
this.caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);
|
|
200
|
+
this.context$ = getContextObservable(this.route);
|
|
201
|
+
this.compactMode$ = this.pageHeaderService.compactMode$;
|
|
202
|
+
this.hasEditPermissions$ = combineLatest([
|
|
203
|
+
this.caseManagementRouteParams$,
|
|
204
|
+
this.context$,
|
|
205
|
+
]).pipe(switchMap(([params, context]) => this.editPermissionsService.hasPermissionsToEditBasedOnContext(params?.caseDefinitionKey ?? '', params?.caseDefinitionVersionTag ?? '', context ?? '')));
|
|
206
|
+
this.decisionId$ = this.route.params.pipe(map(params => params?.id), tap(id => {
|
|
207
|
+
this.isCreating$.next(id === 'create');
|
|
208
|
+
this.versionSelectionDisabled$.next(true);
|
|
209
|
+
}), filter(id => !!id && id !== 'create'));
|
|
210
|
+
this.decision$ = this.decisionId$.pipe(switchMap(id => this.decisionService.getDecisionById(id)), tap(decision => {
|
|
211
|
+
this._fileName = decision.resource;
|
|
212
|
+
if (decision)
|
|
359
213
|
this.selectionId$.next(decision.id);
|
|
360
|
-
}
|
|
361
|
-
}));
|
|
362
|
-
this.decisionTitle$ = this.decision$.pipe(map(decision => decision?.key || ''), tap(decisionTitle => {
|
|
363
|
-
this.pageTitleService.setCustomPageTitle(decisionTitle);
|
|
364
214
|
}));
|
|
365
|
-
this.
|
|
215
|
+
this.decisionTitle$ = this.decision$.pipe(map(d => d?.name || d?.key || '-'), tap(title => this.pageTitleService.setCustomPageTitle(title)));
|
|
366
216
|
this.decisionVersionSelectItems$ = combineLatest([
|
|
367
217
|
this.decision$,
|
|
368
218
|
this.decisionService.getDecisions(),
|
|
369
219
|
this.createdDecisionVersionSelectItems$,
|
|
370
|
-
]).pipe(map(([
|
|
371
|
-
const
|
|
372
|
-
return [
|
|
373
|
-
...decisionsWithKey.map(decision => ({
|
|
374
|
-
id: decision.id,
|
|
375
|
-
text: decision.version.toString(),
|
|
376
|
-
})),
|
|
377
|
-
...createdDecisionVersionSelectItems,
|
|
378
|
-
].sort((a, b) => Number(b.text) - Number(a.text));
|
|
220
|
+
]).pipe(map(([current, list, created]) => {
|
|
221
|
+
const filtered = list.filter(d => d.key === current.key);
|
|
222
|
+
return [...filtered.map(d => ({ id: d.id, text: d.version.toString() })), ...created].sort((a, b) => +(b.text ?? '') - +(a.text ?? ''));
|
|
379
223
|
}), tap(() => this.versionSelectionDisabled$.next(false)));
|
|
380
|
-
this.decisionXml$ = this.decisionId$.pipe(switchMap(
|
|
381
|
-
|
|
382
|
-
this.loadDecisionXml(decisionXml);
|
|
383
|
-
}
|
|
384
|
-
}));
|
|
385
|
-
this.setTabEvents = () => {
|
|
386
|
-
const $tabs = this.$tabs;
|
|
387
|
-
const dmnModeler = this.dmnModeler;
|
|
388
|
-
$tabs.delegate('.tab', 'click', async function (e) {
|
|
389
|
-
// get index of view from clicked tab
|
|
390
|
-
const viewIdx = parseInt(this.getAttribute('data-id'), 10);
|
|
391
|
-
// get view using index
|
|
392
|
-
const view = dmnModeler.getViews()[viewIdx];
|
|
393
|
-
// open view
|
|
394
|
-
try {
|
|
395
|
-
await dmnModeler.open(view);
|
|
396
|
-
}
|
|
397
|
-
catch (err) {
|
|
398
|
-
console.error('error opening tab', err);
|
|
399
|
-
}
|
|
400
|
-
});
|
|
401
|
-
};
|
|
402
|
-
this.setModelerEvents = () => {
|
|
403
|
-
const $tabs = this.$tabs;
|
|
404
|
-
const CLASS_NAMES = this.CLASS_NAMES;
|
|
405
|
-
this.dmnModeler.on('views.changed', function (event) {
|
|
406
|
-
// get views from event
|
|
407
|
-
const { views, activeView } = event;
|
|
408
|
-
// clear tabs
|
|
409
|
-
$tabs.empty();
|
|
410
|
-
// create a new tab for each view
|
|
411
|
-
views.forEach(function (v, idx) {
|
|
412
|
-
const className = CLASS_NAMES[v.type];
|
|
413
|
-
const tab = $(`
|
|
414
|
-
<div class="tab ${v === activeView ? 'active' : ''}" data-id="${idx}">
|
|
415
|
-
<span class="${className}"></span>
|
|
416
|
-
${v.element.name || v.element.id}
|
|
417
|
-
</div>
|
|
418
|
-
`);
|
|
419
|
-
$tabs.append(tab);
|
|
420
|
-
});
|
|
421
|
-
});
|
|
422
|
-
};
|
|
224
|
+
this.decisionXml$ = this.decisionId$.pipe(switchMap(id => this.decisionService.getDecisionXml(id)), tap(xml => xml && this.loadDecisionXml(xml)));
|
|
225
|
+
this.iconService.registerAll([Deploy16, Download16, ArrowLeft16]);
|
|
423
226
|
}
|
|
424
227
|
ngAfterViewInit() {
|
|
425
228
|
this.setProperties();
|
|
426
229
|
this.setTabEvents();
|
|
427
230
|
this.setModelerEvents();
|
|
231
|
+
combineLatest([this.caseManagementRouteParams$, this.context$])
|
|
232
|
+
.pipe(take(1))
|
|
233
|
+
.subscribe(([params, context]) => {
|
|
234
|
+
if (!params || !context)
|
|
235
|
+
return;
|
|
236
|
+
this.initBreadcrumbs(params, context);
|
|
237
|
+
});
|
|
428
238
|
}
|
|
429
239
|
switchVersion(decisionId) {
|
|
430
|
-
if (decisionId)
|
|
431
|
-
|
|
432
|
-
}
|
|
240
|
+
if (!decisionId)
|
|
241
|
+
return;
|
|
242
|
+
this.router.navigate(['../', decisionId], { relativeTo: this.route });
|
|
433
243
|
}
|
|
434
244
|
deploy() {
|
|
435
245
|
from(this.dmnModeler.saveXML({ format: true }))
|
|
436
|
-
.pipe(map(result => result.xml),
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
const deployedId = deployedDecisionDefinition.id;
|
|
442
|
-
this.createdDecisionVersionSelectItems$
|
|
443
|
-
.pipe(take(1))
|
|
444
|
-
.subscribe(createdDecisionVersionSelectItems => {
|
|
445
|
-
if (deployedDecisionDefinition) {
|
|
446
|
-
this.createdDecisionVersionSelectItems$.next([
|
|
447
|
-
...createdDecisionVersionSelectItems,
|
|
448
|
-
{
|
|
449
|
-
id: deployedId,
|
|
450
|
-
text: deployedDecisionDefinition.version.toString(),
|
|
451
|
-
},
|
|
452
|
-
]);
|
|
453
|
-
}
|
|
454
|
-
if (deployedId) {
|
|
455
|
-
setTimeout(() => {
|
|
456
|
-
this.switchVersion(deployedId);
|
|
457
|
-
this.alertService.success(this.translateService.instant('decisions.deploySuccess'));
|
|
458
|
-
});
|
|
459
|
-
}
|
|
460
|
-
});
|
|
246
|
+
.pipe(map(result => new File([result.xml], this._fileName, { type: 'text/xml' })), switchMap(file => combineLatest([of(file), this.context$])), switchMap(([file, context]) => context === 'independent'
|
|
247
|
+
? this.decisionService.deployDmn(file)
|
|
248
|
+
: this.caseManagementRouteParams$.pipe(switchMap(params => this.decisionService.deployCaseDecisionDefinition(params?.caseDefinitionKey ?? '', params?.caseDefinitionVersionTag ?? '', file)))), tap((res) => {
|
|
249
|
+
this.switchVersion(res.identifier);
|
|
250
|
+
this.showNotification('success', 'decisions.deploySuccess');
|
|
461
251
|
}), catchError(() => {
|
|
462
|
-
this.
|
|
252
|
+
this.showNotification('error', 'decisions.deployFailure');
|
|
463
253
|
return of(null);
|
|
464
254
|
}))
|
|
465
255
|
.subscribe();
|
|
466
256
|
}
|
|
467
257
|
download() {
|
|
468
258
|
from(this.dmnModeler.saveXML({ format: true }))
|
|
469
|
-
.pipe(map(result =>
|
|
470
|
-
type: 'text/xml',
|
|
471
|
-
})), tap(file => {
|
|
259
|
+
.pipe(map(result => new File([result.xml], 'decision.dmn', { type: 'text/xml' })), tap(file => {
|
|
472
260
|
const link = document.createElement('a');
|
|
473
261
|
link.download = 'diagram.dmn';
|
|
474
262
|
link.href = window.URL.createObjectURL(file);
|
|
@@ -478,6 +266,21 @@ class DecisionModelerComponent {
|
|
|
478
266
|
}))
|
|
479
267
|
.subscribe();
|
|
480
268
|
}
|
|
269
|
+
navigateBack(notification, message) {
|
|
270
|
+
this.router.navigate(['../'], { relativeTo: this.route });
|
|
271
|
+
if (!notification)
|
|
272
|
+
return;
|
|
273
|
+
this.showNotification(notification, message);
|
|
274
|
+
}
|
|
275
|
+
showNotification(notification, message) {
|
|
276
|
+
if (!notification)
|
|
277
|
+
return;
|
|
278
|
+
this.notificationService.showToast({
|
|
279
|
+
caption: this.translateService.instant(message),
|
|
280
|
+
type: notification,
|
|
281
|
+
title: this.translateService.instant(`interface.${notification}`),
|
|
282
|
+
});
|
|
283
|
+
}
|
|
481
284
|
setProperties() {
|
|
482
285
|
const isCreating = this.isCreating$.getValue();
|
|
483
286
|
this.$container = $('.editor-container');
|
|
@@ -486,22 +289,40 @@ class DecisionModelerComponent {
|
|
|
486
289
|
container: this.$container,
|
|
487
290
|
height: 500,
|
|
488
291
|
width: '100%',
|
|
489
|
-
keyboard: {
|
|
490
|
-
bindTo: window,
|
|
491
|
-
},
|
|
292
|
+
keyboard: { bindTo: window },
|
|
492
293
|
});
|
|
493
|
-
if (isCreating)
|
|
294
|
+
if (isCreating)
|
|
494
295
|
this.loadEmptyDecisionTable();
|
|
495
|
-
}
|
|
496
296
|
}
|
|
497
297
|
loadEmptyDecisionTable() {
|
|
498
298
|
this.loadDecisionXml(EMPTY_DECISION);
|
|
499
299
|
}
|
|
300
|
+
setTabEvents() {
|
|
301
|
+
this.$tabs.delegate('.tab', 'click', async function () {
|
|
302
|
+
const index = +this.getAttribute('data-id');
|
|
303
|
+
const view = this.dmnModeler.getViews()[index];
|
|
304
|
+
try {
|
|
305
|
+
await this.dmnModeler.open(view);
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
console.error('tab open error', err);
|
|
309
|
+
}
|
|
310
|
+
}.bind(this));
|
|
311
|
+
}
|
|
312
|
+
setModelerEvents() {
|
|
313
|
+
this.dmnModeler.on('views.changed', event => {
|
|
314
|
+
const { views, activeView } = event;
|
|
315
|
+
this.$tabs.empty();
|
|
316
|
+
views.forEach((v, i) => {
|
|
317
|
+
const className = this.CLASS_NAMES[v.type];
|
|
318
|
+
const tab = $(`<div class="tab ${v === activeView ? 'active' : ''}" data-id="${i}"><span class="${className}"></span>${v.element.name || v.element.id}</div>`);
|
|
319
|
+
this.$tabs.append(tab);
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
}
|
|
500
323
|
loadDecisionXml(decision) {
|
|
501
324
|
from(this.dmnModeler.importXML(decision.dmnXml))
|
|
502
|
-
.pipe(tap(() => {
|
|
503
|
-
this.setEditor();
|
|
504
|
-
}), catchError(() => {
|
|
325
|
+
.pipe(tap(() => this.setEditor()), catchError(() => {
|
|
505
326
|
this.migrateAndLoadDecisionXml(decision);
|
|
506
327
|
return of(null);
|
|
507
328
|
}))
|
|
@@ -509,36 +330,58 @@ class DecisionModelerComponent {
|
|
|
509
330
|
}
|
|
510
331
|
migrateAndLoadDecisionXml(decision) {
|
|
511
332
|
from(migrateDiagram(decision.dmnXml))
|
|
512
|
-
.pipe(switchMap(
|
|
513
|
-
this.
|
|
514
|
-
}), catchError(() => {
|
|
515
|
-
this.alertService.error(this.translateService.instant('decisions.loadFailure'));
|
|
333
|
+
.pipe(switchMap(xml => this.dmnModeler.importXML(xml)), tap(() => this.setEditor()), catchError(() => {
|
|
334
|
+
this.showNotification('error', 'decisions.loadFailure');
|
|
516
335
|
return of(null);
|
|
517
336
|
}))
|
|
518
337
|
.subscribe();
|
|
519
338
|
}
|
|
520
339
|
setEditor() {
|
|
521
|
-
const
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
if (activeView.type === 'drd') {
|
|
525
|
-
const activeEditor = dmnModeler.getActiveViewer();
|
|
526
|
-
// access active editor components
|
|
527
|
-
const canvas = activeEditor.get('canvas');
|
|
528
|
-
// zoom to fit full viewport
|
|
340
|
+
const view = this.dmnModeler.getActiveView();
|
|
341
|
+
if (view?.type === 'drd') {
|
|
342
|
+
const canvas = this.dmnModeler.getActiveViewer().get('canvas');
|
|
529
343
|
canvas.zoom('fit-viewport');
|
|
530
344
|
}
|
|
531
345
|
}
|
|
532
|
-
|
|
533
|
-
|
|
346
|
+
initBreadcrumbs(params, context) {
|
|
347
|
+
if (context === 'independent')
|
|
348
|
+
return;
|
|
349
|
+
const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;
|
|
350
|
+
this.breadcrumbService.setThirdBreadcrumb({
|
|
351
|
+
route: [route],
|
|
352
|
+
content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,
|
|
353
|
+
href: route,
|
|
354
|
+
});
|
|
355
|
+
const routeWithDecisions = `${route}/decisions`;
|
|
356
|
+
this.breadcrumbService.setFourthBreadcrumb({
|
|
357
|
+
route: [routeWithDecisions],
|
|
358
|
+
content: this.translateService.instant('caseManagement.tabs.decision'),
|
|
359
|
+
href: routeWithDecisions,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionModelerComponent, deps: [{ token: DecisionService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.TranslateService }, { token: i4.PageTitleService }, { token: i4.BreadcrumbService }, { token: i6$1.IconService }, { token: i4.PageHeaderService }, { token: i6.GlobalNotificationService }, { token: i6.EditPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
363
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DecisionModelerComponent, isStandalone: true, selector: "valtimo-decision-modeler", usesInheritance: true, ngImport: i0, template: "<!--\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 class=\"dmn-editor\"\n>\n <ng-container *ngTemplateOutlet=\"diagram\"></ng-container>\n</div>\n\n<ng-template #versionSelection>\n <v-select\n *ngIf=\"(isCreating$ | async) === false\"\n name=\"version\"\n [title]=\"'decisions.version' | translate\"\n [disabled]=\"versionSelectionDisabled$ | async\"\n [clearable]=\"false\"\n [loading]=\"(decisionVersionSelectItems$ | async) === null\"\n [items]=\"decisionVersionSelectItems$ | async\"\n [defaultSelectionId]=\"selectionId$ | async\"\n [widthInPx]=\"120\"\n (selectedChange)=\"switchVersion($event)\"\n ></v-select>\n</ng-template>\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 } as obs\"\n class=\"header\"\n >\n <ng-container *ngTemplateOutlet=\"versionSelection\"></ng-container>\n\n <div>\n <button\n *ngIf=\"obs.context === 'case'\"\n cdsButton=\"secondary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\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 *ngIf=\"obs.hasEditPermissions\"\n cdsButton=\"primary\"\n (click)=\"deploy()\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n >\n {{ 'decisions.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option (selected)=\"download()\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n } @else {\n <button class=\"btn btn-success btn-space\" (click)=\"deploy()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>{{ 'decisions.deploy' | translate }}\n </button>\n }\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: ["#save-button{position:absolute;bottom:10px;left:10px;background:#fff;border:solid 1px #ccc;border-radius:2px;padding:8px;font-family:Arial,sans-serif;font-weight:700;cursor:default;font-size:14px;color:#444}.dmn-modeler{display:flex;flex-direction:column;width:100%;padding:1rem}.diagram,.diagram-header{border:1px solid #dee2e6}.decision-title{color:#6b6b6b;font-size:1.5rem;margin:0}.fullscreen-toggle{font-size:2rem}.fullscreen-toggle>i{cursor:pointer}.dmn-editor{background-color:var(--cds-layer);outline:1px solid var(--cds-border-subtle);outline-offset:-1px;padding:16px}.header{display:flex;width:100%;justify-content:flex-end;align-items:flex-end;gap:16px}\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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: ModalModule }, { kind: "ngmodule", type: SelectModule }, { kind: "ngmodule", type: WidgetModule }, { kind: "ngmodule", type: SelectModule$1 }, { kind: "component", type: i4.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: FitPageDirective, selector: "[fitPage]", inputs: ["extraSpace", "disabled", "disableOverflow"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6$1.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i6$1.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }] }); }
|
|
534
364
|
}
|
|
535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionModelerComponent, decorators: [{
|
|
536
366
|
type: Component,
|
|
537
|
-
args: [{ selector: 'valtimo-decision-modeler',
|
|
538
|
-
|
|
367
|
+
args: [{ selector: 'valtimo-decision-modeler', standalone: true, imports: [
|
|
368
|
+
CommonModule,
|
|
369
|
+
RouterModule,
|
|
370
|
+
ModalModule,
|
|
371
|
+
SelectModule,
|
|
372
|
+
WidgetModule,
|
|
373
|
+
SelectModule$1,
|
|
374
|
+
TranslateModule,
|
|
375
|
+
RenderInPageHeaderDirective,
|
|
376
|
+
ButtonModule,
|
|
377
|
+
IconModule,
|
|
378
|
+
FitPageDirective,
|
|
379
|
+
DialogModule,
|
|
380
|
+
], template: "<!--\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 class=\"dmn-editor\"\n>\n <ng-container *ngTemplateOutlet=\"diagram\"></ng-container>\n</div>\n\n<ng-template #versionSelection>\n <v-select\n *ngIf=\"(isCreating$ | async) === false\"\n name=\"version\"\n [title]=\"'decisions.version' | translate\"\n [disabled]=\"versionSelectionDisabled$ | async\"\n [clearable]=\"false\"\n [loading]=\"(decisionVersionSelectItems$ | async) === null\"\n [items]=\"decisionVersionSelectItems$ | async\"\n [defaultSelectionId]=\"selectionId$ | async\"\n [widthInPx]=\"120\"\n (selectedChange)=\"switchVersion($event)\"\n ></v-select>\n</ng-template>\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 } as obs\"\n class=\"header\"\n >\n <ng-container *ngTemplateOutlet=\"versionSelection\"></ng-container>\n\n <div>\n <button\n *ngIf=\"obs.context === 'case'\"\n cdsButton=\"secondary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\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 *ngIf=\"obs.hasEditPermissions\"\n cdsButton=\"primary\"\n (click)=\"deploy()\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n >\n {{ 'decisions.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option (selected)=\"download()\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n } @else {\n <button class=\"btn btn-success btn-space\" (click)=\"deploy()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>{{ 'decisions.deploy' | translate }}\n </button>\n }\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: ["#save-button{position:absolute;bottom:10px;left:10px;background:#fff;border:solid 1px #ccc;border-radius:2px;padding:8px;font-family:Arial,sans-serif;font-weight:700;cursor:default;font-size:14px;color:#444}.dmn-modeler{display:flex;flex-direction:column;width:100%;padding:1rem}.diagram,.diagram-header{border:1px solid #dee2e6}.decision-title{color:#6b6b6b;font-size:1.5rem;margin:0}.fullscreen-toggle{font-size:2rem}.fullscreen-toggle>i{cursor:pointer}.dmn-editor{background-color:var(--cds-layer);outline:1px solid var(--cds-border-subtle);outline-offset:-1px;padding:16px}.header{display:flex;width:100%;justify-content:flex-end;align-items:flex-end;gap:16px}\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"] }]
|
|
381
|
+
}], ctorParameters: () => [{ type: DecisionService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.TranslateService }, { type: i4.PageTitleService }, { type: i4.BreadcrumbService }, { type: i6$1.IconService }, { type: i4.PageHeaderService }, { type: i6.GlobalNotificationService }, { type: i6.EditPermissionsService }] });
|
|
539
382
|
|
|
540
383
|
/*
|
|
541
|
-
* Copyright 2015-
|
|
384
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
542
385
|
*
|
|
543
386
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
544
387
|
* you may not use this file except in compliance with the License.
|
|
@@ -553,10 +396,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
553
396
|
* limitations under the License.
|
|
554
397
|
*/
|
|
555
398
|
class DecisionDisplayComponent {
|
|
556
|
-
constructor(decisionService, route
|
|
399
|
+
constructor(decisionService, route) {
|
|
557
400
|
this.decisionService = decisionService;
|
|
558
401
|
this.route = route;
|
|
559
|
-
this.toasterService = toasterService;
|
|
560
402
|
}
|
|
561
403
|
ngOnInit() {
|
|
562
404
|
this.viewer = new DmnViewer({
|
|
@@ -580,7 +422,7 @@ class DecisionDisplayComponent {
|
|
|
580
422
|
if (decisionXml) {
|
|
581
423
|
this.viewer.importXML(decisionXml, error => {
|
|
582
424
|
if (error) {
|
|
583
|
-
console.
|
|
425
|
+
console.error('Error importing migrated XML', error);
|
|
584
426
|
}
|
|
585
427
|
});
|
|
586
428
|
this.decisionXml = decisionXml;
|
|
@@ -595,16 +437,232 @@ class DecisionDisplayComponent {
|
|
|
595
437
|
window.URL.revokeObjectURL(link.href);
|
|
596
438
|
link.remove();
|
|
597
439
|
}
|
|
598
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
599
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
440
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionDisplayComponent, deps: [{ token: DecisionService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
441
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DecisionDisplayComponent, isStandalone: true, selector: "valtimo-decision-display", ngImport: i0, template: "<!--\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", styles: [".canvas-dmn{height:70vh}\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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
442
|
+
}
|
|
443
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionDisplayComponent, decorators: [{
|
|
444
|
+
type: Component,
|
|
445
|
+
args: [{ selector: 'valtimo-decision-display', standalone: true, encapsulation: ViewEncapsulation.None, imports: [CommonModule, RouterModule, TranslateModule], template: "<!--\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", styles: [".canvas-dmn{height:70vh}\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"] }]
|
|
446
|
+
}], ctorParameters: () => [{ type: DecisionService }, { type: i2.ActivatedRoute }] });
|
|
447
|
+
|
|
448
|
+
/*
|
|
449
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
450
|
+
*
|
|
451
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
452
|
+
* you may not use this file except in compliance with the License.
|
|
453
|
+
* You may obtain a copy of the License at
|
|
454
|
+
*
|
|
455
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
456
|
+
*
|
|
457
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
458
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
459
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
460
|
+
* See the License for the specific language governing permissions and
|
|
461
|
+
* limitations under the License.
|
|
462
|
+
*/
|
|
463
|
+
class DecisionStateService {
|
|
464
|
+
constructor() {
|
|
465
|
+
this._refreshDecisions$ = new Subject();
|
|
466
|
+
}
|
|
467
|
+
get refreshDecisions$() {
|
|
468
|
+
return this._refreshDecisions$.asObservable().pipe(startWith(null));
|
|
469
|
+
}
|
|
470
|
+
refreshDecisions() {
|
|
471
|
+
this._refreshDecisions$.next(null);
|
|
472
|
+
}
|
|
473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
474
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionStateService, providedIn: 'root' }); }
|
|
475
|
+
}
|
|
476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionStateService, decorators: [{
|
|
477
|
+
type: Injectable,
|
|
478
|
+
args: [{
|
|
479
|
+
providedIn: 'root',
|
|
480
|
+
}]
|
|
481
|
+
}] });
|
|
482
|
+
|
|
483
|
+
/*
|
|
484
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
485
|
+
*
|
|
486
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
487
|
+
* you may not use this file except in compliance with the License.
|
|
488
|
+
* You may obtain a copy of the License at
|
|
489
|
+
*
|
|
490
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
491
|
+
*
|
|
492
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
493
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
494
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
495
|
+
* See the License for the specific language governing permissions and
|
|
496
|
+
* limitations under the License.
|
|
497
|
+
*/
|
|
498
|
+
|
|
499
|
+
/*
|
|
500
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
501
|
+
*
|
|
502
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
503
|
+
* you may not use this file except in compliance with the License.
|
|
504
|
+
* You may obtain a copy of the License at
|
|
505
|
+
*
|
|
506
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
507
|
+
*
|
|
508
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
509
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
510
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
511
|
+
* See the License for the specific language governing permissions and
|
|
512
|
+
* limitations under the License.
|
|
513
|
+
*/
|
|
514
|
+
class DecisionDeployComponent {
|
|
515
|
+
constructor(decisionService, stateService, route, formBuilder) {
|
|
516
|
+
this.decisionService = decisionService;
|
|
517
|
+
this.stateService = stateService;
|
|
518
|
+
this.route = route;
|
|
519
|
+
this.formBuilder = formBuilder;
|
|
520
|
+
this.deploySuccessful = new EventEmitter();
|
|
521
|
+
this.dmn = null;
|
|
522
|
+
this.modalOpen$ = new BehaviorSubject(false);
|
|
523
|
+
this.caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);
|
|
524
|
+
this.context$ = getContextObservable(this.route);
|
|
525
|
+
this.ACCEPTED_FILES = ['dmn'];
|
|
526
|
+
this.form = this.formBuilder.group({
|
|
527
|
+
file: this.formBuilder.control(new Set(), [Validators.required]),
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
get selectedDmnFile() {
|
|
531
|
+
const fileSet = this.form.value?.file;
|
|
532
|
+
return fileSet?.size ? fileSet.values().next().value?.file || null : null;
|
|
533
|
+
}
|
|
534
|
+
onChange(files) {
|
|
535
|
+
this.dmn = files.item(0);
|
|
536
|
+
}
|
|
537
|
+
deployDmn() {
|
|
538
|
+
const dmnFile = this.selectedDmnFile;
|
|
539
|
+
if (!dmnFile)
|
|
540
|
+
return;
|
|
541
|
+
combineLatest([this.caseManagementRouteParams$, this.context$])
|
|
542
|
+
.pipe(take(1), switchMap(([params, context]) => context === 'case'
|
|
543
|
+
? this.decisionService.deployCaseDecisionDefinition(params.caseDefinitionKey, params.caseDefinitionVersionTag, dmnFile)
|
|
544
|
+
: this.decisionService.deployDmn(dmnFile)))
|
|
545
|
+
.subscribe(() => {
|
|
546
|
+
this.closeModal();
|
|
547
|
+
this.deploySuccessful.emit();
|
|
548
|
+
this.stateService.refreshDecisions();
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
openModal() {
|
|
552
|
+
this.modalOpen$.next(true);
|
|
553
|
+
}
|
|
554
|
+
closeModal() {
|
|
555
|
+
this.modalOpen$.next(false);
|
|
556
|
+
}
|
|
557
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionDeployComponent, deps: [{ token: DecisionService }, { token: DecisionStateService }, { token: i2.ActivatedRoute }, { token: i3$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
558
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DecisionDeployComponent, isStandalone: true, selector: "valtimo-decision-deploy", outputs: { deploySuccessful: "deploySuccessful" }, ngImport: i0, template: "<!--\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=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"!selectedDmnFile\" (click)=\"deployDmn()\">\n {{ 'interface.upload' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["/*!\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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i6$1.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
600
559
|
}
|
|
601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
560
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionDeployComponent, decorators: [{
|
|
602
561
|
type: Component,
|
|
603
|
-
args: [{ selector: 'valtimo-decision-
|
|
604
|
-
|
|
562
|
+
args: [{ selector: 'valtimo-decision-deploy', standalone: true, imports: [
|
|
563
|
+
CommonModule,
|
|
564
|
+
FormsModule,
|
|
565
|
+
TranslateModule,
|
|
566
|
+
ModalModule,
|
|
567
|
+
ButtonModule,
|
|
568
|
+
LayerModule,
|
|
569
|
+
FileUploaderModule,
|
|
570
|
+
ReactiveFormsModule,
|
|
571
|
+
], template: "<!--\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=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"!selectedDmnFile\" (click)=\"deployDmn()\">\n {{ 'interface.upload' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["/*!\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"] }]
|
|
572
|
+
}], ctorParameters: () => [{ type: DecisionService }, { type: DecisionStateService }, { type: i2.ActivatedRoute }, { type: i3$1.FormBuilder }], propDecorators: { deploySuccessful: [{
|
|
573
|
+
type: Output
|
|
574
|
+
}] } });
|
|
605
575
|
|
|
606
576
|
/*
|
|
607
|
-
* Copyright 2015-
|
|
577
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
578
|
+
*
|
|
579
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
580
|
+
* you may not use this file except in compliance with the License.
|
|
581
|
+
* You may obtain a copy of the License at
|
|
582
|
+
*
|
|
583
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
584
|
+
*
|
|
585
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
586
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
587
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
588
|
+
* See the License for the specific language governing permissions and
|
|
589
|
+
* limitations under the License.
|
|
590
|
+
*/
|
|
591
|
+
class DecisionListComponent {
|
|
592
|
+
constructor(decisionService, iconService, router, configService, stateService, route, cdr, editPermissionsService) {
|
|
593
|
+
this.decisionService = decisionService;
|
|
594
|
+
this.iconService = iconService;
|
|
595
|
+
this.router = router;
|
|
596
|
+
this.configService = configService;
|
|
597
|
+
this.stateService = stateService;
|
|
598
|
+
this.route = route;
|
|
599
|
+
this.cdr = cdr;
|
|
600
|
+
this.editPermissionsService = editPermissionsService;
|
|
601
|
+
this.fields = [
|
|
602
|
+
{ key: 'key', label: 'Key' },
|
|
603
|
+
{ key: 'name', label: 'Name' },
|
|
604
|
+
{ key: 'version', label: 'Version' },
|
|
605
|
+
];
|
|
606
|
+
this.loading$ = new BehaviorSubject(true);
|
|
607
|
+
this.caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);
|
|
608
|
+
this.context$ = getContextObservable(this.route);
|
|
609
|
+
this.decisionsLatestVersions$ = this.stateService.refreshDecisions$.pipe(switchMap(() => this.context$), switchMap(context => context === 'case'
|
|
610
|
+
? this.caseManagementRouteParams$.pipe(switchMap(params => this.decisionService.listCaseDecisionDefinitions(params.caseDefinitionKey, params.caseDefinitionVersionTag)))
|
|
611
|
+
: this.decisionService.getDecisions()), map(decisions => decisions.reduce((acc, curr) => {
|
|
612
|
+
const existing = acc.find(d => d.key === curr.key);
|
|
613
|
+
if (existing && existing.version > curr.version)
|
|
614
|
+
return acc;
|
|
615
|
+
if (existing && existing.version < curr.version)
|
|
616
|
+
return [...acc.filter(d => d.key !== curr.key), curr];
|
|
617
|
+
return [...acc, curr];
|
|
618
|
+
}, [])), tap(() => {
|
|
619
|
+
this.loading$.next(false);
|
|
620
|
+
this.cdr.detectChanges();
|
|
621
|
+
}));
|
|
622
|
+
this.hasEditPermissions$ = combineLatest([
|
|
623
|
+
this.caseManagementRouteParams$,
|
|
624
|
+
this.context$,
|
|
625
|
+
]).pipe(switchMap(([params, context]) => {
|
|
626
|
+
return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params?.caseDefinitionKey, params?.caseDefinitionVersionTag, context);
|
|
627
|
+
}));
|
|
628
|
+
this.iconService.registerAll([Upload16]);
|
|
629
|
+
this.experimentalEditing = this.configService.config.featureToggles.experimentalDmnEditing;
|
|
630
|
+
}
|
|
631
|
+
viewDecisionTable(decision) {
|
|
632
|
+
this.context$.pipe(take(1)).subscribe(context => {
|
|
633
|
+
if (context === 'independent') {
|
|
634
|
+
const basePath = this.experimentalEditing ? '/decision-tables/edit/' : '/decision-tables/';
|
|
635
|
+
this.router.navigate([basePath + decision.id]);
|
|
636
|
+
}
|
|
637
|
+
else {
|
|
638
|
+
this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {
|
|
639
|
+
this.router.navigateByUrl(`case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/decisions/${decision.id}`);
|
|
640
|
+
});
|
|
641
|
+
}
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionListComponent, deps: [{ token: DecisionService }, { token: i6$1.IconService }, { token: i2.Router }, { token: i6.ConfigService }, { token: DecisionStateService }, { token: i2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i6.EditPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
645
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DecisionListComponent, isStandalone: true, selector: "valtimo-decision-list", viewQueries: [{ propertyName: "deploy", first: true, predicate: ["decisionDeploy"], descendants: true }], ngImport: i0, template: "<!--\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 (rowClicked)=\"viewDecisionTable($event)\"\n [header]=\"false\"\n [isSearchable]=\"true\"\n>\n <ng-container carbonToolbarContent>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"primary\"\n (click)=\"this.deploy.openModal()\"\n >\n {{ 'Upload' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n </ng-container>\n</valtimo-carbon-list>\n\n<valtimo-decision-deploy #decisionDeploy></valtimo-decision-deploy>\n", styles: ["/*!\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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i4.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: WidgetModule }, { kind: "component", type: DecisionDeployComponent, selector: "valtimo-decision-deploy", outputs: ["deploySuccessful"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }] }); }
|
|
646
|
+
}
|
|
647
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionListComponent, decorators: [{
|
|
648
|
+
type: Component,
|
|
649
|
+
args: [{ selector: 'valtimo-decision-list', standalone: true, imports: [
|
|
650
|
+
CommonModule,
|
|
651
|
+
RouterModule,
|
|
652
|
+
CarbonListModule,
|
|
653
|
+
IconModule,
|
|
654
|
+
WidgetModule,
|
|
655
|
+
DecisionDeployComponent,
|
|
656
|
+
TranslateModule,
|
|
657
|
+
ButtonModule,
|
|
658
|
+
], template: "<!--\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 (rowClicked)=\"viewDecisionTable($event)\"\n [header]=\"false\"\n [isSearchable]=\"true\"\n>\n <ng-container carbonToolbarContent>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"primary\"\n (click)=\"this.deploy.openModal()\"\n >\n {{ 'Upload' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n </ng-container>\n</valtimo-carbon-list>\n\n<valtimo-decision-deploy #decisionDeploy></valtimo-decision-deploy>\n", styles: ["/*!\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"] }]
|
|
659
|
+
}], ctorParameters: () => [{ type: DecisionService }, { type: i6$1.IconService }, { type: i2.Router }, { type: i6.ConfigService }, { type: DecisionStateService }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i6.EditPermissionsService }], propDecorators: { deploy: [{
|
|
660
|
+
type: ViewChild,
|
|
661
|
+
args: ['decisionDeploy']
|
|
662
|
+
}] } });
|
|
663
|
+
|
|
664
|
+
/*
|
|
665
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
608
666
|
*
|
|
609
667
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
610
668
|
* you may not use this file except in compliance with the License.
|
|
@@ -621,35 +679,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
621
679
|
const routes = [
|
|
622
680
|
{
|
|
623
681
|
path: 'decision-tables',
|
|
624
|
-
component:
|
|
682
|
+
component: DecisionListComponent,
|
|
625
683
|
canActivate: [AuthGuardService],
|
|
626
|
-
data: {
|
|
684
|
+
data: {
|
|
685
|
+
title: 'Decision tables',
|
|
686
|
+
roles: [ROLE_ADMIN],
|
|
687
|
+
context: 'independent',
|
|
688
|
+
},
|
|
627
689
|
},
|
|
628
690
|
{
|
|
629
691
|
path: 'decision-tables/:id',
|
|
630
692
|
component: DecisionDisplayComponent,
|
|
631
693
|
canActivate: [AuthGuardService],
|
|
632
|
-
data: {
|
|
694
|
+
data: {
|
|
695
|
+
title: 'Decision tables',
|
|
696
|
+
roles: [ROLE_ADMIN],
|
|
697
|
+
context: 'independent',
|
|
698
|
+
},
|
|
633
699
|
},
|
|
634
700
|
{
|
|
635
701
|
path: 'decision-tables/edit/:id',
|
|
636
702
|
component: DecisionModelerComponent,
|
|
637
703
|
canActivate: [AuthGuardService],
|
|
638
|
-
data: {
|
|
704
|
+
data: {
|
|
705
|
+
title: 'Edit decision table',
|
|
706
|
+
roles: [ROLE_ADMIN],
|
|
707
|
+
customPageTitle: true,
|
|
708
|
+
context: 'independent',
|
|
709
|
+
},
|
|
639
710
|
},
|
|
640
711
|
{
|
|
641
712
|
path: 'decision-tables/edit/create',
|
|
642
713
|
component: DecisionModelerComponent,
|
|
643
714
|
canActivate: [AuthGuardService],
|
|
644
|
-
data: {
|
|
715
|
+
data: {
|
|
716
|
+
title: 'Create decision table',
|
|
717
|
+
roles: [ROLE_ADMIN],
|
|
718
|
+
context: 'independent',
|
|
719
|
+
},
|
|
645
720
|
},
|
|
646
721
|
];
|
|
647
722
|
class DecisionRoutingModule {
|
|
648
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
649
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
650
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
723
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
724
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DecisionRoutingModule, imports: [CommonModule, i2.RouterModule], exports: [RouterModule] }); }
|
|
725
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
|
|
651
726
|
}
|
|
652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionRoutingModule, decorators: [{
|
|
653
728
|
type: NgModule,
|
|
654
729
|
args: [{
|
|
655
730
|
declarations: [],
|
|
@@ -659,7 +734,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
659
734
|
}] });
|
|
660
735
|
|
|
661
736
|
/*
|
|
662
|
-
* Copyright 2015-
|
|
737
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
663
738
|
*
|
|
664
739
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
665
740
|
* you may not use this file except in compliance with the License.
|
|
@@ -674,66 +749,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
674
749
|
* limitations under the License.
|
|
675
750
|
*/
|
|
676
751
|
class DecisionModule {
|
|
677
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
678
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
679
|
-
DecisionDeployComponent,
|
|
680
|
-
DecisionDisplayComponent,
|
|
681
|
-
DecisionListComponent,
|
|
682
|
-
DecisionModelerComponent], imports: [DecisionRoutingModule,
|
|
752
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
753
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DecisionModule, imports: [DecisionRoutingModule,
|
|
683
754
|
WidgetModule,
|
|
684
|
-
ListModule,
|
|
685
755
|
TranslateModule,
|
|
686
|
-
ModalModule,
|
|
756
|
+
ModalModule$1,
|
|
687
757
|
CommonModule,
|
|
688
758
|
FormsModule,
|
|
689
|
-
SelectModule,
|
|
759
|
+
SelectModule$1,
|
|
690
760
|
SpinnerModule,
|
|
691
761
|
CarbonListModule,
|
|
692
762
|
ButtonModule,
|
|
693
|
-
IconModule
|
|
694
|
-
|
|
763
|
+
IconModule,
|
|
764
|
+
DecisionDeployComponent,
|
|
765
|
+
DecisionModelerComponent,
|
|
766
|
+
DecisionListComponent,
|
|
767
|
+
DecisionDisplayComponent], exports: [DecisionModelerComponent] }); }
|
|
768
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionModule, imports: [DecisionRoutingModule,
|
|
695
769
|
WidgetModule,
|
|
696
|
-
ListModule,
|
|
697
770
|
TranslateModule,
|
|
698
|
-
ModalModule,
|
|
771
|
+
ModalModule$1,
|
|
699
772
|
CommonModule,
|
|
700
773
|
FormsModule,
|
|
701
|
-
SelectModule,
|
|
774
|
+
SelectModule$1,
|
|
702
775
|
SpinnerModule,
|
|
703
776
|
CarbonListModule,
|
|
704
777
|
ButtonModule,
|
|
705
|
-
IconModule
|
|
778
|
+
IconModule,
|
|
779
|
+
DecisionDeployComponent,
|
|
780
|
+
DecisionModelerComponent,
|
|
781
|
+
DecisionListComponent,
|
|
782
|
+
DecisionDisplayComponent] }); }
|
|
706
783
|
}
|
|
707
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
784
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DecisionModule, decorators: [{
|
|
708
785
|
type: NgModule,
|
|
709
786
|
args: [{
|
|
710
|
-
declarations: [
|
|
711
|
-
DecisionComponent,
|
|
712
|
-
DecisionDeployComponent,
|
|
713
|
-
DecisionDisplayComponent,
|
|
714
|
-
DecisionListComponent,
|
|
715
|
-
DecisionModelerComponent,
|
|
716
|
-
],
|
|
717
787
|
imports: [
|
|
718
788
|
DecisionRoutingModule,
|
|
719
789
|
WidgetModule,
|
|
720
|
-
ListModule,
|
|
721
790
|
TranslateModule,
|
|
722
|
-
ModalModule,
|
|
791
|
+
ModalModule$1,
|
|
723
792
|
CommonModule,
|
|
724
793
|
FormsModule,
|
|
725
|
-
SelectModule,
|
|
794
|
+
SelectModule$1,
|
|
726
795
|
SpinnerModule,
|
|
727
796
|
CarbonListModule,
|
|
728
797
|
ButtonModule,
|
|
729
798
|
IconModule,
|
|
799
|
+
DecisionDeployComponent,
|
|
800
|
+
DecisionModelerComponent,
|
|
801
|
+
DecisionListComponent,
|
|
802
|
+
DecisionDisplayComponent,
|
|
730
803
|
],
|
|
731
|
-
exports: [
|
|
804
|
+
exports: [DecisionModelerComponent],
|
|
732
805
|
}]
|
|
733
806
|
}] });
|
|
734
807
|
|
|
735
808
|
/*
|
|
736
|
-
* Copyright 2015-
|
|
809
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
737
810
|
*
|
|
738
811
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
739
812
|
* you may not use this file except in compliance with the License.
|
|
@@ -755,5 +828,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
755
828
|
* Generated bundle index. Do not edit.
|
|
756
829
|
*/
|
|
757
830
|
|
|
758
|
-
export {
|
|
831
|
+
export { DecisionDeployComponent, DecisionDisplayComponent, DecisionListComponent, DecisionModelerComponent, DecisionModule };
|
|
759
832
|
//# sourceMappingURL=valtimo-decision.mjs.map
|