Browse Source

review comments adjustments

pull/11235/head
mpetrov 2 years ago
parent
commit
e87f00957f
  1. 7
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-basic-config/modbus-basic-config.component.ts
  2. 13
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-data-keys-panel/modbus-data-keys-panel.component.html
  3. 13
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.html
  4. 24
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.html
  5. 2
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.ts
  6. 4
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/mqtt-basic-config/mqtt-basic-config.component.ts
  7. 4
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/opc-ua-basic-config/opc-ua-basic-config.component.ts
  8. 3
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-connectors.component.ts
  9. 26
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-widget.models.ts
  10. 12
      ui-ngx/src/app/shared/abstract/datasource/datasource.abstract.ts
  11. 5
      ui-ngx/src/app/shared/directives/ellipsis-chip-list/ellipsis-chip-list.directive.ts
  12. 4
      ui-ngx/src/assets/locale/locale.constant-en_US.json

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

@ -24,10 +24,7 @@ import {
ValidationErrors, ValidationErrors,
Validator, Validator,
} from '@angular/forms'; } from '@angular/forms';
import { import { ConnectorType, ModbusBasicConfig } from '@home/components/widget/lib/gateway/gateway-widget.models';
ConnectorBaseConfig,
ConnectorType,
} from '@home/components/widget/lib/gateway/gateway-widget.models';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
@ -112,7 +109,7 @@ export class ModbusBasicConfigComponent implements ControlValueAccessor, Validat
this.onTouched = fn; this.onTouched = fn;
} }
writeValue(basicConfig: ConnectorBaseConfig): void { writeValue(basicConfig: ModbusBasicConfig): void {
const editedBase = { const editedBase = {
slave: basicConfig.slave || {}, slave: basicConfig.slave || {},
master: basicConfig.master || {}, master: basicConfig.master || {},

13
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-data-keys-panel/modbus-data-keys-panel.component.html

@ -33,7 +33,7 @@
</mat-expansion-panel-header> </mat-expansion-panel-header>
<ng-template matExpansionPanelContent> <ng-template matExpansionPanelContent>
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> <div class="tb-form-row column-xs" fxLayoutAlign="space-between center">
<div class="fixed-title-width" translate> <div class="fixed-title-width tb-required" translate>
gateway.key gateway.key
</div> </div>
<div class="tb-flex no-gap"> <div class="tb-flex no-gap">
@ -98,10 +98,19 @@
</div> </div>
</div> </div>
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> <div class="tb-form-row column-xs" fxLayoutAlign="space-between center">
<div class="fixed-title-width" translate>gateway.value</div> <div class="fixed-title-width tb-required" translate>gateway.value</div>
<div class="tb-flex no-gap"> <div class="tb-flex no-gap">
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> <mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic">
<input matInput name="value" formControlName="value" placeholder="{{ 'gateway.set' | translate }}"/> <input matInput name="value" formControlName="value" placeholder="{{ 'gateway.set' | translate }}"/>
<mat-icon matSuffix
matTooltipPosition="above"
matTooltipClass="tb-error-tooltip"
[matTooltip]="('gateway.value-required') | translate"
*ngIf="keyControl.get('value').hasError('required') &&
keyControl.get('value').touched"
class="tb-error">
warning
</mat-icon>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>

13
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.html

@ -68,10 +68,21 @@
</div> </div>
<ng-template #serialPort> <ng-template #serialPort>
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> <div class="tb-form-row column-xs" fxLayoutAlign="space-between center">
<div class="fixed-title-width" translate>gateway.port</div> <div class="fixed-title-width tb-required" translate>gateway.port</div>
<div class="tb-flex no-gap"> <div class="tb-flex no-gap">
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> <mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic">
<input matInput name="value" formControlName="serialPort" placeholder="{{ 'gateway.set' | translate }}"/> <input matInput name="value" formControlName="serialPort" placeholder="{{ 'gateway.set' | translate }}"/>
<mat-icon matSuffix
matTooltipPosition="above"
matTooltipClass="tb-error-tooltip"
[matTooltip]="slaveConfigFormGroup.get('serialPort') | getGatewayPortTooltip"
*ngIf="(slaveConfigFormGroup.get('serialPort').hasError('required') ||
slaveConfigFormGroup.get('serialPort').hasError('min') ||
slaveConfigFormGroup.get('serialPort').hasError('max')) &&
slaveConfigFormGroup.get('serialPort').touched"
class="tb-error">
warning
</mat-icon>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>

24
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.html

@ -28,10 +28,19 @@
</mat-toolbar> </mat-toolbar>
<div mat-dialog-content [formGroup]="slaveConfigFormGroup" class="tb-form-panel"> <div mat-dialog-content [formGroup]="slaveConfigFormGroup" class="tb-form-panel">
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> <div class="tb-form-row column-xs" fxLayoutAlign="space-between center">
<div class="fixed-title-width" translate>gateway.name</div> <div class="fixed-title-width tb-required" translate>gateway.name</div>
<div class="tb-flex no-gap"> <div class="tb-flex no-gap">
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> <mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic">
<input matInput name="value" formControlName="name" placeholder="{{ 'gateway.set' | translate }}"/> <input matInput name="value" formControlName="name" placeholder="{{ 'gateway.set' | translate }}"/>
<mat-icon matSuffix
matTooltipPosition="above"
matTooltipClass="tb-error-tooltip"
[matTooltip]="('gateway.name-required') | translate"
*ngIf="slaveConfigFormGroup.get('name').hasError('required') &&
slaveConfigFormGroup.get('name').touched"
class="tb-error">
warning
</mat-icon>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@ -89,10 +98,21 @@
</div> </div>
<ng-template #serialPort> <ng-template #serialPort>
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> <div class="tb-form-row column-xs" fxLayoutAlign="space-between center">
<div class="fixed-title-width" translate>gateway.port</div> <div class="fixed-title-width tb-required" translate>gateway.port</div>
<div class="tb-flex no-gap"> <div class="tb-flex no-gap">
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> <mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic">
<input matInput name="value" formControlName="serialPort" placeholder="{{ 'gateway.set' | translate }}"/> <input matInput name="value" formControlName="serialPort" placeholder="{{ 'gateway.set' | translate }}"/>
<mat-icon matSuffix
matTooltipPosition="above"
matTooltipClass="tb-error-tooltip"
[matTooltip]="slaveConfigFormGroup.get('serialPort') | getGatewayPortTooltip"
*ngIf="(slaveConfigFormGroup.get('serialPort').hasError('required') ||
slaveConfigFormGroup.get('serialPort').hasError('min') ||
slaveConfigFormGroup.get('serialPort').hasError('max')) &&
slaveConfigFormGroup.get('serialPort').touched"
class="tb-error">
warning
</mat-icon>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>

2
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.ts

@ -118,7 +118,7 @@ export class ModbusSlaveDialogComponent extends DialogComponent<ModbusSlaveDialo
type: [ModbusProtocolType.TCP, [Validators.required]], type: [ModbusProtocolType.TCP, [Validators.required]],
host: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]], host: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]],
port: [null, [Validators.required, Validators.min(PortLimits.MIN), Validators.max(PortLimits.MAX)]], port: [null, [Validators.required, Validators.min(PortLimits.MIN), Validators.max(PortLimits.MAX)]],
serialPort: ['', [Validators.pattern(noLeadTrailSpacesRegex)]], serialPort: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]],
method: [ModbusMethodType.SOCKET, []], method: [ModbusMethodType.SOCKET, []],
baudrate: [null, []], baudrate: [null, []],
stopbits: [null, []], stopbits: [null, []],

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

@ -25,8 +25,8 @@ import {
Validator, Validator,
} from '@angular/forms'; } from '@angular/forms';
import { import {
ConnectorBaseConfig,
MappingType, MappingType,
MQTTBasicConfig,
RequestMappingData, RequestMappingData,
RequestType, RequestType,
} from '@home/components/widget/lib/gateway/gateway-widget.models'; } from '@home/components/widget/lib/gateway/gateway-widget.models';
@ -112,7 +112,7 @@ export class MqttBasicConfigComponent implements ControlValueAccessor, Validator
this.onTouched = fn; this.onTouched = fn;
} }
writeValue(basicConfig: ConnectorBaseConfig): void { writeValue(basicConfig: MQTTBasicConfig): void {
const editedBase = { const editedBase = {
workers: { workers: {
maxNumberOfWorkers: basicConfig.broker?.maxNumberOfWorkers, maxNumberOfWorkers: basicConfig.broker?.maxNumberOfWorkers,

4
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/opc-ua-basic-config/opc-ua-basic-config.component.ts

@ -25,9 +25,9 @@ import {
Validator, Validator,
} from '@angular/forms'; } from '@angular/forms';
import { import {
ConnectorBaseConfig,
ConnectorType, ConnectorType,
MappingType, MappingType,
OPCBasicConfig,
} from '@home/components/widget/lib/gateway/gateway-widget.models'; } from '@home/components/widget/lib/gateway/gateway-widget.models';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
@ -109,7 +109,7 @@ export class OpcUaBasicConfigComponent implements ControlValueAccessor, Validato
this.onTouched = fn; this.onTouched = fn;
} }
writeValue(basicConfig: ConnectorBaseConfig): void { writeValue(basicConfig: OPCBasicConfig): void {
const editedBase = { const editedBase = {
server: basicConfig.server || {}, server: basicConfig.server || {},
mapping: basicConfig.mapping || [], mapping: basicConfig.mapping || [],

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

@ -50,6 +50,7 @@ import { UtilsService } from '@core/services/utils.service';
import { EntityType } from '@shared/models/entity-type.models'; import { EntityType } from '@shared/models/entity-type.models';
import { import {
AddConnectorConfigData, AddConnectorConfigData,
ConnectorBaseConfig,
ConnectorConfigurationModes, ConnectorConfigurationModes,
ConnectorType, ConnectorType,
GatewayConnector, GatewayConnector,
@ -720,7 +721,7 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
connector.key = 'auto'; connector.key = 'auto';
} }
if (!connector.configurationJson) { if (!connector.configurationJson) {
connector.configurationJson = {}; connector.configurationJson = {} as ConnectorBaseConfig;
} }
connector.basicConfig = connector.configurationJson; connector.basicConfig = connector.configurationJson;

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

@ -174,15 +174,23 @@ export interface ConnectorSecurity {
export type ConnectorMapping = DeviceConnectorMapping | RequestMappingData | ConverterConnectorMapping; export type ConnectorMapping = DeviceConnectorMapping | RequestMappingData | ConverterConnectorMapping;
export interface ConnectorBaseConfig { export type ConnectorBaseConfig = MQTTBasicConfig | OPCBasicConfig | ModbusBasicConfig;
mapping?: DeviceConnectorMapping[];
dataMapping?: ConverterConnectorMapping[]; export interface MQTTBasicConfig {
requestsMapping?: Record<RequestType, RequestMappingData> | RequestMappingData[]; dataMapping: ConverterConnectorMapping[];
server?: ServerConfig; requestsMapping: Record<RequestType, RequestMappingData> | RequestMappingData[];
broker?: BrokerConfig; broker: BrokerConfig;
workers?: WorkersConfig; workers: WorkersConfig;
master?: ModbusMasterConfig; }
slave?: ModbusSlave;
export interface OPCBasicConfig {
mapping: DeviceConnectorMapping[];
server: ServerConfig;
}
export interface ModbusBasicConfig {
master: ModbusMasterConfig;
slave: ModbusSlave;
} }
export interface WorkersConfig { export interface WorkersConfig {

12
ui-ngx/src/app/shared/abstract/datasource/datasource.abstract.ts

@ -18,11 +18,11 @@ import { DataSource } from '@angular/cdk/collections';
import { BehaviorSubject, Observable } from 'rxjs'; import { BehaviorSubject, Observable } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
export abstract class TbDatasource<DataType> implements DataSource<DataType> { export abstract class TbDatasource<T> implements DataSource<T> {
protected dataSubject = new BehaviorSubject<Array<DataType>>([]); protected dataSubject = new BehaviorSubject<Array<T>>([]);
connect(): Observable<Array<DataType>> { connect(): Observable<Array<T>> {
return this.dataSubject.asObservable(); return this.dataSubject.asObservable();
} }
@ -30,19 +30,19 @@ export abstract class TbDatasource<DataType> implements DataSource<DataType> {
this.dataSubject.complete(); this.dataSubject.complete();
} }
loadData(data: Array<DataType>): void { loadData(data: Array<T>): void {
this.dataSubject.next(data); this.dataSubject.next(data);
} }
isEmpty(): Observable<boolean> { isEmpty(): Observable<boolean> {
return this.dataSubject.pipe( return this.dataSubject.pipe(
map((data: DataType[]) => !data.length) map((data: T[]) => !data.length)
); );
} }
total(): Observable<number> { total(): Observable<number> {
return this.dataSubject.pipe( return this.dataSubject.pipe(
map((data: DataType[]) => data.length) map((data: T[]) => data.length)
); );
} }
} }

5
ui-ngx/src/app/shared/directives/ellipsis-chip-list/ellipsis-chip-list.directive.ts

@ -21,7 +21,6 @@ import {
Input, Input,
OnDestroy, OnDestroy,
Renderer2, Renderer2,
AfterViewInit,
} from '@angular/core'; } from '@angular/core';
import { isEqual } from '@core/utils'; import { isEqual } from '@core/utils';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
@ -34,7 +33,7 @@ import { takeUntil } from 'rxjs/operators';
selector: '[tb-ellipsis-chip-list]', selector: '[tb-ellipsis-chip-list]',
standalone: true, standalone: true,
}) })
export class EllipsisChipListDirective implements OnDestroy, AfterViewInit { export class EllipsisChipListDirective implements OnDestroy {
chipsValue: string[]; chipsValue: string[];
@ -70,9 +69,7 @@ export class EllipsisChipListDirective implements OnDestroy, AfterViewInit {
} }
}); });
}); });
}
ngAfterViewInit(): void {
this.intersectionObserver.observe(this.el.nativeElement); this.intersectionObserver.observe(this.el.nativeElement);
} }

4
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -2852,8 +2852,8 @@
"device-name-filter-hint": "This field supports Regular expressions to filter incoming data by device name.", "device-name-filter-hint": "This field supports Regular expressions to filter incoming data by device name.",
"device-name-filter-required": "Device name filter is required.", "device-name-filter-required": "Device name filter is required.",
"details": "Details", "details": "Details",
"delete-mapping-title": "Delete mapping ?", "delete-mapping-title": "Delete mapping?",
"delete-slave-title": "Delete slave ?", "delete-slave-title": "Delete slave?",
"download-configuration-file": "Download configuration file", "download-configuration-file": "Download configuration file",
"download-docker-compose": "Download docker-compose.yml for your gateway", "download-docker-compose": "Download docker-compose.yml for your gateway",
"enable-remote-logging": "Enable remote logging", "enable-remote-logging": "Enable remote logging",

Loading…
Cancel
Save