Skip to content

Commit

Permalink
fixes publications pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
kasprzyk-sz committed Feb 20, 2025
1 parent 515c96c commit 8b47bc0
Showing 1 changed file with 159 additions and 88 deletions.
247 changes: 159 additions & 88 deletions wp-content/themes/vf-wp-groups/partials/pagination.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,106 +45,177 @@ function showPage(page) {
}
function updatePaginationLinks() {
console.log('run');
let articleTotal = document.querySelectorAll(".vf-summary--publication");
const pageNumbers = document.querySelector(".vf-pagination__list");
// Calculate the total number of pages
const totalPages = Math.ceil(articleTotal.length / itemsPerPage);
// Clear existing pagination links
pageNumbers.innerHTML = "";
// Calculate the total number of pages
const totalPages = Math.ceil(articleTotal.length / itemsPerPage);
const maxPageLinks = 5; // Maximum number of pagination links to display
// Calculate the start and end page numbers to display
let startPage = 1;
let endPage = totalPages;
if (totalPages > maxPageLinks) {
const offset = Math.floor(maxPageLinks / 2);
startPage = Math.max(1, currentPage - offset);
endPage = Math.min(totalPages, startPage + maxPageLinks - 1);
// Add "Previous" link
const prevPageItem = document.createElement("li");
prevPageItem.classList.add("vf-pagination__item");
prevPageItem.classList.add("vf-pagination__item--previous-page");
const prevPageLink = document.createElement("a");
if (currentPage - offset > 1) {
startPage++;
}
if (currentPage + offset < totalPages) {
endPage--;
}
}
// Clear existing pagination links
pageNumbers.innerHTML = "";
// Add "Previous" link
const prevPageItem = document.createElement("li");
prevPageItem.classList.add("vf-pagination__item");
prevPageItem.classList.add("vf-pagination__item--previous-page");
const prevPageLink = document.createElement("a");
if (currentPage > 1) {
prevPageLink.textContent = "Previous";
prevPageLink.href = "#"; // Set the href attribute as needed
prevPageLink.classList.add("vf-pagination__link");
prevPageLink.addEventListener("click", (event) => {
event.preventDefault();
if (currentPage > 1) {
prevPageLink.textContent = "Previous";
prevPageLink.href = "#"; // Set the href attribute as needed
prevPageLink.classList.add("vf-pagination__link");
prevPageLink.addEventListener("click", (event) => {
event.preventDefault();
if (currentPage > 1) {
currentPage--;
showPage(currentPage);
updatePaginationLinks();
}
});
} else {
prevPageLink.textContent = "Previous";
prevPageItem.classList.add("disabled");
}
prevPageItem.appendChild(prevPageLink);
pageNumbers.appendChild(prevPageItem);
// Create and display page numbers as list items
for (let i = 1; i <= totalPages; i++) {
const pageNumberItem = document.createElement("li");
const pageNumberLink = document.createElement("a");
if (i === currentPage) {
const pageNumberSpan = document.createElement("span");
pageNumberSpan.classList.add("vf-pagination__label");
pageNumberItem.classList.add("vf-pagination__item--is-active");
pageNumberSpan.setAttribute("aria-current", "page");
pageNumberSpan.textContent = i;
pageNumberItem.appendChild(pageNumberSpan);
} else {
pageNumberLink.textContent = i;
pageNumberLink.href = "#"; // Set the href attribute as needed
pageNumberLink.classList.add("vf-pagination__link");
pageNumberLink.addEventListener("click", (event) => {
event.preventDefault();
currentPage = i;
showPage(currentPage);
updatePaginationLinks();
});
pageNumberItem.appendChild(pageNumberLink);
}
pageNumberItem.classList.add("vf-pagination__item");
pageNumbers.appendChild(pageNumberItem);
currentPage--;
showPage(currentPage);
updatePaginationLinks();
}
});
} else {
prevPageLink.textContent = "Previous";
prevPageItem.classList.add("disabled");
}
prevPageItem.appendChild(prevPageLink);
pageNumbers.appendChild(prevPageItem);
// Add first page
if (startPage > 1) {
const firstPageItem = document.createElement("li");
const firstPageLink = document.createElement("a");
firstPageLink.textContent = "1";
firstPageLink.href = "#"; // Set the href attribute as needed
firstPageLink.classList.add("vf-pagination__link");
firstPageLink.addEventListener("click", (event) => {
event.preventDefault();
currentPage = 1;
showPage(currentPage);
updatePaginationLinks();
});
firstPageItem.appendChild(firstPageLink);
firstPageItem.classList.add("vf-pagination__item");
pageNumbers.appendChild(firstPageItem);
if (startPage > 2) {
// Add '...' if there are more pages before the first page
const ellipsisItem = document.createElement("li");
ellipsisItem.textContent = "...";
ellipsisItem.classList.add("vf-pagination__item");
pageNumbers.appendChild(ellipsisItem);
}
}
// Add "Next" link
const nextPageItem = document.createElement("li");
nextPageItem.classList.add("vf-pagination__item");
nextPageItem.classList.add("vf-pagination__item--next-page");
const nextPageLink = document.createElement("a");
// Create and display page numbers as list items
for (let i = startPage; i <= endPage; i++) {
const pageNumberItem = document.createElement("li");
const pageNumberLink = document.createElement("a");
if (i === currentPage) {
const pageNumberSpan = document.createElement("span");
pageNumberSpan.classList.add("vf-pagination__label");
pageNumberItem.classList.add("vf-pagination__item--is-active");
pageNumberSpan.setAttribute("aria-current", "page");
pageNumberSpan.textContent = i;
pageNumberItem.appendChild(pageNumberSpan);
} else {
pageNumberLink.textContent = i;
pageNumberLink.href = "#"; // Set the href attribute as needed
pageNumberLink.classList.add("vf-pagination__link");
pageNumberLink.addEventListener("click", (event) => {
event.preventDefault();
currentPage = i;
showPage(currentPage);
updatePaginationLinks();
});
pageNumberItem.appendChild(pageNumberLink);
}
pageNumberItem.classList.add("vf-pagination__item");
pageNumbers.appendChild(pageNumberItem);
}
// Add last page
if (endPage < totalPages) {
if (endPage < totalPages - 1) {
// Add '...' if there are more pages after the last page
const ellipsisItem = document.createElement("li");
ellipsisItem.textContent = "...";
ellipsisItem.classList.add("vf-pagination__item");
pageNumbers.appendChild(ellipsisItem);
}
const lastPageItem = document.createElement("li");
const lastPageLink = document.createElement("a");
lastPageLink.textContent = totalPages;
lastPageLink.href = "#"; // Set the href attribute as needed
lastPageLink.classList.add("vf-pagination__link");
lastPageLink.addEventListener("click", (event) => {
event.preventDefault();
currentPage = totalPages;
showPage(currentPage);
updatePaginationLinks();
});
lastPageItem.appendChild(lastPageLink);
lastPageItem.classList.add("vf-pagination__item");
pageNumbers.appendChild(lastPageItem);
}
// Add "Next" link
const nextPageItem = document.createElement("li");
nextPageItem.classList.add("vf-pagination__item");
nextPageItem.classList.add("vf-pagination__item--next-page");
const nextPageLink = document.createElement("a");
if (currentPage < totalPages) {
nextPageLink.textContent = "Next";
nextPageLink.href = "#"; // Set the href attribute as needed
nextPageLink.classList.add("vf-pagination__link");
nextPageLink.addEventListener("click", (event) => {
event.preventDefault();
if (currentPage < totalPages) {
nextPageLink.textContent = "Next";
nextPageLink.href = "#"; // Set the href attribute as needed
nextPageLink.classList.add("vf-pagination__link");
nextPageLink.addEventListener("click", (event) => {
event.preventDefault();
const totalPages = Math.ceil(articleTotal.length / itemsPerPage);
if (currentPage < totalPages) {
currentPage++;
showPage(currentPage);
updatePaginationLinks();
}
});
} else {
nextPageLink.textContent = "Next";
nextPageItem.classList.add("disabled");
currentPage++;
showPage(currentPage);
updatePaginationLinks();
}
nextPageItem.appendChild(nextPageLink);
pageNumbers.appendChild(nextPageItem);
});
} else {
nextPageLink.textContent = "Next";
nextPageItem.classList.add("disabled");
}
nextPageItem.appendChild(nextPageLink);
pageNumbers.appendChild(nextPageItem);
// Page range display
var rangeTotalPages = articleTotal.length;
var numberOfPages = Math.ceil(rangeTotalPages / itemsPerPage),
start = ((currentPage - 1) * itemsPerPage + 1) + ' - ',
end = Math.min(currentPage * itemsPerPage, rangeTotalPages);
// Page range display
var rangeTotalPages = articleTotal.length;
var numberOfPages = Math.ceil(rangeTotalPages / itemsPerPage),
start = ((currentPage - 1) * itemsPerPage + 1) + ' - ',
end = Math.min(currentPage * itemsPerPage, rangeTotalPages);
if (rangeTotalPages <= itemsPerPage) {
start = "";
}
document.querySelector('#start-counter').textContent = start;
document.querySelector('#total-result').textContent = rangeTotalPages;
document.querySelector('#end-counter').textContent = end;
}
if (rangeTotalPages <= itemsPerPage) {
start = "";
}
document.querySelector('#start-counter').textContent = start;
document.querySelector('#total-result').textContent = rangeTotalPages;
document.querySelector('#end-counter').textContent = end;
}
// scroll to top after clicking on a pagination element
document.addEventListener("DOMContentLoaded", function () {
Expand Down

0 comments on commit 8b47bc0

Please sign in to comment.