diff --git a/src/portal/src/app/base/left-side-nav/group/group.component.html b/src/portal/src/app/base/left-side-nav/group/group.component.html index d5b860ba7..a040b0420 100644 --- a/src/portal/src/app/base/left-side-nav/group/group.component.html +++ b/src/portal/src/app/base/left-side-nav/group/group.component.html @@ -75,9 +75,18 @@ [clrDgPageSize]="pageSize" [(clrDgPage)]="currentPage" [clrDgTotalItems]="totalCount"> - {{ - 'PAGINATION.PAGE_SIZE' | translate - }} + {{ + 'PAGINATION.PAGE_SIZE' | translate + }} + + {{ pagination.firstItem + 1 }} - {{ pagination.lastItem + 1 }} diff --git a/src/portal/src/app/base/left-side-nav/group/group.component.ts b/src/portal/src/app/base/left-side-nav/group/group.component.ts index eb48daed2..0e5f66b6a 100644 --- a/src/portal/src/app/base/left-side-nav/group/group.component.ts +++ b/src/portal/src/app/base/left-side-nav/group/group.component.ts @@ -49,6 +49,9 @@ export class GroupComponent implements OnInit, OnDestroy { groups: UserGroup[] = []; currentPage: number = 1; totalCount: number = 0; + pageSizeOptions: number[] = [15, 25, 50]; + // user input + newPageSize: number; pageSize: number = getPageSizeFromLocalStorage( PageSizeMapKeys.SYSTEM_GROUP_COMPONENT ); @@ -125,6 +128,7 @@ export class GroupComponent implements OnInit, OnDestroy { } ); } + this.loadPageSizeOptions(); } ngOnDestroy(): void { this.delSub.unsubscribe(); @@ -293,6 +297,36 @@ export class GroupComponent implements OnInit, OnDestroy { this.loadData(); } } + + // load page size options from the local storage if set + loadPageSizeOptions() { + const additionalSizes = JSON.parse( + localStorage.getItem('pageSizeOptions') + ); + if (additionalSizes) { + this.pageSizeOptions = [ + ...this.pageSizeOptions, + ...additionalSizes, + ]; + } + } + + addPageSize() { + if ( + this.newPageSize && + !this.pageSizeOptions.includes(this.newPageSize) + ) { + this.pageSizeOptions.push(this.newPageSize); + // sort the page size options array + this.pageSizeOptions.sort((a, b) => a - b); + // save new options into local storage + localStorage.setItem( + 'pageSizeOptions', + JSON.stringify(this.pageSizeOptions) + ); + } + } + get canAddGroup(): boolean { return this.session.currentUser.has_admin_role; } diff --git a/src/portal/src/app/base/left-side-nav/group/group.module.ts b/src/portal/src/app/base/left-side-nav/group/group.module.ts index 57d52e02a..3d87223f4 100644 --- a/src/portal/src/app/base/left-side-nav/group/group.module.ts +++ b/src/portal/src/app/base/left-side-nav/group/group.module.ts @@ -1,4 +1,5 @@ import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; import { SharedModule } from '../../../shared/shared.module'; import { GroupComponent } from './group.component'; import { AddGroupModalComponent } from './add-group-modal/add-group-modal.component'; @@ -11,7 +12,7 @@ const routes: Routes = [ }, ]; @NgModule({ - imports: [SharedModule, RouterModule.forChild(routes)], + imports: [SharedModule, RouterModule.forChild(routes), FormsModule], declarations: [GroupComponent, AddGroupModalComponent], }) export class GroupModule {}