When loading lists on web pages, allow items to have additional loaders that runs afterwards.
parent
878a28c89f
commit
6712b3b2dd
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue