import { renderInvoiceStatusChart } from './charts/InvoiceStatusChart.js'; import { renderBarChart } from './charts/BarChart.js'; // Configuración de las tarjetas de estadísticas const statsConfig = [ { id: 'totalFacturado', title: 'Total Facturado', icon: ` `, iconBg: '#374151', valueColor: '#3b82f6', subtitle: 'Este mes', formatValue: (val) => `${val.toLocaleString('es-ES', { minimumFractionDigits: 2 })} €` }, { id: 'facturasEmitidas', title: 'Facturas Emitidas', icon: ` `, iconBg: '#22c55e', valueColor: '#1f2937', subtitle: 'Este mes', formatValue: (val) => val.toString() }, { id: 'clientesActivos', title: 'Clientes Activos', icon: ` `, iconBg: '#f59e0b', valueColor: '#1f2937', subtitle: 'Con factura este mes', formatValue: (val) => val.toString() }, { id: 'pendienteCobro', title: 'Pendiente de Cobro', icon: ` `, iconBg: '#8b5cf6', valueColor: '#1f2937', subtitle: 'Facturas vencidas', formatValue: (val) => val.toString() } ]; // Función para crear una tarjeta individual function createStatCard(config, value) { return `
${config.icon}
${config.title} ${config.formatValue(value)} ${config.subtitle}
`; } // Función para renderizar todas las tarjetas export function renderStatsCards(data = {}) { const defaultData = { totalFacturado: 0, facturasEmitidas: 0, clientesActivos: 0, pendienteCobro: 0 }; const statsData = { ...defaultData, ...data }; return statsConfig .map(config => createStatCard(config, statsData[config.id])) .join(''); } // Función para actualizar un valor específico export function updateStatValue(containerId, statId, newValue) { const container = document.querySelector(`#${containerId} [data-stat-id="${statId}"] .stat-value`); if (container) { const config = statsConfig.find(c => c.id === statId); if (config) { container.textContent = config.formatValue(newValue); } } } // Dashboard completo con estilos incluidos export function renderDashboard(initialData = {}) { const container = document.createElement('div'); container.className = 'dashboard-container'; // Datos por defecto (puedes pasarlos como parámetro) const data = { totalFacturado: 50.00, facturasEmitidas: 0, clientesActivos: 0, pendienteCobro: 0, ...initialData }; container.innerHTML = /*html*/`

Dashboard

Resumen de facturación y estado de tus facturas

${renderStatsCards(data)}
`; const chartsRow = container.querySelector('#charts-row'); chartsRow.appendChild(renderInvoiceStatusChart()); chartsRow.appendChild(renderBarChart()); return container; } // Ejemplo de uso: // import { renderDashboard, updateStatValue } from './dashboard-stats.js'; // // // Renderizar con datos iniciales // const dashboard = renderDashboard({ // totalFacturado: 50.00, // facturasEmitidas: 0, // clientesActivos: 0, // pendienteCobro: 0 // }); // document.body.appendChild(dashboard); // // // Actualizar un valor dinámicamente // updateStatValue('stats-container', 'totalFacturado', 1500.50);