PAGINADOR
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tabla con Paginación</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.disabled {
pointer-events: none;
opacity: 0.6;
}
</style>
</head>
<body>
<div class="container py-1" style="background-color: white;">
<h1>Tabla de Carpetas</h1>
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Carpeta</th>
<th>Procedimiento</th>
<th>Acción</th>
<th>Registro</th>
<th>Fecha Asignación</th>
<th>Área</th>
<th>Asignado</th>
<th>Motivo</th>
<th>Estado</th>
</tr>
</thead>
<tbody id="tablaCarpetas"></tbody>
</table>
<ul class="pagination" id="paginacion"></ul>
</div>
<script>
// Arreglo de datos de ejemplo para las carpetas
const carpetas = [
{
'id': 1,
'carpeta': 'Carpeta 1',
'procedimiento': 'Procedimiento 1',
'registro': 'Registro 1',
'fecha_asignacion': '2023-06-20',
'area': 'Área 1',
'asignado': 'Juan Perez',
'motivo': 'Motivo 1',
'activo': true
},
{
'id': 2,
'carpeta': 'Carpeta 2',
'procedimiento': 'Procedimiento 2',
'registro': 'Registro 2',
'fecha_asignacion': '2023-06-21',
'area': 'Área 2',
'asignado': 'Maria Gomez',
'motivo': 'Motivo 2',
'activo': false
},
{
'id': 3,
'carpeta': 'Carpeta 3',
'procedimiento': 'Procedimiento 3',
'registro': 'Registro 3',
'fecha_asignacion': '2023-06-22',
'area': 'Área 3',
'asignado': 'Pedro Martinez',
'motivo': 'Motivo 3',
'activo': true
}
];
const filasPorPagina = 5; // Número de filas por página
let paginaActual = 1; // Página actual
// Función para mostrar la página especificada
function mostrarPagina(pagina) {
const inicio = (pagina - 1) * filasPorPagina; // Índice de inicio para la página actual
const fin = inicio + filasPorPagina; // Índice de fin para la página actual
const cuerpoTabla = document.getElementById('tablaCarpetas');
cuerpoTabla.innerHTML = ''; // Limpiar el cuerpo de la tabla
// Obtener los datos paginados y agregarlos a la tabla
const datosPaginados = carpetas.slice(inicio, fin);
datosPaginados.forEach(carpeta => {
const fila = `<tr>
<td>${carpeta.id}</td>
<td>${carpeta.carpeta}</td>
<td>${carpeta.procedimiento}</td>
<td><button class='btn btn-primary' onclick='asignarCarpeta(${carpeta.id})'>Asignar</button></td>
<td>${carpeta.registro}</td>
<td>${carpeta.fecha_asignacion}</td>
<td>${carpeta.area}</td>
<td>${carpeta.asignado}</td>
<td>${carpeta.motivo}</td>
<td>${carpeta.activo ? "asignado" : "entregado"}</td>
</tr>`;
cuerpoTabla.innerHTML += fila;
});
// Actualizar la paginación
const paginacion = document.getElementById('paginacion');
paginacion.innerHTML = ''; // Limpiar la paginación
const totalPaginas = Math.ceil(carpetas.length / filasPorPagina);
// Botón de página anterior
const clasePrev = (pagina === 1) ? "disabled" : "";
paginacion.innerHTML += `<li class='page-item ${clasePrev}'><a class='page-link' href='#' onclick='cambiarPagina(${pagina - 1})'>Atrás</a></li>`;
// Botones de páginas
for (let i = 1; i <= totalPaginas; i++) {
const claseActiva = (pagina === i) ? "active" : "";
paginacion.innerHTML += `<li class='page-item ${claseActiva}'><a class='page-link' href='#' onclick='cambiarPagina(${i})'>${i}</a></li>`;
}
// Botón de página siguiente
const claseNext = (pagina === totalPaginas) ? "disabled" : "";
paginacion.innerHTML += `<li class='page-item ${claseNext}'><a class='page-link' href='#' onclick='cambiarPagina(${pagina + 1})'>Siguiente</a></li>`;
}
// Función para cambiar la página actual
function cambiarPagina(pagina) {
const totalPaginas = Math.ceil(carpetas.length / filasPorPagina);
if (pagina < 1 || pagina > totalPaginas) return;
paginaActual = pagina;
mostrarPagina(paginaActual);
}
// Función para asignar una carpeta (muestra una alerta en este caso)
function asignarCarpeta(id) {
alert('Carpeta ' + id + ' asignada');
}
// Mostrar la primera página al cargar el documento
document.addEventListener('DOMContentLoaded', function() {
mostrarPagina(paginaActual);
});
</script>
</body>
</html>
Comentarios
Publicar un comentario