Grotti 3.5.0: Pagination, Logging, Deb-Paket, Makro-Doku, PLA-Match-Fix.
This commit is contained in:
1 parent
4ffe1dcfc6
commit
f1f79c2ce2
38 files changed
+1062
-75
No files matched your search
@@ -333,3 +333,47 @@ window.setConnectionBanner = setConnectionBanner;
|
||||
window.createPoller = createPoller;
|
||||
window.promptAbraeumen = promptAbraeumen;
|
||||
window.VERDICT_REASON_LABELS = VERDICT_REASON_LABELS;
|
||||
|
||||
/** Listen-Pagination (clientseitig auf gefiltertem Array). */
|
||||
const DEFAULT_PAGE_SIZE = 40;
|
||||
|
||||
function pageSlice(items, page, pageSize) {
|
||||
const list = Array.isArray(items) ? items : [];
|
||||
const size = Math.max(1, Number(pageSize) || DEFAULT_PAGE_SIZE);
|
||||
const total = list.length;
|
||||
const pages = Math.max(1, Math.ceil(total / size) || 1);
|
||||
let p = Math.max(1, parseInt(page, 10) || 1);
|
||||
if (p > pages) p = pages;
|
||||
const start = (p - 1) * size;
|
||||
return {
|
||||
items: list.slice(start, start + size),
|
||||
page: p,
|
||||
pages,
|
||||
total,
|
||||
pageSize: size,
|
||||
from: total ? start + 1 : 0,
|
||||
to: Math.min(start + size, total),
|
||||
};
|
||||
}
|
||||
|
||||
function renderPager(el, state, onPage) {
|
||||
if (!el) return;
|
||||
const s = state || pageSlice([], 1);
|
||||
if (s.total <= s.pageSize) {
|
||||
el.hidden = true;
|
||||
el.innerHTML = "";
|
||||
return;
|
||||
}
|
||||
el.hidden = false;
|
||||
el.className = "pager";
|
||||
el.innerHTML =
|
||||
'<button type="button" class="ghost pager-prev" ' + (s.page <= 1 ? "disabled" : "") + ">Zurück</button>" +
|
||||
'<span class="pager-info">' + s.from + "–" + s.to + " von " + s.total + "</span>" +
|
||||
'<button type="button" class="ghost pager-next" ' + (s.page >= s.pages ? "disabled" : "") + ">Weiter</button>";
|
||||
el.querySelector(".pager-prev").onclick = () => onPage(s.page - 1);
|
||||
el.querySelector(".pager-next").onclick = () => onPage(s.page + 1);
|
||||
}
|
||||
|
||||
window.DEFAULT_PAGE_SIZE = DEFAULT_PAGE_SIZE;
|
||||
window.pageSlice = pageSlice;
|
||||
window.renderPager = renderPager;
|
||||
Reference in new issue
Block a user