diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e60feb..5b601a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## Changes 4/18/2025 + +### fileListView.js + +- Seed and persist `itemsPerPage` from `localStorage` +- Use `window.itemsPerPage` for pagination in gallery +- Enable search input filtering in gallery mode +- Always re‑render the view‑toggle button on gallery load +- Restore per‑card action buttons (download, edit, rename, share) +- Assign real `value` to checkboxes and call `updateFileActionButtons()` on change +- Update `changePage` and `changeItemsPerPage` to respect `viewMode` + +### fileTags.js + +- Import `renderFileTable` and `renderGalleryView` +- Re‑render the list after saving a single‑file tag +- Re‑render the list after saving multi‑file tags + +--- + ## Changes 4/17/2025 - Generate OpenAPI spec and API HTML docs diff --git a/public/js/fileListView.js b/public/js/fileListView.js index 326bb3e..494fef0 100644 --- a/public/js/fileListView.js +++ b/public/js/fileListView.js @@ -20,9 +20,12 @@ import { openTagModal, openMultiTagModal } from './fileTags.js'; export let fileData = []; export let sortOrder = { column: "uploaded", ascending: true }; -window.itemsPerPage = window.itemsPerPage || 10; +window.itemsPerPage = parseInt( + localStorage.getItem('itemsPerPage') || window.itemsPerPage || '10', + 10 +); window.currentPage = window.currentPage || 1; -window.viewMode = localStorage.getItem("viewMode") || "table"; // "table" or "gallery" +window.viewMode = localStorage.getItem("viewMode") || "table"; // Global flag for advanced search mode. window.advancedSearchEnabled = false; @@ -407,33 +410,89 @@ export function renderGalleryView(folder, container) { ? "uploads/" : "uploads/" + folder.split("/").map(encodeURIComponent).join("/") + "/"; - // Use the current global column value (default to 3). - const numColumns = window.galleryColumns || 3; + // pagination settings + const itemsPerPage = window.itemsPerPage; + let currentPage = window.currentPage || 1; + const totalFiles = filteredFiles.length; + const totalPages = Math.ceil(totalFiles / itemsPerPage); + if (currentPage > totalPages) { + currentPage = totalPages || 1; + window.currentPage = currentPage; + } - // --- Insert slider controls --- - const sliderHTML = ` -