diff --git a/src/components/dashboard/Officer_EventManagement.astro b/src/components/dashboard/Officer_EventManagement.astro index 12c6708..7dd5f16 100644 --- a/src/components/dashboard/Officer_EventManagement.astro +++ b/src/components/dashboard/Officer_EventManagement.astro @@ -63,7 +63,7 @@ const currentPage = eventResponse.page; declare global { interface Window { [key: string]: any; - openEditModal: (event: Event) => void; + openEditModal: (event?: any) => void; deleteFile: (eventId: string, filename: string) => void; previewFile: (url: string, filename: string) => void; openDetailsModal: (event: Event) => void; @@ -87,7 +87,7 @@ declare global {

Event Management

Manage and create IEEE UCSD events

- @@ -158,12 +158,17 @@ declare global { - - @@ -172,7 +177,7 @@ declare global { `; + paginationContainer.classList.add("hidden"); return; } @@ -1064,6 +1092,7 @@ declare global { const totalEventsLabelEl = document.getElementById("totalEventsLabel"); const currentPageEl = document.getElementById("currentPage"); const totalPagesLabelEl = document.getElementById("totalPagesLabel"); + const currentPageNumber = document.getElementById("currentPageNumber"); if (totalEventsEl) totalEventsEl.textContent = response.totalItems.toString(); @@ -1074,6 +1103,36 @@ declare global { if (currentPageEl) currentPageEl.textContent = response.page.toString(); if (totalPagesLabelEl) totalPagesLabelEl.textContent = `of ${response.totalPages}`; + if (currentPageNumber) + currentPageNumber.textContent = response.page.toString(); + + // Update pagination buttons state + const firstPageBtn = document.getElementById( + "firstPageBtn", + ) as HTMLButtonElement; + const prevPageBtn = document.getElementById( + "prevPageBtn", + ) as HTMLButtonElement; + const nextPageBtn = document.getElementById( + "nextPageBtn", + ) as HTMLButtonElement; + const lastPageBtn = document.getElementById( + "lastPageBtn", + ) as HTMLButtonElement; + + if (firstPageBtn) firstPageBtn.disabled = response.page <= 1; + if (prevPageBtn) prevPageBtn.disabled = response.page <= 1; + if (nextPageBtn) + nextPageBtn.disabled = response.page >= response.totalPages; + if (lastPageBtn) + lastPageBtn.disabled = response.page >= response.totalPages; + + // Show/hide pagination based on total pages + if (response.totalPages <= 1) { + paginationContainer.classList.add("hidden"); + } else { + paginationContainer.classList.remove("hidden"); + } // Update events list if (localEvents.length === 0) { @@ -1154,16 +1213,6 @@ declare global { }) .join(""); - // Update load more button - const loadMoreContainer = document.getElementById("loadMoreContainer"); - if (loadMoreContainer) { - if (response.page < response.totalPages) { - loadMoreContainer.classList.remove("hidden"); - } else { - loadMoreContainer.classList.add("hidden"); - } - } - totalPages = response.totalPages; } finally { auth.setUpdating(false); @@ -1178,19 +1227,38 @@ declare global { Failed to load events. Please try refreshing the page. `; + paginationContainer.classList.add("hidden"); } } - // Load more events when button is clicked - const loadMoreButton = document.getElementById("loadMoreButton"); - if (loadMoreButton) { - loadMoreButton.addEventListener("click", async (e: MouseEvent) => { - if (currentPage < totalPages) { - currentPage++; - await fetchEvents(); - } - }); - } + // Add pagination event listeners + document.getElementById("firstPageBtn")?.addEventListener("click", () => { + if (currentPage > 1) { + currentPage = 1; + fetchEvents(); + } + }); + + document.getElementById("prevPageBtn")?.addEventListener("click", () => { + if (currentPage > 1) { + currentPage--; + fetchEvents(); + } + }); + + document.getElementById("nextPageBtn")?.addEventListener("click", () => { + if (currentPage < totalPages) { + currentPage++; + fetchEvents(); + } + }); + + document.getElementById("lastPageBtn")?.addEventListener("click", () => { + if (currentPage < totalPages) { + currentPage = totalPages; + fetchEvents(); + } + }); // Initial fetch - only call once fetchEvents();