diff --git a/apps/home/static/home/js/tables.js b/apps/home/static/home/js/tables.js index 2c8e158..6a74b70 100644 --- a/apps/home/static/home/js/tables.js +++ b/apps/home/static/home/js/tables.js @@ -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"); + }); +} \ No newline at end of file diff --git a/apps/home/templates/home/tabs/subs.html b/apps/home/templates/home/tabs/subs.html index 6d338bf..fb12caa 100644 --- a/apps/home/templates/home/tabs/subs.html +++ b/apps/home/templates/home/tabs/subs.html @@ -66,8 +66,8 @@
- -