78 lines
2.7 KiB
JavaScript
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);
|