pagination bug fix on how found-last-page gets calculated
This commit is contained in:
parent
72cebd0c9d
commit
68b5bc7dd6
|
@ -37,7 +37,7 @@
|
||||||
<div class="text-muted d-flex justify-content-center mt-5" *ngIf="listingItems && listingItems.length > 0 && listingItems.length < pageSize">
|
<div class="text-muted d-flex justify-content-center mt-5" *ngIf="listingItems && listingItems.length > 0 && listingItems.length < pageSize">
|
||||||
{{'GENERAL.ACTIONS.NO-MORE-AVAILABLE' | translate}}
|
{{'GENERAL.ACTIONS.NO-MORE-AVAILABLE' | translate}}
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="listingItems && listingItems.length > 0 && listingItems.length >= currentPage*pageSize && !foundLastPage" class="d-flex justify-content-center">
|
<div *ngIf="listingItems && listingItems.length > 0 && this.lookup.page.offset < currentPage*pageSize" class="d-flex justify-content-center">
|
||||||
<button type="button" class="btn-load-more" (click)="loadMore()">{{'GENERAL.ACTIONS.LOAD-MORE' | translate}}</button>
|
<button type="button" class="btn-load-more" (click)="loadMore()">{{'GENERAL.ACTIONS.LOAD-MORE' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -38,7 +38,6 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn
|
||||||
currentPage: number = 0;
|
currentPage: number = 0;
|
||||||
pageSize: number = 5;
|
pageSize: number = 5;
|
||||||
listingItems: RecentActivityItem[]= [];
|
listingItems: RecentActivityItem[]= [];
|
||||||
foundLastPage: boolean = false; // in case the total-items-count is equal to this.pageSize*this.currentPage
|
|
||||||
|
|
||||||
@Input() type: string;
|
@Input() type: string;
|
||||||
@Input() includeDescriptions: boolean = false;
|
@Input() includeDescriptions: boolean = false;
|
||||||
|
@ -171,27 +170,25 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const initItems = this.currentPage == 0;
|
this.loadMore({ size: this.currentPage == 0 ? this.pageSize : this.pageSize*this.currentPage, offset: 0 });
|
||||||
this.loadMore({ size: initItems ? this.pageSize : this.pageSize*this.currentPage, offset: 0 }, initItems);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
loadMore(page?: Lookup.Paging, updatePage: boolean = true) {
|
loadMore(page?: Lookup.Paging) {
|
||||||
if (!page) page = { size: this.pageSize, offset: this.pageSize*this.currentPage };
|
if (!page) page = { size: this.pageSize, offset: this.pageSize*this.currentPage };
|
||||||
this.lookup.page = page;
|
this.lookup.page = page;
|
||||||
this.loadItems(PaginationAction.LoadMore, updatePage);
|
this.loadItems(PaginationAction.LoadMore);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadLess() {
|
loadLess() {
|
||||||
this.loadItems(PaginationAction.LoadLess);
|
this.loadItems(PaginationAction.LoadLess);
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadItems(action: PaginationAction, updatePage: boolean = true){
|
private loadItems(action: PaginationAction){
|
||||||
if (action == PaginationAction.LoadLess) {
|
if (action == PaginationAction.LoadLess) {
|
||||||
let latestBatchCount = this.listingItems.length%this.pageSize == 0 ? this.pageSize : this.listingItems.length%this.pageSize;
|
let latestBatchCount = this.listingItems.length%this.pageSize == 0 ? this.pageSize : this.listingItems.length%this.pageSize;
|
||||||
this.listingItems = this.listingItems.slice(0, this.listingItems.length-latestBatchCount);
|
this.listingItems = this.listingItems.slice(0, this.listingItems.length-latestBatchCount);
|
||||||
|
|
||||||
this._setPage(this.currentPage-1);
|
this._setPage(this.currentPage-1);
|
||||||
this.foundLastPage = false;
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -221,7 +218,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (updatePage && response.length > 0 && this.listingItems.length >= this.currentPage*this.pageSize) this._setPage(this.currentPage+1);
|
if (this.lookup.page.offset != 0 && response.length > 0 && this.listingItems.length >= this.currentPage*this.pageSize) this._setPage(this.currentPage+1);
|
||||||
else this._resetPagination();
|
else this._resetPagination();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -229,7 +226,6 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn
|
||||||
private _resetPagination(): void {
|
private _resetPagination(): void {
|
||||||
if (this.listingItems.length == 0) this.currentPage = 0;
|
if (this.listingItems.length == 0) this.currentPage = 0;
|
||||||
else this.currentPage = Math.ceil(this.listingItems.length/this.pageSize);
|
else this.currentPage = Math.ceil(this.listingItems.length/this.pageSize);
|
||||||
this.foundLastPage = true;
|
|
||||||
this.updateUrl();
|
this.updateUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue