1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
import { Component, Input, OnChanges, OnInit } from '@angular/core';
import _ from 'lodash';
import { CellTemplate } from '~/app/shared/enum/cell-template.enum';
import { CdTableColumn } from '~/app/shared/models/cd-table-column';
@Component({
selector: 'cd-role-details',
templateUrl: './role-details.component.html',
styleUrls: ['./role-details.component.scss']
})
export class RoleDetailsComponent implements OnChanges, OnInit {
@Input()
selection: any;
@Input()
scopes: Array<string>;
selectedItem: any;
columns: CdTableColumn[];
scopes_permissions: Array<any> = [];
ngOnInit() {
this.columns = [
{
prop: 'scope',
name: $localize`Scope`,
flexGrow: 2
},
{
prop: 'read',
name: $localize`Read`,
flexGrow: 1,
cellClass: 'text-center',
cellTransformation: CellTemplate.checkIcon
},
{
prop: 'create',
name: $localize`Create`,
flexGrow: 1,
cellClass: 'text-center',
cellTransformation: CellTemplate.checkIcon
},
{
prop: 'update',
name: $localize`Update`,
flexGrow: 1,
cellClass: 'text-center',
cellTransformation: CellTemplate.checkIcon
},
{
prop: 'delete',
name: $localize`Delete`,
flexGrow: 1,
cellClass: 'text-center',
cellTransformation: CellTemplate.checkIcon
}
];
}
ngOnChanges() {
if (this.selection) {
this.selectedItem = this.selection;
// Build the scopes/permissions data used by the data table.
const scopes_permissions: any[] = [];
_.each(this.scopes, (scope) => {
const scope_permission: any = { read: false, create: false, update: false, delete: false };
scope_permission['scope'] = scope;
if (scope in this.selectedItem['scopes_permissions']) {
_.each(this.selectedItem['scopes_permissions'][scope], (permission) => {
scope_permission[permission] = true;
});
}
scopes_permissions.push(scope_permission);
});
this.scopes_permissions = scopes_permissions;
}
}
}
|