diff --git a/public/app.js b/public/app.js index d6cb040..84b5d20 100644 --- a/public/app.js +++ b/public/app.js @@ -2680,8 +2680,9 @@ const initApp = () => { const emitirFilterCrianca = document.getElementById('emitirFilterCrianca'); const emitirFilterDataInicio = document.getElementById('emitirFilterDataInicio'); const emitirFilterDataFim = document.getElementById('emitirFilterDataFim'); - const emitirFilterTag = document.getElementById('emitirFilterTag'); + const emitirTagsContainer = document.getElementById('emitirTagsContainer'); const emitirFilterTemplate = document.getElementById('emitirFilterTemplate'); + let emitirSelectedTags = []; const emitirObsCountInfo = document.getElementById('emitirObsCountInfo'); const btnGenerateCompiledReport = document.getElementById('btnGenerateCompiledReport'); @@ -2714,7 +2715,11 @@ const initApp = () => { emitirFilterDataInicio.value = ''; emitirFilterDataFim.value = ''; - emitirFilterTag.value = ''; + + emitirSelectedTags = []; + if (emitirTagsContainer) { + emitirTagsContainer.querySelectorAll('.tag-pill').forEach(p => p.classList.remove('active')); + } await loadFiltersData(); }); @@ -2748,6 +2753,7 @@ const initApp = () => { const res = await fetch(url); const criancas = await res.json(); emitirFilterCrianca.innerHTML = '' + + `` + (Array.isArray(criancas) ? criancas : []).map(c => ``).join(''); } catch (err) { console.error('Erro ao carregar lista de crianças:', err); @@ -2804,25 +2810,42 @@ const initApp = () => { }); } - [emitirFilterCrianca, emitirFilterDataInicio, emitirFilterDataFim, emitirFilterTag, emitirFilterTemplate].forEach(el => { + [emitirFilterCrianca, emitirFilterDataInicio, emitirFilterDataFim, emitirFilterTemplate].forEach(el => { if (el) el.addEventListener('change', updateObservationsCount); }); if (emitirFilterCrianca) { emitirFilterCrianca.addEventListener('input', updateObservationsCount); } + // Adicionar ouvintes para as pills de tags + if (emitirTagsContainer) { + emitirTagsContainer.querySelectorAll('.tag-pill').forEach(pill => { + pill.addEventListener('click', () => { + const tag = pill.getAttribute('data-tag'); + if (pill.classList.contains('active')) { + pill.classList.remove('active'); + emitirSelectedTags = emitirSelectedTags.filter(t => t !== tag); + } else { + pill.classList.add('active'); + emitirSelectedTags.push(tag); + } + updateObservationsCount(); + }); + }); + } + // Recalcular quantidade de observações elegíveis async function updateObservationsCount() { const crianca = emitirFilterCrianca ? emitirFilterCrianca.value : ''; const dataInicio = emitirFilterDataInicio ? emitirFilterDataInicio.value : ''; const dataFim = emitirFilterDataFim ? emitirFilterDataFim.value : ''; - const tag = emitirFilterTag ? emitirFilterTag.value : ''; + const tag = emitirSelectedTags.join(','); const modeloId = emitirFilterTemplate ? emitirFilterTemplate.value : ''; const ano = emitirFilterAno ? emitirFilterAno.value : ''; const turma = emitirFilterTurma ? emitirFilterTurma.value : ''; if (!crianca || !modeloId) { - emitirObsCountInfo.textContent = 'Escolha uma criança e um modelo para prosseguir.'; + emitirObsCountInfo.textContent = 'Escolha uma criança (ou "Todas") e um modelo para prosseguir.'; btnGenerateCompiledReport.disabled = true; btnGenerateCompiledReport.style.opacity = '0.6'; btnGenerateCompiledReport.style.cursor = 'not-allowed'; @@ -2863,7 +2886,7 @@ const initApp = () => { const crianca = emitirFilterCrianca.value; const dataInicio = emitirFilterDataInicio.value; const dataFim = emitirFilterDataFim.value; - const tag = emitirFilterTag.value; + const tags = emitirSelectedTags; const modeloId = emitirFilterTemplate.value; const ano = emitirFilterAno ? emitirFilterAno.value : ''; const turma = emitirFilterTurma ? emitirFilterTurma.value : ''; @@ -2887,7 +2910,7 @@ const initApp = () => { crianca, dataInicio, dataFim, - tags: tag || undefined, + tags: tags.length > 0 ? tags : undefined, modeloId, ano, turma diff --git a/public/index.html b/public/index.html index e1ea5e6..40f56b7 100644 --- a/public/index.html +++ b/public/index.html @@ -574,18 +574,17 @@ -