Browse Source

feat(iot-hub): wire device install dialog into all install entry points

Branch DEVICE item type to fetch ZIP and open TbDeviceInstallDialogComponent
instead of the simple install dialog. Applied to:
- Item detail dialog (install button)
- Browse component (card install button)
- Home component (card install button)
pull/15347/head
Andrii Shvaika 6 months ago
parent
commit
ea064436ce
  1. 24
      ui-ngx/src/app/modules/home/pages/iot-hub/iot-hub-browse.component.ts
  2. 24
      ui-ngx/src/app/modules/home/pages/iot-hub/iot-hub-home.component.ts
  3. 29
      ui-ngx/src/app/modules/home/pages/iot-hub/iot-hub-item-detail-dialog.component.ts

24
ui-ngx/src/app/modules/home/pages/iot-hub/iot-hub-browse.component.ts

@ -34,6 +34,7 @@ import { ActivatedRoute, Router } from '@angular/router';
import { TbIotHubItemDetailDialogComponent, IotHubItemDetailDialogData } from './iot-hub-item-detail-dialog.component';
import { TbIotHubInstallDialogComponent, IotHubInstallDialogData } from './iot-hub-install-dialog.component';
import { TbIotHubUpdateDialogComponent, IotHubUpdateDialogData } from './iot-hub-update-dialog.component';
import { TbDeviceInstallDialogComponent, DeviceInstallDialogData } from './device-install-dialog/device-install-dialog.component';
interface SortOption {
value: string;
@ -363,6 +364,10 @@ export class TbIotHubBrowseComponent implements OnInit, OnDestroy {
}
installItem(item: MpItemVersionView): void {
if (item.type === ItemType.DEVICE) {
this.installDevice(item);
return;
}
const dialogRef = this.dialog.open(TbIotHubInstallDialogComponent, {
panelClass: ['tb-dialog'],
data: {
@ -377,6 +382,25 @@ export class TbIotHubBrowseComponent implements OnInit, OnDestroy {
});
}
private installDevice(item: MpItemVersionView): void {
this.iotHubApiService.getVersionFileData(item.id as string, { ignoreLoading: true }).subscribe({
next: async (blob: Blob) => {
const zipData = await blob.arrayBuffer();
const dialogRef = this.dialog.open(TbDeviceInstallDialogComponent, {
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'],
disableClose: true,
autoFocus: false,
data: { item, zipData, iotHubApiService: this.iotHubApiService } as DeviceInstallDialogData
});
dialogRef.afterClosed().subscribe(result => {
if (result === 'installed') {
this.loadItems();
}
});
}
});
}
updateItem(item: MpItemVersionView): void {
const installedItem = this.getInstalledItem(item);
if (!installedItem) {

24
ui-ngx/src/app/modules/home/pages/iot-hub/iot-hub-home.component.ts

@ -27,6 +27,7 @@ import { IotHubApiService } from '@core/http/iot-hub-api.service';
import { TbIotHubItemDetailDialogComponent, IotHubItemDetailDialogData } from './iot-hub-item-detail-dialog.component';
import { TbIotHubInstallDialogComponent, IotHubInstallDialogData } from './iot-hub-install-dialog.component';
import { TbIotHubDeleteDialogComponent, IotHubDeleteDialogData } from './iot-hub-delete-dialog.component';
import { TbDeviceInstallDialogComponent, DeviceInstallDialogData } from './device-install-dialog/device-install-dialog.component';
interface CategoryCard {
type: ItemType;
@ -210,6 +211,10 @@ export class TbIotHubHomeComponent implements OnInit, OnDestroy {
}
installItem(item: MpItemVersionView): void {
if (item.type === ItemType.DEVICE) {
this.installDevice(item);
return;
}
const dialogRef = this.dialog.open(TbIotHubInstallDialogComponent, {
panelClass: ['tb-dialog'],
autoFocus: false,
@ -225,6 +230,25 @@ export class TbIotHubHomeComponent implements OnInit, OnDestroy {
});
}
private installDevice(item: MpItemVersionView): void {
this.iotHubApiService.getVersionFileData(item.id as string, { ignoreLoading: true }).subscribe({
next: async (blob: Blob) => {
const zipData = await blob.arrayBuffer();
const dialogRef = this.dialog.open(TbDeviceInstallDialogComponent, {
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'],
disableClose: true,
autoFocus: false,
data: { item, zipData, iotHubApiService: this.iotHubApiService } as DeviceInstallDialogData
});
dialogRef.afterClosed().subscribe(result => {
if (result === 'installed') {
this.reloadInstalledItems(item.type);
}
});
}
});
}
navigateToCreator(creatorId: string): void {
this.router.navigate(['/iot-hub/creator', creatorId]);
}

29
ui-ngx/src/app/modules/home/pages/iot-hub/iot-hub-item-detail-dialog.component.ts

@ -27,6 +27,7 @@ import { getEntityDetailsPageURL } from '@core/utils';
import { TbIotHubInstallDialogComponent, IotHubInstallDialogData } from './iot-hub-install-dialog.component';
import { TbIotHubUpdateDialogComponent, IotHubUpdateDialogData } from './iot-hub-update-dialog.component';
import { TbIotHubDeleteDialogComponent, IotHubDeleteDialogData } from './iot-hub-delete-dialog.component';
import { TbDeviceInstallDialogComponent, DeviceInstallDialogData } from './device-install-dialog/device-install-dialog.component';
import { SolutionInstallDialogComponent } from '@home/components/solution/solution-install-dialog.component';
import { SolutionTemplateInstalledItemDescriptor } from '@shared/models/iot-hub/iot-hub-installed-item.models';
@ -239,6 +240,10 @@ export class TbIotHubItemDetailDialogComponent {
}
install(): void {
if (this.item.type === ItemType.DEVICE) {
this.installDevice();
return;
}
const dialogRef = this.dialog.open(TbIotHubInstallDialogComponent, {
panelClass: ['tb-dialog'],
data: {
@ -253,6 +258,30 @@ export class TbIotHubItemDetailDialogComponent {
});
}
private installDevice(): void {
const versionId = this.item.id as string;
this.data.iotHubApiService.getVersionFileData(versionId, { ignoreLoading: true }).subscribe({
next: async (blob: Blob) => {
const zipData = await blob.arrayBuffer();
const dialogRef = this.dialog.open(TbDeviceInstallDialogComponent, {
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'],
disableClose: true,
autoFocus: false,
data: {
item: this.item,
zipData,
iotHubApiService: this.data.iotHubApiService
} as DeviceInstallDialogData
});
dialogRef.afterClosed().subscribe(result => {
if (result === 'installed') {
this.dialogRef.close('installed');
}
});
}
});
}
updateItem(): void {
const dialogRef = this.dialog.open(TbIotHubUpdateDialogComponent, {
panelClass: ['tb-dialog'],

Loading…
Cancel
Save