Todos los dashboards renderizados por Sprucely.io - ya sea creados mediante el runtime independiente de JavaScript, los componentes independientes de React, o almacenados en tu cuenta - comparten la misma estructura JSON subyacente: un objeto config para el estilo general del dashboard y un objeto data que describe el árbol de widgets. Esta referencia documenta ese JSON en su totalidad, junto con el formato de dataset del que se alimenta y qué tipo de gráfico elegir para una combinación determinada de columnas. Para instrucciones de integración, consulta las notas de integración sencilla de paneles.
JSON del dashboard
Todo dashboard es un único objeto JSON con dos claves de nivel superior: config, que contiene el estilo general del dashboard, y data, un árbol de nodos de widgets tipados que parte de una única raíz del panel. Cada nodo tiene un campo type y, en el caso de los tipos contenedores, un array children con los nodos anidados.
dash- la raíz del dashboard. Siempre hay exactamente una, en la parte superior del árbol.dash_stacker_hor/dash_stacker_ver- distribuye sus elementos secundarios en una fila o en una columna.dash_chart- un gráfico, en uno de los tipos de gráfico admitidos (ver más abajo).dash_table- una tabla de datos.dash_text- un bloque de texto.dash_image- una imagen subida.dash_spacer- espacio vacío fijo entre widgets.
Todos los widgets aceptan los mismos campos de presentación, independientemente de su tipo:
size- el tamaño del widget a lo largo del eje principal de su contenedor: ‘Auto’, ‘<n>px’ o ‘<n>%’.padding- espaciado interno, por ejemplo ‘10px’ (excepto dash_spacer).backgroundColor- un color CSS, por ejemplo ‘#FFFFFF’ o ‘transparent’.borderRadius/borderWidth- radio de esquina y grosor de borde, por ejemplo ‘10px’.borderColor- un color CSS para el borde.shadow- true o false; añade una sombra proyectada.
Widgets de gráficos
Todos los gráficos comparten los mismos campos; cuáles de x, y, d y r se utilizan, y qué tipo de columna acepta cada uno, depende del tipo de gráfico - cada uno de los tipos de gráfico admitidos se describe en su propia subsección más abajo, con un ejemplo en vivo generado a partir de un mismo dataset de muestra compartido.
datasetId- el dataset del que lee este gráfico - debe coincidir con el nombre de un dataset.chartType- area, bar, cell, dot, hexbin or line.title- un título de gráfico opcional.dataFunction- el agregado aplicado ad: count (default), sum, average, min, max, median or stddev. Dejadsin definir cuando uses count.x- la columna para la dimensión X (obligatoria en todos los tipos de gráfico).y- la columna para la dimensión Y (solo cell, dot y hexbin, y obligatoria en esos tres).d- la columna agregada en la dimensión de valor/color del gráfico.r- la columna para la dimensión de radio (solo dot, y obligatoria).seasonX/seasonY- agrupa una columna de tiempo en un período recurrente: year, quarter, month, week, dayofyear, day, dayofweek, hour, minute or second.
Las columnas de dimensión se clasifican como categóricas, temporales o continuas según su tipo declarado - ver la sección JSON del dataset más abajo. Cuando dataFunction es count, la dimensión d se deja sin definir - un count no necesita columna de valor. Cualquier otro agregado (sum, average, min, max, median or stddev) sí la requiere.
Las dimensiones que exige cada tipo de gráfico deben rellenarse: cell, dot y hexbin no pueden dibujarse sin y, y dot tampoco sin r. Una solicitud que omita alguna se rechaza, así que si el dataset no tiene una columna adecuada, elige un tipo de gráfico que no la necesite - area, bar y line solo requieren x, y hexbin representa dos dimensiones sin columna de radio.
Barras
x acepta una columna categórica, continua o temporal. d debe ser continua, y solo se utiliza cuando dataFunction no es count. seasonX se permite cuando x es una columna temporal, para agruparla en un período recurrente como el día de la semana. y y r no se utilizan.
Líneas
x acepta una columna continua o temporal - no categórica. d debe ser continua, y solo se utiliza cuando dataFunction no es count. No se admite la estacionalidad. y y r no se utilizan.
Área
x acepta una columna continua o temporal - no categórica. d debe ser continua, y solo se utiliza cuando dataFunction no es count. No se admite la estacionalidad. y y r no se utilizan.
Celdas
x y y requieren ambas una columna categórica, o una columna temporal con estacionalidad habilitada (seasonX para x, seasonY para y). d debe ser continua, y solo se utiliza cuando dataFunction no es count. seasonY requiere además que x ya se resuelva en una dimensión categórica - ya sea una columna genuinamente categórica, o una columna temporal con seasonX definido. r no se utiliza.
Puntos
x y y aceptan una columna continua o temporal. r y d deben ser ambas continuas - nunca categóricas ni temporales. No se admite la estacionalidad. Los gráficos de puntos se interpretan mejor con datasets de hasta unos pocos cientos de filas.
Hexagonal
x y y aceptan ambas una columna continua o temporal - no categórica. d debe ser continua, y solo se utiliza cuando dataFunction no es count. No se admite la estacionalidad. r no se utiliza.
Otros widgets
Tabla (dash_table)
datasetId- el dataset a mostrar.fontFamily- por defecto Arial; una de Arial, Calibri, Cambria, Century Gothic, Courier New, Garamond, Helvetica, Consolas/Monaco (Monospace), Lucida Bright, Lucida Sans, Segoe UI, Tahoma, Verdana.fontSize- por defecto 12px; 6-256px or 1-10vw.color- por defecto inherit.bold/italic- true o false, por defecto false.ratio- relación ancho/alto, un número de 0.125 to 16.
Texto (dash_text)
text- el texto a mostrar.fontFamily/fontSize(por defecto 3vw) /color/bold/italic- igual que en el widget de tabla.justifyContent/alignItems- ‘0’ inicio, ‘1’ centro o ‘2’ fin.
Imagen (dash_image)
assetId- un recurso de imagen subido.objectFit- por defecto none; none, contain, cover or fill.
Espaciador (dash_spacer)
size- obligatorio; por defecto 100px; 0-100% or 30-1000px.
Apiladores (dash_stacker_hor, dash_stacker_ver)
children- los widgets anidados, organizados en una fila (dash_stacker_hor) o en una columna (dash_stacker_ver).gap- por defecto ‘10px’; espaciado entre los elementos secundarios.minHeight- una altura mínima para el apilador.
JSON del dataset
Un dataset es un único objeto JSON con un nombre, columnas tipadas y filas:
{
"name": "Orders",
"headers": ["region", "category", "amount", "quantity"],
"types": ["VARCHAR", "VARCHAR", "FLOAT", "INTEGER"],
"entries": [
["North", "Electronics", 120.50, 2],
["South", "Clothing", 89.95, 1],
["North", "Furniture", 432.00, 5],
["South", "Electronics", 74.50, 1]
]
}name- el nombre del dataset; los gráficos y las tablas lo referencian mediante su campodatasetId.headers- los nombres de columna, en el mismo orden que cada fila en las entradas.types- un tipo de columna por encabezado - ver las categorías más abajo.entries- las filas, cada una un array de valores en el orden de los encabezados.
Opcionalmente, row_start, row_end, col_start y col_end seleccionan un subrango inclusivo, indexado desde cero, de entradas a importar - útil cuando se agregan solo filas nuevas de una tabla más grande. Los cuatro tienen por defecto el rango completo:
{
"name": "Orders",
"headers": ["region", "amount"],
"types": ["VARCHAR", "FLOAT"],
"entries": [ ["North", 120.50], ["South", 89.95], ["North", 432.00], ["South", 74.50] ],
"row_start": 0,
"row_end": 1,
"col_start": 0,
"col_end": 1
}Todo tipo de columna se clasifica como categórico, temporal o continuo, lo que determina para qué dimensiones de gráfico se puede utilizar - ver las secciones de widgets de gráficos más arriba:
- Categórica -
BIT, BITSTRING, BOOLEAN, BOOL, LOGICAL, BLOB, BYTEA, BINARY, VARBINARY, UUID, VARCHAR, CHAR, BPCHAR, TEXT, STRING - Temporal -
DATE, TIME, TIMESTAMP, DATETIME, TIMESTAMP WITH TIME ZONE, TIMESTAMPTZ - Continua - cualquier otro tipo, por ejemplo
INTEGER, FLOAT, DOUBLE, BIGINT, DECIMAL
Las referencias a columnas en un gráfico (x, y, d, r) deben coincidir exactamente con un nombre de encabezado, distinguiendo entre mayúsculas y minúsculas.
Estilos y anulaciones de tema
Los colores a nivel de dashboard se definen una vez en config.style.widget y se aplican a todos los widgets que no los anulen:
color- el color de texto por defecto.backgroundColor- el fondo por defecto del dashboard.primaryColor- el color de primer plano/serie activa, utilizado para los encabezados y la traza con filtro cruzado.primaryColorSubtle- el extremo inferior del degradado de color utilizado por los gráficos cell, dot y hexbin.secondaryColor- el color de fondo/serie sin filtrar.
Cualquier widget puede anular su propia presentación directamente en su nodo JSON - backgroundColor, color, padding, borderRadius, borderWidth, borderColor y shadow. El siguiente ejemplo anula los colores y las esquinas propios de un gráfico, mientras que el resto del dashboard conserva el tema compartido:
{
"type": "dash_chart",
"datasetId": "Orders",
"chartType": "hexbin",
"x": "amount",
"y": "quantity",
"backgroundColor": "#F5F0FF",
"borderRadius": "12px",
"borderWidth": "1px",
"borderColor": "#6E2BDC",
"shadow": true
}Ejemplo completo
Un pequeño dashboard que combina un encabezado, dos gráficos uno junto al otro y una tabla, todos leyendo de un mismo dataset:
{
"config": {
"type": "dashboard",
"style": {
"widget": {
"color": "#000000",
"backgroundColor": "#FFFFFF",
"primaryColor": "#6E2BDC",
"primaryColorSubtle": "#E2D5F8",
"secondaryColor": "#CCCCCC"
}
}
},
"data": {
"type": "dash",
"children": [
{ "type": "dash_text", "text": "Orders Overview", "fontSize": "2vw", "justifyContent": "0" },
{
"type": "dash_stacker_hor",
"children": [
{ "type": "dash_chart", "datasetId": "Orders", "chartType": "bar", "x": "region", "dataFunction": "count" },
{ "type": "dash_chart", "datasetId": "Orders", "chartType": "cell", "x": "region", "y": "category", "dataFunction": "count" }
]
},
{ "type": "dash_table", "datasetId": "Orders" }
]
}
}