From 6712b3b2dd69b31bfe60b7e2245b2ea0bdd966ac Mon Sep 17 00:00:00 2001 From: Johan Carlberg Date: Sun, 22 Feb 2026 09:59:58 +0100 Subject: [PATCH] When loading lists on web pages, allow items to have additional loaders that runs afterwards. --- Public/scripts/manage.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Public/scripts/manage.js b/Public/scripts/manage.js index b49eb33..c8800ba 100644 --- a/Public/scripts/manage.js +++ b/Public/scripts/manage.js @@ -5,6 +5,7 @@ async function loadData (block) { const response = await fetch (source); if (response.ok) { const items = await response.json(); + var itemLoaders = []; if (Array.isArray (items)) { const template = block.querySelector ("template"); @@ -12,15 +13,25 @@ async function loadData (block) { tableBody.innerHTML = ""; items.forEach (item => { const clone = template.content.cloneNode (true); - window["populate" + block.dataset.item] (clone, item); + const loader = window["populate" + block.dataset.item] (clone, item); + if (loader != null) { + itemLoaders.push (loader); + } tableBody.appendChild (clone); tableBody.lastElementChild.dataset.itemid = item.id; }); } else { - window["populate" + block.dataset.item] (block, items); + const loader = window["populate" + block.dataset.item] (block, items); + if (loader != null) { + itemLoaders.push (loader); + } } block.classList.add ("loaded"); + + for (const loader of itemLoaders) { + await loader(); + } } else { if ((response.status == 401) || (response.status == 403)) { document.location.href = document.body.dataset.baseurl;