Files
scaenae/js/ui.js
Nicolò P. becb0865b9 Move menu building to Stimulus (WIP)
TODO: cache menu container, build ontology and load templates from external HTML source.
2026-04-21 17:53:23 +02:00

49 lines
1.5 KiB
JavaScript

import AppState from "./state.js";
import { traverseOntology } from "./ontology.js";
/**
* @module UI
*/
/**
*
* @param {String} triggerSelector - Usually, the close modal trigger element(s) selector
*/
export function pauseAudio(triggerSelector) {
// What if more than one audio element is playing?
const audio = document.querySelector('audio');
if (audio) {
document.querySelectorAll(triggerSelector).forEach(el => {
el.addEventListener('click', () => audio.pause());
});
document.querySelector('.modal').addEventListener('blur', () => {
audio.pause();
});
}
}
/**
* @see traverseOntology
* @param {Object} ontology The traversed ontology object (temp)
* @param {HTMLElement} sidePanel ATON's side panel element
*/
function buildOntologyMenu(ontology, sidePanel) {
const list = document.createElement('ul');
list.className = 'list-group';
const mainNode = document.createElement('li');
mainNode.className = 'list-group-item';
mainNode.textContent = ontology.ontology;
const domainList = document.createElement('ul');
domainList.className = 'list-group';
for(let domain of ontology.domains) {
const domainItem = document.createElement('li');
domainItem.textContent = domain.label;
domainItem.className = 'list-group-item';
domainList.appendChild(domainItem);
}
mainNode.appendChild(domainList);
list.appendChild(mainNode);
sidePanel.appendChild(list);
}