UI: Prohibit chnges to asset profile with name 'TbServiceQueue'

This commit is contained in:
Igor Kulikov 2022-09-27 10:44:35 +03:00
parent 0717a56a69
commit 3b6c16af68
4 changed files with 11 additions and 6 deletions

View File

@ -31,7 +31,7 @@
<button mat-raised-button color="primary"
[disabled]="(isLoading$ | async)"
(click)="onEntityAction($event, 'setDefault')"
[fxShow]="!isEdit && !entity?.default">
[fxShow]="!isEdit && !entity?.default && entity?.name !== TB_SERVICE_QUEUE">
{{'asset-profile.set-default' | translate }}
</button>
<button mat-raised-button color="primary"

View File

@ -27,7 +27,7 @@ import { RuleChainId } from '@shared/models/id/rule-chain-id';
import { ServiceType } from '@shared/models/queue.models';
import { EntityId } from '@shared/models/id/entity-id';
import { DashboardId } from '@shared/models/id/dashboard-id';
import { AssetProfile } from '@shared/models/asset.models';
import { AssetProfile, TB_SERVICE_QUEUE } from '@shared/models/asset.models';
@Component({
selector: 'tb-asset-profile',
@ -43,6 +43,8 @@ export class AssetProfileComponent extends EntityComponent<AssetProfile> {
serviceType = ServiceType.TB_RULE_ENGINE;
TB_SERVICE_QUEUE = TB_SERVICE_QUEUE;
assetProfileId: EntityId;
constructor(protected store: Store<AppState>,

View File

@ -31,7 +31,7 @@ import { DialogService } from '@core/services/dialog.service';
import { MatDialog } from '@angular/material/dialog';
import { ImportExportService } from '@home/components/import-export/import-export.service';
import { HomeDialogsService } from '@home/dialogs/home-dialogs.service';
import { AssetProfile } from '@shared/models/asset.models';
import { AssetProfile, TB_SERVICE_QUEUE } from '@shared/models/asset.models';
import { AssetProfileService } from '@core/http/asset-profile.service';
import { AssetProfileComponent } from '@home/components/profile/asset-profile.component';
import { AssetProfileTabsComponent } from './asset-profile-tabs.component';
@ -78,7 +78,7 @@ export class AssetProfilesTableConfigResolver implements Resolve<EntityTableConf
{
name: this.translate.instant('asset-profile.set-default'),
icon: 'flag',
isEnabled: (assetProfile) => !assetProfile.default,
isEnabled: (assetProfile) => !assetProfile.default && TB_SERVICE_QUEUE !== assetProfile.name,
onAction: ($event, entity) => this.setDefaultAssetProfile($event, entity)
}
);
@ -94,8 +94,9 @@ export class AssetProfilesTableConfigResolver implements Resolve<EntityTableConf
this.config.saveEntity = assetProfile => this.assetProfileService.saveAssetProfile(assetProfile);
this.config.deleteEntity = id => this.assetProfileService.deleteAssetProfile(id.id);
this.config.onEntityAction = action => this.onAssetProfileAction(action);
this.config.deleteEnabled = (assetProfile) => assetProfile && !assetProfile.default;
this.config.entitySelectionEnabled = (assetProfile) => assetProfile && !assetProfile.default;
this.config.deleteEnabled = (assetProfile) => assetProfile && !assetProfile.default && TB_SERVICE_QUEUE !== assetProfile.name;
this.config.entitySelectionEnabled = (assetProfile) => assetProfile && !assetProfile.default && TB_SERVICE_QUEUE !== assetProfile.name;
this.config.detailsReadonly = (assetProfile) => assetProfile && TB_SERVICE_QUEUE === assetProfile.name;
this.config.addActionDescriptors = this.configureAddActions();
}

View File

@ -24,6 +24,8 @@ import { RuleChainId } from '@shared/models/id/rule-chain-id';
import { DashboardId } from '@shared/models/id/dashboard-id';
import { EntityInfoData } from '@shared/models/entity.models';
export const TB_SERVICE_QUEUE = 'TbServiceQueue';
export interface AssetProfile extends BaseData<AssetProfileId>, ExportableEntity<AssetProfileId> {
tenantId?: TenantId;
name: string;