Merge pull request #9281 from MrKartoshka/develop/3.6_minor_fix

Minor gateway fixes
This commit is contained in:
Igor Kulikov 2023-09-19 17:43:28 +03:00 committed by GitHub
commit 756a5b7d4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 6 deletions

View File

@ -632,6 +632,10 @@
*ngIf="gatewayConfigGroup.get('thingsboard.checkingDeviceActivity.inactivityTimeoutSeconds').hasError('min')"> *ngIf="gatewayConfigGroup.get('thingsboard.checkingDeviceActivity.inactivityTimeoutSeconds').hasError('min')">
{{ 'gateway.inactivity-timeout-seconds-min' | translate }} {{ 'gateway.inactivity-timeout-seconds-min' | translate }}
</mat-error> </mat-error>
<mat-error
*ngIf="gatewayConfigGroup.get('thingsboard.checkingDeviceActivity.inactivityTimeoutSeconds').hasError('pattern')">
{{ 'gateway.inactivity-timeout-seconds-pattern' | translate }}
</mat-error>
<mat-icon matIconSuffix style="cursor:pointer;" <mat-icon matIconSuffix style="cursor:pointer;"
matTooltip="{{ 'gateway.hints.inactivity-timeout' | translate }}">info_outlined matTooltip="{{ 'gateway.hints.inactivity-timeout' | translate }}">info_outlined
</mat-icon> </mat-icon>
@ -647,6 +651,10 @@
*ngIf="gatewayConfigGroup.get('thingsboard.checkingDeviceActivity.inactivityCheckPeriodSeconds').hasError('min')"> *ngIf="gatewayConfigGroup.get('thingsboard.checkingDeviceActivity.inactivityCheckPeriodSeconds').hasError('min')">
{{ 'gateway.inactivity-check-period-seconds-min' | translate }} {{ 'gateway.inactivity-check-period-seconds-min' | translate }}
</mat-error> </mat-error>
<mat-error
*ngIf="gatewayConfigGroup.get('thingsboard.checkingDeviceActivity.inactivityCheckPeriodSeconds').hasError('pattern')">
{{ 'gateway.inactivity-check-period-seconds-pattern' | translate }}
</mat-error>
<mat-icon matIconSuffix style="cursor:pointer;" <mat-icon matIconSuffix style="cursor:pointer;"
matTooltip="{{ 'gateway.hints.inactivity-period' | translate }}">info_outlined matTooltip="{{ 'gateway.hints.inactivity-period' | translate }}">info_outlined
</mat-icon> </mat-icon>

View File

@ -70,6 +70,16 @@
justify-content: flex-end; justify-content: flex-end;
flex: 1; flex: 1;
} }
mat-form-field {
mat-error {
display: none !important;
}
mat-error:first-child {
display: block !important;
}
}
} }
:host ::ng-deep { :host ::ng-deep {

View File

@ -108,8 +108,8 @@ export class GatewayConfigurationComponent implements OnInit {
handleDeviceRenaming: [true, []], handleDeviceRenaming: [true, []],
checkingDeviceActivity: this.fb.group({ checkingDeviceActivity: this.fb.group({
checkDeviceInactivity: [false, []], checkDeviceInactivity: [false, []],
inactivityTimeoutSeconds: [200, [Validators.min(1), Validators.pattern(/^[^.\s]+$/)]], inactivityTimeoutSeconds: [200, [Validators.min(1), Validators.pattern(/^-?[0-9]+$/)]],
inactivityCheckPeriodSeconds: [500, [Validators.min(1), Validators.pattern(/^[^.\s]+$/)]] inactivityCheckPeriodSeconds: [500, [Validators.min(1), Validators.pattern(/^-?[0-9]+$/)]]
}), }),
security: this.fb.group({ security: this.fb.group({
type: [SecurityTypes.ACCESS_TOKEN, [Validators.required]], type: [SecurityTypes.ACCESS_TOKEN, [Validators.required]],
@ -187,8 +187,8 @@ export class GatewayConfigurationComponent implements OnInit {
checkingDeviceActivityGroup.get('checkDeviceInactivity').valueChanges.subscribe(enabled => { checkingDeviceActivityGroup.get('checkDeviceInactivity').valueChanges.subscribe(enabled => {
checkingDeviceActivityGroup.updateValueAndValidity(); checkingDeviceActivityGroup.updateValueAndValidity();
if (enabled) { if (enabled) {
checkingDeviceActivityGroup.get('inactivityTimeoutSeconds').setValidators([Validators.min(1), Validators.required]); checkingDeviceActivityGroup.get('inactivityTimeoutSeconds').setValidators([Validators.min(1), Validators.required, Validators.pattern(/^-?[0-9]+$/)]);
checkingDeviceActivityGroup.get('inactivityCheckPeriodSeconds').setValidators([Validators.min(1), Validators.required]); checkingDeviceActivityGroup.get('inactivityCheckPeriodSeconds').setValidators([Validators.min(1), Validators.required, Validators.pattern(/^-?[0-9]+$/)]);
} else { } else {
checkingDeviceActivityGroup.get('inactivityTimeoutSeconds').clearValidators(); checkingDeviceActivityGroup.get('inactivityTimeoutSeconds').clearValidators();
checkingDeviceActivityGroup.get('inactivityCheckPeriodSeconds').clearValidators(); checkingDeviceActivityGroup.get('inactivityCheckPeriodSeconds').clearValidators();

View File

@ -486,6 +486,6 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
const connectorName = attribute.key; const connectorName = attribute.key;
const connector = this.subscription && this.subscription.data const connector = this.subscription && this.subscription.data
.find(data => data && data.dataKey.name === `${connectorName}_ERRORS_COUNT`); .find(data => data && data.dataKey.name === `${connectorName}_ERRORS_COUNT`);
return (connector && this.activeConnectors.includes(connectorName)) ? connector.data[0][1] : 'Inactive'; return (connector && this.activeConnectors.includes(connectorName)) ? (connector.data[0][1] || 0) : 'Inactive';
} }
} }

View File

@ -124,7 +124,7 @@ export const GatewayConnectorDefaultTypesTranslates = new Map<string, string>([
['ftp', 'FTP'], ['ftp', 'FTP'],
['socket', 'SOCKET'], ['socket', 'SOCKET'],
['xmpp', 'XMPP'], ['xmpp', 'XMPP'],
['ocpp', 'OCCP'], ['ocpp', 'OCPP'],
['custom', 'CUSTOM'] ['custom', 'CUSTOM']
]); ]);

View File

@ -2703,9 +2703,11 @@
"inactivity-check-period-seconds": "Inactivity check period (in sec)", "inactivity-check-period-seconds": "Inactivity check period (in sec)",
"inactivity-check-period-seconds-required": "Inactivity check period is required", "inactivity-check-period-seconds-required": "Inactivity check period is required",
"inactivity-check-period-seconds-min": "Inactivity check period can not be less then 1", "inactivity-check-period-seconds-min": "Inactivity check period can not be less then 1",
"inactivity-check-period-seconds-pattern": "Inactivity check period is not valid",
"inactivity-timeout-seconds": "Inactivity timeout (in sec)", "inactivity-timeout-seconds": "Inactivity timeout (in sec)",
"inactivity-timeout-seconds-required": "Inactivity timeout is required", "inactivity-timeout-seconds-required": "Inactivity timeout is required",
"inactivity-timeout-seconds-min": "Inactivity timeout can not be less then 1", "inactivity-timeout-seconds-min": "Inactivity timeout can not be less then 1",
"inactivity-timeout-seconds-pattern": "Inactivity timeout is not valid",
"json-parse": "Not valid JSON.", "json-parse": "Not valid JSON.",
"json-required": "Field cannot be empty.", "json-required": "Field cannot be empty.",
"logs": { "logs": {
@ -2855,6 +2857,7 @@
"password": "MQTT password for the gateway form ThingsBoard server", "password": "MQTT password for the gateway form ThingsBoard server",
"ca-cert": "Path to CA certificate file", "ca-cert": "Path to CA certificate file",
"date-form": "Date format in log message", "date-form": "Date format in log message",
"data-folder": "Path to folder, that will contains data (Relative or Absolute)",
"log-format": "Log message format", "log-format": "Log message format",
"remote-log": "Enables remote logging and logs reading from the gateway", "remote-log": "Enables remote logging and logs reading from the gateway",
"backup-count": "If backup count is > 0, when a rollover is done, no more than backup count files are kept - the oldest ones are deleted", "backup-count": "If backup count is > 0, when a rollover is done, no more than backup count files are kept - the oldest ones are deleted",