improve pagination
This commit is contained in:
		@ -1,6 +1,7 @@
 | 
			
		||||
import { formatCurrency } from "./common.js"
 | 
			
		||||
import { formatCurrency, paginator } from "./common.js"
 | 
			
		||||
 | 
			
		||||
export let pageSize = 2;
 | 
			
		||||
//TODO: This should be put into the localStorage if we click into a sale and
 | 
			
		||||
//get back, we may want to stay at the same page before.
 | 
			
		||||
export let currentPage = 1;
 | 
			
		||||
 | 
			
		||||
export function showTable(api, ps, cp) {
 | 
			
		||||
@ -33,7 +34,14 @@ export function showTable(api, ps, cp) {
 | 
			
		||||
                    let newRow = tbody.insertRow();
 | 
			
		||||
                    let newCell = newRow.insertCell();
 | 
			
		||||
 | 
			
		||||
                    newCell.innerHTML = `<a href="/admin/sales/${i.id}">Order ${i.id}</a>`;
 | 
			
		||||
                    newCell.innerHTML = `<a href="#!">Order ${i.id}</a>`;
 | 
			
		||||
                    newCell.addEventListener("click", function (evt) {
 | 
			
		||||
                        // put the current_page into localStorage
 | 
			
		||||
                        localStorage.setItem("cur-page", data.current_page);
 | 
			
		||||
 | 
			
		||||
                        // redirect
 | 
			
		||||
                        location.href = `/admin/sales/${i.id}`;
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                    newCell = newRow.insertCell();
 | 
			
		||||
                    let item = document.createTextNode(i.customer.last_name + ", " + i.customer.first_name);
 | 
			
		||||
@ -54,7 +62,7 @@ export function showTable(api, ps, cp) {
 | 
			
		||||
                    } else {
 | 
			
		||||
                        newCell.innerHTML = `<span class="badge bg-success">Charged</span>`
 | 
			
		||||
                    }
 | 
			
		||||
                    paginator(api, data.last_page, data.current_page)
 | 
			
		||||
                    paginator(api, data.last_page, data.current_page, showTable)
 | 
			
		||||
                });
 | 
			
		||||
            } else {
 | 
			
		||||
                let newRow = tbody.insertRow();
 | 
			
		||||
@ -65,28 +73,3 @@ export function showTable(api, ps, cp) {
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function paginator(api, pages, curPage) {
 | 
			
		||||
    const p = document.getElementById("paginator")
 | 
			
		||||
    let html = `<li class="page-item"><a href="#!" class="page-link pager" data-page="${curPage - 1}"><</a></li>`;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < pages; i++) {
 | 
			
		||||
        html += `<li class="page-item"><a href="#!" class="page-link pager" data-page="${i + 1}">${i + 1}</a></li>`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    html += `<li class="page-item"><a href="#!" class="page-link pager" data-page="${curPage + 1}">></a></li>`;
 | 
			
		||||
 | 
			
		||||
    p.innerHTML = html;
 | 
			
		||||
 | 
			
		||||
    let pageBtns = document.getElementsByClassName("pager");
 | 
			
		||||
    for (var j = 0; j < pageBtns.length; j++) {
 | 
			
		||||
        pageBtns[j].addEventListener("click", function(evt){
 | 
			
		||||
            let desiredPage = evt.target.getAttribute("data-page");
 | 
			
		||||
            if ((desiredPage > 0) && (desiredPage <= pages)) {
 | 
			
		||||
                console.log("would go to page", desiredPage);
 | 
			
		||||
                showTable(api, pageSize, desiredPage);
 | 
			
		||||
                currentPage = desiredPage
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,5 @@
 | 
			
		||||
import { formatCurrency } from "./common.js"
 | 
			
		||||
import { formatCurrency, paginator } from "./common.js"
 | 
			
		||||
 | 
			
		||||
export let pageSize = 2;
 | 
			
		||||
export let currentPage = 1;
 | 
			
		||||
 | 
			
		||||
export function showTable(api, ps, cp) {
 | 
			
		||||
@ -33,7 +32,14 @@ export function showTable(api, ps, cp) {
 | 
			
		||||
                    let newRow = tbody.insertRow();
 | 
			
		||||
                    let newCell = newRow.insertCell();
 | 
			
		||||
 | 
			
		||||
                    newCell.innerHTML = `<a href="/admin/subscriptions/${i.id}">Order ${i.id}</a>`;
 | 
			
		||||
                    newCell.innerHTML = `<a href="#!">Order ${i.id}</a>`;
 | 
			
		||||
                    newCell.addEventListener("click", function (evt) {
 | 
			
		||||
                        // put the current_page into localStorage
 | 
			
		||||
                        localStorage.setItem("cur-page", data.current_page);
 | 
			
		||||
 | 
			
		||||
                        // redirect
 | 
			
		||||
                        location.href = `/admin/subscriptions/${i.id}`;
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                    newCell = newRow.insertCell();
 | 
			
		||||
                    let item = document.createTextNode(i.customer.last_name + ", " + i.customer.first_name);
 | 
			
		||||
@ -54,7 +60,7 @@ export function showTable(api, ps, cp) {
 | 
			
		||||
                    } else {
 | 
			
		||||
                        newCell.innerHTML = `<span class="badge bg-success">Charged</span>`
 | 
			
		||||
                    }
 | 
			
		||||
                    paginator(api, data.last_page, data.current_page)
 | 
			
		||||
                    paginator(api, data.last_page, data.current_page, showTable)
 | 
			
		||||
                });
 | 
			
		||||
            } else {
 | 
			
		||||
                let newRow = tbody.insertRow();
 | 
			
		||||
@ -65,27 +71,3 @@ export function showTable(api, ps, cp) {
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function paginator(api, pages, curPage) {
 | 
			
		||||
    const p = document.getElementById("paginator")
 | 
			
		||||
    let html = `<li class="page-item"><a href="#!" class="page-link pager" data-page="${curPage - 1}"><</a></li>`;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < pages; i++) {
 | 
			
		||||
        html += `<li class="page-item"><a href="#!" class="page-link pager" data-page="${i + 1}">${i + 1}</a></li>`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    html += `<li class="page-item"><a href="#!" class="page-link pager" data-page="${curPage + 1}">></a></li>`;
 | 
			
		||||
 | 
			
		||||
    p.innerHTML = html;
 | 
			
		||||
 | 
			
		||||
    let pageBtns = document.getElementsByClassName("pager");
 | 
			
		||||
    for (var j = 0; j < pageBtns.length; j++) {
 | 
			
		||||
        pageBtns[j].addEventListener("click", function(evt){
 | 
			
		||||
            let desiredPage = evt.target.getAttribute("data-page");
 | 
			
		||||
            if ((desiredPage > 0) && (desiredPage <= pages)) {
 | 
			
		||||
                console.log("would go to page", desiredPage);
 | 
			
		||||
                showTable(api, pageSize, desiredPage);
 | 
			
		||||
                currentPage = desiredPage
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,8 @@ export let stripe;
 | 
			
		||||
const payButton = document.getElementById("pay-button");
 | 
			
		||||
export const processing = document.getElementById("processing-payment");
 | 
			
		||||
 | 
			
		||||
export let pageSize = 2;
 | 
			
		||||
 | 
			
		||||
export function hidePayButton() {
 | 
			
		||||
    payButton.classList.add("d-none");
 | 
			
		||||
    processing.classList.remove("d-none");
 | 
			
		||||
@ -98,3 +100,38 @@ export function formatCurrency(amount) {
 | 
			
		||||
        currency: "EUR",
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function paginator(api, pages, curPage, showTable) {
 | 
			
		||||
    // Check the border case
 | 
			
		||||
    if (curPage >= pages) {
 | 
			
		||||
        curPage = pages
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const p = document.getElementById("paginator")
 | 
			
		||||
    let html = `<li class="page-item"><a href="#!" class="page-link pager" data-page="${curPage - 1}"><</a></li>`;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < pages; i++) {
 | 
			
		||||
        if (i + 1 == curPage) {
 | 
			
		||||
            html += `<li class="page-item"><a href="#!" class="page-link pager active" data-page="${i + 1}">${i + 1}</a></li>`;
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
 | 
			
		||||
            html += `<li class="page-item"><a href="#!" class="page-link pager" data-page="${i + 1}">${i + 1}</a></li>`;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    html += `<li class="page-item"><a href="#!" class="page-link pager" data-page="${curPage + 1}">></a></li>`;
 | 
			
		||||
 | 
			
		||||
    p.innerHTML = html;
 | 
			
		||||
 | 
			
		||||
    let pageBtns = document.getElementsByClassName("pager");
 | 
			
		||||
    for (var j = 0; j < pageBtns.length; j++) {
 | 
			
		||||
        pageBtns[j].addEventListener("click", function (evt) {
 | 
			
		||||
            let desiredPage = evt.target.getAttribute("data-page");
 | 
			
		||||
            if ((desiredPage > 0) && (desiredPage <= pages)) {
 | 
			
		||||
                console.log("would go to page", desiredPage);
 | 
			
		||||
                showTable(api, pageSize, desiredPage);
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user