Sprucely title background

Veri Formatı

Sprucely.io tarafından oluşturulan her dashboard - ister bağımsız JavaScript çalışma zamanı üzerinden, ister bağımsız React bileşenleri üzerinden oluşturulmuş olsun, isterse hesabınızda saklanıyor olsun - aynı temel JSON yapısını paylaşır: dashboard geneli stillendirme için bir config nesnesi ve widget ağacını tanımlayan bir data nesnesi. Bu referans, bu JSON yapısını eksiksiz olarak; okuduğu veri kümesi biçimiyle ve sütunların belirli bir kombinasyonu için hangi grafik türünün seçileceğiyle birlikte belgeler. Gömme talimatları için basit dashboard entegrasyonu notlarına bakın.

Dashboard JSON’u

Her dashboard, iki üst düzey anahtara sahip tek bir JSON nesnesidir: dashboard geneli stillendirmeyi taşıyan config ve tek bir dashboard köküyle başlayan, türü belirlenmiş widget düğümlerinden oluşan bir ağaç olan data. Her düğümün bir type alanı vardır ve konteyner türleri için iç içe düğümlerden oluşan bir children dizisi bulunur.

  • dash - dashboard kökü. Ağacın en üstünde her zaman tam olarak bir tane bulunur.
  • dash_stacker_hor / dash_stacker_ver - alt öğelerini bir satır veya sütun halinde düzenler.
  • dash_chart - desteklenen grafik türlerinden birinde bir grafik (aşağıya bakın).
  • dash_table - bir veri tablosu.
  • dash_text - bir metin bloğu.
  • dash_image - yüklenmiş bir görsel.
  • dash_spacer - widget’lar arasında sabit boş alan.

Türü ne olursa olsun, her widget aynı sunum alanlarını kabul eder:

  • size - widget’ın, bulunduğu konteynerin ana ekseni boyunca boyutu: ‘Auto’, ‘<n>px’ veya ‘<n>%’.
  • padding - iç boşluk, örneğin ‘10px’ (dash_spacer hariç).
  • backgroundColor - bir CSS rengi, örneğin ‘#FFFFFF’ veya ‘transparent’.
  • borderRadius / borderWidth - köşe yarıçapı ve kenarlık kalınlığı, örneğin ‘10px’.
  • borderColor - kenarlık için bir CSS rengi.
  • shadow - true veya false; bir gölge efekti ekler.

Grafik Widget’ları

Her grafik aynı alanları paylaşır; x, y, d ve r alanlarından hangilerinin kullanılacağı ve her birinin hangi sütun türünü kabul ettiği grafik türüne bağlıdır - desteklenen her grafik türü, ortak küçük bir örnek veri kümesinden oluşturulmuş canlı bir örnekle birlikte aşağıda kendi alt bölümünde ele alınmıştır.

  • datasetId - bu grafiğin okuduğu veri kümesi - bir veri kümesinin adıyla eşleşmelidir.
  • chartType - area, bar, cell, dot, hexbin or line.
  • title - isteğe bağlı bir grafik başlığı.
  • dataFunction - d’ye uygulanan toplama işlevi: count (default), sum, average, min, max, median or stddev. count kullanılırken d ayarlanmadan bırakılmalıdır.
  • x - X boyutu için sütun (tüm grafik türlerinde zorunludur).
  • y - Y boyutu için sütun (yalnızca cell, dot ve hexbin için; bu üçünde zorunludur).
  • d - grafiğin değer/renk boyutuna göre toplanan sütun.
  • r - yarıçap boyutu için sütun (yalnızca dot için; dot’ta zorunludur).
  • seasonX / seasonY - bir zaman sütununu tekrarlayan bir döneme göre gruplandırır: year, quarter, month, week, dayofyear, day, dayofweek, hour, minute or second.

Boyut sütunları, bildirilen türlerine göre kategorik, zaman veya sürekli olarak sınıflandırılır - aşağıdaki veri kümesi JSON bölümüne bakın. dataFunction count olduğunda, d boyutu ayarlanmadan bırakılır - bir sayım için değer sütununa gerek yoktur. Diğer tüm toplama işlevleri (sum, average, min, max, median or stddev) bunu gerektirir.

Bir grafik türünün gerektirdiği boyutlar mutlaka doldurulmalıdır: cell, dot ve hexbin y olmadan çizilemez, dot ise ayrıca r olmadan çizilemez. Bunlardan birini atlayan istek reddedilir; bu nedenle veri kümesinde uygun bir sütun yoksa o boyuta ihtiyaç duymayan bir grafik türü seçin - area, bar ve line yalnızca x ile çalışır, hexbin ise yarıçap sütunu olmadan iki boyutu gösterir.

Çubuk

x kategorik, sürekli veya zaman sütunu kabul eder. d sürekli olmalıdır ve yalnızca dataFunction count olmadığında kullanılır. x bir zaman sütunu olduğunda, onu haftanın günü gibi tekrarlayan bir döneme göre gruplandırmak için seasonX kullanılabilir. y ve r kullanılmaz.

Çizgi

x sürekli veya zaman sütunu kabul eder - kategorik olamaz. d sürekli olmalıdır, yalnızca dataFunction count olmadığında kullanılır. Mevsimsellik desteklenmez. y ve r kullanılmaz.

Alan

x sürekli veya zaman sütunu kabul eder - kategorik olamaz. d sürekli olmalıdır, yalnızca dataFunction count olmadığında kullanılır. Mevsimsellik desteklenmez. y ve r kullanılmaz.

Hücre

x ve y alanlarının her ikisi de kategorik bir sütun veya mevsimselliği etkinleştirilmiş bir zaman sütunu gerektirir (x için seasonX, y için seasonY). d sürekli olmalıdır, yalnızca dataFunction count olmadığında kullanılır. seasonY, ayrıca x’in zaten kategorik bir boyuta çözümlenmiş olmasını gerektirir - ya gerçekten kategorik bir sütun ya da seasonX ayarlanmış bir zaman sütunu. r kullanılmaz.

Nokta

x ve y sürekli veya zaman sütunu kabul eder. r ve d alanlarının ikisi de sürekli olmalıdır - asla kategorik veya zaman olamaz. Mevsimsellik desteklenmez. Nokta grafikleri, birkaç yüz satıra kadar olan veri kümelerinde en iyi sonucu verir.

Altıgen Bölme

x ve y alanlarının her ikisi de sürekli veya zaman sütunu kabul eder - kategorik olamaz. d sürekli olmalıdır, yalnızca dataFunction count olmadığında kullanılır. Mevsimsellik desteklenmez. r kullanılmaz.

Diğer Widget’lar

Tablo (dash_table)

  • datasetId - görüntülenecek veri kümesi.
  • fontFamily - varsayılan Arial; şunlardan biri: Arial, Calibri, Cambria, Century Gothic, Courier New, Garamond, Helvetica, Consolas/Monaco (Monospace), Lucida Bright, Lucida Sans, Segoe UI, Tahoma, Verdana.
  • fontSize - varsayılan 12px; 6-256px veya 1-10vw.
  • color - varsayılan inherit.
  • bold / italic - true veya false, varsayılan false.
  • ratio - genişlik/yükseklik oranı, 0.125 ile 16 arasında bir sayı.

Metin (dash_text)

  • text - görüntülenecek metin.
  • fontFamily / fontSize (varsayılan 3vw) / color / bold / italic - tablo widget’ıyla aynıdır.
  • justifyContent / alignItems - ‘0’ başlangıç, ‘1’ orta veya ‘2’ son.

Görsel (dash_image)

  • assetId - yüklenmiş bir görsel varlığı.
  • objectFit - varsayılan none; none, contain, cover or fill.

Boşluk (dash_spacer)

  • size - zorunlu; varsayılan 100px; 0-100% veya 30-1000px.

Yığıcılar (dash_stacker_hor, dash_stacker_ver)

  • children - bir satır (dash_stacker_hor) veya sütun (dash_stacker_ver) halinde düzenlenen iç içe widget’lar.
  • gap - varsayılan ‘10px’; alt öğeler arasındaki boşluk.
  • minHeight - yığıcı için minimum yükseklik.

Veri Kümesi JSON’u

Bir veri kümesi; ada, türü belirlenmiş sütunlara ve satırlara sahip tek bir JSON nesnesidir:

{
  "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 - veri kümesinin adı; grafikler ve tablolar buna datasetId alanları üzerinden referans verir.
  • headers - entries içindeki her satırla aynı sırada olan sütun adları.
  • types - her başlık için bir sütun türü - aşağıdaki kategorilere bakın.
  • entries - başlık sırasına göre değerlerden oluşan bir dizi olan her satır.

İsteğe bağlı olarak, row_start, row_end, col_start ve col_end, içe aktarılacak entries için sıfır tabanlı, dahil edici bir alt aralık seçer - daha büyük bir tablodan yalnızca yeni satırları eklerken kullanışlıdır. Dördü de varsayılan olarak tüm aralığı kapsar:

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

Her sütun türü kategorik, zaman veya sürekli olarak sınıflandırılır; bu sınıflandırma, sütunun hangi grafik boyutlarında kullanılabileceğini belirler - yukarıdaki grafik widget bölümlerine bakın:

  • Kategorik - BIT, BITSTRING, BOOLEAN, BOOL, LOGICAL, BLOB, BYTEA, BINARY, VARBINARY, UUID, VARCHAR, CHAR, BPCHAR, TEXT, STRING
  • Zaman - DATE, TIME, TIMESTAMP, DATETIME, TIMESTAMP WITH TIME ZONE, TIMESTAMPTZ
  • Sürekli - diğer tüm türler, örneğin INTEGER, FLOAT, DOUBLE, BIGINT, DECIMAL

Bir grafikteki sütun referansları (x, y, d, r) bir başlık adıyla büyük/küçük harf duyarlı olarak birebir eşleşmelidir.

Stillendirme ve Tema Geçersiz Kılmaları

Dashboard düzeyindeki renkler config.style.widget içinde bir kez ayarlanır ve bunları geçersiz kılmayan her widget’a uygulanır:

  • color - varsayılan metin rengi.
  • backgroundColor - varsayılan dashboard arka planı.
  • primaryColor - başlıklar ve çapraz filtrelenmiş iz için kullanılan ön plan/etkin seri rengi.
  • primaryColorSubtle - cell, dot ve hexbin grafiklerinin kullandığı renk geçişinin alt ucu.
  • secondaryColor - arka plan/filtrelenmemiş seri rengi.

Herhangi bir widget, kendi JSON düğümü üzerinde doğrudan kendi sunumunu geçersiz kılabilir - backgroundColor, color, padding, borderRadius, borderWidth, borderColor ve shadow. Aşağıdaki örnek, dashboard’un geri kalanı ortak temayı korurken bir grafiğin kendi renklerini ve köşelerini geçersiz kılar:

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

Tam Örnek

Bir başlık, yan yana iki grafik ve bir tabloyu birleştiren, tümü tek bir veri kümesinden okuyan küçük bir dashboard:

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