diff --git a/ui-ngx/src/app/modules/home/pages/firmware/firmware-table-config.resolve.ts b/ui-ngx/src/app/modules/home/pages/firmware/firmware-table-config.resolve.ts index 8fd2a8fccb..b809f6f403 100644 --- a/ui-ngx/src/app/modules/home/pages/firmware/firmware-table-config.resolve.ts +++ b/ui-ngx/src/app/modules/home/pages/firmware/firmware-table-config.resolve.ts @@ -29,7 +29,7 @@ import { FirmwareService } from '@core/http/firmware.service'; import { PageLink } from '@shared/models/page/page-link'; import { FirmwaresComponent } from '@home/pages/firmware/firmwares.component'; import { EntityAction } from '@home/models/entity/entity-component.models'; -import { DeviceInfo } from '@shared/models/device.models'; +import { FileSizePipe } from '@shared/pipe/file-size.pipe'; @Injectable() export class FirmwareTableConfigResolve implements Resolve> { @@ -38,7 +38,8 @@ export class FirmwareTableConfigResolve implements Resolve('createdTime', 'common.created-time', this.datePipe, '150px'), - new EntityTableColumn('title', 'firmware.title', '50%'), - new EntityTableColumn('version', 'firmware.version', '50%') + new EntityTableColumn('title', 'firmware.title', '33%'), + new EntityTableColumn('version', 'firmware.version', '33%'), + new EntityTableColumn('fileName', 'firmware.file-name', '33%'), + new EntityTableColumn('dataSize', 'firmware.file-size', '70px', entity => { + return this.fileSize.transform(entity.dataSize || 0); + }), + new EntityTableColumn('checksum', 'firmware.checksum', '540px', entity => { + return `${entity.checksumAlgorithm}: ${entity.checksum}`; + }, () => ({}), false) ); this.config.cellActionDescriptors.push( { - name: this.translate.instant('firmware.export'), + name: this.translate.instant('firmware.download'), icon: 'file_download', isEnabled: (firmware) => firmware.hasData, onAction: ($event, entity) => this.exportFirmware($event, entity) diff --git a/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.html b/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.html index c85ac61f0b..2911802a75 100644 --- a/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.html +++ b/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.html @@ -20,23 +20,31 @@ [disabled]="(isLoading$ | async) || !entity?.hasData" (click)="onEntityAction($event, 'uploadFirmware')" [fxShow]="!isEdit"> - {{'firmware.export' | translate }} + {{ 'firmware.download' | translate }}
+
@@ -46,39 +54,40 @@
firmware.title - + {{ 'firmware.title-required' | translate }} firmware.version - + {{ 'firmware.version-required' | translate }}
-
-
- - firmware.checksum-algorithm - - - - {{ checksumAlgorithmTranslationMap.get(checksumAlgorithm) }} - - - - - firmware.checksum - - - {{ 'firmware.checksum-required' | translate }} - - -
+
+ + firmware.checksum-algorithm + + + + + {{ checksumAlgorithmTranslationMap.get(checksumAlgorithm) }} + + + + + firmware.checksum + + + {{ 'firmware.checksum-required' | translate }} + + +
+
+
+
+ + firmware.file-name + + + + firmware.file-size-bytes + + + + firmware.content-type + + +
+
firmware.description diff --git a/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.ts b/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.ts index 78d04ecf53..8ffef239b4 100644 --- a/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.ts +++ b/ui-ngx/src/app/modules/home/pages/firmware/firmwares.component.ts @@ -83,6 +83,8 @@ export class FirmwaresComponent extends EntityComponent implements OnI const form = this.fb.group({ title: [entity ? entity.title : '', [Validators.required, Validators.maxLength(255)]], version: [entity ? entity.version : '', [Validators.required, Validators.maxLength(255)]], + checksumAlgorithm: [entity ? entity.checksumAlgorithm : null], + checksum: [entity ? entity.checksum : '', Validators.maxLength(1020)], additionalInfo: this.fb.group( { description: [entity && entity.additionalInfo ? entity.additionalInfo.description : ''], @@ -90,28 +92,31 @@ export class FirmwaresComponent extends EntityComponent implements OnI ) }); if (this.isAdd) { - form.addControl('checksumAlgorithm', this.fb.control(null)); - form.addControl('checksum', this.fb.control('', Validators.maxLength(1020))); form.addControl('file', this.fb.control(null, Validators.required)); + } else { + form.addControl('fileName', this.fb.control(null)); + form.addControl('dataSize', this.fb.control(null)); + form.addControl('contentType', this.fb.control(null)); } return form; } updateForm(entity: Firmware) { - if (this.isEdit) { - this.entityForm.get('title').disable({emitEvent: false}); - this.entityForm.get('version').disable({emitEvent: false}); - } this.entityForm.patchValue({ title: entity.title, version: entity.version, + checksumAlgorithm: entity.checksumAlgorithm, + checksum: entity.checksum, + fileName: entity.fileName, + dataSize: entity.dataSize, + contentType: entity.contentType, additionalInfo: { description: entity.additionalInfo ? entity.additionalInfo.description : '' } }); } - onFirmwareIdCopied($event) { + onFirmwareIdCopied() { this.store.dispatch(new ActionNotificationShow( { message: this.translate.instant('firmware.idCopiedMessage'), @@ -121,4 +126,15 @@ export class FirmwaresComponent extends EntityComponent implements OnI horizontalPosition: 'right' })); } + + onFirmwareChecksumCopied() { + this.store.dispatch(new ActionNotificationShow( + { + message: this.translate.instant('firmware.checksum-copied-message'), + type: 'success', + duration: 750, + verticalPosition: 'bottom', + horizontalPosition: 'right' + })); + } } diff --git a/ui-ngx/src/app/shared/models/firmware.models.ts b/ui-ngx/src/app/shared/models/firmware.models.ts index 81e4b6a66d..65dd1761bf 100644 --- a/ui-ngx/src/app/shared/models/firmware.models.ts +++ b/ui-ngx/src/app/shared/models/firmware.models.ts @@ -37,14 +37,15 @@ export interface FirmwareInfo extends BaseData { title?: string; version?: string; hasData?: boolean; + fileName: string; + checksum?: ChecksumAlgorithm; + checksumAlgorithm?: string; + contentType: string; + dataSize?: number; additionalInfo?: any; } export interface Firmware extends FirmwareInfo { file?: File; data: string; - fileName: string; - checksum?: ChecksumAlgorithm; - checksumAlgorithm?: string; - contentType: string; } diff --git a/ui-ngx/src/app/shared/pipe/file-size.pipe.ts b/ui-ngx/src/app/shared/pipe/file-size.pipe.ts index 6d43d42fce..a7f6b210e9 100644 --- a/ui-ngx/src/app/shared/pipe/file-size.pipe.ts +++ b/ui-ngx/src/app/shared/pipe/file-size.pipe.ts @@ -23,7 +23,7 @@ type unitPrecisionMap = { const defaultPrecisionMap: unitPrecisionMap = { bytes: 0, - KB: 0, + KB: 1, MB: 1, GB: 1, TB: 2, diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index a34693c7d5..71d097272c 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -1907,8 +1907,11 @@ "firmware": { "add": "Add firmware", "checksum": "Checksum", + "checksum-copied-message": "Firmware checksum has been copied to clipboard", "checksum-required": "Checksum is required.", "checksum-algorithm": "Checksum algorithm", + "content-type": "Content type", + "copy-checksum": "Copy checksum", "copyId": "Copy firmware Id", "description": "Description", "delete": "Delete firmware", @@ -1917,12 +1920,15 @@ "delete-firmwares-action-title": "Delete { count, plural, 1 {1 firmware} other {# firmwares} }", "delete-firmwares-text": "Be careful, after the confirmation all selected resources will be removed.", "delete-firmwares-title": "Are you sure you want to delete { count, plural, 1 {1 firmware} other {# firmwares} }?", + "download": "Download firmware", "drop-file": "Drop a firmware file or click to select a file to upload.", "empty": "Firmware is empty", - "export": "Export firmware", "idCopiedMessage": "Firmware Id has been copied to clipboard", "no-firmware-matching": "No firmware matching '{{entity}}' were found.", "no-firmware-text": "No firmwares found", + "file-name": "File name", + "file-size": "File size", + "file-size-bytes": "File size in bytes", "firmware": "Firmware", "firmware-details": "Firmware details", "firmware-required": "Firmware is required.",