JSFiddle - React, Tailwind, and code Playground
by JuanAlberto
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- DataTable -->
<link
rel="stylesheet"
type="text/css"
href="https://cdn.datatables.net/1.13.1/css/dataTables.bootstrap5.min.css"
/>
<link
rel="stylesheet"
type="text/css"
href="https://cdn.datatables.net/buttons/2.3.3/css/buttons.bootstrap5.min.css"
/>
<!-- Bootstrap-->
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"
/>
<!-- Biblioteca XLSX para la manipulación de archivos Excel -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.15.3/xlsx.full.min.js"></script>
<!-- Font Awesome -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css"
integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<!-- Incluir la biblioteca Chart.js mediante un enlace de CDN -->
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<title>Tasa de Servicio por Centro de Distribucion</title>
<!-- Despues revisar si esta duplicado esta ultima implementacion de libreria-->
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script
type="text/javascript"
src="https://cdn.datatables.net/1.12.1/js/jquery.dataTables.min.js"
></script>
<script src="https://cdn.datatables.net/fixedheader/3.2.3/js/dataTables.fixedHeader.min.js"></script>
</head>
<body>
<div id="buttonContainer">
<button id="analysisButton">Siguiente</button>
</div>
<input type="file" id="fileUpload" accept=".xls,.xlsx" /><br />
<div...
JavaScript
let dataTable;
let dataTableIsInitialized = false;
let dataTableOptions = {
dom: 'Bfrtilp',
buttons: [
{
extend: 'excelHtml5',
text: '<i class="fas fa-file-excel"></i> ',
titleAttr: 'Exportar a Excel',
className: 'btn btn-success',
},
{
extend: 'pdfHtml5',
text: '<i class="fas fa-file-pdf"></i> ',
titleAttr: 'Exportar a PDF',
className: 'btn btn-danger',
},
{
extend: 'print',
text: '<i class="fa fa-print"></i> ',
titleAttr: 'Imprimir',
className: 'btn btn-info',
},
],
columnDefs: [
{ className: 'centered', targets: [0, 1, 2] },
{ orderable: false, targets: [1] },
{ searchable: false, targets: [2] },
{ width: '25%', targets: [2] },
],
pageLength: 8,
destroy: true,
language: {
processing: 'Procesando...',
lengthMenu: 'Mostrar _MENU_ registros',
zeroRecords: 'No se encontraron resultados',
emptyTable: 'Ningún dato disponible en esta tabla',
infoEmpty: 'Mostrando registros del 0 al 0 de un total de 0 registros',
infoFiltered: '(filtrado de un total de _MAX_ registros)',
search: 'Buscar:',
infoThousands: ',',
loadingRecords: 'Cargando...',
paginate: {
first: 'Primero',
last: 'Último',
next: 'Siguiente',
previous: 'Anterior',
},
aria: {
sortAscending: ': Activar para ordenar la columna de manera ascendente',
sortDescending: ': Activar para ordenar la columna de manera descendente',
},
buttons: {
copy: 'Copiar',
colvis: 'Visibilidad',
collection: 'Colección',
colvisRestore: 'Restaurar visibilidad',
copyKeys:
'Presione ctrl o u2318 + C para copiar los datos de la tabla al portapapeles del sistema. <br /> <br /> Para cancelar, haga clic en este mensaje o presione escape.',
copySuccess: {
1: 'Copiada 1 fila al portapapeles',
_: 'Copiadas %ds fila al portapapeles',
},
copyTitle:...