From 7e2a644e155afbb16d95318e6e022baf46f5d669 Mon Sep 17 00:00:00 2001 From: Andrii Shvaika Date: Thu, 9 Apr 2026 16:18:19 +0300 Subject: [PATCH] feat(iot-hub): show resolution labels in provisioning step Track which resolution was used per entity step (created, use-existing, overwrite, create-copy). Store in installState for review mode. Provisioning step now shows green resolution label on the right: "Created", "Used existing", "Overwritten", or "Created copy". Visible in both live install and read-only review dialog. --- .../device-install-dialog.component.html | 3 +++ .../device-install-dialog.component.scss | 8 ++++++++ .../device-install-dialog.component.ts | 8 ++++++-- .../app/shared/models/iot-hub/device-package.models.ts | 1 + ui-ngx/src/assets/locale/locale.constant-en_US.json | 4 ++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.html b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.html index 5ed6430245..2b950ce9b2 100644 --- a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.html +++ b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.html @@ -194,6 +194,9 @@ {{ 'iot-hub.device-install-conflict-exists' | translate:{ type: ('iot-hub.device-install-step-type-' + ep.step.type | translate) } }} } + @if (ep.status === 'success' && ep.resolution) { + {{ 'iot-hub.device-install-resolution-' + ep.resolution | translate }} + } @if (ep.status === 'conflict') {
@if (ep.conflictType === 'use-or-overwrite') { diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.scss b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.scss index a8df1ddf79..ba967d51e9 100644 --- a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.scss +++ b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.scss @@ -286,6 +286,14 @@ color: #f57f17; } +.tb-progress-resolution { + margin-left: auto; + flex-shrink: 0; + font-size: 13px; + color: #2e7d32; + font-weight: 500; +} + .tb-progress-conflict-actions { display: flex; gap: 8px; diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts index 0f45f0b626..be0465a137 100644 --- a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts +++ b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts @@ -293,6 +293,7 @@ export class TbDeviceInstallDialogComponent extends DialogComponent { const alias = stepTypeAliasMap[s.type]; const output = alias ? this.entityOutputs.get(alias) : null; + const storedState = this.data.installState?.[s.name] || this.data.installState?.[this.resolveVariables(s.name)]; return { step: s, status: 'success' as const, resolvedName: this.resolveVariables(s.name), - entityOutput: output || undefined + entityOutput: output || undefined, + resolution: storedState?.resolution || 'created' }; }); ws.progressDone = true; @@ -615,6 +618,7 @@ export class TbDeviceInstallDialogComponent extends DialogComponent