method type switch fix and data keys crash fix
This commit is contained in:
parent
7df0459c16
commit
d9c5b5efc4
@ -105,7 +105,7 @@ export class ModbusDataKeysPanelComponent implements OnInit, OnDestroy {
|
|||||||
type: [ModbusDataType.BYTES, [Validators.required]],
|
type: [ModbusDataType.BYTES, [Validators.required]],
|
||||||
address: [null, [Validators.required]],
|
address: [null, [Validators.required]],
|
||||||
objectsCount: [1, [Validators.required]],
|
objectsCount: [1, [Validators.required]],
|
||||||
functionCode: [this.getDefaultFunctionCodes()[0]],
|
functionCode: [{ value: this.getDefaultFunctionCodes()[0], disabled: !this.withFunctionCode }, [Validators.required]],
|
||||||
id: [{value: generateSecret(5), disabled: true}],
|
id: [{value: generateSecret(5), disabled: true}],
|
||||||
});
|
});
|
||||||
this.observeKeyDataType(dataKeyFormGroup);
|
this.observeKeyDataType(dataKeyFormGroup);
|
||||||
@ -154,7 +154,7 @@ export class ModbusDataKeysPanelComponent implements OnInit, OnDestroy {
|
|||||||
type: [type, [Validators.required]],
|
type: [type, [Validators.required]],
|
||||||
address: [address, [Validators.required]],
|
address: [address, [Validators.required]],
|
||||||
objectsCount: [objectsCount, [Validators.required]],
|
objectsCount: [objectsCount, [Validators.required]],
|
||||||
functionCode: [functionCode, [Validators.required]],
|
functionCode: [{ value: functionCode, disabled: !this.withFunctionCode }, [Validators.required]],
|
||||||
id: [{ value: generateSecret(5), disabled: true }],
|
id: [{ value: generateSecret(5), disabled: true }],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -164,10 +164,18 @@ export class ModbusDataKeysPanelComponent implements OnInit, OnDestroy {
|
|||||||
if (!this.editableDataTypes.includes(dataType)) {
|
if (!this.editableDataTypes.includes(dataType)) {
|
||||||
keyFormGroup.get('objectsCount').patchValue(ModbusObjectCountByDataType[dataType], {emitEvent: false});
|
keyFormGroup.get('objectsCount').patchValue(ModbusObjectCountByDataType[dataType], {emitEvent: false});
|
||||||
}
|
}
|
||||||
this.functionCodesMap.set(keyFormGroup.get('id').value, this.getFunctionCodes(dataType));
|
this.updateFunctionCodes(keyFormGroup, dataType);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private updateFunctionCodes(keyFormGroup: FormGroup, dataType: ModbusDataType): void {
|
||||||
|
const functionCodes = this.getFunctionCodes(dataType);
|
||||||
|
this.functionCodesMap.set(keyFormGroup.get('id').value, functionCodes);
|
||||||
|
if (!functionCodes.includes(keyFormGroup.get('functionCode').value)) {
|
||||||
|
keyFormGroup.get('functionCode').patchValue(functionCodes[0], {emitEvent: false});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private getFunctionCodes(dataType: ModbusDataType): number[] {
|
private getFunctionCodes(dataType: ModbusDataType): number[] {
|
||||||
if (this.keysType === ModbusValueKey.ATTRIBUTES_UPDATES) {
|
if (this.keysType === ModbusValueKey.ATTRIBUTES_UPDATES) {
|
||||||
return dataType === ModbusDataType.STRING
|
return dataType === ModbusDataType.STRING
|
||||||
|
|||||||
@ -175,7 +175,21 @@ export class ModbusSlaveConfigComponent implements ControlValueAccessor, Validat
|
|||||||
private observeTypeChange(): void {
|
private observeTypeChange(): void {
|
||||||
this.slaveConfigFormGroup.get('type').valueChanges
|
this.slaveConfigFormGroup.get('type').valueChanges
|
||||||
.pipe(takeUntil(this.destroy$))
|
.pipe(takeUntil(this.destroy$))
|
||||||
.subscribe(() => this.updateFormEnableState(this.isSlaveEnabled));
|
.subscribe(type => {
|
||||||
|
this.updateFormEnableState(this.isSlaveEnabled);
|
||||||
|
this.updateMethodType(type);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateMethodType(type: ModbusProtocolType): void {
|
||||||
|
if (this.slaveConfigFormGroup.get('method').value !== ModbusMethodType.RTU) {
|
||||||
|
this.slaveConfigFormGroup.get('method').patchValue(
|
||||||
|
type === ModbusProtocolType.Serial
|
||||||
|
? ModbusSerialMethodType.ASCII
|
||||||
|
: ModbusMethodType.SOCKET,
|
||||||
|
{emitEvent: false}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private observeFormEnable(): void {
|
private observeFormEnable(): void {
|
||||||
|
|||||||
@ -201,7 +201,21 @@ export class ModbusSlaveDialogComponent extends DialogComponent<ModbusSlaveDialo
|
|||||||
private observeTypeChange(): void {
|
private observeTypeChange(): void {
|
||||||
this.slaveConfigFormGroup.get('type').valueChanges
|
this.slaveConfigFormGroup.get('type').valueChanges
|
||||||
.pipe(takeUntil(this.destroy$))
|
.pipe(takeUntil(this.destroy$))
|
||||||
.subscribe(type => this.updateControlsEnabling(type));
|
.subscribe(type => {
|
||||||
|
this.updateControlsEnabling(type);
|
||||||
|
this.updateMethodType(type);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateMethodType(type: ModbusProtocolType): void {
|
||||||
|
if (this.slaveConfigFormGroup.get('method').value !== ModbusMethodType.RTU) {
|
||||||
|
this.slaveConfigFormGroup.get('method').patchValue(
|
||||||
|
type === ModbusProtocolType.Serial
|
||||||
|
? ModbusSerialMethodType.ASCII
|
||||||
|
: ModbusMethodType.SOCKET,
|
||||||
|
{emitEvent: false}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateControlsEnabling(type: ModbusProtocolType): void {
|
private updateControlsEnabling(type: ModbusProtocolType): void {
|
||||||
|
|||||||
@ -36,8 +36,8 @@
|
|||||||
<div class="tb-form-row space-between tb-flex">
|
<div class="tb-form-row space-between tb-flex">
|
||||||
<div class="fixed-title-width" translate>gateway.attributes</div>
|
<div class="fixed-title-width" translate>gateway.attributes</div>
|
||||||
<div class="tb-flex ellipsis-chips-container">
|
<div class="tb-flex ellipsis-chips-container">
|
||||||
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.ATTRIBUTES, register)" class="tb-flex">
|
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.ATTRIBUTES, register).value" class="tb-flex">
|
||||||
<mat-chip *ngFor="let attribute of getValueGroup(ModbusValueKey.ATTRIBUTES, register)">
|
<mat-chip *ngFor="let attribute of getValueGroup(ModbusValueKey.ATTRIBUTES, register).value">
|
||||||
{{ attribute.tag }}
|
{{ attribute.tag }}
|
||||||
</mat-chip>
|
</mat-chip>
|
||||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||||
@ -57,8 +57,8 @@
|
|||||||
<div class="tb-form-row space-between tb-flex">
|
<div class="tb-form-row space-between tb-flex">
|
||||||
<div class="fixed-title-width" translate>gateway.timeseries</div>
|
<div class="fixed-title-width" translate>gateway.timeseries</div>
|
||||||
<div class="tb-flex ellipsis-chips-container">
|
<div class="tb-flex ellipsis-chips-container">
|
||||||
<mat-chip-listbox class="tb-flex" [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.TIMESERIES, register)">
|
<mat-chip-listbox class="tb-flex" [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.TIMESERIES, register).value">
|
||||||
<mat-chip *ngFor="let telemetry of getValueGroup(ModbusValueKey.TIMESERIES, register)">
|
<mat-chip *ngFor="let telemetry of getValueGroup(ModbusValueKey.TIMESERIES, register).value">
|
||||||
{{ telemetry.tag }}
|
{{ telemetry.tag }}
|
||||||
</mat-chip>
|
</mat-chip>
|
||||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||||
@ -78,8 +78,8 @@
|
|||||||
<div class="tb-form-row space-between tb-flex">
|
<div class="tb-form-row space-between tb-flex">
|
||||||
<div class="fixed-title-width" translate>gateway.attribute-updates</div>
|
<div class="fixed-title-width" translate>gateway.attribute-updates</div>
|
||||||
<div class="tb-flex ellipsis-chips-container">
|
<div class="tb-flex ellipsis-chips-container">
|
||||||
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.ATTRIBUTES_UPDATES, register)" class="tb-flex">
|
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.ATTRIBUTES_UPDATES, register).value" class="tb-flex">
|
||||||
<mat-chip *ngFor="let attributeUpdate of getValueGroup(ModbusValueKey.ATTRIBUTES_UPDATES, register)">
|
<mat-chip *ngFor="let attributeUpdate of getValueGroup(ModbusValueKey.ATTRIBUTES_UPDATES, register).value">
|
||||||
{{ attributeUpdate.tag }}
|
{{ attributeUpdate.tag }}
|
||||||
</mat-chip>
|
</mat-chip>
|
||||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||||
@ -99,8 +99,8 @@
|
|||||||
<div class="tb-form-row space-between tb-flex">
|
<div class="tb-form-row space-between tb-flex">
|
||||||
<div class="fixed-title-width" translate>gateway.rpc-requests</div>
|
<div class="fixed-title-width" translate>gateway.rpc-requests</div>
|
||||||
<div class="tb-flex ellipsis-chips-container">
|
<div class="tb-flex ellipsis-chips-container">
|
||||||
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.RPC_REQUESTS, register)" class="tb-flex">
|
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.RPC_REQUESTS, register).value" class="tb-flex">
|
||||||
<mat-chip *ngFor="let rpcRequest of getValueGroup(ModbusValueKey.RPC_REQUESTS, register)">
|
<mat-chip *ngFor="let rpcRequest of getValueGroup(ModbusValueKey.RPC_REQUESTS, register).value">
|
||||||
{{ rpcRequest.tag }}
|
{{ rpcRequest.tag }}
|
||||||
</mat-chip>
|
</mat-chip>
|
||||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||||
|
|||||||
@ -161,7 +161,9 @@ export class ModbusValuesComponent implements ControlValueAccessor, Validator, O
|
|||||||
}
|
}
|
||||||
|
|
||||||
getValueGroup(valueKey: ModbusValueKey, register?: ModbusRegisterType): FormGroup {
|
getValueGroup(valueKey: ModbusValueKey, register?: ModbusRegisterType): FormGroup {
|
||||||
return register ? this.valuesFormGroup.get(register).get(valueKey).value : this.valuesFormGroup.get(valueKey).value;
|
return register
|
||||||
|
? this.valuesFormGroup.get(register).get(valueKey) as FormGroup
|
||||||
|
: this.valuesFormGroup.get(valueKey) as FormGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
manageKeys($event: Event, matButton: MatButton, keysType: ModbusValueKey, register?: ModbusRegisterType): void {
|
manageKeys($event: Event, matButton: MatButton, keysType: ModbusValueKey, register?: ModbusRegisterType): void {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user