infinity-forge
Version:
50 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.paginate = paginate;
function paginate(_a) {
var totalItems = _a.totalItems, _b = _a.currentPage, currentPage = _b === void 0 ? 1 : _b, _c = _a.pageSize, pageSize = _c === void 0 ? 1 : _c, _d = _a.maxPages, maxPages = _d === void 0 ? 1 : _d, hasNextPage = _a.hasNextPage, hasPreviousPage = _a.hasPreviousPage, totalPages = _a.totalPages;
var page = currentPage;
if (page < 1) {
page = 1;
}
else if (page > totalPages) {
page = totalPages;
}
var startPage;
var endPage;
if (totalPages <= maxPages) {
startPage = 1;
endPage = totalPages;
}
else {
var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);
var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;
if (page <= maxPagesBeforeCurrentPage) {
startPage = 1;
endPage = maxPages;
}
else if (page + maxPagesAfterCurrentPage >= totalPages) {
startPage = totalPages - maxPages + 1;
endPage = totalPages;
}
else {
startPage = page - maxPagesBeforeCurrentPage;
endPage = page + maxPagesAfterCurrentPage;
}
}
var startIndex = (page - 1) * pageSize;
var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);
return {
page: page,
endPage: endPage,
pageSize: pageSize,
startPage: startPage,
startIndex: startIndex,
endIndex: endIndex,
totalPages: totalPages,
totalItems: totalItems,
hasNextPage: hasNextPage,
hasPreviousPage: hasPreviousPage
};
}
//# sourceMappingURL=service.js.map