taiageweb/js/esquema.js

78 lines
2.7 KiB
JavaScript

function render(key) {
const t = TEMAS[key];
const card = document.getElementById('card');
const noTema = document.getElementById('no-tema');
const footerBtns = document.getElementById('footer-btns');
if (!t) { card.style.display='none'; noTema.style.display=''; footerBtns.style.display='none'; return; }
document.title = key + '. ' + t.titulo.slice(0,60) + ' · TAI';
document.getElementById('header-titulo').textContent = t.titulo;
document.getElementById('header-badge').textContent = 'Bloque ' + t.bloque + ' · Tema ' + t.tema;
document.getElementById('card-titulo').textContent = key + '. ' + t.titulo;
document.getElementById('card-subtitulo').textContent = t.epigrafes.length + ' epígrafes';
const ul = document.getElementById('card-lista');
ul.innerHTML = '';
const fileParts = t.file.split('/');
const relPath = fileParts.slice(-2).join('/'); // 'bloqueN/temaN.md'
const verUrl = 'ver.html?f=' + relPath + '&tema=' + key;
let currentSubList = null;
t.epigrafes.forEach(function(h) {
const isMainSection = /^\d+\.\s/.test(h);
if (isMainSection) {
const li = document.createElement('li');
li.className = 'seccion-principal';
const details = document.createElement('details');
const summary = document.createElement('summary');
summary.textContent = h;
details.appendChild(summary);
currentSubList = document.createElement('ul');
details.appendChild(currentSubList);
li.appendChild(details);
ul.appendChild(li);
} else if (currentSubList) {
const li = document.createElement('li');
const a = document.createElement('a');
a.href = verUrl;
a.target = '_blank';
a.textContent = h;
li.appendChild(a);
currentSubList.appendChild(li);
} else {
const li = document.createElement('li');
const a = document.createElement('a');
a.href = verUrl;
a.target = '_blank';
a.textContent = h;
li.appendChild(a);
ul.appendChild(li);
}
});
document.getElementById('btn-md').href = verUrl;
card.style.display = '';
noTema.style.display = 'none';
footerBtns.style.display = '';
document.querySelectorAll('.nav-temas a').forEach(function(a) {
a.classList.toggle('activo', a.dataset.key === key);
});
}
function buildNav() {
const nav = document.getElementById('nav-temas');
[1,2,3,4].forEach(function(b) {
Object.keys(TEMAS).filter(k => TEMAS[k].bloque === b).sort().forEach(function(key) {
const a = document.createElement('a');
a.href = '?tema=' + key;
a.textContent = key;
a.dataset.key = key;
nav.appendChild(a);
});
});
}
buildNav();
const temaParam = new URLSearchParams(window.location.search).get('tema');
if (temaParam) render(temaParam);