Browse Source

hints and opc-ua adjustments

pull/11427/head
mpetrov 2 years ago
parent
commit
840751b3ca
  1. 33
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/opc-server-config/opc-server-config.component.html
  2. 9
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/opc-server-config/opc-server-config.component.ts
  3. 10
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-configuration.component.html
  4. 6
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-configuration.component.ts
  5. 3
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-widget.models.ts
  6. 19
      ui-ngx/src/assets/locale/locale.constant-en_US.json
  7. 5
      ui-ngx/src/assets/metadata/connector-default-configs/opcua_asyncio.json

33
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/opc-server-config/opc-server-config.component.html

@ -69,15 +69,36 @@
</div> </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 type="number" min="1000" name="value" <input matInput type="number" min="1" name="value"
formControlName="scanPeriodInMillis" placeholder="{{ 'gateway.set' | translate }}"/> formControlName="scanPeriodInSec" placeholder="{{ 'gateway.set' | translate }}"/>
<mat-icon matSuffix <mat-icon matSuffix
matTooltipPosition="above" matTooltipPosition="above"
matTooltipClass="tb-error-tooltip" matTooltipClass="tb-error-tooltip"
[matTooltip]="'gateway.scan-period-error' | translate: {min: 1000}" [matTooltip]="'gateway.scan-period-error' | translate: {min: 1}"
*ngIf="(serverConfigFormGroup.get('scanPeriodInMillis').hasError('required') || *ngIf="(serverConfigFormGroup.get('scanPeriodInSec').hasError('required') ||
serverConfigFormGroup.get('scanPeriodInMillis').hasError('min')) && serverConfigFormGroup.get('scanPeriodInSec').hasError('min')) &&
serverConfigFormGroup.get('scanPeriodInMillis').touched" serverConfigFormGroup.get('scanPeriodInSec').touched"
class="tb-error">
warning
</mat-icon>
</mat-form-field>
</div>
</div>
<div class="tb-form-row column-xs" fxLayoutAlign="space-between center">
<div class="fixed-title-width" tb-hint-tooltip-icon="{{ 'gateway.hints.poll-period' | translate }}">
<div tbTruncateWithTooltip>{{ 'gateway.poll-period' | translate }}</div>
</div>
<div class="tb-flex no-gap">
<mat-form-field class="tb-flex no-gap" appearance="outline" subscriptSizing="dynamic">
<input matInput type="number" min="50" name="value"
formControlName="pollPeriodInMillis" placeholder="{{ 'gateway.set' | translate }}"/>
<mat-icon matSuffix
matTooltipPosition="above"
matTooltipClass="tb-error-tooltip"
[matTooltip]="'gateway.poll-period-error' | translate: {min: 50}"
*ngIf="(serverConfigFormGroup.get('pollPeriodInMillis').hasError('required') ||
serverConfigFormGroup.get('pollPeriodInMillis').hasError('min')) &&
serverConfigFormGroup.get('pollPeriodInMillis').touched"
class="tb-error"> class="tb-error">
warning warning
</mat-icon> </mat-icon>

9
ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/opc-server-config/opc-server-config.component.ts

@ -80,7 +80,8 @@ export class OpcServerConfigComponent implements ControlValueAccessor, Validator
name: ['', []], name: ['', []],
url: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]], url: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]],
timeoutInMillis: [1000, [Validators.required, Validators.min(1000)]], timeoutInMillis: [1000, [Validators.required, Validators.min(1000)]],
scanPeriodInMillis: [1000, [Validators.required, Validators.min(1000)]], scanPeriodInSec: [3600, [Validators.required, Validators.min(1)]],
pollPeriodInMillis: [5000, [Validators.required, Validators.min(50)]],
enableSubscriptions: [true, []], enableSubscriptions: [true, []],
subCheckPeriodInMillis: [100, [Validators.required, Validators.min(100)]], subCheckPeriodInMillis: [100, [Validators.required, Validators.min(100)]],
showMap: [false, []], showMap: [false, []],
@ -118,7 +119,8 @@ export class OpcServerConfigComponent implements ControlValueAccessor, Validator
writeValue(serverConfig: ServerConfig): void { writeValue(serverConfig: ServerConfig): void {
const { const {
timeoutInMillis = 1000, timeoutInMillis = 1000,
scanPeriodInMillis = 1000, scanPeriodInSec = 3600,
pollPeriodInMillis = 5000,
enableSubscriptions = true, enableSubscriptions = true,
subCheckPeriodInMillis = 100, subCheckPeriodInMillis = 100,
showMap = false, showMap = false,
@ -129,7 +131,8 @@ export class OpcServerConfigComponent implements ControlValueAccessor, Validator
this.serverConfigFormGroup.reset({ this.serverConfigFormGroup.reset({
...serverConfig, ...serverConfig,
timeoutInMillis, timeoutInMillis,
scanPeriodInMillis, scanPeriodInSec,
pollPeriodInMillis,
enableSubscriptions, enableSubscriptions,
subCheckPeriodInMillis, subCheckPeriodInMillis,
showMap, showMap,

10
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-configuration.component.html

@ -726,6 +726,10 @@
<mat-error *ngIf="gatewayConfigGroup.get('thingsboard.minPackSendDelayMS').hasError('min')"> <mat-error *ngIf="gatewayConfigGroup.get('thingsboard.minPackSendDelayMS').hasError('min')">
{{ 'gateway.min-pack-send-delay-min' | translate }} {{ 'gateway.min-pack-send-delay-min' | translate }}
</mat-error> </mat-error>
<mat-error
*ngIf="gatewayConfigGroup.get('thingsboard.minPackSendDelayMS').hasError('pattern')">
{{ 'gateway.min-pack-send-delay-min-pattern' | translate }}
</mat-error>
<mat-icon matIconSuffix style="cursor:pointer;" <mat-icon matIconSuffix style="cursor:pointer;"
matTooltip="{{ 'gateway.hints.minimal-pack-delay' | translate }}">info_outlined matTooltip="{{ 'gateway.hints.minimal-pack-delay' | translate }}">info_outlined
</mat-icon> </mat-icon>
@ -779,6 +783,9 @@
*ngIf="gatewayConfigGroup.get('thingsboard.maxPayloadSizeBytes').hasError('pattern')"> *ngIf="gatewayConfigGroup.get('thingsboard.maxPayloadSizeBytes').hasError('pattern')">
{{ 'gateway.statistics.max-payload-size-bytes-pattern' | translate }} {{ 'gateway.statistics.max-payload-size-bytes-pattern' | translate }}
</mat-error> </mat-error>
<mat-icon matIconSuffix style="cursor:pointer;"
matTooltip="{{ 'gateway.hints.max-payload-size-bytes' | translate }}">info_outlined
</mat-icon>
</mat-form-field> </mat-form-field>
</section> </section>
<section class="tb-form-row no-border no-padding tb-standard-fields column-xs"> <section class="tb-form-row no-border no-padding tb-standard-fields column-xs">
@ -797,6 +804,9 @@
*ngIf="gatewayConfigGroup.get('thingsboard.minPackSizeToSend').hasError('pattern')"> *ngIf="gatewayConfigGroup.get('thingsboard.minPackSizeToSend').hasError('pattern')">
{{ 'gateway.statistics.min-pack-size-to-send-pattern' | translate }} {{ 'gateway.statistics.min-pack-size-to-send-pattern' | translate }}
</mat-error> </mat-error>
<mat-icon matIconSuffix style="cursor:pointer;"
matTooltip="{{ 'gateway.hints.min-pack-size-to-send' | translate }}">info_outlined
</mat-icon>
</mat-form-field> </mat-form-field>
</section> </section>
</div> </div>

6
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-configuration.component.ts

@ -102,9 +102,9 @@ export class GatewayConfigurationComponent implements OnInit {
statsSendPeriodInSeconds: [3600, [Validators.required, Validators.min(60), Validators.pattern(/^-?[0-9]+$/)]], statsSendPeriodInSeconds: [3600, [Validators.required, Validators.min(60), Validators.pattern(/^-?[0-9]+$/)]],
commands: this.fb.array([], []) commands: this.fb.array([], [])
}), }),
maxPayloadSizeBytes: [1024, [Validators.required, Validators.min(1), Validators.pattern(/^-?[0-9]+$/)]], maxPayloadSizeBytes: [8196, [Validators.required, Validators.min(100), Validators.pattern(/^-?[0-9]+$/)]],
minPackSendDelayMS: [200, [Validators.required, Validators.min(0), Validators.pattern(/^-?[0-9]+$/)]], minPackSendDelayMS: [50, [Validators.required, Validators.min(10), Validators.pattern(/^-?[0-9]+$/)]],
minPackSizeToSend: [500, [Validators.required, Validators.min(1), Validators.pattern(/^-?[0-9]+$/)]], minPackSizeToSend: [500, [Validators.required, Validators.min(100), Validators.pattern(/^-?[0-9]+$/)]],
handleDeviceRenaming: [true, []], handleDeviceRenaming: [true, []],
checkingDeviceActivity: this.fb.group({ checkingDeviceActivity: this.fb.group({
checkDeviceInactivity: [false, []], checkDeviceInactivity: [false, []],

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

@ -150,7 +150,8 @@ export interface ServerConfig {
name: string; name: string;
url: string; url: string;
timeoutInMillis: number; timeoutInMillis: number;
scanPeriodInMillis: number; scanPeriodInSec: number;
pollPeriodInMillis: number;
enableSubscriptions: boolean; enableSubscriptions: boolean;
subCheckPeriodInMillis: number; subCheckPeriodInMillis: number;
showMap: boolean; showMap: boolean;

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

@ -3016,7 +3016,8 @@
"method-required": "Method name is required.", "method-required": "Method name is required.",
"min-pack-send-delay": "Min pack send delay (in ms)", "min-pack-send-delay": "Min pack send delay (in ms)",
"min-pack-send-delay-required": "Min pack send delay is required", "min-pack-send-delay-required": "Min pack send delay is required",
"min-pack-send-delay-min": "Min pack send delay can not be less then 0", "min-pack-send-delay-min": "Min pack send delay can not be less then 10",
"min-pack-send-delay-pattern": "Min pack send delay is not valid",
"mode": "Mode", "mode": "Mode",
"model-name": "Model name", "model-name": "Model name",
"mqtt-version": "MQTT version", "mqtt-version": "MQTT version",
@ -3040,6 +3041,7 @@
"password-required": "Password is required.", "password-required": "Password is required.",
"permit-without-calls": "Keep alive permit without calls", "permit-without-calls": "Keep alive permit without calls",
"poll-period": "Poll period (ms)", "poll-period": "Poll period (ms)",
"poll-period-error": "Poll period should be at least {{min}} (ms).",
"port": "Port", "port": "Port",
"port-required": "Port is required.", "port-required": "Port is required.",
"port-limits-error": "Port should be number from {{min}} to {{max}}.", "port-limits-error": "Port should be number from {{min}} to {{max}}.",
@ -3176,8 +3178,8 @@
"without-response": "Without response", "without-response": "Without response",
"other": "Other", "other": "Other",
"save-tip": "Save configuration file", "save-tip": "Save configuration file",
"scan-period": "Scan period (ms)", "scan-period": "Scan period (s)",
"scan-period-error": "Scan period should be at least {{min}} (ms).", "scan-period-error": "Scan period should be at least {{min}} (s).",
"sub-check-period": "Subscription check period (ms)", "sub-check-period": "Subscription check period (ms)",
"sub-check-period-error": "Subscription check period should be at least {{min}} (ms).", "sub-check-period-error": "Subscription check period should be at least {{min}} (ms).",
"security": "Security", "security": "Security",
@ -3221,11 +3223,11 @@
"check-connectors-configuration": "Check connectors configuration (in sec)", "check-connectors-configuration": "Check connectors configuration (in sec)",
"max-payload-size-bytes": "Max payload size in bytes", "max-payload-size-bytes": "Max payload size in bytes",
"max-payload-size-bytes-required": "Max payload size in bytes is required", "max-payload-size-bytes-required": "Max payload size in bytes is required",
"max-payload-size-bytes-min": "Max payload size in bytes can not be less then 1", "max-payload-size-bytes-min": "Max payload size in bytes can not be less then 100",
"max-payload-size-bytes-pattern": "Max payload size in bytes is not valid", "max-payload-size-bytes-pattern": "Max payload size in bytes is not valid",
"min-pack-size-to-send": "Min packet size to send", "min-pack-size-to-send": "Min packet size to send",
"min-pack-size-to-send-required": "Min packet size to send is required", "min-pack-size-to-send-required": "Min packet size to send is required",
"min-pack-size-to-send-min": "Min packet size to send can not be less then 1", "min-pack-size-to-send-min": "Min packet size to send can not be less then 100",
"min-pack-size-to-send-pattern": "Min packet size to send is not valid", "min-pack-size-to-send-pattern": "Min packet size to send is not valid",
"check-connectors-configuration-required": "Check connectors configuration is required", "check-connectors-configuration-required": "Check connectors configuration is required",
"check-connectors-configuration-min": "Check connectors configuration can not be less then 1", "check-connectors-configuration-min": "Check connectors configuration can not be less then 1",
@ -3387,12 +3389,15 @@
"file": "Your data will be stored in separated files and will be saved even after the gateway restart.", "file": "Your data will be stored in separated files and will be saved even after the gateway restart.",
"sqlite": "Your data will be stored in file based database. And will be saved even after the gateway restart.", "sqlite": "Your data will be stored in file based database. And will be saved even after the gateway restart.",
"opc-timeout": "Timeout in milliseconds for connecting to OPC-UA server.", "opc-timeout": "Timeout in milliseconds for connecting to OPC-UA server.",
"scan-period": "Period in milliseconds to rescan the server.", "scan-period": "Period in seconds to rescan the server.",
"sub-check-period": "Period to check the subscriptions in the OPC-UA server.", "sub-check-period": "Period to check the subscriptions in the OPC-UA server.",
"enable-subscription": "If true - the gateway will subscribe to interesting nodes and wait for data update and if false - the gateway will rescan OPC-UA server every scanPeriodInMillis.", "enable-subscription": "If true - the gateway will subscribe to interesting nodes and wait for data update and if false - the gateway will rescan OPC-UA server every scanPeriodInSec.",
"show-map": "Show nodes on scanning.", "show-map": "Show nodes on scanning.",
"method-name": "Name of method on OPC-UA server.", "method-name": "Name of method on OPC-UA server.",
"arguments": "Arguments for the method (will be overwritten by arguments from the RPC request).", "arguments": "Arguments for the method (will be overwritten by arguments from the RPC request).",
"min-pack-size-to-send": "Minimum package size for sending.",
"max-payload-size-bytes": "Maximum package size in bytes",
"poll-period": "Period in milliseconds to read data from nodes.",
"modbus": { "modbus": {
"framer-type": "Type of a framer (Socket, RTU, or ASCII), if needed.", "framer-type": "Type of a framer (Socket, RTU, or ASCII), if needed.",
"host": "Hostname or IP address of Modbus server.", "host": "Hostname or IP address of Modbus server.",

5
ui-ngx/src/assets/metadata/connector-default-configs/opcua_asyncio.json

@ -3,7 +3,8 @@
"name": "OPC-UA Default Server", "name": "OPC-UA Default Server",
"url": "localhost:4840/freeopcua/server/", "url": "localhost:4840/freeopcua/server/",
"timeoutInMillis": 5000, "timeoutInMillis": 5000,
"scanPeriodInMillis": 5000, "scanPeriodInSec": 3600,
"pollPeriodInMillis": 5000,
"disableSubscriptions": false, "disableSubscriptions": false,
"subCheckPeriodInMillis": 100, "subCheckPeriodInMillis": 100,
"showMap": false, "showMap": false,
@ -49,4 +50,4 @@
} }
] ]
} }
} }

Loading…
Cancel
Save