diff --git a/src/app/home/top-level-community-list/top-level-community-list.component.html b/src/app/home/top-level-community-list/top-level-community-list.component.html
index 93b6d3bfaf..a5450b6cce 100644
--- a/src/app/home/top-level-community-list/top-level-community-list.component.html
+++ b/src/app/home/top-level-community-list/top-level-community-list.component.html
@@ -2,5 +2,5 @@
{{'home.top-level-communities.head' | translate}}
{{'home.top-level-communities.help' | translate}}
+ [objects]="topLevelCommunities" [hideGear]="false" (paginationChange)="updatePage()">
diff --git a/src/app/home/top-level-community-list/top-level-community-list.component.ts b/src/app/home/top-level-community-list/top-level-community-list.component.ts
index 42815d0fda..2362d7ddd7 100644
--- a/src/app/home/top-level-community-list/top-level-community-list.component.ts
+++ b/src/app/home/top-level-community-list/top-level-community-list.component.ts
@@ -13,16 +13,12 @@ import { ActivatedRoute } from '@angular/router';
templateUrl: './top-level-community-list.component.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
-export class TopLevelCommunityListComponent implements OnInit {
+export class TopLevelCommunityListComponent {
topLevelCommunities: RemoteData;
config: PaginationComponentOptions;
sortConfig: SortOptions;
- private sub;
- constructor(
- private cds: CommunityDataService,
- private route: ActivatedRoute
- ) {
+ constructor(private cds: CommunityDataService) {
this.config = new PaginationComponentOptions();
this.config.id = 'top-level-pagination';
this.config.pageSizeOptions = [4];
@@ -31,19 +27,19 @@ export class TopLevelCommunityListComponent implements OnInit {
}
ngOnInit(): void {
-
- this.sub = this.route
- .queryParams
- .subscribe((params) => {
- this.topLevelCommunities = this.cds.findAll({
- currentPage: params.page,
- elementsPerPage: params.pageSize,
- sort: { field: params.sortField, direction: params.sortDirection }
- });
- });
+ this.updatePage({
+ page: 1,
+ pageSize: this.config.pageSize,
+ sortField: this.sortConfig.field,
+ direction: this.sortConfig.direction
+ });
}
- ngOnDestroy() {
- this.sub.unsubscribe();
+ updatePage(data) {
+ this.topLevelCommunities = this.cds.findAll({
+ currentPage: data.page,
+ elementsPerPage: data.pageSize,
+ sort: { field: data.sortField, direction: data.sortDirection }
+ });
}
}
diff --git a/src/app/shared/pagination/pagination.component.ts b/src/app/shared/pagination/pagination.component.ts
index 8f0d97f7be..80cf8b10ae 100644
--- a/src/app/shared/pagination/pagination.component.ts
+++ b/src/app/shared/pagination/pagination.component.ts
@@ -325,27 +325,27 @@ export class PaginationComponent implements OnDestroy, OnInit {
* The page size to validate
*/
private validateParams(page: any, pageSize: any, sortDirection: any, sortField: any) {
+ const originalPageInfo = {
+ id: this.id,
+ page: page,
+ pageSize: pageSize,
+ sortDirection: sortDirection,
+ sortField: sortField
+ };
// tslint:disable-next-line:triple-equals
- const newPage = validatePage();
- const newSize = validateSize();
+ const filteredPageInfo = {
+ id: this.id,
+ page: this.validatePage(page),
+ pageSize: this.validatePageSize(pageSize),
+ sortDirection: sortDirection,
+ sortField: sortField
+ };
- this.currentPage = page
- } else {
- this.currentPage = this.paginationOptions.currentPage;
- }
-
- let filteredPageSize = this.pageSizeOptions.find((x) => x == pageSize);
- if (!isNumeric(page) || !filteredPageSize) {
- const filteredPage = isNumeric(page) ? page : this.currentPage;
- filteredPageSize = (filteredPageSize) ? filteredPageSize : this.pageSize;
+ // let filteredPageSize = this.pageSizeOptions.find((x) => x === pageSize);
+ if (JSON.stringify(originalPageInfo) !== JSON.stringify(filteredPageInfo)) {
+ // filteredPageSize = (filteredPageSize) ? filteredPageSize : this.pageSize;
this.router.navigate([], {
- queryParams: {
- pageId: this.id,
- page: filteredPage,
- pageSize: filteredPageSize,
- sortDirection: sortDirection,
- sortField: sortField
- }
+ queryParams: filteredPageInfo
});
} else {
let hasChanged = false;
@@ -386,6 +386,23 @@ export class PaginationComponent implements OnDestroy, OnInit {
}
}
+ private validatePage(page: any): string {
+ let result = this.currentPage
+ if (isNumeric(page)) {
+ result = page;
+ }
+ return result + '';
+ }
+
+ private validatePageSize(pageSize: any): string {
+ const filteredPageSize = this.pageSizeOptions.find((x) => x === pageSize);
+ let result = this.pageSize
+ if (filteredPageSize) {
+ result = pageSize;
+ }
+ return result + '';
+ }
+
/**
* Ensure options passed contains the required properties.
*
@@ -409,4 +426,5 @@ export class PaginationComponent implements OnDestroy, OnInit {
get shouldShowBottomPager(): boolean {
return this.hasMultiplePages || !this.hidePagerWhenSinglePage
}
+
}