# Pagination Integration Guide
## Overview
This guide explains how to replace the infinite scroll with proper pagination and add a status filter dropdown.
## Changes Needed
### 1. Add Status Filter Dropdown to HTML
**Location**: templates/dashboard.html, around line 568 (near the qualityFilter dropdown)
**Replace this section:**
```html
```
**With this:**
```html
```
### 2. Add Pagination Controls Container
**Location**: Right after the closing `` tag for qualityTable, before the `` that closes the section
**Add:**
```html
```
### 3. Replace JavaScript Code
**Location**: templates/dashboard.html, lines 1439-1625
**Remove:**
- All code from `// File Quality Analysis` to just before `function toggleFileSelection`
- Remove `function loadMoreFiles()`
- Remove `function handleScroll()`
**Replace with the code from:** `pagination-replacement.js`
### 4. Remove Infinite Scroll Event Listeners
**Location**: In the DOMContentLoaded event listener (around line 718-723)
**Remove these lines:**
```javascript
// Add infinite scroll
const tableContainer = document.querySelector('.section:has(#qualityTable)');
if (tableContainer) {
tableContainer.addEventListener('scroll', handleScroll);
}
window.addEventListener('scroll', handleScroll);
```
### 5. Update applyFilter Function
**Location**: Around line 1613 in the current file
**Find:**
```javascript
function applyFilter(filterType) {
// Update current filter
currentAttributeFilter = filterType === 'all' ? null : filterType;
// Update button styles...
// Reload the file list with the new filter
loadFileQuality();
}
```
**Update to:**
```javascript
function applyFilter(filterType) {
// Update current filter
currentAttributeFilter = filterType === 'all' ? null : filterType;
currentPage = 1; // Reset to first page when changing filter
// Update button styles to show active filter
document.querySelectorAll('.filter-btn').forEach(btn => {
const btnFilter = btn.getAttribute('data-filter');
if (btnFilter === filterType) {
btn.style.background = '#3b82f6';
btn.style.fontWeight = '600';
} else {
btn.style.background = '#64748b';
btn.style.fontWeight = '400';
}
});
// Reload the file list with the new filter
loadFileQuality();
}
```
### 6. Remove Old qualityFilter References
**Search for**: `document.getElementById('qualityFilter')`
**Remove or update** any references to the old qualityFilter dropdown since we're replacing it with statusFilter
## Key Features of New Pagination
### Status Filter Dropdown
- Select by status: All, Discovered, Pending, Processing, Completed, Failed, Skipped
- Independent from attribute filters
- Resets to page 1 when changed
### Pagination Controls
- **Previous/Next** buttons for navigation
- **Page indicator** showing current page and file range
- **Go to page** input for jumping to specific pages
- **Smart navigation** - Previous disabled on page 1
### Selection Persistence
- Selected files persist across page changes
- Checkboxes show correct state when returning to a page
- Clear selections when changing filters
### Efficient Loading
- Loads 100 files per page
- Only fetches what's needed
- Fast page switching
## Testing Checklist
After integration:
1. ✅ Status filter dropdown works
2. ✅ Can navigate pages with Previous/Next
3. ✅ Can jump to specific page
4. ✅ Selections persist across pages
5. ✅ Attribute filters work with pagination
6. ✅ Combining status + attribute filters works
7. ✅ Page resets to 1 when changing filters
8. ✅ No console errors
## Quick Integration Script
If you want to apply these changes automatically, here's a sed script approach:
1. Back up current dashboard.html
2. Apply the HTML changes manually (status filter, pagination container)
3. Replace the JavaScript section with pagination-replacement.js content
Or manually:
1. Open templates/dashboard.html
2. Follow each step above
3. Test in browser
4. Refresh and verify
## Comparison
### Before (Infinite Scroll)
- ❌ Confusing "Load More" button
- ❌ All files stay in DOM (memory issues)
- ❌ Hard to jump to specific section
- ❌ Scroll position lost on filter change
### After (Pagination)
- ✅ Clear page navigation
- ✅ Only 100 files in DOM at once
- ✅ Can jump to any page
- ✅ Clean state management
- ✅ Status filter dropdown for easy filtering