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]],
|
||||
address: [null, [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}],
|
||||
});
|
||||
this.observeKeyDataType(dataKeyFormGroup);
|
||||
@ -154,7 +154,7 @@ export class ModbusDataKeysPanelComponent implements OnInit, OnDestroy {
|
||||
type: [type, [Validators.required]],
|
||||
address: [address, [Validators.required]],
|
||||
objectsCount: [objectsCount, [Validators.required]],
|
||||
functionCode: [functionCode, [Validators.required]],
|
||||
functionCode: [{ value: functionCode, disabled: !this.withFunctionCode }, [Validators.required]],
|
||||
id: [{ value: generateSecret(5), disabled: true }],
|
||||
});
|
||||
}
|
||||
@ -164,10 +164,18 @@ export class ModbusDataKeysPanelComponent implements OnInit, OnDestroy {
|
||||
if (!this.editableDataTypes.includes(dataType)) {
|
||||
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[] {
|
||||
if (this.keysType === ModbusValueKey.ATTRIBUTES_UPDATES) {
|
||||
return dataType === ModbusDataType.STRING
|
||||
|
||||
@ -175,7 +175,21 @@ export class ModbusSlaveConfigComponent implements ControlValueAccessor, Validat
|
||||
private observeTypeChange(): void {
|
||||
this.slaveConfigFormGroup.get('type').valueChanges
|
||||
.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 {
|
||||
|
||||
@ -201,7 +201,21 @@ export class ModbusSlaveDialogComponent extends DialogComponent<ModbusSlaveDialo
|
||||
private observeTypeChange(): void {
|
||||
this.slaveConfigFormGroup.get('type').valueChanges
|
||||
.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 {
|
||||
|
||||
@ -36,8 +36,8 @@
|
||||
<div class="tb-form-row space-between tb-flex">
|
||||
<div class="fixed-title-width" translate>gateway.attributes</div>
|
||||
<div class="tb-flex ellipsis-chips-container">
|
||||
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.ATTRIBUTES, register)" class="tb-flex">
|
||||
<mat-chip *ngFor="let attribute of getValueGroup(ModbusValueKey.ATTRIBUTES, register)">
|
||||
<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).value">
|
||||
{{ attribute.tag }}
|
||||
</mat-chip>
|
||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||
@ -57,8 +57,8 @@
|
||||
<div class="tb-form-row space-between tb-flex">
|
||||
<div class="fixed-title-width" translate>gateway.timeseries</div>
|
||||
<div class="tb-flex ellipsis-chips-container">
|
||||
<mat-chip-listbox class="tb-flex" [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.TIMESERIES, register)">
|
||||
<mat-chip *ngFor="let telemetry of 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).value">
|
||||
{{ telemetry.tag }}
|
||||
</mat-chip>
|
||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||
@ -78,8 +78,8 @@
|
||||
<div class="tb-form-row space-between tb-flex">
|
||||
<div class="fixed-title-width" translate>gateway.attribute-updates</div>
|
||||
<div class="tb-flex ellipsis-chips-container">
|
||||
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.ATTRIBUTES_UPDATES, register)" class="tb-flex">
|
||||
<mat-chip *ngFor="let attributeUpdate of getValueGroup(ModbusValueKey.ATTRIBUTES_UPDATES, register)">
|
||||
<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).value">
|
||||
{{ attributeUpdate.tag }}
|
||||
</mat-chip>
|
||||
<mat-chip class="mat-mdc-chip ellipsis-chip">
|
||||
@ -99,8 +99,8 @@
|
||||
<div class="tb-form-row space-between tb-flex">
|
||||
<div class="fixed-title-width" translate>gateway.rpc-requests</div>
|
||||
<div class="tb-flex ellipsis-chips-container">
|
||||
<mat-chip-listbox [tb-ellipsis-chip-list]="getValueGroup(ModbusValueKey.RPC_REQUESTS, register)" class="tb-flex">
|
||||
<mat-chip *ngFor="let rpcRequest of getValueGroup(ModbusValueKey.RPC_REQUESTS, register)">
|
||||
<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).value">
|
||||
{{ rpcRequest.tag }}
|
||||
</mat-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 {
|
||||
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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user