Sprucely title background

Formato Dati

Ogni dashboard generata da Sprucely.io - sia essa creata tramite il runtime JavaScript standalone, i componenti React standalone, o salvata nel tuo account - condivide la stessa struttura JSON di base: un oggetto config per lo stile a livello di dashboard e un oggetto data che descrive l’albero dei widget. Questo riferimento documenta tale JSON in modo completo, insieme al formato del dataset da cui legge i dati e a quale tipo di grafico scegliere per una determinata combinazione di colonne. Per le istruzioni di integrazione, consulta le note sull’integrazione semplice della dashboard.

JSON della dashboard

Ogni dashboard è un singolo oggetto JSON con due chiavi di primo livello: config, che contiene lo stile a livello di dashboard, e data, un albero di nodi widget tipizzati che parte da un’unica radice della dashboard. Ogni nodo ha un campo type e, per i tipi contenitore, un array children di nodi annidati.

  • dash - la radice della dashboard. Sempre esattamente una, in cima all’albero.
  • dash_stacker_hor / dash_stacker_ver - dispone i propri figli in una riga o in una colonna.
  • dash_chart - un grafico, in uno dei tipi di grafico supportati (vedi sotto).
  • dash_table - una tabella dati.
  • dash_text - un blocco di testo.
  • dash_image - un’immagine caricata.
  • dash_spacer - spazio vuoto fisso tra i widget.

Ogni widget accetta gli stessi campi di presentazione, indipendentemente dal tipo:

  • size - la dimensione del widget lungo l’asse principale del suo contenitore: ‘Auto’, ‘<n>px’ o ‘<n>%’.
  • padding - spaziatura interna, ad esempio ‘10px’ (tranne dash_spacer).
  • backgroundColor - un colore CSS, ad esempio ‘#FFFFFF’ o ‘transparent’.
  • borderRadius / borderWidth - raggio degli angoli e spessore del bordo, ad esempio ‘10px’.
  • borderColor - un colore CSS per il bordo.
  • shadow - true o false; aggiunge un’ombra.

Widget dei grafici

Ogni grafico condivide gli stessi campi; quali tra x, y, d e r vengono utilizzati, e quale tipo di colonna ciascuno accetta, dipende dal tipo di grafico - ogni tipo di grafico supportato è trattato nella propria sottosezione qui sotto, con un esempio live generato da un unico piccolo dataset di esempio condiviso.

  • datasetId - il dataset da cui il grafico legge i dati - deve corrispondere al nome di un dataset.
  • chartType - area, bar, cell, dot, hexbin or line.
  • title - un titolo del grafico facoltativo.
  • dataFunction - l’aggregazione applicata a d: count (default), sum, average, min, max, median or stddev. Lascia d non impostato quando usi count.
  • x - la colonna per la dimensione X (obbligatoria per tutti i tipi di grafico).
  • y - la colonna per la dimensione Y (solo per cell, dot e hexbin, e obbligatoria per questi tre).
  • d - la colonna aggregata nella dimensione di valore/colore del grafico.
  • r - la colonna per la dimensione del raggio (solo per dot, e obbligatoria).
  • seasonX / seasonY - raggruppa una colonna temporale in un periodo ricorrente: year, quarter, month, week, dayofyear, day, dayofweek, hour, minute or second.

Le colonne di dimensione sono classificate come categoriali, temporali o continue in base al tipo dichiarato - vedi la sezione JSON del dataset qui sotto. Quando dataFunction è count, la dimensione d viene lasciata non impostata - un conteggio (count) non richiede una colonna di valore. Qualsiasi altra aggregazione (sum, average, min, max, median or stddev) la richiede.

Le dimensioni richieste da un tipo di grafico devono essere valorizzate: cell, dot e hexbin non possono essere disegnati senza y, e dot non può esserlo senza r. Una richiesta che ne omette una viene rifiutata, quindi se il dataset non ha una colonna adatta, scegli un tipo di grafico che non la richieda - area, bar e line usano solo x, mentre hexbin rappresenta due dimensioni senza colonna del raggio.

Barre

x accetta una colonna categoriale, continua o temporale. d deve essere continua, ed è utilizzata solo quando dataFunction non è count. seasonX è consentito quando x è una colonna temporale, per raggrupparla in un periodo ricorrente come il giorno della settimana. y e r non sono utilizzati.

Linee

x accetta una colonna continua o temporale - non categoriale. d deve essere continua, utilizzata solo quando dataFunction non è count. La stagionalità non è supportata. y e r non sono utilizzati.

Area

x accetta una colonna continua o temporale - non categoriale. d deve essere continua, utilizzata solo quando dataFunction non è count. La stagionalità non è supportata. y e r non sono utilizzati.

Celle

x e y richiedono entrambi una colonna categoriale, oppure una colonna temporale con la stagionalità attivata (seasonX per x, seasonY per y). d deve essere continua, utilizzata solo quando dataFunction non è count. seasonY richiede inoltre che x si risolva già in una dimensione categoriale - una colonna genuinamente categoriale, oppure una colonna temporale con seasonX impostato. r non è utilizzata.

Punti

x e y accettano una colonna continua o temporale. r e d devono essere entrambe continue - mai categoriali o temporali. La stagionalità non è supportata. I grafici a punti si leggono meglio con dataset fino a poche centinaia di righe.

Hexbin

x e y accettano entrambe una colonna continua o temporale - non categoriale. d deve essere continua, utilizzata solo quando dataFunction non è count. La stagionalità non è supportata. r non è utilizzata.

Altri widget

Tabella (dash_table)

  • datasetId - il dataset da visualizzare.
  • fontFamily - predefinito Arial; uno tra Arial, Calibri, Cambria, Century Gothic, Courier New, Garamond, Helvetica, Consolas/Monaco (Monospace), Lucida Bright, Lucida Sans, Segoe UI, Tahoma, Verdana.
  • fontSize - predefinito 12px; 6-256px o 1-10vw.
  • color - predefinito inherit.
  • bold / italic - true o false, predefinito false.
  • ratio - rapporto larghezza/altezza, un numero da 0.125 a 16.

Testo (dash_text)

  • text - il testo da visualizzare.
  • fontFamily / fontSize (predefinito 3vw) / color / bold / italic - come per il widget tabella.
  • justifyContent / alignItems - ‘0’ inizio, ‘1’ centro o ‘2’ fine.

Immagine (dash_image)

  • assetId - un asset immagine caricato.
  • objectFit - predefinito none; none, contain, cover or fill.

Spaziatore (dash_spacer)

  • size - obbligatorio; predefinito 100px; 0-100% o 30-1000px.

Impilatori (dash_stacker_hor, dash_stacker_ver)

  • children - i widget annidati, disposti in una riga (dash_stacker_hor) o in una colonna (dash_stacker_ver).
  • gap - predefinito ‘10px’; spaziatura tra i figli.
  • minHeight - un’altezza minima per l’impilatore.

JSON del dataset

Un dataset è un singolo oggetto JSON con un nome, colonne tipizzate e righe:

{
  "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 - il nome del dataset; i grafici e le tabelle lo referenziano tramite il proprio campo datasetId.
  • headers - i nomi delle colonne, nello stesso ordine di ogni riga in entries.
  • types - un tipo di colonna per ogni intestazione - vedi le categorie qui sotto.
  • entries - le righe, ciascuna un array di valori nell’ordine delle intestazioni.

Facoltativamente, row_start, row_end, col_start e col_end selezionano un sottointervallo di entries da importare, con indicizzazione a partire da zero e inclusivo - utile quando si aggiungono solo nuove righe da una tabella più grande. Tutti e quattro, per impostazione predefinita, coprono l’intero intervallo:

{
  "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
}

Ogni tipo di colonna è classificato come categoriale, temporale o continuo, il che determina per quali dimensioni del grafico può essere utilizzato - vedi le sezioni sui widget dei grafici qui sopra:

  • Categoriale - BIT, BITSTRING, BOOLEAN, BOOL, LOGICAL, BLOB, BYTEA, BINARY, VARBINARY, UUID, VARCHAR, CHAR, BPCHAR, TEXT, STRING
  • Temporale - DATE, TIME, TIMESTAMP, DATETIME, TIMESTAMP WITH TIME ZONE, TIMESTAMPTZ
  • Continuo - ogni altro tipo, ad esempio INTEGER, FLOAT, DOUBLE, BIGINT, DECIMAL

I riferimenti alle colonne in un grafico (x, y, d, r) devono corrispondere esattamente al nome di un’intestazione, con distinzione tra maiuscole e minuscole.

Stile e override del tema

I colori a livello di dashboard vengono impostati una sola volta in config.style.widget e si applicano a ogni widget che non li sovrascrive:

  • color - il colore del testo predefinito.
  • backgroundColor - lo sfondo predefinito della dashboard.
  • primaryColor - il colore di primo piano/della serie attiva, utilizzato per le intestazioni e per la traccia filtrata in modo incrociato.
  • primaryColorSubtle - l’estremità inferiore del gradiente di colore utilizzato dai grafici cell, dot e hexbin.
  • secondaryColor - il colore di sfondo/della serie non filtrata.

Ogni widget può sovrascrivere la propria presentazione direttamente sul suo nodo JSON - backgroundColor, color, padding, borderRadius, borderWidth, borderColor e shadow. L’esempio seguente sovrascrive i colori e gli angoli di un singolo grafico, mentre il resto della dashboard mantiene il tema condiviso:

{
  "type": "dash_chart",
  "datasetId": "Orders",
  "chartType": "hexbin",
  "x": "amount",
  "y": "quantity",
  "backgroundColor": "#F5F0FF",
  "borderRadius": "12px",
  "borderWidth": "1px",
  "borderColor": "#6E2BDC",
  "shadow": true
}

Esempio completo

Una piccola dashboard che combina un’intestazione, due grafici affiancati e una tabella, tutti che leggono da un unico 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" }
    ]
  }
}