From 7880e8710db81eb5f734455f732295cb4a94932c Mon Sep 17 00:00:00 2001 From: Apoorv Darshan Date: Wed, 18 Feb 2026 15:13:58 +0530 Subject: [PATCH 1/2] fix: reset pagination to page 1 when filters change Properly destroy the twbsPagination plugin instance before reinitializing, and explicitly set startPage to 1. This prevents the empty results bug when changing filters while on a later page. Fixes #86 --- scripts/cover.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/cover.js b/scripts/cover.js index 063e953b..67cd4d2b 100644 --- a/scripts/cover.js +++ b/scripts/cover.js @@ -18,9 +18,10 @@ function showTable() { function renderFilteredList(filteredIssueList, entries_per_page) { let total_num_pages = Math.ceil(filteredIssueList.length / entries_per_page); - $('#pagination').empty(); - $('#pagination').removeData("twbs-pagination"); - $('#pagination').unbind("page"); + // Destroy the previous pagination instance to reset page state + if ($('#pagination').data("twbs-pagination")) { + $('#pagination').twbsPagination('destroy'); + } let number_of_visible_pages = 5; if ($(window).width() <= 440) { @@ -33,6 +34,7 @@ function renderFilteredList(filteredIssueList, entries_per_page) { $('#pagination').twbsPagination({ totalPages: total_num_pages, visiblePages: number_of_visible_pages, + startPage: 1, hideOnlyOnePage: true, onPageClick: function (event, page) { let page_index = page - 1; // Variable page starts from 1 From 490eacfe8bee50c26cc83734a20e35a2c06356b2 Mon Sep 17 00:00:00 2001 From: Apoorv Darshan Date: Fri, 27 Mar 2026 00:09:22 +0530 Subject: [PATCH 2/2] fix: address PR review feedback for pagination reset Extract hardcoded 440 into MOBILE_BREAKPOINT constant and add validation for entries_per_page to prevent division by zero. --- scripts/cover.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/cover.js b/scripts/cover.js index 67cd4d2b..90103499 100644 --- a/scripts/cover.js +++ b/scripts/cover.js @@ -4,6 +4,7 @@ var checked_labels_session = sessionStorage.getItem('checked_labels'); var checked_repo_names_session = sessionStorage.getItem('checked_repo_names'); var minimum_repo_stars_session = sessionStorage.getItem('minimum_repo_stars'); var entries_per_page = 10; +var MOBILE_BREAKPOINT = 440; function killSpinner() { let spinner = document.getElementById("loading"); @@ -16,6 +17,9 @@ function showTable() { } function renderFilteredList(filteredIssueList, entries_per_page) { + if (!entries_per_page || entries_per_page <= 0) { + entries_per_page = 10; + } let total_num_pages = Math.ceil(filteredIssueList.length / entries_per_page); // Destroy the previous pagination instance to reset page state @@ -24,7 +28,7 @@ function renderFilteredList(filteredIssueList, entries_per_page) { } let number_of_visible_pages = 5; - if ($(window).width() <= 440) { + if ($(window).width() <= MOBILE_BREAKPOINT) { number_of_visible_pages = 2; }