Ir al contenido
document.addEventListener("DOMContentLoaded", function() {
const jsonURL = "https://cpmalcazarcriptana.es/wp-content/uploads/2025/10/profesorado.json"; // ruta a tu JSON
fetch(jsonURL)
.then(resp => resp.json())
.then(datos => generarOrganigrama(datos))
.catch(err => console.error("Error cargando profesorado.json:", err));
function generarOrganigrama(datos) {
const agrupado = {};
datos.forEach(fila => {
const { Departamento, Especialidad } = fila;
if (!agrupado[Departamento]) agrupado[Departamento] = {};
if (!agrupado[Departamento][Especialidad]) agrupado[Departamento][Especialidad] = [];
agrupado[Departamento][Especialidad].push(fila);
});
const contenedor = document.getElementById('claustro');
for (const dep in agrupado) {
const card = document.createElement('div');
card.className = 'card';
const depTitle = document.createElement('div');
depTitle.className = 'department-title';
depTitle.textContent = dep;
depTitle.onclick = () => {
card.querySelectorAll('.specialty').forEach(sp => sp.classList.toggle('open'));
};
card.appendChild(depTitle);
for (const esp in agrupado[dep]) {
const spDiv = document.createElement('div');
spDiv.className = 'specialty';
const btn = document.createElement('button');
btn.className = 'toggle-btn';
btn.textContent = esp;
btn.onclick = () => listDiv.classList.toggle('open');
spDiv.appendChild(btn);
const listDiv = document.createElement('div');
listDiv.className = 'teacher-list';
agrupado[dep][esp].forEach(p => {
const teacherDiv = document.createElement('div');
teacherDiv.className = 'teacher';
const nameBtn = document.createElement('button');
nameBtn.className = 'toggle-btn';
nameBtn.textContent = p.Nombre;
nameBtn.onclick = () => infoDiv.classList.toggle('open');
const infoDiv = document.createElement('div');
infoDiv.className = 'teacher-info';
infoDiv.innerHTML = `
Horario de tutoría: ${p.Horario}
`;
teacherDiv.appendChild(nameBtn);
teacherDiv.appendChild(infoDiv);
listDiv.appendChild(teacherDiv);
});
spDiv.appendChild(listDiv);
card.appendChild(spDiv);
}
contenedor.appendChild(card);
}
}
});