Browse Source

UI: Fixed calculated fields alarm rules

pull/14293/head
ArtemDzhereleiko 10 months ago
parent
commit
fab9057945
  1. 4
      ui-ngx/src/app/modules/home/components/alarm-rules/alarm-rules-table-config.ts
  2. 2
      ui-ngx/src/app/modules/home/components/alarm-rules/cf-alarm-rule.component.html
  3. 3
      ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-complex-filter-predicate-dialog.component.ts
  4. 8
      ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-list.component.ts
  5. 2
      ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-predicate-list.component.html
  6. 10
      ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-predicate-value.component.ts
  7. 14
      ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-predicate.component.ts
  8. 10
      ui-ngx/src/app/modules/home/pages/device-profile/device-profile-tabs.component.html
  9. 2
      ui-ngx/src/app/modules/home/pages/device-profile/device-profile-tabs.component.ts
  10. 4
      ui-ngx/src/assets/locale/locale.constant-en_US.json

4
ui-ngx/src/app/modules/home/components/alarm-rules/alarm-rules-table-config.ts

@ -119,8 +119,8 @@ export class AlarmRulesTableConfig extends EntityTableConfig<any> {
this.columns.push(new EntityTableColumn<CalculatedFieldAlarmRule>('createRule', 'alarm-rule.severities', '67%', this.columns.push(new EntityTableColumn<CalculatedFieldAlarmRule>('createRule', 'alarm-rule.severities', '67%',
entity => Object.keys(entity.configuration.createRules).map((severity) => this.translate.instant(alarmSeverityTranslations.get(severity as AlarmSeverity))).join(', '), entity => Object.keys(entity.configuration.createRules).map((severity) => this.translate.instant(alarmSeverityTranslations.get(severity as AlarmSeverity))).join(', '),
() => ({}), false)); () => ({}), false));
this.columns.push(new EntityTableColumn<CalculatedFieldAlarmRule>('clearRule', 'alarm-rule.cleared', '60px', this.columns.push(new EntityTableColumn<CalculatedFieldAlarmRule>('clearRule', 'alarm-rule.cleared', '70px',
entity => checkBoxCell(!!entity.configuration.clearRule), ()=> { return {padding: '0 14px'}}, false)); entity => checkBoxCell(!!entity.configuration.clearRule), ()=> { return {padding: 0, textAlign: 'center'}}, false));
this.cellActionDescriptors.push( this.cellActionDescriptors.push(
{ {

2
ui-ngx/src/app/modules/home/components/alarm-rules/cf-alarm-rule.component.html

@ -18,7 +18,7 @@
<div class="tb-form-panel no-border no-padding" [formGroup]="alarmRuleFormGroup"> <div class="tb-form-panel no-border no-padding" [formGroup]="alarmRuleFormGroup">
<tb-cf-alarm-rule-condition formControlName="condition" [arguments]="arguments"> <tb-cf-alarm-rule-condition formControlName="condition" [arguments]="arguments">
</tb-cf-alarm-rule-condition> </tb-cf-alarm-rule-condition>
@if (!disabled || alarmRuleFormGroup.get('dashboardId').value) { @if (!disabled || alarmRuleFormGroup.get('alarmDetails').value) {
<div class="tb-form-row space-between column-xs"> <div class="tb-form-row space-between column-xs">
<div class="min-w-40 xs:min-w-fit" translate> <div class="min-w-40 xs:min-w-fit" translate>
alarm-rule.alarm-rule-additional-info alarm-rule.alarm-rule-additional-info

3
ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-complex-filter-predicate-dialog.component.ts

@ -15,7 +15,6 @@
/// ///
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { ErrorStateMatcher } from '@angular/material/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state'; import { AppState } from '@core/core.state';
@ -41,7 +40,7 @@ export interface AlarmRuleComplexFilterPredicateDialogData {
@Component({ @Component({
selector: 'tb-alarm-rule-complex-filter-predicate-dialog', selector: 'tb-alarm-rule-complex-filter-predicate-dialog',
templateUrl: './alarm-rule-complex-filter-predicate-dialog.component.html', templateUrl: './alarm-rule-complex-filter-predicate-dialog.component.html',
providers: [{provide: ErrorStateMatcher, useExisting: AlarmRuleComplexFilterPredicateDialogComponent}], providers: [],
styleUrls: [] styleUrls: []
}) })

8
ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-list.component.ts

@ -102,6 +102,14 @@ export class AlarmRuleFilterListComponent implements ControlValueAccessor, Valid
}; };
} }
setDisabledState(isDisabled: boolean): void {
if (isDisabled) {
this.filterListFormGroup.disable({emitEvent: false});
} else {
this.filterListFormGroup.enable({emitEvent: false});
}
}
writeValue(filters: Array<AlarmRuleFilter>): void { writeValue(filters: Array<AlarmRuleFilter>): void {
const keyFilterControls: Array<AbstractControl> = []; const keyFilterControls: Array<AbstractControl> = [];
if (filters) { if (filters) {

2
ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-predicate-list.component.html

@ -46,7 +46,7 @@
[formControl]="predicateControl"> [formControl]="predicateControl">
</tb-alarm-rule-filter-predicate> </tb-alarm-rule-filter-predicate>
<button mat-icon-button color="primary" <button mat-icon-button color="primary"
[class.!hidden]="disabled" [disabled]="disabled"
type="button" type="button"
(click)="removePredicate($index)" (click)="removePredicate($index)"
matTooltip="{{ 'filter.remove-filter' | translate }}" matTooltip="{{ 'filter.remove-filter' | translate }}"

10
ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-predicate-value.component.ts

@ -107,6 +107,16 @@ export class AlarmRuleFilterPredicateValueComponent implements ControlValueAcces
).subscribe(value => this.updateValueModeValidators(value)) ).subscribe(value => this.updateValueModeValidators(value))
} }
setDisabledState?(isDisabled: boolean): void {
if (isDisabled) {
this.filterPredicateValueFormGroup.disable({emitEvent: false});
this.dynamicModeControl.disable({emitEvent: false});
} else {
this.filterPredicateValueFormGroup.enable({emitEvent: false});
this.dynamicModeControl.enable({emitEvent: false});
}
}
private updateValueModeValidators(isDynamicMode: boolean): void { private updateValueModeValidators(isDynamicMode: boolean): void {
if (isDynamicMode) { if (isDynamicMode) {
this.filterPredicateValueFormGroup.get('staticValue').disable({emitEvent: false}); this.filterPredicateValueFormGroup.get('staticValue').disable({emitEvent: false});

14
ui-ngx/src/app/modules/home/components/alarm-rules/filter/alarm-rule-filter-predicate.component.ts

@ -14,7 +14,7 @@
/// limitations under the License. /// limitations under the License.
/// ///
import { Component, DestroyRef, forwardRef, Input } from '@angular/core'; import { booleanAttribute, Component, DestroyRef, forwardRef, Input } from '@angular/core';
import { import {
ControlValueAccessor, ControlValueAccessor,
FormBuilder, FormBuilder,
@ -61,6 +61,9 @@ import { CalculatedFieldArgument } from "@shared/models/calculated-field.models"
}) })
export class AlarmRuleFilterPredicateComponent implements ControlValueAccessor, Validator { export class AlarmRuleFilterPredicateComponent implements ControlValueAccessor, Validator {
@Input({ transform: booleanAttribute })
disabled: boolean;
@Input() @Input()
valueType: EntityKeyValueType; valueType: EntityKeyValueType;
@ -115,6 +118,15 @@ export class AlarmRuleFilterPredicateComponent implements ControlValueAccessor,
}; };
} }
setDisabledState?(isDisabled: boolean): void {
this.disabled = isDisabled;
if (isDisabled) {
this.filterPredicateFormGroup.disable({emitEvent: false});
} else {
this.filterPredicateFormGroup.enable({emitEvent: false});
}
}
writeValue(predicate: AlarmRuleFilterPredicate): void { writeValue(predicate: AlarmRuleFilterPredicate): void {
this.type = predicate.type; this.type = predicate.type;
this.filterPredicateFormGroup.patchValue(predicate, {emitEvent: false}); this.filterPredicateFormGroup.patchValue(predicate, {emitEvent: false});

10
ui-ngx/src/app/modules/home/pages/device-profile/device-profile-tabs.component.html

@ -50,9 +50,9 @@
<mat-tab #alarmRules="matTab" label="{{'alarm-rule.alarm-rules-tab' | translate }}"> <mat-tab #alarmRules="matTab" label="{{'alarm-rule.alarm-rules-tab' | translate }}">
<section class="flex flex-col h-full"> <section class="flex flex-col h-full">
@if (hasOldRules && !isEdit) { @if (hasOldRules && !isEdit) {
<div class="flex flex-row items-center justify-end" style="padding: 16px 16px 0;"> <div class="flex flex-row items-center justify-start" style="padding: 16px 16px 0;">
<tb-toggle-select [(ngModel)]="alarmRulesOldVersion" appearance="fill"> <tb-toggle-select [(ngModel)]="alarmRulesOldVersion" appearance="fill">
<tb-toggle-option [value]="false">{{ 'alarm-rule.alarm-rules-new' | translate }}</tb-toggle-option> <tb-toggle-option [value]="false">{{ 'alarm-rule.alarm-rules-actual' | translate }}</tb-toggle-option>
<tb-toggle-option [value]="true">{{ 'alarm-rule.alarm-rules-old' | translate }}</tb-toggle-option> <tb-toggle-option [value]="true">{{ 'alarm-rule.alarm-rules-old' | translate }}</tb-toggle-option>
</tb-toggle-select> </tb-toggle-select>
</div> </div>
@ -65,7 +65,11 @@
</div> </div>
} @else { } @else {
<div class="relative h-full"> <div class="relative h-full">
<tb-alarm-rules-table [active]="alarmRules.isActive" [entityId]="entity.id" [entityName]="entity.name" [ownerId]="entity.tenantId"></tb-alarm-rules-table> <tb-alarm-rules-table [active]="alarmRules.isActive"
[entityId]="entity.id"
[entityName]="entity.name"
[ownerId]="entity.tenantId">
</tb-alarm-rules-table>
</div> </div>
} }
</section> </section>

2
ui-ngx/src/app/modules/home/pages/device-profile/device-profile-tabs.component.ts

@ -61,7 +61,7 @@ export class DeviceProfileTabsComponent extends EntityTabsComponent<DeviceProfil
protected setEntity(entity: DeviceProfile) { protected setEntity(entity: DeviceProfile) {
this.isTransportTypeChanged = false; this.isTransportTypeChanged = false;
this.hasOldRules = !!entity?.profileData?.alarms?.length; this.hasOldRules = !!entity?.profileData?.alarms?.length;
this.alarmRulesOldVersion = this.isEdit || false; this.alarmRulesOldVersion = false;
super.setEntity(entity); super.setEntity(entity);
} }

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

@ -1251,9 +1251,9 @@
"alarm-rule": "Alarm rule", "alarm-rule": "Alarm rule",
"alarm-rules": "Alarm rules", "alarm-rules": "Alarm rules",
"alarm-rules-old": "Old", "alarm-rules-old": "Old",
"alarm-rules-new": "New", "alarm-rules-actual": "Actual",
"severities": "Severities", "severities": "Severities",
"cleared": "Cleared", "cleared": "Clear condition",
"delete-title": "Are you sure you want to delete the alarm rule '{{title}}'?", "delete-title": "Are you sure you want to delete the alarm rule '{{title}}'?",
"delete-text": "Be careful, after the confirmation the alarm rule and all related data will become unrecoverable.", "delete-text": "Be careful, after the confirmation the alarm rule and all related data will become unrecoverable.",
"delete-multiple-title": "Are you sure you want to delete { count, plural, =1 {1 alarm rule} other {# alarm rules} }?", "delete-multiple-title": "Are you sure you want to delete { count, plural, =1 {1 alarm rule} other {# alarm rules} }?",

Loading…
Cancel
Save