`;
}
document.getElementById("resultado-api").innerHTML = html;
}
function toggleFiltro(tipo, valor) {
filtros[tipo] = filtros[tipo] === valor ? null : valor;
atualizarFiltrosDisponiveis();
renderTurmas();
marcarBotoesAtivos();
}
function marcarBotoesAtivos() {
document.querySelectorAll("[data-filtro]").forEach(btn => {
const tipo = btn.dataset.filtro;
const valor = btn.dataset.valor;
btn.classList.toggle('ativo', filtros[tipo] === valor);
});
}
function criarBotoes(id, tipo, valores) {
const container = document.getElementById(id);
container.innerHTML = '';
valores.forEach(valor => {
const btn = document.createElement("button");
btn.dataset.filtro = tipo;
btn.dataset.valor = valor;
btn.onclick = () => toggleFiltro(tipo, valor);
btn.className = "turmas";
const span = document.createElement("span");
span.textContent = valor.toLowerCase()
.split(' ')
.map(p => p.charAt(0).toUpperCase() + p.slice(1))
.join(' ');
btn.appendChild(span);
container.appendChild(btn);
});
}
function atualizarFiltrosDisponiveis() {
let turmasFiltradas = todasTurmas;
if (filtros.cidade) {
turmasFiltradas = turmasFiltradas.filter(t => t.cidade === filtros.cidade);
}
const unidades = [...new Set(turmasFiltradas.map(t => t.unidade).filter(Boolean))];
if (filtros.unidade && !unidades.includes(filtros.unidade)) filtros.unidade = null;
if (filtros.unidade) {
turmasFiltradas = turmasFiltradas.filter(t => t.unidade === filtros.unidade);
}
const dias = [...new Set(turmasFiltradas.map(t => t.dias).filter(Boolean))];
if (filtros.dias && !dias.includes(filtros.dias)) filtros.dias = null;
criarBotoes("filtro-unidade", "unidade", unidades);
criarBotoes("filtro-dias", "dias", dias);
marcarBotoesAtivos();
}
fetch(servidor + "modalidades/" + modalidade + "/turmas")
.then(response => response.json())
.then(data => {
todasTurmas = data;
const cidades = [...new Set(data.map(t => t.cidade).filter(Boolean))];
criarBotoes("filtro-cidade", "cidade", cidades);
if (cidades.length > 0) filtros.cidade = cidades[0];
atualizarFiltrosDisponiveis();
const unidades = [...new Set(data.filter(t => t.cidade === filtros.cidade).map(t => t.unidade).filter(Boolean))];
if (unidades.length > 0) filtros.unidade = unidades[0];
const dias = [...new Set(data.filter(t => t.cidade === filtros.cidade && t.unidade === filtros.unidade).map(t => t.dias).filter(Boolean))];
if (dias.length > 0) filtros.dias = dias[0];
marcarBotoesAtivos();
renderTurmas();
})
.catch(error => {
document.getElementById("resultado-api").innerHTML = "Erro ao carregar dados.";
console.error(error);
});