Gráficos y widgets
Elementos de las vistas que no son una grilla: gráficos estadísticos y widgets.
El tipo de gráfico lo define el tag <tipo> con un código de una o dos letras. Los tres más usados:
<tipo> |
Resultado |
|---|---|
L |
![]() |
C |
![]() |
P |
![]() |
<grafico>
Sección titulada «<grafico>»Definición de un gráfico. Va dentro de la <table>/<tabla> de la consulta que le da los datos: suelto en la raíz del <histrix> no dibuja nada.
Valores de <tipo>: L línea, C columnas, SC columnas también (es idéntico a C, no apila nada), P torta, H gráfico de cotizaciones (exige una serie llamada _time), más heatmap, treemap y gauge. B no existe: cualquier valor no reconocido se pasa crudo a la librería de gráficos, que no dibuja nada y deja el spinner girando para siempre.
Mezclar tipos de serie en un mismo gráfico sí se puede: el type de cada <serie> gana sobre el <tipo> general, así que se pueden combinar columnas con una línea encima (por ejemplo importes por mes más la tendencia).
Contenido
Sección titulada «Contenido»| Elemento | Veces | Descripción |
|---|---|---|
<ancho> |
0..n | No hace nada: es código muerto. Se lee del XML pero nadie lo usa para dimensionar el gráfico, que siempre toma el ancho del contenedor. |
<alto> |
0..n | Alto del gráfico. A diferencia de <ancho>, este sí se aplica: es la única forma de que un gráfico no salga con el alto por defecto. |
<tipo> |
0..n | Tipo de gráfico. Valores válidos: L línea, C columnas, SC columnas (idéntico a C), P torta, H cotizaciones (exige una serie llamada… |
<etiquetas> |
0..n | Campo cuyo valor se usa como eje X (etiquetas de cada punto). |
<serie> |
0..n | Campo de una serie de datos (eje Y). Repetir para múltiples series. |
<objective> |
0..n | Valor meta que se dibuja como referencia sobre el gráfico (la línea de objetivo). |
<options> |
0..n | JSON crudo que se mergea sobre las opciones de la librería de gráficos, para llegar a cualquier setting que el motor no expone (formato de tooltip… |
<datos> |
0..n | Fuente alternativa de datos (cuando no se infiere del form). |
<title> |
0..n | Título del gráfico. |
<titulo> |
0..n | Alias español de <title>; el motor lee las dos grafías. |
<subtitulo> |
0..n | Subtítulo del gráfico. |
Atributos
Sección titulada «Atributos»average
Sección titulada «average»BoolEstricto · opcional
Agrega la línea de promedio de la serie sobre el gráfico. No confundirlo con el average de un <field>, que es otra cosa (promedia una columna de la grilla).
texto · obligatorio
Identificador del gráfico.
BoolEstricto · opcional
Dibuja el gráfico como Pareto: las columnas ordenadas de mayor a menor más la curva de porcentaje acumulado. Sirve para el clásico “qué 20% explica el 80%”.
<serie>
Sección titulada «<serie>»Campo de una serie de datos (eje Y). Repetir para múltiples series. El texto del tag es el nombre del campo; con <column> adentro se declaran varias columnas en una misma serie.
- Va dentro de:
<grafico>(0..n) - Atributos: 1 (propios)
Contenido
Sección titulada «Contenido»| Elemento | Veces | Descripción |
|---|---|---|
<column> |
0..n | Columna que aporta datos a esta serie. |
Atributos
Sección titulada «Atributos»texto · opcional
Tipo de esta serie en particular, con los mismos valores que <tipo>. Pisa al tipo general y es lo que permite mezclar columnas y líneas en un mismo gráfico.
<etiquetas>
Sección titulada «<etiquetas>»Campo cuyo valor se usa como eje X (etiquetas de cada punto).
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
<widget>
Sección titulada «<widget>»Widget embebido en el dashboard. No es un iframe y no apunta afuera: el contenido de <url> se pide por AJAX y su HTML se inyecta dentro del div del widget, y la ruta se reescribe a la API interna, así que lo que se referencia es una pantalla de la propia aplicación, no un sitio externo.
Contenido
Sección titulada «Contenido»| Elemento | Veces | Descripción |
|---|---|---|
<title> |
0..n | Título visible del widget. |
<url> |
0..n | Pantalla interna cuyo HTML se inyecta en el div del widget (se pide por AJAX, no es un iframe). |
<text> |
0..n | Contenido HTML fijo del widget, para los casos en que no hay una pantalla que embeber: un texto, un aviso, un bloque de links. |
<iframe> |
0..n | Éste sí es un iframe de verdad, y es la forma de mostrar algo externo a la aplicación (un tablero, un mapa, una página). |
Atributos
Sección titulada «Atributos»texto · opcional
Alto del widget (CSS). Ojo: en la práctica el alto lo termina fijando style.
texto · obligatorio
Identificador del widget.
texto · opcional
CSS inline del div del widget. Es lo único que efectivamente le da alto: sin style el widget se dimensiona por su contenido, y un widget que carga por AJAX arranca en cero.
texto · opcional
Ancho del widget (CSS).
Alto del gráfico. A diferencia de <ancho>, este sí se aplica: es la única forma de que un gráfico no salga con el alto por defecto.
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
<ancho>
Sección titulada «<ancho>»No hace nada: es código muerto. Se lee del XML pero nadie lo usa para dimensionar el gráfico, que siempre toma el ancho del contenedor. Los 87 XMLs que lo escriben (muchos con 800px) no cambian nada. Queda declarado para que esos XMLs no den error, pero no hay que agregarlo en código nuevo.
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
<column>
Sección titulada «<column>»Columna que aporta datos a esta serie.
- Va dentro de:
<serie>(0..n) - Contenido: texto libre.
No acepta atributos.
<datos>
Sección titulada «<datos>»Fuente alternativa de datos (cuando no se infiere del form).
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
<iframe>
Sección titulada «<iframe>»Éste sí es un iframe de verdad, y es la forma de mostrar algo externo a la aplicación (un tablero, un mapa, una página). Lo que la documentación suele atribuirle a <url> —apuntar afuera— en realidad se hace acá.
- Va dentro de:
<widget>(0..n) - Contenido: texto libre.
No acepta atributos.
<objective>
Sección titulada «<objective>»Valor meta que se dibuja como referencia sobre el gráfico (la línea de objetivo). El valor puede quedar guardado por el usuario desde la propia pantalla, así que lo que se declara acá es el default.
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
<subtitulo>
Sección titulada «<subtitulo>»Subtítulo del gráfico.
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
Contenido HTML fijo del widget, para los casos en que no hay una pantalla que embeber: un texto, un aviso, un bloque de links. Alternativa a <url>.
- Va dentro de:
<widget>(0..n) - Contenido: texto libre.
No acepta atributos.
Pantalla interna cuyo HTML se inyecta en el div del widget (se pide por AJAX, no es un iframe).
- Va dentro de:
<widget>(0..n) - Contenido: texto libre.
No acepta atributos.
<options> en <grafico>
Sección titulada «<options> en <grafico>»JSON crudo que se mergea sobre las opciones de la librería de gráficos, para llegar a cualquier setting que el motor no expone (formato de tooltip, colores, ejes secundarios). No se valida: un JSON mal formado rompe el gráfico entero sin mensaje de error.
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.
<tipo> en <grafico>
Sección titulada «<tipo> en <grafico>»Tipo de gráfico. Valores válidos: L línea, C columnas, SC columnas (idéntico a C), P torta, H cotizaciones (exige una serie llamada _time), heatmap, treemap y gauge. B no existe aunque muchos XMLs lo escriben: un valor no reconocido se pasa crudo a la librería de gráficos, que no dibuja nada y deja el spinner girando para siempre.
- Va dentro de:
<grafico>(0..n) - Contenido: texto libre.
No acepta atributos.


