systemquery/src/static/js/ui/GlobalUI.mjs

58 lines
1.4 KiB
JavaScript

"use strict";
import Emel from 'emel';
import tabledefs from '../tabledefs/index.mjs';
import forkawesome_emel from './forkawesome_emel.mjs';
class GlobalUI {
constructor() {
this.emel = new Emel().emel;
}
async init() {
const status = await globalThis.sysquery.status();
const el_version = document.querySelector(".version");
// 1: Update version display
el_version.replaceChildren(
document.createTextNode(status.version)
);
// 2: Update navigation bar
const el_navitems = document.querySelector(".nav-items"); // <ul>
const el_afterme = el_navitems.querySelector(".dynamic-afterme");
// Strip all non-static navigation items
for(let item of el_navitems.children) {
if(item.classList.contains("static")) continue;
el_navitems.removeChild(item);
}
// Generate new dynamic navigation items
const result = document.createDocumentFragment();
for(const table_name of status.tables) {
console.log(`[nav] new dynamic item ${table_name}, def`, tabledefs[table_name]);
const icondef = typeof tabledefs[table_name] === "undefined"
? "question-circle"
: tabledefs[table_name].icon;
const emel_icon = forkawesome_emel(icondef);
console.log(`emel_icon`, emel_icon);
result.append(this.emel(`li>a[href="?"]>${emel_icon}+span{?}`, {
placeholders: [
`#table/${table_name}`,
table_name
]
}));
}
el_afterme.after(result);
}
}
export default GlobalUI;