@rkosafo/cai.components
Version:
This package is under development and not ready for public use.
172 lines (171 loc) • 4.27 kB
JavaScript
// export class PageInfo {
// // private _currentPage: number = 1;
// // private _pageSize: number;
// // private _totalItems: number;
// // private _totalPages: number = 0;
// // private _hasNextPage = false;
// // private _hasPrevPage = false;
// // private _nextPageUrl: string = '';
// // private _prevPageUrl: string = '';
// constructor(pageSize = 100, currentPage = 1, totalItems = 0) {
// this._currentPage = currentPage;
// this._pageSize = pageSize;
// this._totalItems = totalItems;
// this.computePages();
// }
// private computePages() {
// this._totalPages = Math.ceil(this._totalItems / this._pageSize);
// this._hasNextPage = this._totalPages > this._currentPage;
// this._hasPrevPage = this._currentPage > 1;
// }
// get currentPage() {
// return this._currentPage;
// }
// get pageSize() {
// return this._pageSize;
// }
// get totalItems() {
// return this._totalItems;
// }
// get totalPages() {
// return this._totalPages;
// }
// get hasNextPage() {
// return this._hasNextPage;
// }
// get hasPrevPage() {
// return this._hasPrevPage;
// }
// get nextPageUrl() {
// return this._nextPageUrl;
// }
// get prevPageUrl() {
// return this._prevPageUrl;
// }
// setPageSize(newPageSize: number) {
// this._pageSize = newPageSize;
// this.computePages();
// }
// setHasNextPage(newValue: boolean) {
// this._hasNextPage = newValue;
// }
// setHasPrevPage(newValue: boolean) {
// this._hasPrevPage = newValue;
// }
// setNextPageUrl(newValue: string) {
// this._nextPageUrl = newValue;
// }
// setPrevPageUrl(newValue: string) {
// this._prevPageUrl = newValue;
// }
// gotoStart() {
// this._currentPage = 1;
// }
// gotoNext() {
// if (this._hasNextPage) {
// this._currentPage += 1;
// return true;
// }
// return false;
// }
// gotoPrev() {
// if (this._hasPrevPage) {
// this._currentPage -= 1;
// if (this._currentPage < 1) this._currentPage = 1;
// return true;
// }
// return false;
// }
// setCurrentPage(val:number){
// this._currentPage = val
// }
// set totalItems(v: number) {
// this._totalItems = v;
// this.computePages();
// }
// }
export class PageInfo {
#currentPage = $state(1);
#pageSize = $state(100);
#totalItems = $state(0);
#totalPages = $state(0);
#hasNextPage = $state(false);
#hasPrevPage = $state(false);
#nextPageUrl = $state('');
#prevPageUrl = $state('');
computePages() {
this.#totalPages = Math.ceil(this.totalItems / this.#pageSize);
this.#hasNextPage = this.#totalPages > this.#currentPage;
this.#hasPrevPage = this.#currentPage > 1;
}
get currentPage() {
return this.#currentPage;
}
get pageSize() {
return this.#pageSize;
}
get totalItems() {
return this.#totalItems;
}
get totalPages() {
return this.#totalPages;
}
get hasNextPage() {
return this.#hasNextPage;
}
get hasPrevPage() {
return this.#hasPrevPage;
}
get nextPageUrl() {
return this.#nextPageUrl;
}
get prevPageUrl() {
return this.#prevPageUrl;
}
setPageSize(newPageSize) {
this.#pageSize = newPageSize;
this.computePages();
}
setHasNextPage(newValue) {
this.#hasNextPage = newValue;
}
setHasPrevPage(newValue) {
this.#hasPrevPage = newValue;
}
setTotalPages(val) {
this.#totalPages = val;
this.computePages();
}
setNextPageUrl(newValue) {
this.#nextPageUrl = newValue;
}
setPrevPageUrl(newValue) {
this.#prevPageUrl = newValue;
}
gotoStart() {
this.#currentPage = 1;
}
gotoNext() {
if (this.#hasNextPage) {
this.#currentPage += 1;
return true;
}
return false;
}
gotoPrev() {
if (this.#hasPrevPage) {
this.#currentPage -= 1;
if (this.#currentPage < 1)
this.#currentPage = 1;
return true;
}
return false;
}
setCurrentPage(val) {
this.#currentPage = val;
}
set totalItems(v) {
this.#totalItems = v;
this.computePages();
}
}