Browse Source

Added gateway connectors synced save adjustments

pull/11350/head
mpetrov 2 years ago
parent
commit
779cfea5ca
  1. 18
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/mqtt-basic-config/mqtt-basic-config.component.ts
  2. 33
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-connectors.component.ts
  3. 2
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-widget.models.ts

18
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/mqtt-basic-config/mqtt-basic-config.component.ts

@ -84,7 +84,7 @@ export class MqttBasicConfigComponent implements ControlValueAccessor, Validator
mappingTypes = MappingType;
basicFormGroup: FormGroup;
private onChange: (value: string) => void;
private onChange: (value: MQTTBasicConfig) => void;
private onTouched: () => void;
private destroy$ = new Subject<void>();
@ -100,7 +100,7 @@ export class MqttBasicConfigComponent implements ControlValueAccessor, Validator
this.basicFormGroup.valueChanges
.pipe(takeUntil(this.destroy$))
.subscribe(value => {
this.onChange(value);
this.onChange(this.getMappedMQTTConfig(value));
this.onTouched();
});
}
@ -110,7 +110,7 @@ export class MqttBasicConfigComponent implements ControlValueAccessor, Validator
this.destroy$.complete();
}
registerOnChange(fn: (value: string) => void): void {
registerOnChange(fn: (value: MQTTBasicConfig) => void): void {
this.onChange = fn;
}
@ -135,6 +135,18 @@ export class MqttBasicConfigComponent implements ControlValueAccessor, Validator
this.basicFormGroup.setValue(editedBase, {emitEvent: false});
}
private getMappedMQTTConfig(basicConfig: MQTTBasicConfig): MQTTBasicConfig {
const { broker, workers, dataMapping, requestsMapping } = basicConfig || {};
return workers ? {
dataMapping,
requestsMapping,
broker: {
...broker,
...workers,
}
} : basicConfig;
}
validate(): ValidationErrors | null {
return this.basicFormGroup.valid ? null : {
basicFormGroup: {valid: false}

33
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-connectors.component.ts

@ -60,7 +60,7 @@ import {
} from './gateway-widget.models';
import { MatDialog } from '@angular/material/dialog';
import { AddConnectorDialogComponent } from '@home/components/widget/lib/gateway/dialog/add-connector-dialog.component';
import { debounceTime, take, takeUntil, tap } from 'rxjs/operators';
import { debounceTime, filter, take, takeUntil, tap } from 'rxjs/operators';
import { ErrorStateMatcher } from '@angular/material/core';
import { PageData } from '@shared/models/page/page-data';
@ -133,6 +133,8 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
private basicConfigSub: Subscription;
private connectorUpdateInProgress = false;
private subscriptionOptions: WidgetSubscriptionOptions = {
callbacks: {
onDataUpdated: () => this.ctx.ngZone.run(() => {
@ -210,6 +212,7 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
});
this.connectorForm.get('configurationJson').valueChanges.pipe(
filter(() => !this.connectorUpdateInProgress),
takeUntil(this.destroy$)
).subscribe((config) => {
const basicConfig = this.connectorForm.get('basicConfig');
@ -275,7 +278,7 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
}
saveConnector(): void {
const value = this.connectorForm.get('type').value === ConnectorType.MQTT ? this.getMappedMQTTValue() : this.connectorForm.value;
const value = { ...this.connectorForm.value };
value.configuration = camelCase(value.name) + '.json';
delete value.basicConfig;
if (value.type !== ConnectorType.GRPC) {
@ -336,20 +339,6 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
});
}
private getMappedMQTTValue(): GatewayConnector {
const value = this.connectorForm.value;
return {
...value,
configurationJson: {
...value.configurationJson,
broker: {
...value.configurationJson.broker,
...value.configurationJson.workers,
}
}
};
}
private updateData(reload: boolean = false): void {
this.pageLink.sortOrder.property = this.sort.active;
this.pageLink.sortOrder.direction = Direction[this.sort.direction.toUpperCase()];
@ -383,7 +372,9 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
}
const sharedIndex = this.sharedAttributeData.findIndex(data => {
const sharedData = data.value;
return sharedData.name === connectorData.name && sharedData.ts && sharedData.ts <= connectorData.ts;
return sharedData.name === connectorData.name
&& sharedData.ts && sharedData.ts <= connectorData.ts
&& isEqual(sharedData.value, connectorData.value);
});
return sharedIndex !== -1;
}
@ -684,6 +675,7 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
this.basicConfigSub.unsubscribe();
}
this.basicConfigSub = this.connectorForm.get('basicConfig').valueChanges.pipe(
filter(() => !this.connectorUpdateInProgress),
takeUntil(this.destroy$)
).subscribe((config) => {
const configJson = this.connectorForm.get('configurationJson');
@ -734,13 +726,16 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
case ConnectorType.MQTT:
case ConnectorType.OPCUA:
case ConnectorType.MODBUS:
this.connectorForm.get('type').patchValue(connector.type, {emitValue: false, onlySelf: true});
this.connectorForm.get('basicConfig').setValue({}, {emitEvent: false});
this.connectorUpdateInProgress = true;
if (connector.name !== this.connectorForm.value.name) {
this.connectorForm.get('basicConfig').setValue({}, {emitEvent: false});
}
setTimeout(() => {
this.connectorForm.patchValue({...connector, mode: connector.mode || ConnectorConfigurationModes.BASIC});
this.createBasicConfigWatcher();
this.connectorForm.markAsPristine();
this.connectorUpdateInProgress = false;
});
break;
default:

2
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-widget.models.ts

@ -182,7 +182,7 @@ export interface MQTTBasicConfig {
dataMapping: ConverterConnectorMapping[];
requestsMapping: Record<RequestType, RequestMappingData> | RequestMappingData[];
broker: BrokerConfig;
workers: WorkersConfig;
workers?: WorkersConfig;
}
export interface OPCBasicConfig {

Loading…
Cancel
Save