58 lines
1.4 KiB
JavaScript
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;
|