Browse Source

Merge pull request #14758 from abpframework/Issue-1358

Edit permission-management.component.
pull/14813/head
Muhammed Altuğ 4 years ago
committed by GitHub
parent
commit
0679d3212a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html
  2. 49
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

4
npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html

@ -32,10 +32,11 @@
class="nav-link pointer" class="nav-link pointer"
[class.active]="selectedGroup?.name === group?.name" [class.active]="selectedGroup?.name === group?.name"
(click)="onChangeGroup(group)" (click)="onChangeGroup(group)"
(select)="setDisabled(group.permissions)"
> >
<div [class.font-weight-bold]="count.assignedCount"> <div [class.font-weight-bold]="count.assignedCount">
{{ group?.displayName }} {{ group?.displayName }}
<span>({{ count.assignedCount }})</span> <span *ngIf="count.assignedCount > 0">({{ count.assignedCount }})</span>
</div> </div>
</a> </a>
</li> </li>
@ -53,6 +54,7 @@
name="select-all-in-this-tabs" name="select-all-in-this-tabs"
class="form-check-input" class="form-check-input"
[(ngModel)]="selectThisTab" [(ngModel)]="selectThisTab"
[disabled]="disableSelectAllTab"
(click)="onClickSelectThisTab()" (click)="onClickSelectThisTab()"
/> />
<label class="form-check-label" for="select-all-in-this-tabs">{{ <label class="form-check-label" for="select-all-in-this-tabs">{{

49
npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

@ -104,6 +104,8 @@ export class PermissionManagementComponent
selectAllTab = false; selectAllTab = false;
disableSelectAllTab = false;
modalBusy = false; modalBusy = false;
trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name; trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name;
@ -135,6 +137,18 @@ export class PermissionManagementComponent
return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted; return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;
} }
setDisabled(grantedProviders) {
if (grantedProviders.length) {
grantedProviders.forEach(permission => {
this.disableSelectAllTab = permission.grantedProviders?.some(
p => p.providerName !== this.providerName,
);
});
} else {
this.disableSelectAllTab = false;
}
}
isGrantedByOtherProviderName(grantedProviders: ProviderInfoDto[]): boolean { isGrantedByOtherProviderName(grantedProviders: ProviderInfoDto[]): boolean {
if (grantedProviders.length) { if (grantedProviders.length) {
return grantedProviders.findIndex(p => p.providerName !== this.providerName) > -1; return grantedProviders.findIndex(p => p.providerName !== this.providerName) > -1;
@ -150,24 +164,25 @@ export class PermissionManagementComponent
return; return;
setTimeout(() => { setTimeout(() => {
this.permissions = this.permissions.map(per => { this.permissions = this.permissions
if (clickedPermission.name === per.name) { .map(per => {
return { ...per, isGranted: !per.isGranted }; if (clickedPermission.name === per.name) {
} else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { return { ...per, isGranted: !per.isGranted };
return { ...per, isGranted: false }; } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {
} else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {
return { ...per, isGranted: true };
}
return per;
}).map((per,index,permissions) => {
const childrens = permissions
.filter(p => p.parentName === per.name);
if(childrens.length > 0 && childrens.every(x => !x.isGranted)){
return { ...per, isGranted: false }; return { ...per, isGranted: false };
} else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {
return { ...per, isGranted: true };
} }
return per
}); return per;
})
.map((per, index, permissions) => {
const childrens = permissions.filter(p => p.parentName === per.name);
if (childrens.length > 0 && childrens.every(x => !x.isGranted)) {
return { ...per, isGranted: false };
}
return per;
});
this.setTabCheckboxState(); this.setTabCheckboxState();
this.setGrantCheckboxState(); this.setGrantCheckboxState();
}, 0); }, 0);
@ -231,6 +246,7 @@ export class PermissionManagementComponent
} }
onChangeGroup(group: PermissionGroupDto) { onChangeGroup(group: PermissionGroupDto) {
this.setDisabled(group.permissions);
this.selectedGroup = group; this.selectedGroup = group;
this.setTabCheckboxState(); this.setTabCheckboxState();
} }
@ -283,6 +299,7 @@ export class PermissionManagementComponent
initModal() { initModal() {
// TODO: Refactor // TODO: Refactor
setTimeout(() => { setTimeout(() => {
this.setDisabled(this.permissions);
this.setTabCheckboxState(); this.setTabCheckboxState();
this.setGrantCheckboxState(); this.setGrantCheckboxState();
}); });

Loading…
Cancel
Save