77 lines
3.1 KiB
HTML
77 lines
3.1 KiB
HTML
<div class="container-fluid">
|
|
<div class="row user-listing">
|
|
<div class="col-md-10 offset-md-1">
|
|
<div class="row mb-4 mt-4">
|
|
<div class="col">
|
|
<h4>{{'USER-LISTING.TITLE' | translate}}</h4>
|
|
<app-navigation-breadcrumb />
|
|
|
|
</div>
|
|
<div class="col-auto">
|
|
<button mat-raised-button class="create-btn" (click)="export()" *ngIf="authService.hasPermission(authService.permissionEnum.ExportUsers)">
|
|
<mat-icon>download</mat-icon>
|
|
{{'USER-LISTING.ACTIONS.EXPORT' | translate}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<app-hybrid-listing [rows]="gridRows" [columns]="gridColumns" [visibleColumns]="visibleColumns" [count]="totalElements" [offset]="currentPageNumber" [limit]="lookup.page.size" [defaultSort]="lookup.order?.items" [externalSorting]="true" (rowActivated)="onUserRowActivated($event)" (pageLoad)="alterPage($event)" (columnSort)="onColumnSort($event)" (columnsChanged)="onColumnsChanged($event)" [listItemTemplate]="listItemTemplate">
|
|
|
|
<app-user-listing-filters hybrid-listing-filters [(filter)]="lookup" (filterChange)="filterChanged($event)" />
|
|
|
|
<app-user-settings-picker [key]="userSettingsKey" [userPreference]="lookup" (onSettingSelected)="changeSetting($event)" [autoSelectUserSettings]="autoSelectUserSettings" user-preference-settings />
|
|
</app-hybrid-listing>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<ng-template #listItemTemplate let-item="item" let-isColumnSelected="isColumnSelected">
|
|
|
|
<div class="d-flex align-items-center p-3 gap-1-rem">
|
|
<div class="row">
|
|
<ng-container *ngIf="isColumnSelected('name')">
|
|
<a class="buttonLinkClass" [routerLink]="'./' + item?.id" class="col-12" (click)="$event.stopPropagation()">{{item?.name | nullifyValue}}</a>
|
|
<br />
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="isColumnSelected('createdAt')">
|
|
<span class="col-12">
|
|
{{'USER-LISTING.FIELDS.CREATED-AT' | translate}}:
|
|
<small>
|
|
{{item?.createdAt | dateTimeFormatter : 'short' | nullifyValue}}
|
|
</small>
|
|
</span>
|
|
<br>
|
|
</ng-container>
|
|
<ng-container *ngIf="isColumnSelected('updatedAt')">
|
|
<span class="col-12">
|
|
{{'USER-LISTING.FIELDS.UPDATED-AT' | translate}}:
|
|
<small>
|
|
{{item?.updatedAt | dateTimeFormatter : 'short' | nullifyValue}}
|
|
</small>
|
|
</span>
|
|
</ng-container>
|
|
</div>
|
|
</div>
|
|
</ng-template>
|
|
|
|
<ng-template #roleCellTemplate let-row="row" let-item>
|
|
<div class="row">
|
|
<app-user-role-editor-component style="width: 100%;" [item]="row"></app-user-role-editor-component>
|
|
<!-- <div class="col-auto status-chip"
|
|
[ngClass]="{'status-chip-finalized': row.status === userStatuses.Finalized, 'status-chip-draft' : row.status === userStatuses.Draft}">
|
|
{{enumUtils.toUserStatusString(row.status) | nullifyValue}}
|
|
</div> -->
|
|
</div>
|
|
</ng-template>
|
|
|
|
<ng-template #nameCellTemplate let-row="row" let-item>
|
|
<div class="row align-items-center">
|
|
<div class="col-auto">
|
|
<img *ngIf="row?.additionalInfo?.avatarUrl" class="user-avatar" [src]="row?.additionalInfo?.avatarUrl" (error)="this.setDefaultAvatar($event)">
|
|
<img *ngIf="!row?.additionalInfo?.avatarUrl" class="user-avatar" [src]="'assets/images/profile-placeholder.png'">
|
|
</div>
|
|
<div class="col">{{row.name}}</div>
|
|
|
|
</div>
|
|
</ng-template> |