fix: removed ?page=1 on client-side pagination

This commit is contained in:
2025-11-06 21:08:16 +01:00
parent 346f8e9908
commit 0fedd430b3
3 changed files with 33 additions and 12 deletions

View File

@@ -360,8 +360,12 @@ window.applyPageFilters = function(tableId) {
params.problems = problemsSelect.value;
}
// Check if we're in pagination mode
const isPaginationMode = window.isPaginationModeForPage(tableId);
// Update URL with new parameters
window.updateUrlParams(params, true);
// Only reset to page 1 if in server-side pagination mode
window.updateUrlParams(params, isPaginationMode);
};
// Shared search setup for both pagination and client-side modes
@@ -439,7 +443,7 @@ window.clearPageFilters = function(tableId, filterParams) {
const isPaginationMode = window.isPaginationModeForPage(tableId);
if (isPaginationMode) {
// SERVER-SIDE PAGINATION MODE: Remove filter parameters from URL
// SERVER-SIDE PAGINATION MODE: Remove all filter parameters and redirect to base URL
const currentUrl = new URL(window.location);
// Remove all filter parameters
@@ -447,10 +451,10 @@ window.clearPageFilters = function(tableId, filterParams) {
currentUrl.searchParams.delete(param);
});
// Reset to page 1
currentUrl.searchParams.set('page', '1');
// Also remove page parameter to go back to clean base URL
currentUrl.searchParams.delete('page');
// Navigate to cleaned URL
// Navigate to cleaned URL (will be just /xxx if no other params)
window.location.href = currentUrl.toString();
} else {
// CLIENT-SIDE MODE: Reset all filter dropdowns to "all"
@@ -461,6 +465,13 @@ window.clearPageFilters = function(tableId, filterParams) {
}
});
// Remove page parameter from URL if present (without reloading)
const currentUrl = new URL(window.location);
if (currentUrl.searchParams.has('page')) {
currentUrl.searchParams.delete('page');
window.history.replaceState({}, '', currentUrl.toString());
}
// Trigger filter application (will use existing filter logic)
window.applyPageFilters(tableId);
}

View File

@@ -53,12 +53,15 @@ function applyFilters() {
}
}
// Reset to page 1 when filtering
// Only reset to page 1 when filtering in server-side pagination mode
if (isPaginationMode()) {
currentUrl.searchParams.set('page', '1');
// Navigate to updated URL (server-side pagination)
window.location.href = currentUrl.toString();
} else {
// Client-side mode: Update URL without page reload
window.history.replaceState({}, '', currentUrl.toString());
}
window.location.href = currentUrl.toString();
}
// Legacy function for compatibility

View File

@@ -716,7 +716,7 @@ function initializeClearFiltersButton() {
clearFiltersButton.addEventListener('click', () => {
if (isPaginationMode()) {
// SERVER-SIDE PAGINATION MODE: Remove filter parameters from URL
// SERVER-SIDE PAGINATION MODE: Remove all filter parameters and redirect to base URL
const currentUrl = new URL(window.location);
// Remove all filter parameters
@@ -725,10 +725,10 @@ function initializeClearFiltersButton() {
currentUrl.searchParams.delete(param);
});
// Reset to page 1
currentUrl.searchParams.set('page', '1');
// Also remove page parameter to go back to clean base URL
currentUrl.searchParams.delete('page');
// Navigate to cleaned URL
// Navigate to cleaned URL (will be just /sets if no other params)
window.location.href = currentUrl.toString();
} else {
// CLIENT-SIDE MODE: Reset all filter dropdowns to empty string
@@ -757,6 +757,13 @@ function initializeClearFiltersButton() {
applyDuplicateFilter(false);
}
// Remove page parameter from URL if present (without reloading)
const currentUrl = new URL(window.location);
if (currentUrl.searchParams.has('page')) {
currentUrl.searchParams.delete('page');
window.history.replaceState({}, '', currentUrl.toString());
}
// Trigger filtering if grid instance exists
triggerGridRefresh();
}