From d435f91fac0c33f185ba015276e44341b1937069 Mon Sep 17 00:00:00 2001 From: mpetrov Date: Wed, 11 Sep 2024 16:34:30 +0300 Subject: [PATCH 1/3] Made Resource details page read only for LwM2M resources --- .../resource/resources-library.component.html | 2 +- .../resource/resources-library.component.ts | 39 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.html b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.html index 5c3d9da081..441a311021 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.html +++ b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.html @@ -58,7 +58,7 @@ resource.title - + {{ 'resource.title-required' | translate }} diff --git a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.ts b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.ts index f6a8befe9b..de61618dd7 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.ts +++ b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library.component.ts @@ -43,8 +43,7 @@ export class ResourcesLibraryComponent extends EntityComponent impleme readonly resourceType = ResourceType; readonly resourceTypes: ResourceType[] = Object.values(this.resourceType); readonly resourceTypesTranslationMap = ResourceTypeTranslationMap; - - maxResourceSize = getCurrentAuthState(this.store).maxResourceSize; + readonly maxResourceSize = getCurrentAuthState(this.store).maxResourceSize; private destroy$ = new Subject(); @@ -57,20 +56,20 @@ export class ResourcesLibraryComponent extends EntityComponent impleme super(store, fb, entityValue, entitiesTableConfigValue, cd); } - ngOnInit() { + ngOnInit(): void { super.ngOnInit(); if (this.isAdd) { this.observeResourceTypeChange(); } } - ngOnDestroy() { + ngOnDestroy(): void { super.ngOnDestroy(); this.destroy$.next(); this.destroy$.complete(); } - hideDelete() { + hideDelete(): boolean { if (this.entitiesTableConfig) { return !this.entitiesTableConfig.deleteEnabled(this.entity); } else { @@ -87,19 +86,18 @@ export class ResourcesLibraryComponent extends EntityComponent impleme }); } - updateForm(entity: Resource) { + updateForm(entity: Resource): void { + const { resourceType, fileName, title, data } = entity; + this.updateTableReadonlyConfig(); + if (this.isEdit) { - this.entityForm.get('resourceType').disable({emitEvent: false}); - if (entity.resourceType !== ResourceType.JS_MODULE) { - this.entityForm.get('fileName').disable({emitEvent: false}); + this.entityForm.get('resourceType').disable({ emitEvent: false }); + if (resourceType !== ResourceType.JS_MODULE) { + this.entityForm.get('fileName').disable({ emitEvent: false }); } } - this.entityForm.patchValue({ - resourceType: entity.resourceType, - fileName: entity.fileName, - title: entity.title, - data: entity.data - }); + + this.entityForm.patchValue({ resourceType, fileName, title, data }); } prepareFormValue(formValue: Resource): Resource { @@ -109,7 +107,7 @@ export class ResourcesLibraryComponent extends EntityComponent impleme return super.prepareFormValue(formValue); } - getAllowedExtensions() { + getAllowedExtensions(): string { try { return ResourceTypeExtension.get(this.entityForm.get('resourceType').value); } catch (e) { @@ -117,7 +115,7 @@ export class ResourcesLibraryComponent extends EntityComponent impleme } } - getAcceptType() { + getAcceptType(): string { try { return ResourceTypeMIMETypes.get(this.entityForm.get('resourceType').value); } catch (e) { @@ -129,7 +127,7 @@ export class ResourcesLibraryComponent extends EntityComponent impleme return window.btoa(data); } - onResourceIdCopied() { + onResourceIdCopied(): void { this.store.dispatch(new ActionNotificationShow( { message: this.translate.instant('resource.idCopiedMessage'), @@ -140,6 +138,11 @@ export class ResourcesLibraryComponent extends EntityComponent impleme })); } + private updateTableReadonlyConfig(): void { + this.entitiesTableConfigValue.detailsReadonly = () => + this.resourceType.LWM2M_MODEL === this.entityForm.get('resourceType').value; + } + private observeResourceTypeChange(): void { this.entityForm.get('resourceType').valueChanges.pipe( startWith(ResourceType.JS_MODULE), From 949b2c5f2e2c0b999eaf46d34a69fc94c2d0056c Mon Sep 17 00:00:00 2001 From: mpetrov Date: Wed, 11 Sep 2024 17:46:06 +0300 Subject: [PATCH 2/3] [3969] refactoring --- .../resources-library-table-config.resolve.ts | 5 ++++- .../resource/resources-library.component.ts | 16 ++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts index 1e7eef1c41..148a47feac 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts +++ b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts @@ -22,7 +22,7 @@ import { EntityTableConfig } from '@home/models/entity/entities-table-config.models'; import { Resolve, Router } from '@angular/router'; -import { Resource, ResourceInfo, ResourceTypeTranslationMap } from '@shared/models/resource.models'; +import { Resource, ResourceInfo, ResourceType, ResourceTypeTranslationMap } from '@shared/models/resource.models'; import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models'; import { NULL_UUID } from '@shared/models/id/has-uuid'; import { DatePipe } from '@angular/common'; @@ -150,6 +150,9 @@ export class ResourcesLibraryTableConfigResolver implements Resolve impleme updateForm(entity: Resource): void { const { resourceType, fileName, title, data } = entity; - this.updateTableReadonlyConfig(); + this.entityForm.patchValue({ resourceType, fileName, title, data }); + } - if (this.isEdit) { + override updateFormState(): void { + super.updateFormState(); + if (this.isEdit && this.entityForm) { this.entityForm.get('resourceType').disable({ emitEvent: false }); - if (resourceType !== ResourceType.JS_MODULE) { + if (this.entityForm.get('resourceType').value !== ResourceType.JS_MODULE) { this.entityForm.get('fileName').disable({ emitEvent: false }); } } - - this.entityForm.patchValue({ resourceType, fileName, title, data }); } prepareFormValue(formValue: Resource): Resource { @@ -138,11 +139,6 @@ export class ResourcesLibraryComponent extends EntityComponent impleme })); } - private updateTableReadonlyConfig(): void { - this.entitiesTableConfigValue.detailsReadonly = () => - this.resourceType.LWM2M_MODEL === this.entityForm.get('resourceType').value; - } - private observeResourceTypeChange(): void { this.entityForm.get('resourceType').valueChanges.pipe( startWith(ResourceType.JS_MODULE), From 358374ab697564d7e91f5ce8233dc13c94fef1ca Mon Sep 17 00:00:00 2001 From: mpetrov Date: Wed, 11 Sep 2024 18:44:53 +0300 Subject: [PATCH 3/3] [3969] table actions disabled fix --- .../resource/resources-library-table-config.resolve.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts index 148a47feac..74535ca413 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts +++ b/ui-ngx/src/app/modules/home/pages/admin/resource/resources-library-table-config.resolve.ts @@ -118,7 +118,7 @@ export class ResourcesLibraryTableConfigResolver implements Resolve this.isResourceEditable(resource, authUser.authority); this.config.entitySelectionEnabled = (resource) => this.isResourceEditable(resource, authUser.authority); - this.config.detailsReadonly = (resource) => !this.isResourceEditable(resource, authUser.authority); + this.config.detailsReadonly = (resource) => !this.isResourceEditable(resource, authUser.authority, true); return this.config; } @@ -149,8 +149,8 @@ export class ResourcesLibraryTableConfigResolver implements Resolve