@valtimo/migration 13.44.0 → 13.45.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/valtimo-migration.mjs +86 -21
- package/fesm2022/valtimo-migration.mjs.map +1 -1
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/migration.test-ids.d.ts +9 -0
- package/lib/migration.component.d.ts +18 -6
- package/lib/migration.module.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -4,21 +4,62 @@ import * as i1$1 from '@valtimo/process';
|
|
|
4
4
|
import * as i1 from 'ngx-logger';
|
|
5
5
|
import * as i3 from '@valtimo/components';
|
|
6
6
|
import { WidgetModule } from '@valtimo/components';
|
|
7
|
-
import * as i4 from '@
|
|
7
|
+
import * as i4 from '@ngx-translate/core';
|
|
8
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
9
|
+
import * as i5 from '@angular/common';
|
|
8
10
|
import { CommonModule } from '@angular/common';
|
|
9
|
-
import * as
|
|
10
|
-
import { ComboBoxModule } from 'carbon-components-angular';
|
|
11
|
-
import * as
|
|
11
|
+
import * as i6 from 'carbon-components-angular';
|
|
12
|
+
import { ButtonModule, ComboBoxModule, NotificationModule, StructuredListModule, TagModule } from 'carbon-components-angular';
|
|
13
|
+
import * as i7 from 'carbon-components-angular/dropdown';
|
|
12
14
|
import NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';
|
|
13
15
|
import { from, take } from 'rxjs';
|
|
14
|
-
import * as i8 from '@ngx-translate/core';
|
|
15
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
16
16
|
import * as i1$2 from '@angular/router';
|
|
17
17
|
import { RouterModule } from '@angular/router';
|
|
18
18
|
import { AuthGuardService } from '@valtimo/security';
|
|
19
19
|
import { ROLE_ADMIN } from '@valtimo/shared';
|
|
20
20
|
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
21
21
|
|
|
22
|
+
/*
|
|
23
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
24
|
+
*
|
|
25
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
26
|
+
* you may not use this file except in compliance with the License.
|
|
27
|
+
* You may obtain a copy of the License at
|
|
28
|
+
*
|
|
29
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
30
|
+
*
|
|
31
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
32
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
33
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
34
|
+
* See the License for the specific language governing permissions and
|
|
35
|
+
* limitations under the License.
|
|
36
|
+
*/
|
|
37
|
+
const MIGRATION_TEST_IDS = {
|
|
38
|
+
sourceDefinitionSelect: 'migrationSourceDefinitionSelect',
|
|
39
|
+
sourceVersionSelect: 'migrationSourceVersionSelect',
|
|
40
|
+
targetDefinitionSelect: 'migrationTargetDefinitionSelect',
|
|
41
|
+
targetVersionSelect: 'migrationTargetVersionSelect',
|
|
42
|
+
activityMappingSelectPrefix: 'migrationActivityMappingSelect-',
|
|
43
|
+
processInstanceCountTag: 'migrationProcessInstanceCountTag',
|
|
44
|
+
migrateButton: 'migrationMigrateButton',
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
49
|
+
*
|
|
50
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
51
|
+
* you may not use this file except in compliance with the License.
|
|
52
|
+
* You may obtain a copy of the License at
|
|
53
|
+
*
|
|
54
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
55
|
+
*
|
|
56
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
57
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
58
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
59
|
+
* See the License for the specific language governing permissions and
|
|
60
|
+
* limitations under the License.
|
|
61
|
+
*/
|
|
62
|
+
|
|
22
63
|
/*
|
|
23
64
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
24
65
|
*
|
|
@@ -140,10 +181,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
140
181
|
* limitations under the License.
|
|
141
182
|
*/
|
|
142
183
|
class MigrationComponent {
|
|
143
|
-
constructor(processService, logger, alertService) {
|
|
184
|
+
constructor(processService, logger, alertService, translateService) {
|
|
144
185
|
this.processService = processService;
|
|
145
186
|
this.logger = logger;
|
|
146
187
|
this.alertService = alertService;
|
|
188
|
+
this.translateService = translateService;
|
|
147
189
|
this.processDefinitions = [];
|
|
148
190
|
this.selectedVersions = {
|
|
149
191
|
source: [],
|
|
@@ -171,6 +213,7 @@ class MigrationComponent {
|
|
|
171
213
|
this.uniqueFlowNodeMap = [];
|
|
172
214
|
this.taskMapping = {};
|
|
173
215
|
this.diagram = null;
|
|
216
|
+
this.testIds = MIGRATION_TEST_IDS;
|
|
174
217
|
this.sourceDefinitionItems = [];
|
|
175
218
|
this.targetDefinitionItems = [];
|
|
176
219
|
this.sourceVersionItems = [];
|
|
@@ -190,12 +233,12 @@ class MigrationComponent {
|
|
|
190
233
|
refreshDefinitionItems() {
|
|
191
234
|
this.sourceDefinitionItems = this.processDefinitions.map(processDef => ({
|
|
192
235
|
key: processDef.key,
|
|
193
|
-
content: processDef.name,
|
|
236
|
+
content: processDef.name || processDef.key,
|
|
194
237
|
selected: this.fields.source.definition === processDef.key,
|
|
195
238
|
}));
|
|
196
239
|
this.targetDefinitionItems = this.processDefinitions.map(processDef => ({
|
|
197
240
|
key: processDef.key,
|
|
198
|
-
content: processDef.name,
|
|
241
|
+
content: processDef.name || processDef.key,
|
|
199
242
|
selected: this.fields.target.definition === processDef.key,
|
|
200
243
|
}));
|
|
201
244
|
}
|
|
@@ -214,7 +257,7 @@ class MigrationComponent {
|
|
|
214
257
|
}
|
|
215
258
|
loadProcessDefinitions() {
|
|
216
259
|
this.processService
|
|
217
|
-
.getProcessDefinitions()
|
|
260
|
+
.getProcessDefinitions(true)
|
|
218
261
|
.subscribe((processDefinitions) => {
|
|
219
262
|
this.processDefinitions = processDefinitions;
|
|
220
263
|
this.refreshDefinitionItems();
|
|
@@ -225,7 +268,8 @@ class MigrationComponent {
|
|
|
225
268
|
const key = item?.key ?? null;
|
|
226
269
|
this.loadProcessDefinitionVersions(key, type);
|
|
227
270
|
if (type === 'source') {
|
|
228
|
-
|
|
271
|
+
// Prefilled to the latest version, this screen's usual case; only the user knows the source.
|
|
272
|
+
this.loadProcessDefinitionVersions(key, 'target', true);
|
|
229
273
|
}
|
|
230
274
|
}
|
|
231
275
|
onVersionSelected(selection, type) {
|
|
@@ -241,7 +285,7 @@ class MigrationComponent {
|
|
|
241
285
|
const item = Array.isArray(selection) ? selection[0] : selection;
|
|
242
286
|
this.taskMapping[nodeId] = item?.id ?? null;
|
|
243
287
|
}
|
|
244
|
-
loadProcessDefinitionVersions(key, type) {
|
|
288
|
+
loadProcessDefinitionVersions(key, type, selectLatestVersion = false) {
|
|
245
289
|
this.fields[type].definition = key;
|
|
246
290
|
this.selectedVersions[type] = [];
|
|
247
291
|
this.clearProcess(type);
|
|
@@ -256,9 +300,14 @@ class MigrationComponent {
|
|
|
256
300
|
}
|
|
257
301
|
this.selectedVersions[type] = processDefinitionVersions;
|
|
258
302
|
this.refreshVersionItems(type);
|
|
303
|
+
if (selectLatestVersion)
|
|
304
|
+
this.loadProcess(this.latestVersionIdOf(type), type);
|
|
259
305
|
});
|
|
260
306
|
}
|
|
261
307
|
}
|
|
308
|
+
latestVersionIdOf(type) {
|
|
309
|
+
return (this.selectedVersions[type].reduce((latest, processVer) => !latest || processVer.version > latest.version ? processVer : latest, null)?.id ?? null);
|
|
310
|
+
}
|
|
262
311
|
loadProcess(id, type) {
|
|
263
312
|
this.fields[type].version = id;
|
|
264
313
|
this.clearProcess(type);
|
|
@@ -280,6 +329,10 @@ class MigrationComponent {
|
|
|
280
329
|
}
|
|
281
330
|
loadProcessDefinitionXML(id, type) {
|
|
282
331
|
this.processService.getProcessDefinitionXml(id).subscribe(xml => {
|
|
332
|
+
// Guards against the in-flight latest-version load winning the race and leaving migrateProcess()
|
|
333
|
+
// on a version the user never picked.
|
|
334
|
+
if (this.fields[type].version !== id)
|
|
335
|
+
return;
|
|
283
336
|
if (!xml.bpmn20Xml)
|
|
284
337
|
return;
|
|
285
338
|
this.diagram[type].loadXml(xml['bpmn20Xml']);
|
|
@@ -328,7 +381,7 @@ class MigrationComponent {
|
|
|
328
381
|
this.processService
|
|
329
382
|
.migrateProcess(this.selectedId.source, this.selectedId.target, this.taskMapping)
|
|
330
383
|
.subscribe(res => {
|
|
331
|
-
this.alertService.success('
|
|
384
|
+
this.alertService.success(this.translateService.instant('processMigration.success'));
|
|
332
385
|
this.clearProcess('source');
|
|
333
386
|
this.clearProcess('target');
|
|
334
387
|
this.fields = {
|
|
@@ -345,17 +398,17 @@ class MigrationComponent {
|
|
|
345
398
|
this.refreshVersionItems('source');
|
|
346
399
|
this.refreshVersionItems('target');
|
|
347
400
|
}, err => {
|
|
348
|
-
this.alertService.error('
|
|
401
|
+
this.alertService.error(this.translateService.instant('processMigration.failure'));
|
|
349
402
|
this.logger.debug(err);
|
|
350
403
|
});
|
|
351
404
|
}
|
|
352
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MigrationComponent, deps: [{ token: i1$1.ProcessService }, { token: i1.NGXLogger }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
353
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: MigrationComponent, isStandalone: false, selector: "valtimo-migration", viewQueries: [{ propertyName: "sourceDiagram", first: true, predicate: ["sourceDiagram"], descendants: true }, { propertyName: "targetDiagram", first: true, predicate: ["targetDiagram"], descendants: true }, { propertyName: "sourceVersionCombobox", first: true, predicate: ["sourceVersionCombobox"], descendants: true }, { propertyName: "targetDefinitionComboBox", first: true, predicate: ["targetDefinitionComboBox"], descendants: true }, { propertyName: "targetVersionCombobox", first: true, predicate: ["targetVersionCombobox"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-
|
|
405
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MigrationComponent, deps: [{ token: i1$1.ProcessService }, { token: i1.NGXLogger }, { token: i3.AlertService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
406
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: MigrationComponent, isStandalone: false, selector: "valtimo-migration", viewQueries: [{ propertyName: "sourceDiagram", first: true, predicate: ["sourceDiagram"], descendants: true }, { propertyName: "targetDiagram", first: true, predicate: ["targetDiagram"], descendants: true }, { propertyName: "sourceVersionCombobox", first: true, predicate: ["sourceVersionCombobox"], descendants: true }, { propertyName: "targetDefinitionComboBox", first: true, predicate: ["targetDefinitionComboBox"], descendants: true }, { propertyName: "targetVersionCombobox", first: true, predicate: ["targetVersionCombobox"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"process-migration\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'processMigration.warning.title' | translate,\n message: 'processMigration.warning.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-notification>\n\n <div class=\"process-migration__selection\">\n <cds-combo-box\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"sourceDefinitionItems\"\n [label]=\"'processMigration.sourceDefinition' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (clear)=\"onSourceDefinitionClear($event)\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n [attr.data-test-id]=\"testIds.sourceDefinitionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #sourceVersionCombobox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"sourceVersionItems\"\n [label]=\"'processMigration.sourceVersion' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onVersionSelected($event, 'source')\"\n [attr.data-test-id]=\"testIds.sourceVersionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #targetDefinitionComboBox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"targetDefinitionItems\"\n [label]=\"'processMigration.targetDefinition' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n [attr.data-test-id]=\"testIds.targetDefinitionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #targetVersionCombobox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"targetVersionItems\"\n [label]=\"'processMigration.targetVersion' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onVersionSelected($event, 'target')\"\n [attr.data-test-id]=\"testIds.targetVersionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n\n <div class=\"process-migration__diagrams\">\n <valtimo-migration-process-diagram\n #sourceDiagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n ></valtimo-migration-process-diagram>\n\n <valtimo-migration-process-diagram\n #targetDiagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n ></valtimo-migration-process-diagram>\n </div>\n\n <cds-structured-list\n *ngIf=\"selectedId.source && selectedId.target && uniqueFlowNodeMap.length > 0\"\n class=\"process-migration__mapping\"\n >\n <cds-list-header>\n <cds-list-column>{{ 'processMigration.sourceActivity' | translate }}</cds-list-column>\n\n <cds-list-column>{{ 'processMigration.targetActivity' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let node of uniqueFlowNodeMap\">\n <cds-list-column>{{ node.name ? node.name : node.id }}</cds-list-column>\n\n <cds-list-column>\n <cds-combo-box\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n [attr.data-test-id]=\"testIds.activityMappingSelectPrefix + node.id\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n\n <div class=\"process-migration__actions\">\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n [attr.data-test-id]=\"testIds.migrateButton\"\n >\n {{ 'processMigration.migrate' | translate }}\n </button>\n\n <cds-tag\n *ngIf=\"processCount !== null\"\n type=\"gray\"\n [attr.data-test-id]=\"testIds.processInstanceCountTag\"\n >{{ 'processMigration.instanceCount' | translate: {count: processCount} }}</cds-tag\n >\n </div>\n</div>\n", styles: [".process-migration{display:flex;flex-direction:column;gap:var(--cds-spacing-06)}.process-migration__selection{display:grid;grid-template-columns:2fr 1fr 2fr 1fr;gap:var(--cds-spacing-05)}@media(max-width:1056px){.process-migration__selection{grid-template-columns:1fr 1fr}}.process-migration__diagrams{display:grid;grid-template-columns:1fr 1fr;gap:var(--cds-spacing-05)}.process-migration__actions{display:flex;align-items:center;gap:var(--cds-spacing-03)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i6.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i7.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i6.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "component", type: i6.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i6.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i6.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i6.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "component", type: i6.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: MigrationProcessDiagramComponent, selector: "valtimo-migration-process-diagram", inputs: ["name"], outputs: ["loaded"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
354
407
|
}
|
|
355
408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MigrationComponent, decorators: [{
|
|
356
409
|
type: Component,
|
|
357
|
-
args: [{ standalone: false, selector: 'valtimo-migration', template: "<!--\n ~ Copyright 2015-
|
|
358
|
-
}], ctorParameters: () => [{ type: i1$1.ProcessService }, { type: i1.NGXLogger }, { type: i3.AlertService }], propDecorators: { sourceDiagram: [{
|
|
410
|
+
args: [{ standalone: false, selector: 'valtimo-migration', template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"process-migration\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'processMigration.warning.title' | translate,\n message: 'processMigration.warning.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-notification>\n\n <div class=\"process-migration__selection\">\n <cds-combo-box\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"sourceDefinitionItems\"\n [label]=\"'processMigration.sourceDefinition' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (clear)=\"onSourceDefinitionClear($event)\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n [attr.data-test-id]=\"testIds.sourceDefinitionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #sourceVersionCombobox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"sourceVersionItems\"\n [label]=\"'processMigration.sourceVersion' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onVersionSelected($event, 'source')\"\n [attr.data-test-id]=\"testIds.sourceVersionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #targetDefinitionComboBox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"targetDefinitionItems\"\n [label]=\"'processMigration.targetDefinition' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n [attr.data-test-id]=\"testIds.targetDefinitionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #targetVersionCombobox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"targetVersionItems\"\n [label]=\"'processMigration.targetVersion' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onVersionSelected($event, 'target')\"\n [attr.data-test-id]=\"testIds.targetVersionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n\n <div class=\"process-migration__diagrams\">\n <valtimo-migration-process-diagram\n #sourceDiagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n ></valtimo-migration-process-diagram>\n\n <valtimo-migration-process-diagram\n #targetDiagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n ></valtimo-migration-process-diagram>\n </div>\n\n <cds-structured-list\n *ngIf=\"selectedId.source && selectedId.target && uniqueFlowNodeMap.length > 0\"\n class=\"process-migration__mapping\"\n >\n <cds-list-header>\n <cds-list-column>{{ 'processMigration.sourceActivity' | translate }}</cds-list-column>\n\n <cds-list-column>{{ 'processMigration.targetActivity' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let node of uniqueFlowNodeMap\">\n <cds-list-column>{{ node.name ? node.name : node.id }}</cds-list-column>\n\n <cds-list-column>\n <cds-combo-box\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n [attr.data-test-id]=\"testIds.activityMappingSelectPrefix + node.id\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n\n <div class=\"process-migration__actions\">\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n [attr.data-test-id]=\"testIds.migrateButton\"\n >\n {{ 'processMigration.migrate' | translate }}\n </button>\n\n <cds-tag\n *ngIf=\"processCount !== null\"\n type=\"gray\"\n [attr.data-test-id]=\"testIds.processInstanceCountTag\"\n >{{ 'processMigration.instanceCount' | translate: {count: processCount} }}</cds-tag\n >\n </div>\n</div>\n", styles: [".process-migration{display:flex;flex-direction:column;gap:var(--cds-spacing-06)}.process-migration__selection{display:grid;grid-template-columns:2fr 1fr 2fr 1fr;gap:var(--cds-spacing-05)}@media(max-width:1056px){.process-migration__selection{grid-template-columns:1fr 1fr}}.process-migration__diagrams{display:grid;grid-template-columns:1fr 1fr;gap:var(--cds-spacing-05)}.process-migration__actions{display:flex;align-items:center;gap:var(--cds-spacing-03)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
411
|
+
}], ctorParameters: () => [{ type: i1$1.ProcessService }, { type: i1.NGXLogger }, { type: i3.AlertService }, { type: i4.TranslateService }], propDecorators: { sourceDiagram: [{
|
|
359
412
|
type: ViewChild,
|
|
360
413
|
args: ['sourceDiagram']
|
|
361
414
|
}], targetDiagram: [{
|
|
@@ -431,14 +484,22 @@ class MigrationModule {
|
|
|
431
484
|
WidgetModule,
|
|
432
485
|
FormsModule,
|
|
433
486
|
TranslateModule,
|
|
434
|
-
|
|
487
|
+
ButtonModule,
|
|
488
|
+
ComboBoxModule,
|
|
489
|
+
NotificationModule,
|
|
490
|
+
StructuredListModule,
|
|
491
|
+
TagModule], exports: [MigrationComponent] }); }
|
|
435
492
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MigrationModule, imports: [CommonModule,
|
|
436
493
|
MigrationRoutingModule,
|
|
437
494
|
ReactiveFormsModule,
|
|
438
495
|
WidgetModule,
|
|
439
496
|
FormsModule,
|
|
440
497
|
TranslateModule,
|
|
441
|
-
|
|
498
|
+
ButtonModule,
|
|
499
|
+
ComboBoxModule,
|
|
500
|
+
NotificationModule,
|
|
501
|
+
StructuredListModule,
|
|
502
|
+
TagModule] }); }
|
|
442
503
|
}
|
|
443
504
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MigrationModule, decorators: [{
|
|
444
505
|
type: NgModule,
|
|
@@ -451,7 +512,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
451
512
|
WidgetModule,
|
|
452
513
|
FormsModule,
|
|
453
514
|
TranslateModule,
|
|
515
|
+
ButtonModule,
|
|
454
516
|
ComboBoxModule,
|
|
517
|
+
NotificationModule,
|
|
518
|
+
StructuredListModule,
|
|
519
|
+
TagModule,
|
|
455
520
|
],
|
|
456
521
|
exports: [MigrationComponent],
|
|
457
522
|
}]
|
|
@@ -480,5 +545,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
480
545
|
* Generated bundle index. Do not edit.
|
|
481
546
|
*/
|
|
482
547
|
|
|
483
|
-
export { MigrationComponent, MigrationModule, MigrationService };
|
|
548
|
+
export { MIGRATION_TEST_IDS, MigrationComponent, MigrationModule, MigrationService };
|
|
484
549
|
//# sourceMappingURL=valtimo-migration.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-migration.mjs","sources":["../../../../projects/valtimo/migration/src/lib/migration.service.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.html","../../../../projects/valtimo/migration/src/lib/migration.component.ts","../../../../projects/valtimo/migration/src/lib/migration.component.html","../../../../projects/valtimo/migration/src/lib/migration-routing.module.ts","../../../../projects/valtimo/migration/src/lib/migration.module.ts","../../../../projects/valtimo/migration/src/public-api.ts","../../../../projects/valtimo/migration/src/valtimo-migration.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MigrationService {\n constructor() {}\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';\nimport {NGXLogger} from 'ngx-logger';\nimport {from, take} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-migration-process-diagram',\n templateUrl: './migration-process-diagram.component.html',\n styleUrls: ['./migration-process-diagram.component.scss'],\n})\nexport class MigrationProcessDiagramComponent implements AfterViewInit, OnDestroy {\n private bpmnViewer: NavigatedViewer;\n public flowNodeMap: any = null;\n\n @ViewChild('ref') public readonly el: ElementRef;\n @Input() public readonly name: string;\n @Output() public readonly loaded = new EventEmitter();\n\n constructor(private readonly logger: NGXLogger) {}\n\n public ngAfterViewInit(): void {\n this.bpmnViewer = new NavigatedViewer();\n this.bpmnViewer.attachTo(this.el.nativeElement);\n this.bpmnViewer.on('import.done', ({error}: any) => {\n if (!error) {\n const canvas = this.bpmnViewer.get('canvas') as any;\n canvas.zoom('fit-viewport', 'auto');\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (this.bpmnViewer) {\n this.bpmnViewer.destroy();\n }\n }\n\n public clear(): void {\n this.bpmnViewer.clear();\n }\n\n public loadXml(xml: string): void {\n this.bpmnViewer.attachTo(this.el.nativeElement);\n\n from(this.bpmnViewer.importXML(xml))\n .pipe(take(1))\n .subscribe({\n next: () => {\n const processElements = this.bpmnViewer\n .getDefinitions()\n .rootElements.filter(function (element) {\n return element.isExecutable;\n });\n\n this.flowNodeMap = processElements[0].flowElements.filter(function (element) {\n if (element.name === null || element.name === '') {\n element.name = element.id;\n }\n return element.$type !== 'bpmn:SequenceFlow';\n });\n\n this.loaded.emit(this.name);\n },\n error: error => {\n this.logger.debug(error);\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #ref class=\"diagram-container\"></div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AfterViewInit, Component, viewChild, ViewChild} from '@angular/core';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {NGXLogger} from 'ngx-logger';\nimport {AlertService} from '@valtimo/components';\nimport {ComboBox, ListItem} from 'carbon-components-angular';\n\n@Component({\n standalone: false,\n selector: 'valtimo-migration',\n templateUrl: './migration.component.html',\n styleUrls: ['./migration.component.scss'],\n})\nexport class MigrationComponent implements AfterViewInit, AfterViewInit {\n public processDefinitions: ProcessDefinition[] = [];\n public selectedVersions = {\n source: [],\n target: [],\n };\n public selectedId = {\n source: null,\n target: null,\n };\n public loaded = {\n source: false,\n target: false,\n };\n public fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n\n public processCount: number | null = null;\n public uniqueFlowNodeMap: any[] = [];\n public taskMapping: any = {};\n\n @ViewChild('sourceDiagram') sourceDiagram: MigrationProcessDiagramComponent;\n @ViewChild('targetDiagram') targetDiagram: MigrationProcessDiagramComponent;\n @ViewChild('sourceVersionCombobox') sourceVersionCombobox: ComboBox;\n @ViewChild('targetDefinitionComboBox') targetDefinitionComboBox: ComboBox;\n @ViewChild('targetVersionCombobox') targetVersionCombobox: ComboBox;\n public diagram: any = null;\n\n constructor(\n private processService: ProcessService,\n private logger: NGXLogger,\n private alertService: AlertService\n ) {}\n\n ngAfterViewInit() {\n this.diagram = {\n source: this.sourceDiagram,\n target: this.targetDiagram,\n };\n this.loadProcessDefinitions();\n }\n\n public get taskMappingLength() {\n return Object.keys(this.taskMapping).length;\n }\n\n public sourceDefinitionItems: ListItem[] = [];\n public targetDefinitionItems: ListItem[] = [];\n public sourceVersionItems: ListItem[] = [];\n public targetVersionItems: ListItem[] = [];\n private readonly targetFlowNodeItemsMap = new Map<string, ListItem[]>();\n\n private refreshDefinitionItems(): void {\n this.sourceDefinitionItems = this.processDefinitions.map(processDef => ({\n key: processDef.key,\n content: processDef.name,\n selected: this.fields.source.definition === processDef.key,\n }));\n this.targetDefinitionItems = this.processDefinitions.map(processDef => ({\n key: processDef.key,\n content: processDef.name,\n selected: this.fields.target.definition === processDef.key,\n }));\n }\n\n private refreshVersionItems(type: string): void {\n const items = this.selectedVersions[type].map(processVer => ({\n id: processVer.id,\n content: `${processVer.version}`,\n selected: this.fields[type].version === processVer.id,\n }));\n if (type === 'source') {\n this.sourceVersionItems = items;\n } else {\n this.targetVersionItems = items;\n }\n }\n\n loadProcessDefinitions() {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n this.refreshDefinitionItems();\n });\n }\n\n public onDefinitionSelected(selection: ListItem | ListItem[], type: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n const key = item?.key ?? null;\n\n this.loadProcessDefinitionVersions(key, type);\n if (type === 'source') {\n this.loadProcessDefinitionVersions(key, 'target');\n }\n }\n\n public onVersionSelected(selection: ListItem | ListItem[], type: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n this.loadProcess(item?.id ?? null, type);\n }\n\n public onSourceDefinitionClear(event: Event): void {\n this.sourceVersionCombobox.clearInput(event);\n this.targetDefinitionComboBox.clearInput(event);\n this.targetVersionCombobox.clearInput(event);\n }\n\n public onTaskMappingSelected(selection: ListItem | ListItem[], nodeId: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n this.taskMapping[nodeId] = item?.id ?? null;\n }\n\n loadProcessDefinitionVersions(key: string | null, type: string) {\n this.fields[type].definition = key;\n this.selectedVersions[type] = [];\n this.clearProcess(type);\n this.refreshDefinitionItems();\n this.refreshVersionItems(type);\n if (key) {\n this.processService\n .getProcessDefinitionVersions(key)\n .subscribe((processDefinitionVersions: ProcessDefinition[]) => {\n if (this.fields[type].definition !== key) {\n return;\n }\n this.selectedVersions[type] = processDefinitionVersions;\n this.refreshVersionItems(type);\n });\n }\n }\n\n loadProcess(id: string | null, type: string) {\n this.fields[type].version = id;\n this.clearProcess(type);\n this.refreshVersionItems(type);\n if (id) {\n this.loadProcessDefinitionXML(id, type);\n if (type === 'source') {\n this.loadProcessCount(id);\n }\n }\n }\n\n private clearProcess(type: string) {\n this.loaded[type] = false;\n this.selectedId[type] = null;\n this.diagram[type].clear();\n if (type === 'source') {\n this.processCount = null;\n }\n }\n\n loadProcessDefinitionXML(id: string, type: string) {\n this.processService.getProcessDefinitionXml(id).subscribe(xml => {\n if (!xml.bpmn20Xml) return;\n this.diagram[type].loadXml(xml['bpmn20Xml']);\n this.selectedId[type] = id;\n });\n }\n\n loadProcessCount(id: string) {\n this.processService.getProcessCount(id).subscribe(response => {\n this.processCount = response.count;\n });\n }\n\n setUniqueFlowNodeMap() {\n this.uniqueFlowNodeMap = [];\n const sourceFlowNodeMap = this.sourceDiagram.flowNodeMap;\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n\n if (sourceFlowNodeMap != null && targetFlowNodeMap != null) {\n this.uniqueFlowNodeMap = sourceFlowNodeMap.filter(\n sourceFlowNode =>\n !targetFlowNodeMap.some(\n targetFlowNode =>\n sourceFlowNode.id === targetFlowNode.id &&\n sourceFlowNode.$type === targetFlowNode.$type\n )\n );\n }\n }\n\n getFilteredTargetFlowNodeMap(flowNodeType) {\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n return targetFlowNodeMap.filter(function (flowNode) {\n return flowNode.$type === flowNodeType;\n });\n }\n\n public getFilteredTargetFlowNodeMapItems(node): ListItem[] {\n if (!this.targetFlowNodeItemsMap.has(node.id)) {\n this.targetFlowNodeItemsMap.set(\n node.id,\n this.getFilteredTargetFlowNodeMap(node.$type).map(targetFlowNode => ({\n id: targetFlowNode.id,\n content: targetFlowNode.name || targetFlowNode.id,\n selected: this.taskMapping[node.id] === targetFlowNode.id,\n }))\n );\n }\n return this.targetFlowNodeItemsMap.get(node.id);\n }\n\n diagramLoaded(diagramName: string) {\n this.loaded[diagramName] = true;\n if (this.loaded.source && this.loaded.target) {\n this.taskMapping = {};\n this.targetFlowNodeItemsMap.clear();\n this.setUniqueFlowNodeMap();\n }\n }\n\n migrateProcess() {\n this.processService\n .migrateProcess(this.selectedId.source, this.selectedId.target, this.taskMapping)\n .subscribe(\n res => {\n this.alertService.success('Process successfully migrated!');\n this.clearProcess('source');\n this.clearProcess('target');\n this.fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n this.refreshDefinitionItems();\n this.refreshVersionItems('source');\n this.refreshVersionItems('target');\n },\n err => {\n this.alertService.error('Process migration failed!');\n this.logger.debug(err);\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Definition' | translate) + ' -'\"\n [items]=\"sourceDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n (clear)=\"onSourceDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #sourceVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Version' | translate) + ' -'\"\n [items]=\"sourceVersionItems\"\n (selected)=\"onVersionSelected($event, 'source')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-4\">\n <cds-combo-box\n #targetDefinitionComboBox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Definition' | translate\"\n [placeholder]=\"'- ' + ('Target Definition' | translate) + ' -'\"\n [items]=\"targetDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #targetVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Version' | translate\"\n [placeholder]=\"'- ' + ('Target Version' | translate) + ' -'\"\n [items]=\"targetVersionItems\"\n (selected)=\"onVersionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [placeholder]=\"'- ' + ('Choose Target' | translate) + ' -'\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MigrationComponent} from './migration.component';\nimport {ROLE_ADMIN} from '@valtimo/shared';\n\nconst routes: Routes = [\n {\n path: 'process-migration',\n component: MigrationComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Process migration', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MigrationRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {MigrationComponent} from './migration.component';\nimport {MigrationRoutingModule} from './migration-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {WidgetModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ComboBoxModule} from 'carbon-components-angular';\n\n@NgModule({\n declarations: [MigrationComponent, MigrationProcessDiagramComponent],\n imports: [\n CommonModule,\n MigrationRoutingModule,\n ReactiveFormsModule,\n WidgetModule,\n FormsModule,\n TranslateModule,\n ComboBoxModule,\n ],\n exports: [MigrationComponent],\n})\nexport class MigrationModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of migration\n */\n\nexport * from './lib/migration.service';\nexport * from './lib/migration.component';\nexport * from './lib/migration.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i7.MigrationProcessDiagramComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-migration.mjs","sources":["../../../../projects/valtimo/migration/src/lib/constants/migration.test-ids.ts","../../../../projects/valtimo/migration/src/lib/constants/index.ts","../../../../projects/valtimo/migration/src/lib/migration.service.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.html","../../../../projects/valtimo/migration/src/lib/migration.component.ts","../../../../projects/valtimo/migration/src/lib/migration.component.html","../../../../projects/valtimo/migration/src/lib/migration-routing.module.ts","../../../../projects/valtimo/migration/src/lib/migration.module.ts","../../../../projects/valtimo/migration/src/public-api.ts","../../../../projects/valtimo/migration/src/valtimo-migration.ts"],"sourcesContent":["/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const MIGRATION_TEST_IDS = {\n sourceDefinitionSelect: 'migrationSourceDefinitionSelect',\n sourceVersionSelect: 'migrationSourceVersionSelect',\n targetDefinitionSelect: 'migrationTargetDefinitionSelect',\n targetVersionSelect: 'migrationTargetVersionSelect',\n activityMappingSelectPrefix: 'migrationActivityMappingSelect-',\n processInstanceCountTag: 'migrationProcessInstanceCountTag',\n migrateButton: 'migrationMigrateButton',\n} as const;\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './migration.test-ids';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MigrationService {\n constructor() {}\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';\nimport {NGXLogger} from 'ngx-logger';\nimport {from, take} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-migration-process-diagram',\n templateUrl: './migration-process-diagram.component.html',\n styleUrls: ['./migration-process-diagram.component.scss'],\n})\nexport class MigrationProcessDiagramComponent implements AfterViewInit, OnDestroy {\n private bpmnViewer: NavigatedViewer;\n public flowNodeMap: any = null;\n\n @ViewChild('ref') public readonly el: ElementRef;\n @Input() public readonly name: string;\n @Output() public readonly loaded = new EventEmitter();\n\n constructor(private readonly logger: NGXLogger) {}\n\n public ngAfterViewInit(): void {\n this.bpmnViewer = new NavigatedViewer();\n this.bpmnViewer.attachTo(this.el.nativeElement);\n this.bpmnViewer.on('import.done', ({error}: any) => {\n if (!error) {\n const canvas = this.bpmnViewer.get('canvas') as any;\n canvas.zoom('fit-viewport', 'auto');\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (this.bpmnViewer) {\n this.bpmnViewer.destroy();\n }\n }\n\n public clear(): void {\n this.bpmnViewer.clear();\n }\n\n public loadXml(xml: string): void {\n this.bpmnViewer.attachTo(this.el.nativeElement);\n\n from(this.bpmnViewer.importXML(xml))\n .pipe(take(1))\n .subscribe({\n next: () => {\n const processElements = this.bpmnViewer\n .getDefinitions()\n .rootElements.filter(function (element) {\n return element.isExecutable;\n });\n\n this.flowNodeMap = processElements[0].flowElements.filter(function (element) {\n if (element.name === null || element.name === '') {\n element.name = element.id;\n }\n return element.$type !== 'bpmn:SequenceFlow';\n });\n\n this.loaded.emit(this.name);\n },\n error: error => {\n this.logger.debug(error);\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #ref class=\"diagram-container\"></div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AfterViewInit, Component, ViewChild} from '@angular/core';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {NGXLogger} from 'ngx-logger';\nimport {AlertService} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ComboBox, ListItem} from 'carbon-components-angular';\nimport {MIGRATION_TEST_IDS} from './constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-migration',\n templateUrl: './migration.component.html',\n styleUrls: ['./migration.component.scss'],\n})\nexport class MigrationComponent implements AfterViewInit {\n public processDefinitions: ProcessDefinition[] = [];\n public selectedVersions = {\n source: [],\n target: [],\n };\n public selectedId = {\n source: null,\n target: null,\n };\n public loaded = {\n source: false,\n target: false,\n };\n public fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n\n public processCount: number | null = null;\n public uniqueFlowNodeMap: any[] = [];\n public taskMapping: any = {};\n\n @ViewChild('sourceDiagram') sourceDiagram: MigrationProcessDiagramComponent;\n @ViewChild('targetDiagram') targetDiagram: MigrationProcessDiagramComponent;\n @ViewChild('sourceVersionCombobox') sourceVersionCombobox: ComboBox;\n @ViewChild('targetDefinitionComboBox') targetDefinitionComboBox: ComboBox;\n @ViewChild('targetVersionCombobox') targetVersionCombobox: ComboBox;\n public diagram: any = null;\n\n protected readonly testIds = MIGRATION_TEST_IDS;\n\n constructor(\n private readonly processService: ProcessService,\n private readonly logger: NGXLogger,\n private readonly alertService: AlertService,\n private readonly translateService: TranslateService\n ) {}\n\n ngAfterViewInit() {\n this.diagram = {\n source: this.sourceDiagram,\n target: this.targetDiagram,\n };\n this.loadProcessDefinitions();\n }\n\n public get taskMappingLength() {\n return Object.keys(this.taskMapping).length;\n }\n\n public sourceDefinitionItems: ListItem[] = [];\n public targetDefinitionItems: ListItem[] = [];\n public sourceVersionItems: ListItem[] = [];\n public targetVersionItems: ListItem[] = [];\n private readonly targetFlowNodeItemsMap = new Map<string, ListItem[]>();\n\n private refreshDefinitionItems(): void {\n this.sourceDefinitionItems = this.processDefinitions.map(processDef => ({\n key: processDef.key,\n content: processDef.name || processDef.key,\n selected: this.fields.source.definition === processDef.key,\n }));\n this.targetDefinitionItems = this.processDefinitions.map(processDef => ({\n key: processDef.key,\n content: processDef.name || processDef.key,\n selected: this.fields.target.definition === processDef.key,\n }));\n }\n\n private refreshVersionItems(type: string): void {\n const items = this.selectedVersions[type].map(processVer => ({\n id: processVer.id,\n content: `${processVer.version}`,\n selected: this.fields[type].version === processVer.id,\n }));\n if (type === 'source') {\n this.sourceVersionItems = items;\n } else {\n this.targetVersionItems = items;\n }\n }\n\n loadProcessDefinitions() {\n this.processService\n .getProcessDefinitions(true)\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n this.refreshDefinitionItems();\n });\n }\n\n public onDefinitionSelected(selection: ListItem | ListItem[], type: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n const key = item?.key ?? null;\n\n this.loadProcessDefinitionVersions(key, type);\n if (type === 'source') {\n // Prefilled to the latest version, this screen's usual case; only the user knows the source.\n this.loadProcessDefinitionVersions(key, 'target', true);\n }\n }\n\n public onVersionSelected(selection: ListItem | ListItem[], type: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n this.loadProcess(item?.id ?? null, type);\n }\n\n public onSourceDefinitionClear(event: Event): void {\n this.sourceVersionCombobox.clearInput(event);\n this.targetDefinitionComboBox.clearInput(event);\n this.targetVersionCombobox.clearInput(event);\n }\n\n public onTaskMappingSelected(selection: ListItem | ListItem[], nodeId: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n this.taskMapping[nodeId] = item?.id ?? null;\n }\n\n loadProcessDefinitionVersions(key: string | null, type: string, selectLatestVersion = false) {\n this.fields[type].definition = key;\n this.selectedVersions[type] = [];\n this.clearProcess(type);\n this.refreshDefinitionItems();\n this.refreshVersionItems(type);\n if (key) {\n this.processService\n .getProcessDefinitionVersions(key)\n .subscribe((processDefinitionVersions: ProcessDefinition[]) => {\n if (this.fields[type].definition !== key) {\n return;\n }\n this.selectedVersions[type] = processDefinitionVersions;\n this.refreshVersionItems(type);\n if (selectLatestVersion) this.loadProcess(this.latestVersionIdOf(type), type);\n });\n }\n }\n\n private latestVersionIdOf(type: string): string | null {\n return (\n this.selectedVersions[type].reduce(\n (latest, processVer) =>\n !latest || processVer.version > latest.version ? processVer : latest,\n null\n )?.id ?? null\n );\n }\n\n loadProcess(id: string | null, type: string) {\n this.fields[type].version = id;\n this.clearProcess(type);\n this.refreshVersionItems(type);\n if (id) {\n this.loadProcessDefinitionXML(id, type);\n if (type === 'source') {\n this.loadProcessCount(id);\n }\n }\n }\n\n private clearProcess(type: string) {\n this.loaded[type] = false;\n this.selectedId[type] = null;\n this.diagram[type].clear();\n if (type === 'source') {\n this.processCount = null;\n }\n }\n\n loadProcessDefinitionXML(id: string, type: string) {\n this.processService.getProcessDefinitionXml(id).subscribe(xml => {\n // Guards against the in-flight latest-version load winning the race and leaving migrateProcess()\n // on a version the user never picked.\n if (this.fields[type].version !== id) return;\n if (!xml.bpmn20Xml) return;\n this.diagram[type].loadXml(xml['bpmn20Xml']);\n this.selectedId[type] = id;\n });\n }\n\n loadProcessCount(id: string) {\n this.processService.getProcessCount(id).subscribe(response => {\n this.processCount = response.count;\n });\n }\n\n setUniqueFlowNodeMap() {\n this.uniqueFlowNodeMap = [];\n const sourceFlowNodeMap = this.sourceDiagram.flowNodeMap;\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n\n if (sourceFlowNodeMap != null && targetFlowNodeMap != null) {\n this.uniqueFlowNodeMap = sourceFlowNodeMap.filter(\n sourceFlowNode =>\n !targetFlowNodeMap.some(\n targetFlowNode =>\n sourceFlowNode.id === targetFlowNode.id &&\n sourceFlowNode.$type === targetFlowNode.$type\n )\n );\n }\n }\n\n getFilteredTargetFlowNodeMap(flowNodeType) {\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n return targetFlowNodeMap.filter(function (flowNode) {\n return flowNode.$type === flowNodeType;\n });\n }\n\n public getFilteredTargetFlowNodeMapItems(node): ListItem[] {\n if (!this.targetFlowNodeItemsMap.has(node.id)) {\n this.targetFlowNodeItemsMap.set(\n node.id,\n this.getFilteredTargetFlowNodeMap(node.$type).map(targetFlowNode => ({\n id: targetFlowNode.id,\n content: targetFlowNode.name || targetFlowNode.id,\n selected: this.taskMapping[node.id] === targetFlowNode.id,\n }))\n );\n }\n return this.targetFlowNodeItemsMap.get(node.id);\n }\n\n diagramLoaded(diagramName: string) {\n this.loaded[diagramName] = true;\n if (this.loaded.source && this.loaded.target) {\n this.taskMapping = {};\n this.targetFlowNodeItemsMap.clear();\n this.setUniqueFlowNodeMap();\n }\n }\n\n migrateProcess() {\n this.processService\n .migrateProcess(this.selectedId.source, this.selectedId.target, this.taskMapping)\n .subscribe(\n res => {\n this.alertService.success(this.translateService.instant('processMigration.success'));\n this.clearProcess('source');\n this.clearProcess('target');\n this.fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n this.refreshDefinitionItems();\n this.refreshVersionItems('source');\n this.refreshVersionItems('target');\n },\n err => {\n this.alertService.error(this.translateService.instant('processMigration.failure'));\n this.logger.debug(err);\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"process-migration\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'processMigration.warning.title' | translate,\n message: 'processMigration.warning.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-notification>\n\n <div class=\"process-migration__selection\">\n <cds-combo-box\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"sourceDefinitionItems\"\n [label]=\"'processMigration.sourceDefinition' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (clear)=\"onSourceDefinitionClear($event)\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n [attr.data-test-id]=\"testIds.sourceDefinitionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #sourceVersionCombobox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"sourceVersionItems\"\n [label]=\"'processMigration.sourceVersion' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onVersionSelected($event, 'source')\"\n [attr.data-test-id]=\"testIds.sourceVersionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #targetDefinitionComboBox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"targetDefinitionItems\"\n [label]=\"'processMigration.targetDefinition' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n [attr.data-test-id]=\"testIds.targetDefinitionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n #targetVersionCombobox\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"targetVersionItems\"\n [label]=\"'processMigration.targetVersion' | translate\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onVersionSelected($event, 'target')\"\n [attr.data-test-id]=\"testIds.targetVersionSelect\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n\n <div class=\"process-migration__diagrams\">\n <valtimo-migration-process-diagram\n #sourceDiagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n ></valtimo-migration-process-diagram>\n\n <valtimo-migration-process-diagram\n #targetDiagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n ></valtimo-migration-process-diagram>\n </div>\n\n <cds-structured-list\n *ngIf=\"selectedId.source && selectedId.target && uniqueFlowNodeMap.length > 0\"\n class=\"process-migration__mapping\"\n >\n <cds-list-header>\n <cds-list-column>{{ 'processMigration.sourceActivity' | translate }}</cds-list-column>\n\n <cds-list-column>{{ 'processMigration.targetActivity' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let node of uniqueFlowNodeMap\">\n <cds-list-column>{{ node.name ? node.name : node.id }}</cds-list-column>\n\n <cds-list-column>\n <cds-combo-box\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n [placeholder]=\"'processMigration.selectPlaceholder' | translate\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n [attr.data-test-id]=\"testIds.activityMappingSelectPrefix + node.id\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n\n <div class=\"process-migration__actions\">\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n [attr.data-test-id]=\"testIds.migrateButton\"\n >\n {{ 'processMigration.migrate' | translate }}\n </button>\n\n <cds-tag\n *ngIf=\"processCount !== null\"\n type=\"gray\"\n [attr.data-test-id]=\"testIds.processInstanceCountTag\"\n >{{ 'processMigration.instanceCount' | translate: {count: processCount} }}</cds-tag\n >\n </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MigrationComponent} from './migration.component';\nimport {ROLE_ADMIN} from '@valtimo/shared';\n\nconst routes: Routes = [\n {\n path: 'process-migration',\n component: MigrationComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Process migration', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MigrationRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {MigrationComponent} from './migration.component';\nimport {MigrationRoutingModule} from './migration-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {WidgetModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n ButtonModule,\n ComboBoxModule,\n NotificationModule,\n StructuredListModule,\n TagModule,\n} from 'carbon-components-angular';\n\n@NgModule({\n declarations: [MigrationComponent, MigrationProcessDiagramComponent],\n imports: [\n CommonModule,\n MigrationRoutingModule,\n ReactiveFormsModule,\n WidgetModule,\n FormsModule,\n TranslateModule,\n ButtonModule,\n ComboBoxModule,\n NotificationModule,\n StructuredListModule,\n TagModule,\n ],\n exports: [MigrationComponent],\n})\nexport class MigrationModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of migration\n */\n\nexport * from './lib/constants';\nexport * from './lib/migration.service';\nexport * from './lib/migration.component';\nexport * from './lib/migration.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i8.MigrationProcessDiagramComponent"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './migration.test-ids';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const MIGRATION_TEST_IDS: {
|
|
2
|
+
readonly sourceDefinitionSelect: "migrationSourceDefinitionSelect";
|
|
3
|
+
readonly sourceVersionSelect: "migrationSourceVersionSelect";
|
|
4
|
+
readonly targetDefinitionSelect: "migrationTargetDefinitionSelect";
|
|
5
|
+
readonly targetVersionSelect: "migrationTargetVersionSelect";
|
|
6
|
+
readonly activityMappingSelectPrefix: "migrationActivityMappingSelect-";
|
|
7
|
+
readonly processInstanceCountTag: "migrationProcessInstanceCountTag";
|
|
8
|
+
readonly migrateButton: "migrationMigrateButton";
|
|
9
|
+
};
|
|
@@ -3,12 +3,14 @@ import { ProcessDefinition, ProcessService } from '@valtimo/process';
|
|
|
3
3
|
import { MigrationProcessDiagramComponent } from './migration-process-diagram/migration-process-diagram.component';
|
|
4
4
|
import { NGXLogger } from 'ngx-logger';
|
|
5
5
|
import { AlertService } from '@valtimo/components';
|
|
6
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
6
7
|
import { ComboBox, ListItem } from 'carbon-components-angular';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
export declare class MigrationComponent implements AfterViewInit
|
|
9
|
-
private processService;
|
|
10
|
-
private logger;
|
|
11
|
-
private alertService;
|
|
9
|
+
export declare class MigrationComponent implements AfterViewInit {
|
|
10
|
+
private readonly processService;
|
|
11
|
+
private readonly logger;
|
|
12
|
+
private readonly alertService;
|
|
13
|
+
private readonly translateService;
|
|
12
14
|
processDefinitions: ProcessDefinition[];
|
|
13
15
|
selectedVersions: {
|
|
14
16
|
source: any[];
|
|
@@ -41,7 +43,16 @@ export declare class MigrationComponent implements AfterViewInit, AfterViewInit
|
|
|
41
43
|
targetDefinitionComboBox: ComboBox;
|
|
42
44
|
targetVersionCombobox: ComboBox;
|
|
43
45
|
diagram: any;
|
|
44
|
-
|
|
46
|
+
protected readonly testIds: {
|
|
47
|
+
readonly sourceDefinitionSelect: "migrationSourceDefinitionSelect";
|
|
48
|
+
readonly sourceVersionSelect: "migrationSourceVersionSelect";
|
|
49
|
+
readonly targetDefinitionSelect: "migrationTargetDefinitionSelect";
|
|
50
|
+
readonly targetVersionSelect: "migrationTargetVersionSelect";
|
|
51
|
+
readonly activityMappingSelectPrefix: "migrationActivityMappingSelect-";
|
|
52
|
+
readonly processInstanceCountTag: "migrationProcessInstanceCountTag";
|
|
53
|
+
readonly migrateButton: "migrationMigrateButton";
|
|
54
|
+
};
|
|
55
|
+
constructor(processService: ProcessService, logger: NGXLogger, alertService: AlertService, translateService: TranslateService);
|
|
45
56
|
ngAfterViewInit(): void;
|
|
46
57
|
get taskMappingLength(): number;
|
|
47
58
|
sourceDefinitionItems: ListItem[];
|
|
@@ -56,7 +67,8 @@ export declare class MigrationComponent implements AfterViewInit, AfterViewInit
|
|
|
56
67
|
onVersionSelected(selection: ListItem | ListItem[], type: string): void;
|
|
57
68
|
onSourceDefinitionClear(event: Event): void;
|
|
58
69
|
onTaskMappingSelected(selection: ListItem | ListItem[], nodeId: string): void;
|
|
59
|
-
loadProcessDefinitionVersions(key: string | null, type: string): void;
|
|
70
|
+
loadProcessDefinitionVersions(key: string | null, type: string, selectLatestVersion?: boolean): void;
|
|
71
|
+
private latestVersionIdOf;
|
|
60
72
|
loadProcess(id: string | null, type: string): void;
|
|
61
73
|
private clearProcess;
|
|
62
74
|
loadProcessDefinitionXML(id: string, type: string): void;
|
|
@@ -9,6 +9,6 @@ import * as i7 from "@ngx-translate/core";
|
|
|
9
9
|
import * as i8 from "carbon-components-angular";
|
|
10
10
|
export declare class MigrationModule {
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<MigrationModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<MigrationModule, [typeof i1.MigrationComponent, typeof i2.MigrationProcessDiagramComponent], [typeof i3.CommonModule, typeof i4.MigrationRoutingModule, typeof i5.ReactiveFormsModule, typeof i6.WidgetModule, typeof i5.FormsModule, typeof i7.TranslateModule, typeof i8.ComboBoxModule], [typeof i1.MigrationComponent]>;
|
|
12
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MigrationModule, [typeof i1.MigrationComponent, typeof i2.MigrationProcessDiagramComponent], [typeof i3.CommonModule, typeof i4.MigrationRoutingModule, typeof i5.ReactiveFormsModule, typeof i6.WidgetModule, typeof i5.FormsModule, typeof i7.TranslateModule, typeof i8.ButtonModule, typeof i8.ComboBoxModule, typeof i8.NotificationModule, typeof i8.StructuredListModule, typeof i8.TagModule], [typeof i1.MigrationComponent]>;
|
|
13
13
|
static ɵinj: i0.ɵɵInjectorDeclaration<MigrationModule>;
|
|
14
14
|
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED