Skip to content
Snippets Groups Projects
Commit e632e9d8 authored by Lotte Hofstede's avatar Lotte Hofstede
Browse files

44239: more pagination fixes

parent bcf0026b
Branches
Tags
No related merge requests found
......@@ -2,5 +2,5 @@
<h2>{{'home.top-level-communities.head' | translate}}</h2>
<p class="lead">{{'home.top-level-communities.help' | translate}}</p>
<ds-object-list [config]="config" [sortConfig]="sortConfig"
[objects]="topLevelCommunities" [hideGear]="false"></ds-object-list>
[objects]="topLevelCommunities" [hideGear]="false" (paginationChange)="updatePage()"></ds-object-list>
</div>
......@@ -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<Community[]>;
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 }
});
}
}
......@@ -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();
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;
const filteredPageInfo = {
id: this.id,
page: this.validatePage(page),
pageSize: this.validatePageSize(pageSize),
sortDirection: sortDirection,
sortField: sortField
};
// 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
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment