Browse Source

Merge pull request #18442 from abpframework/auto-merge/rel-7-4/2340

Merge branch rel-8.0 with rel-7.4
pull/18443/head
maliming 2 years ago
committed by GitHub
parent
commit
d72e581b73
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 72
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

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

@ -49,9 +49,8 @@ type PermissionWithGroupName = PermissionGrantInfoDto & {
})
export class PermissionManagementComponent
implements
PermissionManagement.PermissionManagementComponentInputs,
PermissionManagement.PermissionManagementComponentOutputs
{
PermissionManagement.PermissionManagementComponentInputs,
PermissionManagement.PermissionManagementComponentOutputs {
@Input()
readonly providerName!: string;
@ -118,7 +117,7 @@ export class PermissionManagementComponent
trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name;
constructor(protected service: PermissionsService, protected configState: ConfigStateService) {}
constructor(protected service: PermissionsService, protected configState: ConfigStateService) { }
getChecked(name: string) {
return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;
@ -131,21 +130,19 @@ export class PermissionManagementComponent
return;
}
const margin = `margin-${
(document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left'
}.px`;
const margin = `margin-${(document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left'
}.px`;
const permissions =
(this.data.groups.find(group => group.name === this.selectedGroup?.name) || {}).permissions ||
[];
this.selectedGroupPermissions = permissions.map(
permission =>
({
...permission,
style: { [margin]: findMargin(permissions, permission) },
isGranted: (this.permissions.find(per => per.name === permission.name) || {}).isGranted,
} as unknown as PermissionWithStyle),
({
...permission,
style: { [margin]: findMargin(permissions, permission) },
isGranted: (this.permissions.find(per => per.name === permission.name) || {}).isGranted,
} as unknown as PermissionWithStyle),
);
}
@ -174,7 +171,7 @@ export class PermissionManagementComponent
this.isGrantedByOtherProviderName(clickedPermission.grantedProviders)
)
return;
this.setSelectedGroup(this.selectedGroup);
setTimeout(() => {
this.permissions = this.permissions.map(per => {
if (clickedPermission.name === per.name) {
@ -186,11 +183,55 @@ export class PermissionManagementComponent
}
return per;
});
this.updateSelectedGroupPermissions(clickedPermission);
this.setTabCheckboxState();
this.setGrantCheckboxState();
this.setParentClicked(clickedPermission);
}, 0);
}
setParentClicked(clickedPermissions: PermissionGrantInfoDto) {
let childPermissionGrantedCount = 0;
let parentPermission: PermissionGrantInfoDto;
if (clickedPermissions.parentName) {
this.permissions.forEach(per => {
if (per.name === clickedPermissions.parentName) {
parentPermission = per;
}
})
this.permissions.forEach(per => {
if (parentPermission.name === per.parentName) {
per.isGranted && childPermissionGrantedCount++;
}
})
if (childPermissionGrantedCount === 1 && !parentPermission.isGranted) {
this.permissions = this.permissions.map(per => {
if (per.name === parentPermission.name) {
per.isGranted = true;
}
return per;
})
}
return;
}
this.permissions = this.permissions.map(per => {
if (per.parentName === clickedPermissions.name) {
per.isGranted = false;
}
return per;
})
}
updateSelectedGroupPermissions(clickedPermissions: PermissionGrantInfoDto) {
this.selectedGroupPermissions = this.selectedGroupPermissions.map(per => {
if (per.name === clickedPermissions.name) {
per.isGranted = !per.isGranted
}
return per;
})
}
setTabCheckboxState() {
const selectableGroupPermissions = this.selectedGroupPermissions.filter(per =>
per.grantedProviders.every(p => p.providerName === this.providerName),
@ -254,6 +295,7 @@ export class PermissionManagementComponent
this.selectThisTab = !this.selectAllTab;
this.setTabCheckboxState();
}
this.onChangeGroup(this.selectedGroup);
}
onChangeGroup(group: PermissionGroupDto) {
@ -268,7 +310,7 @@ export class PermissionManagementComponent
const changedPermissions: UpdatePermissionDto[] = this.permissions
.filter(per =>
(unchangedPermissions.find(unchanged => unchanged.name === per.name) || {}).isGranted ===
per.isGranted
per.isGranted
? false
: true,
)

Loading…
Cancel
Save