import React, { useState } from 'react'; import { Line, Pie, Doughnut, Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, BarElement, ArcElement, Title, Tooltip, Legend } from 'chart.js'; ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, BarElement, ArcElement, Title, Tooltip, Legend); export default function TableroAlmacenamiento() { // Estado para la tabla de documentos y la opción seleccionada const [selectedMetric, setSelectedMetric] = useState(''); const [documentos, setDocumentos] = useState([ { nombre: 'Factura_123.pdf', tipo: 'Factura', ext: 'PDF' }, { nombre: 'Pedimento_456.xml', tipo: 'Pedimento', ext: 'XML' }, { nombre: 'Manifiesto_789.docx', tipo: 'Manifiesto', ext: 'DOCX' }, ]); // Por ahora solo cambia el estado seleccionado, no fetch const handleMetricClick = (metric) => { setSelectedMetric(metric); }; // Datos simulados para las nuevas gráficas y KPIs const tiposArchivos = [ { tipo: 'PDF', espacio: 220 }, { tipo: 'XML', espacio: 120 }, { tipo: 'DOCX', espacio: 80 }, { tipo: 'JPG', espacio: 60 }, { tipo: 'Otros', espacio: 32 }, ]; const topArchivos = [ { nombre: 'Factura_123.pdf', size: 2.5 }, { nombre: 'Reporte_2024.pdf', size: 2.1 }, { nombre: 'Pedimento_456.xml', size: 1.8 }, { nombre: 'Manifiesto_789.docx', size: 1.2 }, { nombre: 'Imagen_001.jpg', size: 1.0 }, ]; const espacioTotal = 1024; // GB const espacioOcupado = 512; // GB const espacioLibre = espacioTotal - espacioOcupado; const usuarios = [ { nombre: 'Juan', docs: 120 }, { nombre: 'Ana', docs: 90 }, { nombre: 'Luis', docs: 70 }, { nombre: 'Sofía', docs: 60 }, { nombre: 'Carlos', docs: 40 }, ]; const docsEsteMes = 45; const docsEliminados = 7; const usuariosActivos = 4; const porcentajeUsado = Math.round((espacioOcupado / espacioTotal) * 100); return (
{/* Header animado */}

Uso de Almacenamiento

Visualiza y analiza el uso de almacenamiento de la plataforma

{/* Efecto decorativo de fondo */}
{/* Filtros */}
{/* Cards y KPIs */}
1,234 Total de Pedimentos
8,765 Total de Documentos
{espacioOcupado} GB Espacio Utilizado
2.5 GB Archivo más grande
120 MB Tamaño promedio
{espacioLibre} GB Espacio Libre
{porcentajeUsado}% % Espacio Usado
{docsEsteMes} Docs subidos este mes
{docsEliminados} Docs eliminados este mes
{usuariosActivos} Usuarios activos este mes
{/* Gráficas */}
{/* Gráfica 1: Espacio utilizado a lo largo del tiempo */}

Espacio utilizado a lo largo del tiempo

{/* Gráfica 2: Distribución de tipos de archivo */}

Distribución por tipo de archivo

t.tipo), datasets: [ { data: tiposArchivos.map(t => t.espacio), backgroundColor: ['#3b82f6', '#6366f1', '#f59e42', '#10b981', '#f472b6'], }, ], }} options={{ plugins: { legend: { display: true, position: 'bottom' }, }, }} />
{/* Gráfica 3: Espacio ocupado vs libre (donut) */}

Espacio ocupado vs libre

{/* Gráficas adicionales */}
{/* Top archivos más grandes */}

Top 5 archivos más grandes

a.nombre), datasets: [ { label: 'Tamaño (GB)', data: topArchivos.map(a => a.size), backgroundColor: '#f59e42', }, ], }} options={{ indexAxis: 'y', plugins: { legend: { display: false }, }, scales: { x: { title: { display: true, text: 'Tamaño (GB)' } }, y: { title: { display: false } }, }, }} />
{/* Documentos subidos por usuario */}

Documentos subidos por usuario

u.nombre), datasets: [ { label: 'Documentos', data: usuarios.map(u => u.docs), backgroundColor: '#6366f1', }, ], }} options={{ plugins: { legend: { display: false }, }, scales: { x: { title: { display: false } }, y: { title: { display: true, text: 'Documentos' } }, }, }} />
); }