Este proyecto ha sido desarrollado por el Área de Políticas Públicas de la Universidad Nacional de Cuyo. Consiste en un workspace de Angular que incluye:
@uncuyoapp/ngx-data-visualizer: una librería open-source moderna diseñada para facilitar la visualización de datos en proyectos Angular mediante componentesstandalone, accesibles, reactivos y altamente personalizables.demo: una aplicación interactiva de ejemplo y sistema de documentación que muestra cómo integrar y utilizar la librería en proyectos Angular reales.
- 🚀 Arquitectura 100% Standalone - Totalmente compatible con Angular 18+ sin necesidad de NgModules.
- ⚙️ Proveedores Configurables - Inyección modular bajo demanda con
provideDataVisualizerChartsyprovideDataVisualizerTables. - 📊 Motor de Visualizaciones Potente - Integración limpia y optimizada con ECharts y PivotTable.js.
- 🎛️ Panel de Edición con Overlays CDK y Asistentes por Pasos - Editor flotante e interactivo re-arquitecturado sobre Angular CDK Overlays con wizard por pasos.
- 📈 Tarjeta KPI Autónoma (
DA = 0) - Renderizado automático de tarjeta resumen interactiva cuando no hay dimensiones activas seleccionadas. - 💡 Tooltip Adaptativo Multicolumna - Tooltip compartido dinámico con maquetación en múltiples columnas (
columnThreshold,maxColumns), toggle de porcentaje (showPercentage), fila de total y agregados para gráficos de torta. - 📡 Bus de Eventos y Auditoría en Tiempo Real -
EventBusServicepara transmisión de eventos del ciclo de vida yAuditServicepara depuración mediante DI, LocalStorage o URL params. - 🎨 Design Tokens (Variables CSS) - Control de estilos completo mediante CSS Custom Properties (
--viz-*) con soporte nativo para Modo Oscuro. - 🎨 Componentes Standalone de Íconos SVG - Componentes de íconos SVG desacoplados (
libIconClose,libIconReset,libIconCheck,libIconExport). - 📤 Exportación Avanzada - Soporte nativo para descarga en imágenes (PNG, JPG), hojas Excel (XLSX) y HTML.
npm install @uncuyoapp/ngx-data-visualizer echarts ngx-echarts pivottable jqueryimport { ApplicationConfig } from '@angular/core';
import {
provideDataVisualizerCharts,
provideDataVisualizerTables
} from '@uncuyoapp/ngx-data-visualizer';
export const appConfig: ApplicationConfig = {
providers: [
// Registra proveedores para gráficos
provideDataVisualizerCharts({
defaultHeight: 400,
debug: false
}),
// Registra proveedores para tablas dinámicas
provideDataVisualizerTables({
debug: false
})
]
};@import '@uncuyoapp/ngx-data-visualizer/styles';import { Component } from '@angular/core';
import {
ChartComponent,
TableComponent,
Dataset,
ChartOptions,
TableOptions
} from '@uncuyoapp/ngx-data-visualizer';
@Component({
selector: 'app-mi-componente',
standalone: true,
imports: [ChartComponent, TableComponent],
template: `
<!-- Gráfico -->
<libChart
[dataset]="dataset"
[(chartOptions)]="chartOptions"
[(showEditor)]="showEditor">
</libChart>
<!-- Tabla -->
<libTable
[dataset]="dataset"
[(tableOptions)]="tableOptions"
[(showEditor)]="showEditor">
</libTable>
`
})
export class MiComponente {
showEditor = false;
dataset = new Dataset({
dimensions: [
{
id: 1,
name: 'categoria',
nameView: 'Categoría',
items: [
{ id: 1, name: 'A', selected: true },
{ id: 2, name: 'B', selected: true }
]
}
],
rowData: [
{ categoria: 'A', valor: 100 },
{ categoria: 'B', valor: 200 }
]
});
chartOptions: ChartOptions = {
type: 'bar',
stacked: null,
xAxis: { title: '', rotateLabels: null, firstLevel: 1, secondLevel: null },
yAxis: { title: 'Valores', max: null },
tooltip: { shared: true, decimals: 0, suffix: null, format: null, showTotal: true },
legends: { enabled: true, show: true, position: 'top' },
navigator: { show: false, start: null, end: null },
width: null,
height: 400,
filterLastYear: false,
showYearsLegend: false,
toPercent: false,
measureUnit: '',
isPreview: false,
disableAutoUpdate: false
};
tableOptions: TableOptions = {
digitsAfterDecimal: 0,
sorters: [],
totalRow: true,
totalCol: true,
cols: [1],
rows: [],
valueDisplay: 'nominal'
};
}Este proyecto está desarrollado en Angular 18 e integra múltiples librerías de visualización y manipulación de datos. La librería @uncuyoapp/ngx-data-visualizer funciona como una solución integrada que simplifica el uso combinado de las siguientes dependencias clave:
- Angular 18+ — Framework base con APIs standalone y Signals
- Angular CDK Overlays — Infraestructura para el panel de edición flotante desacoplado
- ECharts y ngx-echarts — Motor de gráficos interactivos
- PivotTable.js — Análisis dinámico de datos tabulados
- XLSX — Exportación e importación de hojas de cálculo
- FileSaver.js — Descarga de archivos en el navegador
- lodash.clonedeep y lodash.uniqby — Manipulación inmutable de datos
- jQuery — Requerido por PivotTable.js
- RxJS — Bus de eventos y reactividad
ngx-data-visualizer-workspace/
├── projects/
│ ├── ngx-data-visualizer/ # 📦 Librería principal
│ │ ├── src/lib/
│ │ │ ├── chart/ # Componente de gráficos y motor ECharts
│ │ │ ├── table/ # Componente de tablas dinámicas
│ │ │ ├── multiple-chart/ # Componente de gráficos múltiples
│ │ │ ├── config-editor/ # Overlays CDK y asistentes por pasos
│ │ │ ├── services/ # Dataset, EventBusService y AuditService
│ │ │ ├── icons/ # Componentes de íconos SVG standalone
│ │ │ ├── legend/ # Componente de leyenda
│ │ │ ├── providers.ts # Proveedores de inyección de dependencias
│ │ │ └── public-api.ts # Superficie pública exportada
│ │ └── README.md # 📚 Documentación técnica de la librería
│ └── demo/ # 🧪 Aplicación de demostración y laboratorio
│ ├── src/app/
│ │ ├── configuration/ # Guía de configuración
│ │ ├── chart-demo/ # Ejemplos de gráficos
│ │ ├── table-demo/ # Ejemplos de tablas
│ │ ├── dashboard/ # Dashboard completo interactivo
│ │ └── test-suite/ # Suite de pruebas de combinación
│ └── README.md
├── dist/ # Artefactos compilados
├── package.json # Configuración del workspace
└── README.md # Este archivo
La librería proporciona un conjunto de componentes standalone y servicios para visualización de datos:
-
Componentes Standalone:
ChartComponent(<libChart>) - Gráficos individuales con soporte KPI paraDA = 0TableComponent(<libTable>) - Tablas dinámicas bidimensionalesMultipleChartComponent(<libMultipleChart>) - Desglose de gráficos múltiples
-
Clases y Servicios:
Dataset- Modelo de datos reactivoEventBusService- Bus centralizado de eventos del ciclo de vidaAuditService- Servicio de depuración y auditoría en consolaChartOptions,TableOptions,Dimension,RowData,Series,Goal- Interfaces de datos tipadas
-
Proveedores DI:
provideDataVisualizerCharts(config?)- Inyección de configuración de gráficosprovideDataVisualizerTables(config?)- Inyección de servicios de tablas
👉 Documentación técnica detallada: README de la librería
Aplicación Angular completa que sirve como documentación viva, laboratorio de pruebas y ejemplos de integración:
- Guía de configuración - Setup paso a paso
- Ejemplos interactivos - Pruebas en tiempo real de cada componente
- Laboratorio de responsividad - Pruebas de dimensión y escalado
- Dashboard real - Ejemplo completo de integración
👉 Ver ejemplos: README del demo o visita la Demo Online.
- Node.js >= 18.13.0
- npm >= 8.19.0
- Angular CLI >= 18.0.0
- Angular >= 18.0.0
git clone https://github.com/uncuyoapp/ngx-data-visualizer.git
cd ngx-data-visualizer
npm install# 🧪 Ejecutar la aplicación demo
ng serve demo
# 📦 Construir la librería
ng build ngx-data-visualizer
# 🧪 Construir la demo
ng build demo
# 🔍 Ejecutar linter
ng lint- Componentes standalone para gráficos, tablas y gráficos múltiples
- Panel de edición con Angular CDK Overlays y Asistente por pasos
- Renderizado de tarjeta KPI para 0 dimensiones seleccionadas (
DA = 0) - Tooltip adaptativo multicolumna con totals y porcentajes
- Bus de eventos reactivo (
EventBusService) y auditoría en consola (AuditService) - Tokens de diseño CSS (
--viz-*) con soporte para Modo Oscuro - Íconos SVG standalone
Este proyecto está licenciado bajo la Licencia MIT.
Desarrollado con ❤️ por el Área de Políticas Públicas - Universidad Nacional de Cuyo