Commit 06c3fb8eabf397e808b81f2d5e0dc478513a564f

Authored by Vladyslav_Prykhodko
1 parent 8c9328f9

UI: Refactoring device profile

@@ -387,3 +387,19 @@ export function sortObjectKeys<T>(obj: T): T { @@ -387,3 +387,19 @@ export function sortObjectKeys<T>(obj: T): T {
387 return acc; 387 return acc;
388 }, {} as T); 388 }, {} as T);
389 } 389 }
  390 +
  391 +export function deepTrim<T>(obj: T): T {
  392 + if (isNumber(obj) || isUndefined(obj) || isString(obj) || obj === null) {
  393 + return obj;
  394 + }
  395 + return Object.keys(obj).reduce((acc, curr) => {
  396 + if (isString(obj[curr])) {
  397 + acc[curr] = obj[curr].trim();
  398 + } else if (isObject(obj[curr])) {
  399 + acc[curr] = deepTrim(obj[curr]);
  400 + } else {
  401 + acc[curr] = obj[curr];
  402 + }
  403 + return acc;
  404 + }, (Array.isArray(obj) ? [] : {}) as T);
  405 +}
@@ -23,7 +23,7 @@ import { AppState } from '@core/core.state'; @@ -23,7 +23,7 @@ import { AppState } from '@core/core.state';
23 import { EntityAction } from '@home/models/entity/entity-component.models'; 23 import { EntityAction } from '@home/models/entity/entity-component.models';
24 import { EntityTableConfig } from '@home/models/entity/entities-table-config.models'; 24 import { EntityTableConfig } from '@home/models/entity/entities-table-config.models';
25 import { PageLink } from '@shared/models/page/page-link'; 25 import { PageLink } from '@shared/models/page/page-link';
26 -import { isObject, isString } from '@core/utils'; 26 +import { deepTrim } from '@core/utils';
27 27
28 // @dynamic 28 // @dynamic
29 @Directive() 29 @Directive()
@@ -115,20 +115,7 @@ export abstract class EntityComponent<T extends BaseData<HasId>, @@ -115,20 +115,7 @@ export abstract class EntityComponent<T extends BaseData<HasId>,
115 } 115 }
116 116
117 prepareFormValue(formValue: any): any { 117 prepareFormValue(formValue: any): any {
118 - return this.deepTrim(formValue);  
119 - }  
120 -  
121 - private deepTrim(obj: object): object {  
122 - return Object.keys(obj).reduce((acc, curr) => {  
123 - if (isString(obj[curr])) {  
124 - acc[curr] = obj[curr].trim();  
125 - } else if (isObject(obj[curr])) {  
126 - acc[curr] = this.deepTrim(obj[curr]);  
127 - } else {  
128 - acc[curr] = obj[curr];  
129 - }  
130 - return acc;  
131 - }, Array.isArray(obj) ? [] : {}); 118 + return deepTrim(formValue);
132 } 119 }
133 120
134 protected setEntitiesTableConfig(entitiesTableConfig: C) { 121 protected setEntitiesTableConfig(entitiesTableConfig: C) {
@@ -44,6 +44,7 @@ import { EntityType } from '@shared/models/entity-type.models'; @@ -44,6 +44,7 @@ import { EntityType } from '@shared/models/entity-type.models';
44 import { MatHorizontalStepper } from '@angular/material/stepper'; 44 import { MatHorizontalStepper } from '@angular/material/stepper';
45 import { RuleChainId } from '@shared/models/id/rule-chain-id'; 45 import { RuleChainId } from '@shared/models/id/rule-chain-id';
46 import { StepperSelectionEvent } from '@angular/cdk/stepper'; 46 import { StepperSelectionEvent } from '@angular/cdk/stepper';
  47 +import { deepTrim } from '@core/utils';
47 48
48 export interface AddDeviceProfileDialogData { 49 export interface AddDeviceProfileDialogData {
49 deviceProfileName: string; 50 deviceProfileName: string;
@@ -171,7 +172,7 @@ export class AddDeviceProfileDialogComponent extends @@ -171,7 +172,7 @@ export class AddDeviceProfileDialogComponent extends
171 if (this.deviceProfileDetailsFormGroup.get('defaultRuleChainId').value) { 172 if (this.deviceProfileDetailsFormGroup.get('defaultRuleChainId').value) {
172 deviceProfile.defaultRuleChainId = new RuleChainId(this.deviceProfileDetailsFormGroup.get('defaultRuleChainId').value); 173 deviceProfile.defaultRuleChainId = new RuleChainId(this.deviceProfileDetailsFormGroup.get('defaultRuleChainId').value);
173 } 174 }
174 - this.deviceProfileService.saveDeviceProfile(deviceProfile).subscribe( 175 + this.deviceProfileService.saveDeviceProfile(deepTrim(deviceProfile)).subscribe(
175 (savedDeviceProfile) => { 176 (savedDeviceProfile) => {
176 this.dialogRef.close(savedDeviceProfile); 177 this.dialogRef.close(savedDeviceProfile);
177 } 178 }
@@ -142,7 +142,7 @@ export class DeviceProfileComponent extends EntityComponent<DeviceProfile> { @@ -142,7 +142,7 @@ export class DeviceProfileComponent extends EntityComponent<DeviceProfile> {
142 if (formValue.defaultRuleChainId) { 142 if (formValue.defaultRuleChainId) {
143 formValue.defaultRuleChainId = new RuleChainId(formValue.defaultRuleChainId); 143 formValue.defaultRuleChainId = new RuleChainId(formValue.defaultRuleChainId);
144 } 144 }
145 - return formValue; 145 + return super.prepareFormValue(formValue);
146 } 146 }
147 147
148 onDeviceProfileIdCopied(event) { 148 onDeviceProfileIdCopied(event) {
@@ -76,7 +76,7 @@ export const deviceTransportTypeHintMap = new Map<DeviceTransportType, string>( @@ -76,7 +76,7 @@ export const deviceTransportTypeHintMap = new Map<DeviceTransportType, string>(
76 [ 76 [
77 [DeviceTransportType.DEFAULT, 'device-profile.transport-type-default-hint'], 77 [DeviceTransportType.DEFAULT, 'device-profile.transport-type-default-hint'],
78 [DeviceTransportType.MQTT, 'device-profile.transport-type-mqtt-hint'], 78 [DeviceTransportType.MQTT, 'device-profile.transport-type-mqtt-hint'],
79 - [DeviceTransportType.LWM2M, 'device-profile.transport-type-lwm2m-hint'] 79 + // [DeviceTransportType.LWM2M, 'device-profile.transport-type-lwm2m-hint']
80 ] 80 ]
81 ); 81 );
82 82