@ -16,387 +16,511 @@
-->
< section [ formGroup ] = " defaultTenantProfileConfigurationFormGroup " fxLayout = "column" >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-devices< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxDevices"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDevices').hasError('required')" >
{{ 'tenant-profile.maximum-devices-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDevices').hasError('min')" >
{{ 'tenant-profile.maximum-devices-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-assets< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxAssets"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxAssets').hasError('required')" >
{{ 'tenant-profile.maximum-assets-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxAssets').hasError('min')" >
{{ 'tenant-profile.maximum-assets-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-customers< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxCustomers"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCustomers').hasError('required')" >
{{ 'tenant-profile.maximum-customers-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCustomers').hasError('min')" >
{{ 'tenant-profile.maximum-customers-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-users< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxUsers"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxUsers').hasError('required')" >
{{ 'tenant-profile.maximum-users-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxUsers').hasError('min')" >
{{ 'tenant-profile.maximum-users-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-dashboards< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxDashboards"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDashboards').hasError('required')" >
{{ 'tenant-profile.maximum-dashboards-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDashboards').hasError('min')" >
{{ 'tenant-profile.maximum-dashboards-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-rule-chains< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxRuleChains"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleChains').hasError('required')" >
{{ 'tenant-profile.maximum-rule-chains-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleChains').hasError('min')" >
{{ 'tenant-profile.maximum-rule-chains-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-resources-sum-data-size< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxResourcesInBytes"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxResourcesInBytes').hasError('required')" >
{{ 'tenant-profile.maximum-resources-sum-data-size-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxResourcesInBytes').hasError('min')" >
{{ 'tenant-profile.maximum-resources-sum-data-size-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.maximum-ota-packages-sum-data-size< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxOtaPackagesInBytes"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxOtaPackagesInBytes').hasError('required')" >
{{ 'tenant-profile.maximum-ota-packages-sum-data-size-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxOtaPackagesInBytes').hasError('min')" >
{{ 'tenant-profile.maximum-ota-packages-sum-data-size-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-transport-messages< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxTransportMessages"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportMessages').hasError('required')" >
{{ 'tenant-profile.max-transport-messages-range' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportMessages').hasError('min')" >
{{ 'tenant-profile.max-transport-messages-required' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-transport-data-points< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxTransportDataPoints"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportDataPoints').hasError('required')" >
{{ 'tenant-profile.max-transport-data-points-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportDataPoints').hasError('min')" >
{{ 'tenant-profile.max-transport-data-points-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-r-e-executions< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxREExecutions"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxREExecutions').hasError('required')" >
{{ 'tenant-profile.max-r-e-executions-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxREExecutions').hasError('min')" >
{{ 'tenant-profile.max-r-e-executions-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-j-s-executions< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxJSExecutions"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxJSExecutions').hasError('required')" >
{{ 'tenant-profile.max-j-s-executions-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxJSExecutions').hasError('min')" >
{{ 'tenant-profile.max-j-s-executions-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-d-p-storage-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxDPStorageDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDPStorageDays').hasError('required')" >
{{ 'tenant-profile.max-d-p-storage-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDPStorageDays').hasError('min')" >
{{ 'tenant-profile.max-d-p-storage-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.default-storage-ttl-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="defaultStorageTtlDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('defaultStorageTtlDays').hasError('required')" >
{{ 'tenant-profile.default-storage-ttl-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('defaultStorageTtlDays').hasError('min')" >
{{ 'tenant-profile.default-storage-ttl-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.alarms-ttl-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="alarmsTtlDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('alarmsTtlDays').hasError('required')" >
{{ 'tenant-profile.alarms-ttl-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('alarmsTtlDays').hasError('min')" >
{{ 'tenant-profile.alarms-ttl-days-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.rpc-ttl-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="rpcTtlDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('rpcTtlDays').hasError('required')" >
{{ 'tenant-profile.rpc-ttl-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('rpcTtlDays').hasError('min')" >
{{ 'tenant-profile.rpc-ttl-days-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-rule-node-executions-per-message< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxRuleNodeExecutionsPerMessage"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleNodeExecutionsPerMessage').hasError('required')" >
{{ 'tenant-profile.max-rule-node-executions-per-message-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleNodeExecutionsPerMessage').hasError('min')" >
{{ 'tenant-profile.max-rule-node-executions-per-message-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-emails< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxEmails"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxEmails').hasError('required')" >
{{ 'tenant-profile.max-emails-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxEmails').hasError('min')" >
{{ 'tenant-profile.max-emails-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-sms< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxSms"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxSms').hasError('required')" >
{{ 'tenant-profile.max-sms-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxSms').hasError('min')" >
{{ 'tenant-profile.max-sms-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.max-created-alarms< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxCreatedAlarms"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCreatedAlarms').hasError('required')" >
{{ 'tenant-profile.max-created-alarms-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCreatedAlarms').hasError('min')" >
{{ 'tenant-profile.max-created-alarms-range' | translate}}
< / mat-error >
< / mat-form-field >
< fieldset class = "fields-group" >
< legend class = "group-title" >
{{ 'tenant-profile.entities' | translate }} < span translate > tenant-profile.unlimited< / span >
< / legend >
< div class = "fields-element" fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-devices< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxDevices"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDevices').hasError('required')" >
{{ 'tenant-profile.maximum-devices-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDevices').hasError('min')" >
{{ 'tenant-profile.maximum-devices-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-dashboards< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxDashboards"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDashboards').hasError('required')" >
{{ 'tenant-profile.maximum-dashboards-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDashboards').hasError('min')" >
{{ 'tenant-profile.maximum-dashboards-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-assets< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxAssets"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxAssets').hasError('required')" >
{{ 'tenant-profile.maximum-assets-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxAssets').hasError('min')" >
{{ 'tenant-profile.maximum-assets-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-users< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxUsers"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxUsers').hasError('required')" >
{{ 'tenant-profile.maximum-users-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxUsers').hasError('min')" >
{{ 'tenant-profile.maximum-users-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< mat-expansion-panel class = "configuration-panel" >
< mat-expansion-panel-header >
< mat-panel-description fxLayoutAlign = "end" translate >
tenant-profile.advanced-settings
< / mat-panel-description >
< / mat-expansion-panel-header >
< ng-template matExpansionPanelContent >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-customers< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxCustomers"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCustomers').hasError('required')" >
{{ 'tenant-profile.maximum-customers-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCustomers').hasError('min')" >
{{ 'tenant-profile.maximum-customers-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-rule-chains< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxRuleChains"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleChains').hasError('required')" >
{{ 'tenant-profile.maximum-rule-chains-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleChains').hasError('min')" >
{{ 'tenant-profile.maximum-rule-chains-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< / ng-template >
< / mat-expansion-panel >
< / fieldset >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.transport-tenant-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportTenantMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.transport-tenant-telemetry-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportTenantTelemetryMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantTelemetryMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.transport-tenant-telemetry-data-points-rate-limit< / mat-label >
< input matInput formControlName = "transportTenantTelemetryDataPointsRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantTelemetryDataPointsRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.transport-device-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportDeviceMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportDeviceMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.transport-device-telemetry-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportDeviceTelemetryMsgRateLimit" >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.transport-device-telemetry-data-points-rate-limit< / mat-label >
< input matInput formControlName = "transportDeviceTelemetryDataPointsRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportDeviceTelemetryDataPointsRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.tenant-rest-limits< / mat-label >
< input matInput
formControlName="tenantServerRestLimitsConfiguration"
type="text">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('tenantServerRestLimitsConfiguration').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.customer-rest-limits< / mat-label >
< input matInput
formControlName="customerServerRestLimitsConfiguration"
type="text">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('customerServerRestLimitsConfiguration').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-tenant< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerTenant" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerTenant').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-customer< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerCustomer" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerCustomer').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-regular-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerRegularUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerRegularUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-public-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerPublicUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerPublicUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-queue-per-session< / mat-label >
< input matInput type = "number" formControlName = "wsMsgQueueLimitPerSession" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('wsMsgQueueLimitPerSession').hasError('min')" >
{{ 'tenant-profile.too-small-value-one' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-tenant< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerTenant" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerTenant').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-customer< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerCustomer" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerCustomer').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-regular-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerRegularUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerRegularUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-public-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerPublicUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerPublicUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-updates-per-session< / mat-label >
< input matInput type = "text" formControlName = "wsUpdatesPerSessionRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('wsUpdatesPerSessionRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.cassandra-tenant-limits-configuration< / mat-label >
< input matInput type = "text" formControlName = "cassandraQueryTenantRateLimitsConfiguration" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('cassandraQueryTenantRateLimitsConfiguration').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.tenant-entity-export-rate-limit< / mat-label >
< input matInput formControlName = "tenantEntityExportRateLimit" >
< / mat-form-field >
< mat-form-field class = "mat-block" >
< mat-label translate > tenant-profile.tenant-entity-import-rate-limit< / mat-label >
< input matInput formControlName = "tenantEntityImportRateLimit" >
< / mat-form-field >
< fieldset class = "fields-group" >
< legend class = "group-title" >
{{ 'tenant-profile.rule-engine' | translate }} < span translate > tenant-profile.unlimited< / span >
< / legend >
< div class = "fields-element" fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-r-e-executions< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxREExecutions"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxREExecutions').hasError('required')" >
{{ 'tenant-profile.max-r-e-executions-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxREExecutions').hasError('min')" >
{{ 'tenant-profile.max-r-e-executions-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-transport-messages< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxTransportMessages"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportMessages').hasError('required')" >
{{ 'tenant-profile.max-transport-messages-range' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportMessages').hasError('min')" >
{{ 'tenant-profile.max-transport-messages-required' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< mat-expansion-panel class = "configuration-panel" >
< mat-expansion-panel-header >
< mat-panel-description fxLayoutAlign = "end" translate >
tenant-profile.advanced-settings
< / mat-panel-description >
< / mat-expansion-panel-header >
< ng-template matExpansionPanelContent >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-j-s-executions< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxJSExecutions"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxJSExecutions').hasError('required')" >
{{ 'tenant-profile.max-j-s-executions-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxJSExecutions').hasError('min')" >
{{ 'tenant-profile.max-j-s-executions-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-transport-data-points< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxTransportDataPoints"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportDataPoints').hasError('required')" >
{{ 'tenant-profile.max-transport-data-points-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxTransportDataPoints').hasError('min')" >
{{ 'tenant-profile.max-transport-data-points-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-rule-node-executions-per-message< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxRuleNodeExecutionsPerMessage"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleNodeExecutionsPerMessage').hasError('required')" >
{{ 'tenant-profile.max-rule-node-executions-per-message-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxRuleNodeExecutionsPerMessage').hasError('min')" >
{{ 'tenant-profile.max-rule-node-executions-per-message-range' | translate}}
< / mat-error >
< / mat-form-field >
< div fxFlex > < / div >
< / div >
< / ng-template >
< / mat-expansion-panel >
< / fieldset >
< fieldset class = "fields-group" >
< legend class = "group-title" >
{{ 'tenant-profile.time-to-live' | translate }} < span translate > tenant-profile.unlimited< / span >
< / legend >
< div class = "fields-element" fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-d-p-storage-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxDPStorageDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDPStorageDays').hasError('required')" >
{{ 'tenant-profile.max-d-p-storage-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxDPStorageDays').hasError('min')" >
{{ 'tenant-profile.max-d-p-storage-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.alarms-ttl-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="alarmsTtlDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('alarmsTtlDays').hasError('required')" >
{{ 'tenant-profile.alarms-ttl-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('alarmsTtlDays').hasError('min')" >
{{ 'tenant-profile.alarms-ttl-days-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.default-storage-ttl-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="defaultStorageTtlDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('defaultStorageTtlDays').hasError('required')" >
{{ 'tenant-profile.default-storage-ttl-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('defaultStorageTtlDays').hasError('min')" >
{{ 'tenant-profile.default-storage-ttl-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.rpc-ttl-days< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="rpcTtlDays"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('rpcTtlDays').hasError('required')" >
{{ 'tenant-profile.rpc-ttl-days-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('rpcTtlDays').hasError('min')" >
{{ 'tenant-profile.rpc-ttl-days-days-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< / fieldset >
< fieldset class = "fields-group" >
< legend class = "group-title" >
{{ 'tenant-profile.alarms-and-notifications' | translate }} < span translate > tenant-profile.unlimited< / span >
< / legend >
< div class = "fields-element" fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-emails< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxEmails"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxEmails').hasError('required')" >
{{ 'tenant-profile.max-emails-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxEmails').hasError('min')" >
{{ 'tenant-profile.max-emails-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-created-alarms< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxCreatedAlarms"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCreatedAlarms').hasError('required')" >
{{ 'tenant-profile.max-created-alarms-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxCreatedAlarms').hasError('min')" >
{{ 'tenant-profile.max-created-alarms-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.max-sms< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxSms"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxSms').hasError('required')" >
{{ 'tenant-profile.max-sms-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxSms').hasError('min')" >
{{ 'tenant-profile.max-sms-range' | translate}}
< / mat-error >
< / mat-form-field >
< div fxFlex > < / div >
< / div >
< / fieldset >
< fieldset class = "fields-group" >
< legend class = "group-title" >
{{ 'tenant-profile.ota-files-in-bytes' | translate }} < span translate > tenant-profile.unlimited< / span >
< / legend >
< div class = "fields-element" fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-resources-sum-data-size< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxResourcesInBytes"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxResourcesInBytes').hasError('required')" >
{{ 'tenant-profile.maximum-resources-sum-data-size-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxResourcesInBytes').hasError('min')" >
{{ 'tenant-profile.maximum-resources-sum-data-size-range' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.maximum-ota-packages-sum-data-size< / mat-label >
< input matInput required min = "0" step = "1"
formControlName="maxOtaPackagesInBytes"
type="number">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxOtaPackagesInBytes').hasError('required')" >
{{ 'tenant-profile.maximum-ota-packages-sum-data-size-required' | translate}}
< / mat-error >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxOtaPackagesInBytes').hasError('min')" >
{{ 'tenant-profile.maximum-ota-packages-sum-data-size-range' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< / fieldset >
< fieldset class = "fields-group" >
< legend class = "group-title" >
{{ 'tenant-profile.ws-title' | translate }} < span translate > tenant-profile.unlimited< / span >
< / legend >
< div class = "fields-element" fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-tenant< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerTenant" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerTenant').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-tenant< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerTenant" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerTenant').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-customer< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerCustomer" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerCustomer').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-customer< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerCustomer" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerCustomer').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< mat-expansion-panel class = "configuration-panel" >
< mat-expansion-panel-header >
< mat-panel-description fxLayoutAlign = "end" translate >
tenant-profile.advanced-settings
< / mat-panel-description >
< / mat-expansion-panel-header >
< ng-template matExpansionPanelContent >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-public-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerPublicUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerPublicUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-public-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerPublicUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerPublicUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-sessions-per-regular-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSessionsPerRegularUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSessionsPerRegularUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-max-subscriptions-per-regular-user< / mat-label >
< input matInput type = "number" formControlName = "maxWsSubscriptionsPerRegularUser" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('maxWsSubscriptionsPerRegularUser').hasError('min')" >
{{ 'tenant-profile.too-small-value-zero' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" appearance = "fill" >
< mat-label translate > tenant-profile.ws-limit-queue-per-session< / mat-label >
< input matInput type = "number" formControlName = "wsMsgQueueLimitPerSession" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('wsMsgQueueLimitPerSession').hasError('min')" >
{{ 'tenant-profile.too-small-value-one' | translate}}
< / mat-error >
< / mat-form-field >
< div fxFlex > < / div >
< / div >
< / ng-template >
< / mat-expansion-panel >
< / fieldset >
< fieldset class = "fields-group" >
< legend class = "group-title" > Rate limits< / legend >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.transport-tenant-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportTenantMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.transport-device-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportDeviceMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportDeviceMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.transport-tenant-telemetry-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportTenantTelemetryMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantTelemetryMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.transport-device-telemetry-msg-rate-limit< / mat-label >
< input matInput formControlName = "transportDeviceTelemetryMsgRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantTelemetryMsgRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< mat-expansion-panel class = "configuration-panel" >
< mat-expansion-panel-header >
< mat-panel-description fxLayoutAlign = "end" translate >
tenant-profile.advanced-settings
< / mat-panel-description >
< / mat-expansion-panel-header >
< ng-template matExpansionPanelContent >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.transport-tenant-telemetry-data-points-rate-limit< / mat-label >
< input matInput formControlName = "transportTenantTelemetryDataPointsRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportTenantTelemetryDataPointsRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.transport-device-telemetry-data-points-rate-limit< / mat-label >
< input matInput formControlName = "transportDeviceTelemetryDataPointsRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('transportDeviceTelemetryDataPointsRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.tenant-rest-limits< / mat-label >
< input matInput
formControlName="tenantServerRestLimitsConfiguration"
type="text">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('tenantServerRestLimitsConfiguration').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.customer-rest-limits< / mat-label >
< input matInput
formControlName="customerServerRestLimitsConfiguration"
type="text">
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('customerServerRestLimitsConfiguration').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.tenant-entity-export-rate-limit< / mat-label >
< input matInput formControlName = "tenantEntityExportRateLimit" >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.tenant-entity-import-rate-limit< / mat-label >
< input matInput formControlName = "tenantEntityImportRateLimit" >
< / mat-form-field >
< / div >
< div fxFlex fxLayout = "row" fxLayout . xs = "column" fxLayoutGap . gt-xs = "16px" >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.ws-limit-updates-per-session< / mat-label >
< input matInput type = "text" formControlName = "wsUpdatesPerSessionRateLimit" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('wsUpdatesPerSessionRateLimit').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< mat-form-field fxFlex class = "mat-block" >
< mat-label translate > tenant-profile.cassandra-tenant-limits-configuration< / mat-label >
< input matInput type = "text" formControlName = "cassandraQueryTenantRateLimitsConfiguration" >
< mat-error * ngIf = "defaultTenantProfileConfigurationFormGroup.get('cassandraQueryTenantRateLimitsConfiguration').hasError('pattern')" >
{{ 'tenant-profile.incorrect-pattern-for-rate-limits' | translate}}
< / mat-error >
< / mat-form-field >
< / div >
< / ng-template >
< / mat-expansion-panel >
< / fieldset >
< / section >