@valtimo/decision 12.19.0 → 13.0.1-next-minor.81
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 +497 -420
- 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 +31 -13
- 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,163 +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, map, combineLatest, switchMap, 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
|
-
*/
|
|
57
|
-
|
|
58
|
-
/*
|
|
59
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
60
|
-
*
|
|
61
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
62
|
-
* you may not use this file except in compliance with the License.
|
|
63
|
-
* You may obtain a copy of the License at
|
|
64
|
-
*
|
|
65
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
66
|
-
*
|
|
67
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
68
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
69
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
70
|
-
* See the License for the specific language governing permissions and
|
|
71
|
-
* limitations under the License.
|
|
72
|
-
*/
|
|
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
|
-
|
|
108
|
-
/*
|
|
109
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
110
|
-
*
|
|
111
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
112
|
-
* you may not use this file except in compliance with the License.
|
|
113
|
-
* You may obtain a copy of the License at
|
|
114
|
-
*
|
|
115
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
116
|
-
*
|
|
117
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
118
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
119
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
120
|
-
* See the License for the specific language governing permissions and
|
|
121
|
-
* limitations under the License.
|
|
122
|
-
*/
|
|
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
|
-
|
|
143
|
-
/*
|
|
144
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
145
|
-
*
|
|
146
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
147
|
-
* you may not use this file except in compliance with the License.
|
|
148
|
-
* You may obtain a copy of the License at
|
|
149
|
-
*
|
|
150
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
151
|
-
*
|
|
152
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
153
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
154
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
155
|
-
* See the License for the specific language governing permissions and
|
|
156
|
-
* limitations under the License.
|
|
157
|
-
*/
|
|
23
|
+
import * as i3$1 from '@angular/forms';
|
|
24
|
+
import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
158
25
|
|
|
159
26
|
/*
|
|
160
|
-
* Copyright 2015-
|
|
27
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
161
28
|
*
|
|
162
29
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
163
30
|
* you may not use this file except in compliance with the License.
|
|
@@ -171,41 +38,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
171
38
|
* See the License for the specific language governing permissions and
|
|
172
39
|
* limitations under the License.
|
|
173
40
|
*/
|
|
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
41
|
|
|
207
42
|
/*
|
|
208
|
-
* Copyright 2015-
|
|
43
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
209
44
|
*
|
|
210
45
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
211
46
|
* you may not use this file except in compliance with the License.
|
|
@@ -219,54 +54,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
219
54
|
* See the License for the specific language governing permissions and
|
|
220
55
|
* limitations under the License.
|
|
221
56
|
*/
|
|
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
57
|
|
|
268
58
|
/*
|
|
269
|
-
* Copyright 2015-
|
|
59
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
270
60
|
*
|
|
271
61
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
272
62
|
* you may not use this file except in compliance with the License.
|
|
@@ -280,24 +70,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
280
70
|
* See the License for the specific language governing permissions and
|
|
281
71
|
* limitations under the License.
|
|
282
72
|
*/
|
|
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
73
|
|
|
299
74
|
/*
|
|
300
|
-
* Copyright 2015-
|
|
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.15", 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.15", ngImport: i0, type: DecisionService, providedIn: 'root' }); }
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", 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,73 @@ 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.caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);
|
|
199
|
+
this.context$ = getContextObservable(this.route);
|
|
200
|
+
this.isIndependent$ = this.context$.pipe(map(context => context === 'independent'));
|
|
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.
|
|
366
|
-
this.
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
]).pipe(map(([currentDecision, decisions, createdDecisionVersionSelectItems]) => {
|
|
371
|
-
const decisionsWithKey = decisions.filter(decision => decision.key === currentDecision.key);
|
|
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));
|
|
215
|
+
this.decisionTitle$ = this.decision$.pipe(map(d => d?.name || d?.key || '-'), tap(title => this.pageTitleService.setCustomPageTitle(title)));
|
|
216
|
+
this._refreshDecisionSelectItems$ = new BehaviorSubject(null);
|
|
217
|
+
this.decisionVersionSelectItems$ = this._refreshDecisionSelectItems$.pipe(switchMap(() => combineLatest([this.decision$, this.decisionService.getDecisions()])), map(([current, list]) => {
|
|
218
|
+
const filtered = list.filter(d => d.key === current.key);
|
|
219
|
+
return [...filtered.map(d => ({ id: d.id, text: d.version.toString() }))].sort((a, b) => +(b.text ?? '') - +(a.text ?? ''));
|
|
379
220
|
}), tap(() => this.versionSelectionDisabled$.next(false)));
|
|
380
|
-
this.decisionXml$ = this.decisionId$.pipe(switchMap(
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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
|
-
};
|
|
221
|
+
this.decisionXml$ = this.decisionId$.pipe(switchMap(id => this.decisionService.getDecisionXml(id)), tap(xml => xml && this.loadDecisionXml(xml)));
|
|
222
|
+
this.iconService.registerAll([Deploy16, Download16, ArrowLeft16]);
|
|
223
|
+
}
|
|
224
|
+
ngOnInit() {
|
|
225
|
+
this.pageTitleService.disableReset();
|
|
226
|
+
}
|
|
227
|
+
ngOnDestroy() {
|
|
228
|
+
this.pageTitleService.enableReset();
|
|
423
229
|
}
|
|
424
230
|
ngAfterViewInit() {
|
|
425
231
|
this.setProperties();
|
|
426
232
|
this.setTabEvents();
|
|
427
233
|
this.setModelerEvents();
|
|
234
|
+
combineLatest([this.caseManagementRouteParams$, this.context$])
|
|
235
|
+
.pipe(take(1))
|
|
236
|
+
.subscribe(([params, context]) => {
|
|
237
|
+
if (!params || !context)
|
|
238
|
+
return;
|
|
239
|
+
this.initBreadcrumbs(params, context);
|
|
240
|
+
});
|
|
428
241
|
}
|
|
429
242
|
switchVersion(decisionId) {
|
|
430
|
-
if (decisionId)
|
|
431
|
-
|
|
432
|
-
}
|
|
243
|
+
if (!decisionId)
|
|
244
|
+
return;
|
|
245
|
+
this.router.navigate(['../', decisionId], { relativeTo: this.route });
|
|
246
|
+
this._refreshDecisionSelectItems$.next(null);
|
|
433
247
|
}
|
|
434
248
|
deploy() {
|
|
435
249
|
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
|
-
});
|
|
250
|
+
.pipe(map(result => new File([result.xml], this._fileName, { type: 'text/xml' })), switchMap(file => combineLatest([of(file), this.context$])), switchMap(([file, context]) => context === 'independent'
|
|
251
|
+
? this.decisionService.deployDmn(file)
|
|
252
|
+
: this.caseManagementRouteParams$.pipe(switchMap(params => this.decisionService.deployCaseDecisionDefinition(params?.caseDefinitionKey ?? '', params?.caseDefinitionVersionTag ?? '', file)))), tap((res) => {
|
|
253
|
+
this.switchVersion(res.identifier);
|
|
254
|
+
this.showNotification('success', 'decisions.deploySuccess');
|
|
461
255
|
}), catchError(() => {
|
|
462
|
-
this.
|
|
256
|
+
this.showNotification('error', 'decisions.deployFailure');
|
|
463
257
|
return of(null);
|
|
464
258
|
}))
|
|
465
259
|
.subscribe();
|
|
466
260
|
}
|
|
467
261
|
download() {
|
|
468
262
|
from(this.dmnModeler.saveXML({ format: true }))
|
|
469
|
-
.pipe(map(result =>
|
|
470
|
-
type: 'text/xml',
|
|
471
|
-
})), tap(file => {
|
|
263
|
+
.pipe(map(result => new File([result.xml], 'decision.dmn', { type: 'text/xml' })), tap(file => {
|
|
472
264
|
const link = document.createElement('a');
|
|
473
265
|
link.download = 'diagram.dmn';
|
|
474
266
|
link.href = window.URL.createObjectURL(file);
|
|
@@ -478,6 +270,21 @@ class DecisionModelerComponent {
|
|
|
478
270
|
}))
|
|
479
271
|
.subscribe();
|
|
480
272
|
}
|
|
273
|
+
navigateBack(notification, message) {
|
|
274
|
+
this.router.navigate(['../'], { relativeTo: this.route });
|
|
275
|
+
if (!notification)
|
|
276
|
+
return;
|
|
277
|
+
this.showNotification(notification, message);
|
|
278
|
+
}
|
|
279
|
+
showNotification(notification, message) {
|
|
280
|
+
if (!notification)
|
|
281
|
+
return;
|
|
282
|
+
this.notificationService.showToast({
|
|
283
|
+
caption: this.translateService.instant(message),
|
|
284
|
+
type: notification,
|
|
285
|
+
title: this.translateService.instant(`interface.${notification}`),
|
|
286
|
+
});
|
|
287
|
+
}
|
|
481
288
|
setProperties() {
|
|
482
289
|
const isCreating = this.isCreating$.getValue();
|
|
483
290
|
this.$container = $('.editor-container');
|
|
@@ -486,22 +293,40 @@ class DecisionModelerComponent {
|
|
|
486
293
|
container: this.$container,
|
|
487
294
|
height: 500,
|
|
488
295
|
width: '100%',
|
|
489
|
-
keyboard: {
|
|
490
|
-
bindTo: window,
|
|
491
|
-
},
|
|
296
|
+
keyboard: { bindTo: window },
|
|
492
297
|
});
|
|
493
|
-
if (isCreating)
|
|
298
|
+
if (isCreating)
|
|
494
299
|
this.loadEmptyDecisionTable();
|
|
495
|
-
}
|
|
496
300
|
}
|
|
497
301
|
loadEmptyDecisionTable() {
|
|
498
302
|
this.loadDecisionXml(EMPTY_DECISION);
|
|
499
303
|
}
|
|
304
|
+
setTabEvents() {
|
|
305
|
+
this.$tabs.delegate('.tab', 'click', async (event) => {
|
|
306
|
+
const index = +event.currentTarget.getAttribute('data-id');
|
|
307
|
+
const view = this.dmnModeler.getViews()[index];
|
|
308
|
+
try {
|
|
309
|
+
await this.dmnModeler.open(view);
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
console.error('tab open error', err);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
setModelerEvents() {
|
|
317
|
+
this.dmnModeler.on('views.changed', event => {
|
|
318
|
+
const { views, activeView } = event;
|
|
319
|
+
this.$tabs.empty();
|
|
320
|
+
views.forEach((v, i) => {
|
|
321
|
+
const className = this.CLASS_NAMES[v.type];
|
|
322
|
+
const tab = $(`<div class="tab ${v === activeView ? 'active' : ''}" data-id="${i}"><span class="${className}"></span>${v.element.name || v.element.id}</div>`);
|
|
323
|
+
this.$tabs.append(tab);
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
}
|
|
500
327
|
loadDecisionXml(decision) {
|
|
501
328
|
from(this.dmnModeler.importXML(decision.dmnXml))
|
|
502
|
-
.pipe(tap(() => {
|
|
503
|
-
this.setEditor();
|
|
504
|
-
}), catchError(() => {
|
|
329
|
+
.pipe(tap(() => this.setEditor()), catchError(() => {
|
|
505
330
|
this.migrateAndLoadDecisionXml(decision);
|
|
506
331
|
return of(null);
|
|
507
332
|
}))
|
|
@@ -509,36 +334,58 @@ class DecisionModelerComponent {
|
|
|
509
334
|
}
|
|
510
335
|
migrateAndLoadDecisionXml(decision) {
|
|
511
336
|
from(migrateDiagram(decision.dmnXml))
|
|
512
|
-
.pipe(switchMap(
|
|
513
|
-
this.
|
|
514
|
-
}), catchError(() => {
|
|
515
|
-
this.alertService.error(this.translateService.instant('decisions.loadFailure'));
|
|
337
|
+
.pipe(switchMap(xml => this.dmnModeler.importXML(xml)), tap(() => this.setEditor()), catchError(() => {
|
|
338
|
+
this.showNotification('error', 'decisions.loadFailure');
|
|
516
339
|
return of(null);
|
|
517
340
|
}))
|
|
518
341
|
.subscribe();
|
|
519
342
|
}
|
|
520
343
|
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
|
|
344
|
+
const view = this.dmnModeler.getActiveView();
|
|
345
|
+
if (view?.type === 'drd') {
|
|
346
|
+
const canvas = this.dmnModeler.getActiveViewer().get('canvas');
|
|
529
347
|
canvas.zoom('fit-viewport');
|
|
530
348
|
}
|
|
531
349
|
}
|
|
532
|
-
|
|
533
|
-
|
|
350
|
+
initBreadcrumbs(params, context) {
|
|
351
|
+
if (context === 'independent')
|
|
352
|
+
return;
|
|
353
|
+
const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;
|
|
354
|
+
this.breadcrumbService.setThirdBreadcrumb({
|
|
355
|
+
route: [route],
|
|
356
|
+
content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,
|
|
357
|
+
href: route,
|
|
358
|
+
});
|
|
359
|
+
const routeWithDecisions = `${route}/decisions`;
|
|
360
|
+
this.breadcrumbService.setFourthBreadcrumb({
|
|
361
|
+
route: [routeWithDecisions],
|
|
362
|
+
content: this.translateService.instant('caseManagement.tabs.decision'),
|
|
363
|
+
href: routeWithDecisions,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", 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 }); }
|
|
367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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 [disableOverflow]=\"true\"\n class=\"dmn-editor\"\n>\n <ng-container *ngTemplateOutlet=\"diagram\"></ng-container>\n</div>\n\n<ng-template #diagram>\n <div class=\"editor-parent\">\n <div class=\"editor-container\"></div>\n <div class=\"editor-tabs\"></div>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n selectionId: selectionId$ | async,\n isCreating: isCreating$ | async,\n context: context$ | async,\n compactMode: compactMode$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n class=\"decision-modeler-actions\"\n >\n <ng-container *ngTemplateOutlet=\"versionSelection\"></ng-container>\n\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 </ng-template>\n</ng-container>\n\n<ng-template #versionSelection>\n <ng-container\n *ngIf=\"{\n selectItems: (decisionVersionSelectItems$ | async) || [],\n isIndependent: isIndependent$ | async,\n versionSelectionDisabled: versionSelectionDisabled$ | async,\n selectionId: selectionId$ | async,\n } as obs\"\n >\n <v-select\n *ngIf=\"obs.isIndependent\"\n name=\"version\"\n [title]=\"'decisions.version' | translate\"\n [disabled]=\"obs.versionSelectionDisabled\"\n [clearable]=\"false\"\n [loading]=\"obs.selectItems.length === 0\"\n [items]=\"obs.selectItems\"\n [defaultSelectionId]=\"obs.selectionId\"\n [widthInPx]=\"120\"\n (selectedChange)=\"switchVersion($event)\"\n ></v-select>\n </ng-container>\n</ng-template>\n", 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}.decision-modeler-actions{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", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "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
368
|
}
|
|
535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
369
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionModelerComponent, decorators: [{
|
|
536
370
|
type: Component,
|
|
537
|
-
args: [{ selector: 'valtimo-decision-modeler',
|
|
538
|
-
|
|
371
|
+
args: [{ selector: 'valtimo-decision-modeler', standalone: true, imports: [
|
|
372
|
+
CommonModule,
|
|
373
|
+
RouterModule,
|
|
374
|
+
ModalModule,
|
|
375
|
+
SelectModule,
|
|
376
|
+
WidgetModule,
|
|
377
|
+
SelectModule$1,
|
|
378
|
+
TranslateModule,
|
|
379
|
+
RenderInPageHeaderDirective,
|
|
380
|
+
ButtonModule,
|
|
381
|
+
IconModule,
|
|
382
|
+
FitPageDirective,
|
|
383
|
+
DialogModule,
|
|
384
|
+
], 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 [disableOverflow]=\"true\"\n class=\"dmn-editor\"\n>\n <ng-container *ngTemplateOutlet=\"diagram\"></ng-container>\n</div>\n\n<ng-template #diagram>\n <div class=\"editor-parent\">\n <div class=\"editor-container\"></div>\n <div class=\"editor-tabs\"></div>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n selectionId: selectionId$ | async,\n isCreating: isCreating$ | async,\n context: context$ | async,\n compactMode: compactMode$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n class=\"decision-modeler-actions\"\n >\n <ng-container *ngTemplateOutlet=\"versionSelection\"></ng-container>\n\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 </ng-template>\n</ng-container>\n\n<ng-template #versionSelection>\n <ng-container\n *ngIf=\"{\n selectItems: (decisionVersionSelectItems$ | async) || [],\n isIndependent: isIndependent$ | async,\n versionSelectionDisabled: versionSelectionDisabled$ | async,\n selectionId: selectionId$ | async,\n } as obs\"\n >\n <v-select\n *ngIf=\"obs.isIndependent\"\n name=\"version\"\n [title]=\"'decisions.version' | translate\"\n [disabled]=\"obs.versionSelectionDisabled\"\n [clearable]=\"false\"\n [loading]=\"obs.selectItems.length === 0\"\n [items]=\"obs.selectItems\"\n [defaultSelectionId]=\"obs.selectionId\"\n [widthInPx]=\"120\"\n (selectedChange)=\"switchVersion($event)\"\n ></v-select>\n </ng-container>\n</ng-template>\n", 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}.decision-modeler-actions{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"] }]
|
|
385
|
+
}], 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
386
|
|
|
540
387
|
/*
|
|
541
|
-
* Copyright 2015-
|
|
388
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
542
389
|
*
|
|
543
390
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
544
391
|
* you may not use this file except in compliance with the License.
|
|
@@ -553,10 +400,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
553
400
|
* limitations under the License.
|
|
554
401
|
*/
|
|
555
402
|
class DecisionDisplayComponent {
|
|
556
|
-
constructor(decisionService, route
|
|
403
|
+
constructor(decisionService, route) {
|
|
557
404
|
this.decisionService = decisionService;
|
|
558
405
|
this.route = route;
|
|
559
|
-
this.toasterService = toasterService;
|
|
560
406
|
}
|
|
561
407
|
ngOnInit() {
|
|
562
408
|
this.viewer = new DmnViewer({
|
|
@@ -580,7 +426,7 @@ class DecisionDisplayComponent {
|
|
|
580
426
|
if (decisionXml) {
|
|
581
427
|
this.viewer.importXML(decisionXml, error => {
|
|
582
428
|
if (error) {
|
|
583
|
-
console.
|
|
429
|
+
console.error('Error importing migrated XML', error);
|
|
584
430
|
}
|
|
585
431
|
});
|
|
586
432
|
this.decisionXml = decisionXml;
|
|
@@ -595,16 +441,232 @@ class DecisionDisplayComponent {
|
|
|
595
441
|
window.URL.revokeObjectURL(link.href);
|
|
596
442
|
link.remove();
|
|
597
443
|
}
|
|
598
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
599
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
444
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionDisplayComponent, deps: [{ token: DecisionService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
445
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 }); }
|
|
600
446
|
}
|
|
601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
447
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionDisplayComponent, decorators: [{
|
|
602
448
|
type: Component,
|
|
603
|
-
args: [{ selector: 'valtimo-decision-display', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-
|
|
604
|
-
}], ctorParameters: () => [{ type: DecisionService }, { type: i2
|
|
449
|
+
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"] }]
|
|
450
|
+
}], ctorParameters: () => [{ type: DecisionService }, { type: i2.ActivatedRoute }] });
|
|
451
|
+
|
|
452
|
+
/*
|
|
453
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
454
|
+
*
|
|
455
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
456
|
+
* you may not use this file except in compliance with the License.
|
|
457
|
+
* You may obtain a copy of the License at
|
|
458
|
+
*
|
|
459
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
460
|
+
*
|
|
461
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
462
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
463
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
464
|
+
* See the License for the specific language governing permissions and
|
|
465
|
+
* limitations under the License.
|
|
466
|
+
*/
|
|
467
|
+
class DecisionStateService {
|
|
468
|
+
constructor() {
|
|
469
|
+
this._refreshDecisions$ = new Subject();
|
|
470
|
+
}
|
|
471
|
+
get refreshDecisions$() {
|
|
472
|
+
return this._refreshDecisions$.asObservable().pipe(startWith(null));
|
|
473
|
+
}
|
|
474
|
+
refreshDecisions() {
|
|
475
|
+
this._refreshDecisions$.next(null);
|
|
476
|
+
}
|
|
477
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
478
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionStateService, providedIn: 'root' }); }
|
|
479
|
+
}
|
|
480
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionStateService, decorators: [{
|
|
481
|
+
type: Injectable,
|
|
482
|
+
args: [{
|
|
483
|
+
providedIn: 'root',
|
|
484
|
+
}]
|
|
485
|
+
}] });
|
|
605
486
|
|
|
606
487
|
/*
|
|
607
|
-
* Copyright 2015-
|
|
488
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
489
|
+
*
|
|
490
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
491
|
+
* you may not use this file except in compliance with the License.
|
|
492
|
+
* You may obtain a copy of the License at
|
|
493
|
+
*
|
|
494
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
495
|
+
*
|
|
496
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
497
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
498
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
499
|
+
* See the License for the specific language governing permissions and
|
|
500
|
+
* limitations under the License.
|
|
501
|
+
*/
|
|
502
|
+
|
|
503
|
+
/*
|
|
504
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
505
|
+
*
|
|
506
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
507
|
+
* you may not use this file except in compliance with the License.
|
|
508
|
+
* You may obtain a copy of the License at
|
|
509
|
+
*
|
|
510
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
511
|
+
*
|
|
512
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
513
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
514
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
515
|
+
* See the License for the specific language governing permissions and
|
|
516
|
+
* limitations under the License.
|
|
517
|
+
*/
|
|
518
|
+
class DecisionDeployComponent {
|
|
519
|
+
constructor(decisionService, stateService, route, formBuilder) {
|
|
520
|
+
this.decisionService = decisionService;
|
|
521
|
+
this.stateService = stateService;
|
|
522
|
+
this.route = route;
|
|
523
|
+
this.formBuilder = formBuilder;
|
|
524
|
+
this.deploySuccessful = new EventEmitter();
|
|
525
|
+
this.dmn = null;
|
|
526
|
+
this.modalOpen$ = new BehaviorSubject(false);
|
|
527
|
+
this.caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);
|
|
528
|
+
this.context$ = getContextObservable(this.route);
|
|
529
|
+
this.ACCEPTED_FILES = ['dmn'];
|
|
530
|
+
this.form = this.formBuilder.group({
|
|
531
|
+
file: this.formBuilder.control(new Set(), [Validators.required]),
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
get selectedDmnFile() {
|
|
535
|
+
const fileSet = this.form.value?.file;
|
|
536
|
+
return fileSet?.size ? fileSet.values().next().value?.file || null : null;
|
|
537
|
+
}
|
|
538
|
+
onChange(files) {
|
|
539
|
+
this.dmn = files.item(0);
|
|
540
|
+
}
|
|
541
|
+
deployDmn() {
|
|
542
|
+
const dmnFile = this.selectedDmnFile;
|
|
543
|
+
if (!dmnFile)
|
|
544
|
+
return;
|
|
545
|
+
combineLatest([this.caseManagementRouteParams$, this.context$])
|
|
546
|
+
.pipe(take(1), switchMap(([params, context]) => context === 'case'
|
|
547
|
+
? this.decisionService.deployCaseDecisionDefinition(params.caseDefinitionKey, params.caseDefinitionVersionTag, dmnFile)
|
|
548
|
+
: this.decisionService.deployDmn(dmnFile)))
|
|
549
|
+
.subscribe(() => {
|
|
550
|
+
this.closeModal();
|
|
551
|
+
this.deploySuccessful.emit();
|
|
552
|
+
this.stateService.refreshDecisions();
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
openModal() {
|
|
556
|
+
this.modalOpen$.next(true);
|
|
557
|
+
}
|
|
558
|
+
closeModal() {
|
|
559
|
+
this.modalOpen$.next(false);
|
|
560
|
+
}
|
|
561
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionDeployComponent, deps: [{ token: DecisionService }, { token: DecisionStateService }, { token: i2.ActivatedRoute }, { token: i3$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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"] }] }); }
|
|
563
|
+
}
|
|
564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionDeployComponent, decorators: [{
|
|
565
|
+
type: Component,
|
|
566
|
+
args: [{ selector: 'valtimo-decision-deploy', standalone: true, imports: [
|
|
567
|
+
CommonModule,
|
|
568
|
+
FormsModule,
|
|
569
|
+
TranslateModule,
|
|
570
|
+
ModalModule,
|
|
571
|
+
ButtonModule,
|
|
572
|
+
LayerModule,
|
|
573
|
+
FileUploaderModule,
|
|
574
|
+
ReactiveFormsModule,
|
|
575
|
+
], 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"] }]
|
|
576
|
+
}], ctorParameters: () => [{ type: DecisionService }, { type: DecisionStateService }, { type: i2.ActivatedRoute }, { type: i3$1.FormBuilder }], propDecorators: { deploySuccessful: [{
|
|
577
|
+
type: Output
|
|
578
|
+
}] } });
|
|
579
|
+
|
|
580
|
+
/*
|
|
581
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
582
|
+
*
|
|
583
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
584
|
+
* you may not use this file except in compliance with the License.
|
|
585
|
+
* You may obtain a copy of the License at
|
|
586
|
+
*
|
|
587
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
588
|
+
*
|
|
589
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
590
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
591
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
592
|
+
* See the License for the specific language governing permissions and
|
|
593
|
+
* limitations under the License.
|
|
594
|
+
*/
|
|
595
|
+
class DecisionListComponent {
|
|
596
|
+
constructor(decisionService, iconService, router, configService, stateService, route, cdr, editPermissionsService) {
|
|
597
|
+
this.decisionService = decisionService;
|
|
598
|
+
this.iconService = iconService;
|
|
599
|
+
this.router = router;
|
|
600
|
+
this.configService = configService;
|
|
601
|
+
this.stateService = stateService;
|
|
602
|
+
this.route = route;
|
|
603
|
+
this.cdr = cdr;
|
|
604
|
+
this.editPermissionsService = editPermissionsService;
|
|
605
|
+
this.fields = [
|
|
606
|
+
{ key: 'key', label: 'Key' },
|
|
607
|
+
{ key: 'name', label: 'Name' },
|
|
608
|
+
{ key: 'version', label: 'Version' },
|
|
609
|
+
];
|
|
610
|
+
this.loading$ = new BehaviorSubject(true);
|
|
611
|
+
this.caseManagementRouteParams$ = getCaseManagementRouteParams(this.route);
|
|
612
|
+
this.context$ = getContextObservable(this.route);
|
|
613
|
+
this.decisionsLatestVersions$ = this.stateService.refreshDecisions$.pipe(switchMap(() => this.context$), switchMap(context => context === 'case'
|
|
614
|
+
? this.caseManagementRouteParams$.pipe(switchMap(params => this.decisionService.listCaseDecisionDefinitions(params.caseDefinitionKey, params.caseDefinitionVersionTag)))
|
|
615
|
+
: this.decisionService.getDecisions()), map(decisions => decisions.reduce((acc, curr) => {
|
|
616
|
+
const existing = acc.find(d => d.key === curr.key);
|
|
617
|
+
if (existing && existing.version > curr.version)
|
|
618
|
+
return acc;
|
|
619
|
+
if (existing && existing.version < curr.version)
|
|
620
|
+
return [...acc.filter(d => d.key !== curr.key), curr];
|
|
621
|
+
return [...acc, curr];
|
|
622
|
+
}, [])), tap(() => {
|
|
623
|
+
this.loading$.next(false);
|
|
624
|
+
this.cdr.detectChanges();
|
|
625
|
+
}));
|
|
626
|
+
this.hasEditPermissions$ = combineLatest([
|
|
627
|
+
this.caseManagementRouteParams$,
|
|
628
|
+
this.context$,
|
|
629
|
+
]).pipe(switchMap(([params, context]) => {
|
|
630
|
+
return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params?.caseDefinitionKey, params?.caseDefinitionVersionTag, context);
|
|
631
|
+
}));
|
|
632
|
+
this.iconService.registerAll([Upload16]);
|
|
633
|
+
this.experimentalEditing = this.configService.config.featureToggles.experimentalDmnEditing;
|
|
634
|
+
}
|
|
635
|
+
viewDecisionTable(decision) {
|
|
636
|
+
this.context$.pipe(take(1)).subscribe(context => {
|
|
637
|
+
if (context === 'independent') {
|
|
638
|
+
const basePath = this.experimentalEditing ? '/decision-tables/edit/' : '/decision-tables/';
|
|
639
|
+
this.router.navigate([basePath + decision.id]);
|
|
640
|
+
}
|
|
641
|
+
else {
|
|
642
|
+
this.caseManagementRouteParams$.pipe(take(1)).subscribe(params => {
|
|
643
|
+
this.router.navigateByUrl(`case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/decisions/${decision.id}`);
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", 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 }); }
|
|
649
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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"] }] }); }
|
|
650
|
+
}
|
|
651
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionListComponent, decorators: [{
|
|
652
|
+
type: Component,
|
|
653
|
+
args: [{ selector: 'valtimo-decision-list', standalone: true, imports: [
|
|
654
|
+
CommonModule,
|
|
655
|
+
RouterModule,
|
|
656
|
+
CarbonListModule,
|
|
657
|
+
IconModule,
|
|
658
|
+
WidgetModule,
|
|
659
|
+
DecisionDeployComponent,
|
|
660
|
+
TranslateModule,
|
|
661
|
+
ButtonModule,
|
|
662
|
+
], 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"] }]
|
|
663
|
+
}], 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: [{
|
|
664
|
+
type: ViewChild,
|
|
665
|
+
args: ['decisionDeploy']
|
|
666
|
+
}] } });
|
|
667
|
+
|
|
668
|
+
/*
|
|
669
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
608
670
|
*
|
|
609
671
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
610
672
|
* you may not use this file except in compliance with the License.
|
|
@@ -621,35 +683,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
621
683
|
const routes = [
|
|
622
684
|
{
|
|
623
685
|
path: 'decision-tables',
|
|
624
|
-
component:
|
|
686
|
+
component: DecisionListComponent,
|
|
625
687
|
canActivate: [AuthGuardService],
|
|
626
|
-
data: {
|
|
688
|
+
data: {
|
|
689
|
+
title: 'Decision tables',
|
|
690
|
+
roles: [ROLE_ADMIN],
|
|
691
|
+
context: 'independent',
|
|
692
|
+
},
|
|
627
693
|
},
|
|
628
694
|
{
|
|
629
695
|
path: 'decision-tables/:id',
|
|
630
696
|
component: DecisionDisplayComponent,
|
|
631
697
|
canActivate: [AuthGuardService],
|
|
632
|
-
data: {
|
|
698
|
+
data: {
|
|
699
|
+
title: 'Decision tables',
|
|
700
|
+
roles: [ROLE_ADMIN],
|
|
701
|
+
context: 'independent',
|
|
702
|
+
},
|
|
633
703
|
},
|
|
634
704
|
{
|
|
635
705
|
path: 'decision-tables/edit/:id',
|
|
636
706
|
component: DecisionModelerComponent,
|
|
637
707
|
canActivate: [AuthGuardService],
|
|
638
|
-
data: {
|
|
708
|
+
data: {
|
|
709
|
+
title: 'Edit decision table',
|
|
710
|
+
roles: [ROLE_ADMIN],
|
|
711
|
+
customPageTitle: true,
|
|
712
|
+
context: 'independent',
|
|
713
|
+
},
|
|
639
714
|
},
|
|
640
715
|
{
|
|
641
716
|
path: 'decision-tables/edit/create',
|
|
642
717
|
component: DecisionModelerComponent,
|
|
643
718
|
canActivate: [AuthGuardService],
|
|
644
|
-
data: {
|
|
719
|
+
data: {
|
|
720
|
+
title: 'Create decision table',
|
|
721
|
+
roles: [ROLE_ADMIN],
|
|
722
|
+
context: 'independent',
|
|
723
|
+
},
|
|
645
724
|
},
|
|
646
725
|
];
|
|
647
726
|
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: "
|
|
727
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
728
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: DecisionRoutingModule, imports: [CommonModule, i2.RouterModule], exports: [RouterModule] }); }
|
|
729
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
|
|
651
730
|
}
|
|
652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
731
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionRoutingModule, decorators: [{
|
|
653
732
|
type: NgModule,
|
|
654
733
|
args: [{
|
|
655
734
|
declarations: [],
|
|
@@ -659,7 +738,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
659
738
|
}] });
|
|
660
739
|
|
|
661
740
|
/*
|
|
662
|
-
* Copyright 2015-
|
|
741
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
663
742
|
*
|
|
664
743
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
665
744
|
* you may not use this file except in compliance with the License.
|
|
@@ -674,66 +753,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
674
753
|
* limitations under the License.
|
|
675
754
|
*/
|
|
676
755
|
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,
|
|
756
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
757
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: DecisionModule, imports: [DecisionRoutingModule,
|
|
683
758
|
WidgetModule,
|
|
684
|
-
ListModule,
|
|
685
759
|
TranslateModule,
|
|
686
|
-
ModalModule,
|
|
760
|
+
ModalModule$1,
|
|
687
761
|
CommonModule,
|
|
688
762
|
FormsModule,
|
|
689
|
-
SelectModule,
|
|
763
|
+
SelectModule$1,
|
|
690
764
|
SpinnerModule,
|
|
691
765
|
CarbonListModule,
|
|
692
766
|
ButtonModule,
|
|
693
|
-
IconModule
|
|
694
|
-
|
|
767
|
+
IconModule,
|
|
768
|
+
DecisionDeployComponent,
|
|
769
|
+
DecisionModelerComponent,
|
|
770
|
+
DecisionListComponent,
|
|
771
|
+
DecisionDisplayComponent], exports: [DecisionModelerComponent] }); }
|
|
772
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionModule, imports: [DecisionRoutingModule,
|
|
695
773
|
WidgetModule,
|
|
696
|
-
ListModule,
|
|
697
774
|
TranslateModule,
|
|
698
|
-
ModalModule,
|
|
775
|
+
ModalModule$1,
|
|
699
776
|
CommonModule,
|
|
700
777
|
FormsModule,
|
|
701
|
-
SelectModule,
|
|
778
|
+
SelectModule$1,
|
|
702
779
|
SpinnerModule,
|
|
703
780
|
CarbonListModule,
|
|
704
781
|
ButtonModule,
|
|
705
|
-
IconModule
|
|
782
|
+
IconModule,
|
|
783
|
+
DecisionDeployComponent,
|
|
784
|
+
DecisionModelerComponent,
|
|
785
|
+
DecisionListComponent,
|
|
786
|
+
DecisionDisplayComponent] }); }
|
|
706
787
|
}
|
|
707
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DecisionModule, decorators: [{
|
|
708
789
|
type: NgModule,
|
|
709
790
|
args: [{
|
|
710
|
-
declarations: [
|
|
711
|
-
DecisionComponent,
|
|
712
|
-
DecisionDeployComponent,
|
|
713
|
-
DecisionDisplayComponent,
|
|
714
|
-
DecisionListComponent,
|
|
715
|
-
DecisionModelerComponent,
|
|
716
|
-
],
|
|
717
791
|
imports: [
|
|
718
792
|
DecisionRoutingModule,
|
|
719
793
|
WidgetModule,
|
|
720
|
-
ListModule,
|
|
721
794
|
TranslateModule,
|
|
722
|
-
ModalModule,
|
|
795
|
+
ModalModule$1,
|
|
723
796
|
CommonModule,
|
|
724
797
|
FormsModule,
|
|
725
|
-
SelectModule,
|
|
798
|
+
SelectModule$1,
|
|
726
799
|
SpinnerModule,
|
|
727
800
|
CarbonListModule,
|
|
728
801
|
ButtonModule,
|
|
729
802
|
IconModule,
|
|
803
|
+
DecisionDeployComponent,
|
|
804
|
+
DecisionModelerComponent,
|
|
805
|
+
DecisionListComponent,
|
|
806
|
+
DecisionDisplayComponent,
|
|
730
807
|
],
|
|
731
|
-
exports: [
|
|
808
|
+
exports: [DecisionModelerComponent],
|
|
732
809
|
}]
|
|
733
810
|
}] });
|
|
734
811
|
|
|
735
812
|
/*
|
|
736
|
-
* Copyright 2015-
|
|
813
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
737
814
|
*
|
|
738
815
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
739
816
|
* you may not use this file except in compliance with the License.
|
|
@@ -755,5 +832,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
755
832
|
* Generated bundle index. Do not edit.
|
|
756
833
|
*/
|
|
757
834
|
|
|
758
|
-
export {
|
|
835
|
+
export { DecisionDeployComponent, DecisionDisplayComponent, DecisionListComponent, DecisionModelerComponent, DecisionModule };
|
|
759
836
|
//# sourceMappingURL=valtimo-decision.mjs.map
|