in static/plugins/charts_navtabs.js [1:51]
function navtab(navitems, callback) {
const navid = Math.round(Math.random()*10000000).toString(16);
const nav_outer = document.createElement('nav');
const navbar = document.createElement('div');
navbar.className = "nav nav-tabs";
navbar.setAttribute('role', 'tablist');
let buttons = [];
let n = 0;
for (const [key, value] of Object.entries(navitems)) {
const btn = document.createElement('button');
btn.className = "nav-link";
btn.id = `nav-tab-${key}`;
btn.setAttribute('bs-toggle', 'tab');
btn.setAttribute('bs-target', `#nav-${navid}`);
btn.type = "button";
btn.innerText = value;
if (n === 0) { // First el is active
btn.className = "nav-link active selected";
btn.ariaSelected = true;
}
n++;
btn.addEventListener('click', () => {
if (callback(key, value) !== false) {
for (const xbtn of buttons) {
if (xbtn.innerText !== value) {
xbtn.className = "nav-link";
xbtn.ariaSelected = false;
} else {
xbtn.className = "nav-link active selected";
xbtn.ariaSelected = true;
}
}
}
});
buttons.push(btn);
navbar.appendChild(btn);
}
nav_outer.appendChild(navbar);
const contents = document.createElement('div');
contents.className = "tab-content";
const pane = document.createElement('div');
pane.className = "tab-pane fade show active";
pane.id = `nav-${navid}`
pane.setAttribute('role', 'tabpanel');
contents.appendChild(pane);
return [nav_outer, contents]
}