Files
dc/client/src/app/role/role.component.html
T
YuryShkoda 022981390e
Build / Build-and-ng-test (pull_request) Failing after 52s
Build / Build-and-test-development (pull_request) Has been skipped
Lighthouse Checks / lighthouse (pull_request) Failing after 1m6s
chore(deps): upgrade Angular 19 -> 21 to resolve audit CVEs
Bumps @angular/* to 21 (passing through 20 as a transient step, since
vendored Clarity has no Angular-20-compatible release) and
@typescript-eslint to 8.65.0 for TS 5.9 compat. Applies the required
ng update migrations, including *ngIf/*ngFor/*ngSwitch -> control-flow
syntax across 37 templates.
2026-07-22 14:56:20 +03:00

147 lines
4.7 KiB
HTML

<app-sidebar class="sidebar-height">
<clr-tree>
@if (roles) {
<clr-tree-node class="search-node">
<div class="tree-search-wrapper">
<input
appStealFocus
clrInput
#searchLibTreeInput
placeholder="Filter by Roles"
name="input"
[(ngModel)]="roleSearch"
(keyup)="roleListOnFilter()"
autocomplete="off"
/>
@if (searchLibTreeInput.value.length < 1) {
<clr-icon shape="search"></clr-icon>
}
@if (searchLibTreeInput.value.length > 0) {
<clr-icon
(click)="roleSearch = ''; roleListOnFilter()"
shape="times"
></clr-icon>
}
</div>
</clr-tree-node>
}
@for (role of roles; track role) {
@if (!role['hidden']) {
<clr-tree-node
(click)="roleOnClick(role)"
[class.active]="role.ROLEURI === roleUri"
>
<p class="m-0 cursor-pointer list-padding">
<clr-icon shape="blocks-group"></clr-icon>
{{ role.ROLENAME }}
</p>
</clr-tree-node>
}
}
</clr-tree>
</app-sidebar>
<div class="content-area">
@if (loading) {
<div class="loadingSpinner">
<span class="spinner"> Loading... </span>
</div>
}
@if (roleMembers && !loading) {
<div>
<div class="clr-row">
<div class="clr-col-8">
<table class="table role-info">
<tbody>
<tr>
<td class="left">
<p class="role-info-text">
<b>{{ roleName }}</b>
</p>
</td>
</tr>
<tr>
<td class="left">
<i>{{ roleDesc }}</i>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="clr-row">
<div class="clr-col-8">
<div class="card role-data">
<div>
<h3>MEMBERS ({{ roleMembersCount }})</h3>
@if (roleMembersCount == 0) {
<h5>No Members Present</h5>
}
<div class="table-container">
@if (roleMembersCount != 0) {
<table class="table member-table">
<thead>
<tr>
<td class="width-25"><b>NAME</b></td>
<td class="width-25"><b>EMAIL</b></td>
<td class="width-25"><b>CREATED</b></td>
<td class=""><b>UPDATED</b></td>
</tr>
</thead>
<tbody>
@for (member of roleMembers; track member) {
<tr
[routerLink]="'/view/usernav/users/' + member.URIMEM"
>
<td class="">{{ member.MEMBERNAME }}</td>
<td class="">{{ member.EMAIL }}</td>
<td class="">{{ member.MEMBERCREATED }}</td>
<td class="">{{ member.MEMBERUPDATED }}</td>
</tr>
}
</tbody>
</table>
}
</div>
</div>
<hr />
<div>
<h3>Groups ({{ roleGroupsCount }})</h3>
@if (roleGroupsCount == 0) {
<h5>No Groups Present !</h5>
}
<div class="table-container">
@if (roleGroupsCount != 0) {
<table class="table member-table">
<thead>
<tr>
<td class="width-25"><b>NAME</b></td>
<td class="width-25"><b>EMAIL</b></td>
<td class="width-25"><b>CREATED</b></td>
<td class=""><b>UPDATED</b></td>
</tr>
</thead>
<tbody>
@for (group of roleGroups; track group) {
<tr
[routerLink]="'/view/usernav/groups/' + group.URIMEM"
>
<td class="">{{ group.MEMBERNAME }}</td>
<td class="">{{ group.EMAIL }}</td>
<td class="">{{ group.MEMBERCREATED }}</td>
<td class="">{{ group.MEMBERUPDATED }}</td>
</tr>
}
</tbody>
</table>
}
</div>
</div>
<br />
</div>
</div>
</div>
</div>
}
</div>