Documentos

Búsqueda de Documentos

Consulte el listado de documentos disponibles, incluyendo archivos y descripciones asociados, publicados por el sistema.

Total de documentos
Búsqueda por nombre y descripcion
Cargando...
'; return; } let html = ` `; html += items.map(doc => { const archivosHtml = (doc.archivos && doc.archivos.length) ? doc.archivos.map(a => ` ${fileIconByExt(a.nombre_original)} ${escapeHtml(a.nombre_original)} `).join('') : 'Sin archivos'; return ` `; }).join(''); html += `
Título Descripción Archivos
${escapeHtml(doc.titulo)} ${doc.descripcion ? escapeHtml(doc.descripcion) : '-'} ${archivosHtml}
`; resultsEl.innerHTML = html; } // ── PAGINACIÓN ─────────────────────────── function renderPagination(data) { const current = data.current_page; const last = data.last_page; const total = data.total; document.getElementById('total_results').textContent = `Mostrando ${data.from ?? 0}–${data.to ?? 0} de ${total} resultado(s)`; if (last <= 1) { paginationEl.innerHTML = ''; return; } let html = ''; if (current > 1) html += ``; if (current > 1) html += ``; const range = 3; for (let p = Math.max(1, current - range); p <= Math.min(last, current + range); p++) { html += ``; } if (current < last) html += ``; if (current < last) html += ``; paginationEl.innerHTML = html; paginationEl.querySelectorAll('button[data-p]').forEach(btn => { btn.addEventListener('click', () => fetchPage(parseInt(btn.dataset.p))); }); } // ── FETCH ──────────────────────────────── function fetchPage(page) { resultsEl.innerHTML = ''; paginationEl.innerHTML = ''; document.getElementById('total_results').textContent = ''; showLoader(true); const q = encodeURIComponent(qInput.value.trim()); const url = `${apiBase}/buscardoc_api?per_page=${perPage}&page=${page}` + (q ? `&q=${q}` : ''); fetch(url) .then(r => r.json()) .then(data => { renderResults(data.data || []); renderPagination(data); }) .catch(() => { resultsEl.innerHTML = '
Error al cargar los datos.
'; }) .finally(() => showLoader(false)); } // ── EVENTOS ────────────────────────────── buscarBtn.addEventListener('click', () => fetchPage(1)); qInput.addEventListener('keydown', e => { if (e.key === 'Enter') fetchPage(1); }); limpiarBtn.addEventListener('click', () => { qInput.value = ''; // limpia el input fetchPage(1); // recarga resultados sin filtro }); // Carga inicial fetchPage(1); })(); function fileIconByExt(filename) { if (!filename) return ''; const ext = filename.split('.').pop().toLowerCase(); if (ext === 'pdf') { return ''; } if (ext === 'doc' || ext === 'docx') { return ''; } if (ext === 'xls' || ext === 'xlsx') { return ''; } if (ext === 'jpg' || ext === 'png' || ext === 'gif' || ext === 'jpeg') { return ''; } return ''; }