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);
|
const response = await fetch (source);
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const items = await response.json();
|
const items = await response.json();
|
||||||
|
var itemLoaders = [];
|
||||||
|
|
||||||
if (Array.isArray (items)) {
|
if (Array.isArray (items)) {
|
||||||
const template = block.querySelector ("template");
|
const template = block.querySelector ("template");
|
||||||
|
|
@ -12,15 +13,25 @@ async function loadData (block) {
|
||||||
tableBody.innerHTML = "";
|
tableBody.innerHTML = "";
|
||||||
items.forEach (item => {
|
items.forEach (item => {
|
||||||
const clone = template.content.cloneNode (true);
|
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.appendChild (clone);
|
||||||
tableBody.lastElementChild.dataset.itemid = item.id;
|
tableBody.lastElementChild.dataset.itemid = item.id;
|
||||||
});
|
});
|
||||||
} else {
|
} 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");
|
block.classList.add ("loaded");
|
||||||
|
|
||||||
|
for (const loader of itemLoaders) {
|
||||||
|
await loader();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((response.status == 401) || (response.status == 403)) {
|
if ((response.status == 401) || (response.status == 403)) {
|
||||||
document.location.href = document.body.dataset.baseurl;
|
document.location.href = document.body.dataset.baseurl;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue