page sizer and total items count

This commit is contained in:
Corban-Lee Jones 2024-09-26 12:29:04 +01:00
parent 4c0928e10c
commit 293c02a6fd
2 changed files with 24 additions and 5 deletions

View File

@ -36,6 +36,7 @@ function initializeDataTable(tableId, columns) {
]
});
bindTablePagination(tableId);
bindTablePageSizer(tableId);
}
@ -81,6 +82,7 @@ function wipeTable(tableId) {
function populateTable(tableId, data) {
$(tableId).DataTable().rows.add(data.results).draw(false);
updateTablePagination(tableId, data);
updateTableTotalCount(tableId, data);
}
async function loadTableData(tableId, url, method) {
@ -102,9 +104,9 @@ async function loadTableData(tableId, url, method) {
// region Pagination
function bindTablePagination(tableId) {
let $paginationArea = $("#subTable").closest('.js-tableBody').siblings('.js-tableControls').find('.pagination');
let $paginationArea = $(tableId).closest('.js-tableBody').siblings('.js-tableControls').find('.pagination');
$paginationArea.on("click", ".page-link", function() {
let currentPage = $paginationArea.data("page");
let currentPage = parseInt($paginationArea.data("page"));
let wantedPage;
if ($(this).hasClass("page-prev")) {
@ -124,12 +126,13 @@ function bindTablePagination(tableId) {
function fixTablePagination(tableId) {
let filters = getTableFilters(tableId);
let $pageSizer = $(tableId).closest('.js-tableBody').siblings('.js-tableControls').find(".table-page-sizer");
if (!("page" in filters)) {
setTableFilter(tableId, "page", 1);
}
if (!("page_size" in filters)) {
setTableFilter(tableId, "page_size", 1) // TODO: shouldn't be hard coded
setTableFilter(tableId, "page_size", $($pageSizer).val())
}
}
@ -212,3 +215,19 @@ function AddTablePageEllipsis($paginationArea) {
ellipsisItem.append(ellipsisLink);
$paginationArea.find(".page-next").parent().before(ellipsisItem);
}
// region Page Sizer
function updateTableTotalCount(tableId, data) {
let $tableControls = $(tableId).closest('.js-tableBody').siblings('.js-tableControls');
$tableControls.find('.pageinfo-total').text(data.count);
}
function bindTablePageSizer(tableId) {
let $tableControls = $(tableId).closest('.js-tableBody').siblings('.js-tableControls');
$tableControls.on("change", ".table-page-sizer", function() {
setTableFilter(tableId, "page", "1");
setTableFilter(tableId, "page_size", $(this).val());
$(tableId).trigger("doDataLoad");
});
}

View File

@ -66,8 +66,8 @@
</nav>
</div>
<div class="col-lg-6 d-flex align-items-center justify-content-lg-end">
<label for="" class="form-label align-self-center mb-0 me-2">Show</label>
<select name="" id="" class="select-2 table-page-sizer">
<label for="subTablePageSizer" class="form-label align-self-center mb-0 me-2">Show</label>
<select name="subTablePageSizer" id="subTablePageSizer" class="select-2 table-page-sizer">
<option value="10" selected>10&emsp;</option>
<option value="15">15&emsp;</option>
<option value="20">20&emsp;</option>