@valtimo/migration 13.44.0 → 13.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 '@angular/common';
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 i5 from 'carbon-components-angular';
10
- import { ComboBoxModule } from 'carbon-components-angular';
11
- import * as i6 from 'carbon-components-angular/dropdown';
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
- this.loadProcessDefinitionVersions(key, 'target');
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('Process successfully migrated!');
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('Process migration failed!');
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-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", 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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.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: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: MigrationProcessDiagramComponent, selector: "valtimo-migration-process-diagram", inputs: ["name"], outputs: ["loaded"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
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-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", 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"] }]
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
- ComboBoxModule], exports: [MigrationComponent] }); }
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
- ComboBoxModule] }); }
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, 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
- constructor(processService: ProcessService, logger: NGXLogger, alertService: AlertService);
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@valtimo/migration",
3
3
  "license": "EUPL-1.2",
4
- "version": "13.44.0",
4
+ "version": "13.45.0",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "19.2.25",
7
7
  "@angular/core": "19.2.25"
package/public-api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './lib/constants';
1
2
  export * from './lib/migration.service';
2
3
  export * from './lib/migration.component';
3
4
  export * from './lib/migration.module';