|
|
@ -236,108 +236,112 @@ |
|
|
</mat-label> |
|
|
</mat-label> |
|
|
</mat-slide-toggle> |
|
|
</mat-slide-toggle> |
|
|
</div> |
|
|
</div> |
|
|
<mat-expansion-panel> |
|
|
<div class="tb-form-panel stroked"> |
|
|
<mat-expansion-panel-header> |
|
|
<mat-expansion-panel class="tb-settings"> |
|
|
<mat-panel-title> |
|
|
<mat-expansion-panel-header> |
|
|
<div class="tb-form-panel-title" translate>gateway.advanced-connection-settings</div> |
|
|
<mat-panel-title> |
|
|
</mat-panel-title> |
|
|
<div class="tb-form-panel-title" translate>gateway.advanced-connection-settings</div> |
|
|
</mat-expansion-panel-header> |
|
|
</mat-panel-title> |
|
|
<div class="tb-form-panel no-border no-padding padding-top"> |
|
|
</mat-expansion-panel-header> |
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
<div class="tb-form-panel no-border no-padding padding-top"> |
|
|
<div class="fixed-title-width" translate>gateway.connection-timeout</div> |
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
<div class="tb-flex no-gap"> |
|
|
<div class="fixed-title-width" translate>gateway.connection-timeout</div> |
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
<div class="tb-flex no-gap"> |
|
|
<input matInput type="number" min="0" name="value" formControlName="timeout" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
</mat-form-field> |
|
|
<input matInput type="number" min="0" name="value" formControlName="timeout" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
|
|
|
</mat-form-field> |
|
|
|
|
|
</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.byte-order</div> |
|
|
<div class="fixed-title-width" translate>gateway.byte-order</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"> |
|
|
<mat-select formControlName="byteOrder"> |
|
|
<mat-select formControlName="byteOrder"> |
|
|
<mat-option *ngFor="let order of modbusOrderType" [value]="order">{{ order }}</mat-option> |
|
|
<mat-option *ngFor="let order of modbusOrderType" [value]="order">{{ order }}</mat-option> |
|
|
</mat-select> |
|
|
</mat-select> |
|
|
</mat-form-field> |
|
|
</mat-form-field> |
|
|
</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.word-order</div> |
|
|
<div class="fixed-title-width" translate>gateway.word-order</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"> |
|
|
<mat-select formControlName="wordOrder"> |
|
|
<mat-select formControlName="wordOrder"> |
|
|
<mat-option *ngFor="let order of modbusOrderType" [value]="order">{{ order }}</mat-option> |
|
|
<mat-option *ngFor="let order of modbusOrderType" [value]="order">{{ order }}</mat-option> |
|
|
</mat-select> |
|
|
</mat-select> |
|
|
</mat-form-field> |
|
|
</mat-form-field> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div *ngIf="this.slaveConfigFormGroup.get('type').value !== ModbusProtocolType.Serial" class="tb-form-panel stroked tb-slide-toggle"> |
|
|
<mat-expansion-panel *ngIf="this.slaveConfigFormGroup.get('security')" [expanded]="showSecurityControl.value"> |
|
|
<mat-expansion-panel class="tb-settings" [expanded]="showSecurityControl.value"> |
|
|
<mat-expansion-panel-header class="nested-expansion-header"> |
|
|
<mat-expansion-panel-header fxLayout="row wrap"> |
|
|
<mat-panel-title> |
|
|
<mat-panel-title> |
|
|
<mat-slide-toggle [formControl]="showSecurityControl" class="mat-slide" (click)="$event.stopPropagation()"> |
|
|
<mat-slide-toggle fxLayoutAlign="center" [formControl]="showSecurityControl" class="mat-slide" (click)="$event.stopPropagation()"> |
|
|
<mat-label> |
|
|
<mat-label> |
|
|
{{ 'gateway.tls-connection' | translate }} |
|
|
{{ 'gateway.tls-connection' | translate }} |
|
|
</mat-label> |
|
|
</mat-label> |
|
|
</mat-slide-toggle> |
|
|
</mat-slide-toggle> |
|
|
</mat-panel-title> |
|
|
</mat-panel-title> |
|
|
</mat-expansion-panel-header> |
|
|
</mat-expansion-panel-header> |
|
|
<tb-modbus-security-config formControlName="security"></tb-modbus-security-config> |
|
|
<tb-modbus-security-config formControlName="security"></tb-modbus-security-config> |
|
|
</mat-expansion-panel> |
|
|
</mat-expansion-panel> |
|
|
<div class="tb-form-row" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<mat-slide-toggle class="mat-slide" formControlName="retries"> |
|
|
|
|
|
<mat-label> |
|
|
|
|
|
{{ 'gateway.retries' | translate }} |
|
|
|
|
|
</mat-label> |
|
|
|
|
|
</mat-slide-toggle> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<mat-slide-toggle class="mat-slide" formControlName="retryOnEmpty"> |
|
|
|
|
|
<mat-label> |
|
|
|
|
|
{{ 'gateway.retries-on-empty' | translate }} |
|
|
|
|
|
</mat-label> |
|
|
|
|
|
</mat-slide-toggle> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<mat-slide-toggle class="mat-slide" formControlName="retryOnInvalid"> |
|
|
|
|
|
<mat-label> |
|
|
|
|
|
{{ 'gateway.retries-on-invalid' | translate }} |
|
|
|
|
|
</mat-label> |
|
|
|
|
|
</mat-slide-toggle> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<div class="fixed-title-width" translate>gateway.poll-period</div> |
|
|
|
|
|
<div class="tb-flex no-gap"> |
|
|
|
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
|
|
|
<input matInput type="number" min="0" name="value" formControlName="pollPeriod" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
|
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="tb-form-row" fxLayoutAlign="space-between center"> |
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
<mat-slide-toggle class="mat-slide" formControlName="retries"> |
|
|
<div class="fixed-title-width" translate>gateway.connect-attempt-time</div> |
|
|
<mat-label> |
|
|
<div class="tb-flex no-gap"> |
|
|
{{ 'gateway.retries' | translate }} |
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
</mat-label> |
|
|
<input matInput type="number" min="0" name="value" formControlName="connectAttemptTimeMs" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
</mat-slide-toggle> |
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="tb-form-row" fxLayoutAlign="space-between center"> |
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
<mat-slide-toggle class="mat-slide" formControlName="retryOnEmpty"> |
|
|
<div class="fixed-title-width" translate>gateway.connect-attempt-count</div> |
|
|
<mat-label> |
|
|
<div class="tb-flex no-gap"> |
|
|
{{ 'gateway.retries-on-empty' | translate }} |
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
</mat-label> |
|
|
<input matInput type="number" min="0" name="value" formControlName="connectAttemptCount" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
</mat-slide-toggle> |
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="tb-form-row" fxLayoutAlign="space-between center"> |
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
<mat-slide-toggle class="mat-slide" formControlName="retryOnInvalid"> |
|
|
<div class="fixed-title-width" translate>gateway.wait-after-failed-attempts</div> |
|
|
<mat-label> |
|
|
<div class="tb-flex no-gap"> |
|
|
{{ 'gateway.retries-on-invalid' | translate }} |
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
</mat-label> |
|
|
<input matInput type="number" min="0" name="value" formControlName="waitAfterFailedAttemptsMs" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
</mat-slide-toggle> |
|
|
</mat-form-field> |
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<div class="fixed-title-width-230" translate>gateway.poll-period</div> |
|
|
|
|
|
<div class="tb-flex no-gap"> |
|
|
|
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
|
|
|
<input matInput type="number" min="0" name="value" formControlName="pollPeriod" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
|
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<div class="fixed-title-width-230" translate>gateway.connect-attempt-time</div> |
|
|
|
|
|
<div class="tb-flex no-gap"> |
|
|
|
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
|
|
|
<input matInput type="number" min="0" name="value" formControlName="connectAttemptTimeMs" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
|
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<div class="fixed-title-width-230" translate>gateway.connect-attempt-count</div> |
|
|
|
|
|
<div class="tb-flex no-gap"> |
|
|
|
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
|
|
|
<input matInput type="number" min="0" name="value" formControlName="connectAttemptCount" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
|
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center"> |
|
|
|
|
|
<div class="fixed-title-width-230" translate>gateway.wait-after-failed-attempts</div> |
|
|
|
|
|
<div class="tb-flex no-gap"> |
|
|
|
|
|
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic"> |
|
|
|
|
|
<input matInput type="number" min="0" name="value" formControlName="waitAfterFailedAttemptsMs" placeholder="{{ 'gateway.set' | translate }}"/> |
|
|
|
|
|
</mat-form-field> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</mat-expansion-panel> |
|
|
</mat-expansion-panel> |
|
|
</div> |
|
|
<div class="tb-form-panel stroked"> |
|
|
<div class="tb-form-panel stroked"> |
|
|
<tb-modbus-values [singleMode]="true" formControlName="values"></tb-modbus-values> |
|
|
<tb-modbus-values [singleMode]="true" formControlName="values"></tb-modbus-values> |
|
|
</div> |
|
|
</div> |
|
|
|