Carregando aprovação...

document.addEventListener("DOMContentLoaded", function() { const params = new URLSearchParams(window.location.search); const id = params.get('id'); if (!id) { showError(); return; } fetch('/wp-json/aprovacao/v1/ler?id=' + id) .then(r => r.ok ? r.json() : Promise.reject()) .then(data => renderData(data)) .catch(() => showError()); }); function showError() { document.getElementById('loading').classList.add('hidden'); document.getElementById('error').classList.remove('hidden'); } function renderData(data) { // Helpers const set = (id, val) => document.getElementById(id).innerText = val || ''; const hide = (id) => document.getElementById(id).style.display = 'none'; // 1. Textos Básicos set('view-cliente', data.cliente); set('view-data', data.data); set('view-legenda', data.legenda || 'Sem descrição'); // 2. Condicionais de Exibição if (data.codigo) set('view-codigo', data.codigo); else set('view-codigo', 'Avulso'); if (data.obs && data.obs !== "Sem observações") set('view-obs', data.obs); else hide('block-obs'); if (data.servico) set('view-servico', data.servico); else set('view-servico', 'Avulso'); if (data.tipo) set('view-tipo', data.tipo); else hide('block-tipo'); if (data.numero) set('view-numero', data.numero); else hide('block-numero'); // 3. Renderização de Canais (Ícones) const canaisContainer = document.getElementById('view-canais'); const canaisTexto = data.canais || ""; const iconMap = { 'instagram': 'fa-instagram text-pink-600', 'facebook': 'fa-facebook text-blue-600', 'linkedin': 'fa-linkedin text-blue-700', 'youtube': 'fa-youtube text-red-600', 'tiktok': 'fa-tiktok text-black', 'twitter': 'fa-twitter text-blue-400', 'pinterest': 'fa-pinterest text-red-500' }; // Divide por vírgula e limpa espaços const listaCanais = canaisTexto.split(',').map(c => c.trim()).filter(c => c); if(listaCanais.length > 0) { listaCanais.forEach(canal => { const key = canal.toLowerCase(); let iconClass = null; // Busca parcial (ex: "Instagram Feed" acha "instagram") for (const k in iconMap) { if (key.includes(k)) iconClass = iconMap[k]; } const badge = document.createElement('div'); badge.className = "flex items-center gap-2 bg-gray-100 px-3 py-1 rounded-full text-sm font-medium"; if (iconClass) { badge.innerHTML = ` ${canal}`; } else { badge.innerHTML = ` ${canal}`; } canaisContainer.appendChild(badge); }); } else { canaisContainer.innerHTML = '--'; } // 4. Botões const btnAprov = document.getElementById('btn-aprovacao'); if (data.link_aprov) { btnAprov.href = data.link_aprov; } else { btnAprov.style.display = 'none'; } const btnCont = document.getElementById('btn-conteudo'); if (data.link_cont) { btnCont.href = data.link_cont; } else { btnCont.style.display = 'none'; } // Finaliza document.getElementById('loading').classList.add('hidden'); document.getElementById('app').classList.remove('hidden'); }