UI: Add filter entity type for notification rule

This commit is contained in:
Vladyslav_Prykhodko 2023-04-05 17:42:14 +03:00
parent 3279b27b73
commit 89362dedf1
2 changed files with 29 additions and 4 deletions

View File

@ -215,7 +215,7 @@
<legend translate>notification.filter</legend>
<tb-entity-type-list required
ignoreAuthorityFilter
[allowedEntityTypes]="entityTypes"
[allowedEntityTypes]="allowEntityTypeForEntityAction"
formControlName="entityTypes">
</tb-entity-type-list>
<section fxLayout="column" fxLayoutGap="8px">
@ -413,7 +413,7 @@
<legend translate>notification.filter</legend>
<tb-entity-type-list formControlName="entityTypes"
ignoreAuthorityFilter
[allowedEntityTypes]="entityTypes">
[allowedEntityTypes]="allowEntityTypeForEntitiesLimit">
</tb-entity-type-list>
<div class="limit-slider-container" fxLayout="row" fxLayoutAlign="start center"
fxLayout.xs="column" fxLayoutAlign.xs="stretch">

View File

@ -36,7 +36,7 @@ import { Router } from '@angular/router';
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NotificationService } from '@core/http/notification.service';
import { EntityType, entityTypeTranslations } from '@shared/models/entity-type.models';
import { EntityType } from '@shared/models/entity-type.models';
import { deepClone, deepTrim, isDefined } from '@core/utils';
import { Observable, Subject } from 'rxjs';
import { map, takeUntil } from 'rxjs/operators';
@ -129,9 +129,17 @@ export class RuleNotificationDialogComponent extends
apiFeatureTranslationMap = ApiFeatureTranslationMap;
entityType = EntityType;
entityTypes = Array.from(entityTypeTranslations.keys()).filter(type => !!this.entityType[type]);
isAdd = true;
allowEntityTypeForEntitiesLimit = [
EntityType.DEVICE,
EntityType.ASSET,
EntityType.CUSTOMER,
EntityType.USER,
EntityType.DASHBOARD,
EntityType.RULE_CHAIN
];
selectedIndex = 0;
dialogTitle = 'notification.edit-rule';
@ -143,6 +151,7 @@ export class RuleNotificationDialogComponent extends
private triggerTypeFormsMap: Map<TriggerType, FormGroup>;
private authState: AuthState = getCurrentAuthState(this.store);
private authUser: AuthUser = this.authState.authUser;
private _allowEntityTypeForEntityAction: EntityType[];
constructor(protected store: Store<AppState>,
protected router: Router,
@ -428,4 +437,20 @@ export class RuleNotificationDialogComponent extends
}
return Object.values(TriggerType).filter(type => type !== TriggerType.ENTITIES_LIMIT && type !== TriggerType.API_USAGE_LIMIT);
}
get allowEntityTypeForEntityAction(): EntityType[] {
if (!this._allowEntityTypeForEntityAction) {
const excludeEntityType: Set<EntityType> = new Set([
EntityType.API_USAGE_STATE,
EntityType.TENANT_PROFILE,
EntityType.RPC,
EntityType.QUEUE,
EntityType.NOTIFICATION,
EntityType.NOTIFICATION_REQUEST,
EntityType.WIDGET_TYPE
]);
this._allowEntityTypeForEntityAction = Object.values(EntityType).filter(type => !excludeEntityType.has(type));
}
return this._allowEntityTypeForEntityAction;
}
}