Skip to content

CHART

El componente CHART renderiza gráficos interactivos usando ApexCharts completamente del lado del cliente. Soporta formato de datos WIDE (columnas múltiples) y LONG (series agrupadas por filas).

Propósito

CHART permite a los desarrolladores crear dashboards empresariales con gráficos declarativos desde YAML:

  • Gráficos de líneas, áreas, barras, pie y donut
  • Soporte para datos agrupados (stacked)
  • Orientación horizontal y vertical
  • Curvas suavizadas o rectas

Propiedades

PropiedadTipoObligatorioValor predeterminadoDescripción
typestringDebe ser CHART
namestringIdentificador del componente
sourcestringNombre de la variable Resultset con los datos
chartTypestringNoBARTipo de gráfico: LINE, AREA, BAR, PIE, DONUT
dataShapestringNoWIDEFormato de datos: WIDE o LONG
xFieldstringCampo del resultset usado como eje X / categoría
seriesFieldsstringSí*Nombres de campos separados por coma (solo WIDE)
seriesLabelsstringNoLabels separados por coma, alineados por índice con seriesFields. Si se omite, se usa el nombre del field
seriesFieldstringSí*Campo del resultset que identifica la serie (solo LONG)
valueFieldstringSí*Campo del resultset con el valor numérico (solo LONG)
titlestringNoTítulo del gráfico
subtitlestringNoSubtítulo del gráfico
heightnumberNo320Alto del gráfico en píxeles
stackedbooleanNofalseApila las series (BAR, AREA)
horizontalbooleanNofalseInvierte ejes (BAR)
legendbooleanNotrueMuestra la leyenda
toolbarbooleanNofalseMuestra la barra de herramientas
showDataLabelsbooleanNofalseMuestra etiquetas de datos
curvestringNosmoothCurva de línea: smooth, straight, stepline
emptyTextstringNoNo hay datosTexto cuando no hay datos
visiblebooleanNotrueIndica si el componente es visible

* Obligatorio según el valor de dataShape.

dataShape = WIDE

Usa un campo como eje X y una lista de campos como series. Los nombres de campo van en seriesFields separados por coma. Los labels visibles van en seriesLabels (opcional, alineados por índice).

yaml
- name: monthlyRevenue
  type: CHART
  title: Facturación mensual
  source: revenueData
  chartType: AREA
  dataShape: WIDE
  xField: month
  seriesFields: total,expenses
  seriesLabels: Facturación,Gastos
  height: 320
  curve: smooth
  legend: true

dataShape = LONG

Usa un campo como eje X, un campo como identificador de serie y un campo como valor numérico. El cliente agrupa automáticamente por seriesField y alinea por xField.

yaml
- name: monthlyMetrics
  type: CHART
  title: Métricas mensuales
  source: metricsData
  chartType: BAR
  dataShape: LONG
  xField: month
  seriesField: metric
  valueField: value
  stacked: true
  height: 320

Ejemplo SQL para formato LONG:

sql
SELECT
  DATE_FORMAT(created_at, '%Y-%m') AS month,
  status AS metric,
  COUNT(*) AS value
FROM orders
GROUP BY month, status
ORDER BY month;

PIE y DONUT

Para gráficos de torta:

  • WIDE: xField como label, primer field de seriesFields como valor
  • LONG: xField como label, valueField como valor, seriesField se ignora
yaml
- name: categoryPie
  type: CHART
  chartType: PIE
  source: categoryData
  dataShape: WIDE
  xField: category
  seriesFields: count
  seriesLabels: Cantidad

Notas técnicas

  • La renderización es 100% client-side usando vue3-apexcharts + apexcharts.
  • Los datos se obtienen del resultset definido en source y se serializan como JSON al cliente.
  • Si source no existe o no tiene filas, se muestra emptyText.
  • Si faltan propiedades requeridas, se muestra un mensaje de error inline sin romper la app.