Files
labyricorn-site/assets/static/activity.js
T
Labyricorn aae9836b99
Deploy production / deploy (push) Successful in 2s
Batch recent activity six at a time
2026-08-12 00:09:20 -07:00

35 lines
1.2 KiB
JavaScript

(() => {
for (const feed of document.querySelectorAll("[data-activity-feed]")) {
const items = [...feed.querySelectorAll("[data-activity-item]")];
const batchSize = Number.parseInt(feed.dataset.batchSize || "6", 10);
const controls = feed.parentElement.querySelector("[data-activity-controls]");
const status = controls?.querySelector("[data-activity-status]");
const button = controls?.querySelector("[data-activity-more]");
if (!controls || !status || !button || items.length <= batchSize) continue;
let visibleCount = Math.min(batchSize, items.length);
const render = () => {
for (const [index, item] of items.entries()) {
item.hidden = index >= visibleCount;
}
const remaining = items.length - visibleCount;
status.textContent = `Showing ${visibleCount} of ${items.length} recent activity items.`;
button.disabled = remaining === 0;
button.textContent = remaining
? `Show ${Math.min(batchSize, remaining)} more`
: "All activity shown";
controls.hidden = false;
};
button.addEventListener("click", () => {
visibleCount = Math.min(visibleCount + batchSize, items.length);
render();
});
render();
}
})();