diff --git a/pages/projetos.md b/pages/projetos.md index abd9d67c..6d841a32 100755 --- a/pages/projetos.md +++ b/pages/projetos.md @@ -348,10 +348,9 @@ document.addEventListener('DOMContentLoaded', () => { } function enrichCards(data) { - // 1. Cria um mapa para busca rápida (O(N)) + // 1. Cria um mapa para busca rápida const mapDados = {}; data.forEach(item => { - // Mapeia tanto pelo nome do arquivo quanto pelo título do projeto const keyArquivo = normalizarChaveJS(item.arquivo.replace('.wav','').replace('.mp3','')); mapDados[keyArquivo] = item; @@ -363,41 +362,42 @@ document.addEventListener('DOMContentLoaded', () => { cards.forEach(card => { const cardKey = normalizarChaveJS(card.dataset.title); - // 2. Busca instantânea (O(1)) - const info = mapDados[cardKey]; // <--- A variável foi definida aqui como 'info' + // 2. Busca instantânea + const info = mapDados[cardKey]; if (info) { - // 1. Salvar Metadados nos atributos HTML + // --- 1. Metadados para Filtros --- card.dataset.genre = (info.analise_ia && info.analise_ia.genero_macro) ? info.analise_ia.genero_macro : "Unknown"; card.dataset.intensity = (info.analise_tecnica && info.analise_tecnica.intensidade_db) ? parseFloat(info.analise_tecnica.intensidade_db) : 0; card.dataset.bpm_real = (info.analise_tecnica && info.analise_tecnica.bpm) ? parseFloat(info.analise_tecnica.bpm) : 0; - // 2. Injetar Etiquetas Visuais no Card - const bpmContainer = card.querySelector('.bpm-container'); - - // CORREÇÃO AQUI: Verificamos se 'info' tem complexidade antes de tentar ler, para não quebrar o código + // --- 2. Lógica das Estrelas --- let numeroEstrelas = 0; - if (info.analise_tecnica.complexidade && info.analise_tecnica.complexidade.estrelas) { + // Verifica se existe o objeto complexidade e o valor estrelas + if (info.analise_tecnica && info.analise_tecnica.complexidade && info.analise_tecnica.complexidade.estrelas) { numeroEstrelas = info.analise_tecnica.complexidade.estrelas; } - - // Agora usamos a variável correta e o valor seguro const estrelasHTML = gerarEstrelas(numeroEstrelas); + + // --- 3. Injeção Visual (HTML) --- + const bpmContainer = card.querySelector('.bpm-container'); - // Se achou o container do BPM, insere as novas tags logo após if (bpmContainer) { + // Cria container para as novas tags const iaTagsDiv = document.createElement('div'); iaTagsDiv.className = "tags is-centered mt-1 mb-3"; iaTagsDiv.style.opacity = "0.9"; + iaTagsDiv.style.flexDirection = "column"; // Organiza em linhas (estrelas em cima, tags em baixo) + + let htmlFinal = ''; + + // A) Adiciona as Estrelas + htmlFinal += `