From eefd26cace2b6c20db36638934185650d647321c Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 7 Apr 2026 16:45:33 +0300 Subject: [PATCH] Add "Add from IoT Hub" action to widget types page --- .../widget-types-table-config.resolver.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts index 811d3e56e8..ef49ec05fe 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts @@ -47,6 +47,12 @@ import { WidgetTypeComponent } from '@home/pages/widget/widget-type.component'; import { WidgetTypeTabsComponent } from '@home/pages/widget/widget-type-tabs.component'; import { SelectWidgetTypeDialogComponent } from '@home/pages/widget/select-widget-type-dialog.component'; import { MatDialog } from '@angular/material/dialog'; +import { ItemType } from '@shared/models/iot-hub/iot-hub-item.models'; +import { + TbIotHubAddItemDialogComponent, + IotHubAddItemDialogData, + IotHubAddItemDialogResult +} from '@home/components/iot-hub/iot-hub-add-item-dialog.component'; @Injectable() export class WidgetTypesTableConfigResolver { @@ -99,6 +105,12 @@ export class WidgetTypesTableConfigResolver { icon: 'file_upload', isEnabled: () => true, onAction: ($event) => this.importWidgetType($event) + }, + { + name: this.translate.instant('iot-hub.add-from-iot-hub'), + icon: 'store', + isEnabled: () => true, + onAction: (_$event) => this.addWidgetFromIotHub() } ); @@ -183,6 +195,22 @@ export class WidgetTypesTableConfigResolver { ); } + addWidgetFromIotHub() { + const dialogRef = this.dialog.open(TbIotHubAddItemDialogComponent, { + panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], + disableClose: true, + autoFocus: false, + data: { + itemType: ItemType.WIDGET + } as IotHubAddItemDialogData + }); + dialogRef.afterClosed().subscribe((result: IotHubAddItemDialogResult) => { + if (result?.descriptor) { + this.config.updateData(); + } + }); + } + importWidgetType($event: Event) { this.importExport.importWidgetType().subscribe( (widgetType) => {