Files
Assetmanager/app/static/js/asset-page-boot.js
T

62 lines
1.5 KiB
JavaScript

(() => {
const page = document.getElementById('asset-list-page');
const loader = document.getElementById('asset-page-loader');
const table = document.getElementById('asset-table');
if (!page || !table) return;
const required = [
'tableToolsReady',
'browserStateReady',
'columnOrderReady',
'columnManagerReady'
];
let revealed = false;
let fallbackTimer = 0;
function ready() {
return required.every(marker => table.dataset[marker] === '1');
}
function reveal() {
if (revealed) return;
revealed = true;
clearTimeout(fallbackTimer);
const finish = () => requestAnimationFrame(() => {
page.classList.remove('asset-list-initializing');
page.setAttribute('aria-busy', 'false');
document.documentElement.classList.remove('asset-page-booting');
loader?.setAttribute('hidden', '');
window.dispatchEvent(new CustomEvent('asset-page-ready', {
detail: { table }
}));
});
if (document.fonts?.ready) {
document.fonts.ready.then(finish, finish);
} else {
finish();
}
}
function check() {
if (ready()) reveal();
}
[
'asset-table-structure-ready',
'asset-table-state-ready',
'asset-table-column-order-ready',
'asset-table-columns-ready',
'asset-list-count-updated'
].forEach(name => window.addEventListener(name, check));
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', check, { once: true });
} else {
check();
}
fallbackTimer = window.setTimeout(reveal, 2500);
})();