Skip to content

Board Layouts

The layout of a board determines how its children (charts and nested boards) are arranged. Dataface supports four layout types.


Rows (Vertical Stack)

Items are arranged vertically, one after another. This is the default structure for top-level boards.

title: "Sales Dashboard"

charts:
  revenue_by_category:
    query: _doc_examples.yaml#sales_by_category
    type: bar
    title: "Revenue by Category"
    x: category
    y: revenue
  orders_trend:
    query: _doc_examples.yaml#sales_by_date
    type: line
    title: "Orders Over Time"
    x: date
    y: units_sold
  products_breakdown:
    query: _doc_examples.yaml#sales_by_product
    type: pie
    title: "Product Breakdown"
    theta: revenue
    color: product

rows:
  - revenue_by_category
  - orders_trend
  - products_breakdown
Sales Dashboard AccessoriesElectronicsToolsCategory$0$10,000$20,000$30,000$40,000$50,000$60,000$70,000$80,000$90,000$100,000$110,000$120,000$130,000$140,000$150,000RevenueRevenue by Category1 Jan20242 Jan3 Jan4 Jan5 Jan6 Jan7 Jan8 Jan9 Jan10 Jan11 Jan12 Jan13 Jan14 Jan15 Jan16 Jan17 Jan18 Jan19 Jan20 Jan21 Jan22 Jan23 Jan24 Jan25 Jan26 Jan27 Jan28 Jan29 Jan30 Jan31 Jan1 Feb2 Feb3 Feb4 Feb5 Feb6 Feb7 FebDate0102030405060708090100110120130140150160170180190200210220230240Units SoldOrders Over TimeGadget XGadget YTool ZWidget AWidget BproductProduct Breakdown 2026-05-12 12:34

Use rows when: - Content should flow vertically - Building mobile-friendly layouts - Creating scrollable dashboards


Cols (Horizontal Stack)

Items are arranged horizontally, side-by-side.

title: "Comparison View"

charts:
  revenue:
    query: _doc_examples.yaml#sales_by_product
    type: bar
    title: "Revenue"
    x: product
    y: revenue
  orders:
    query: _doc_examples.yaml#sales_by_date
    type: line
    title: "Orders"
    x: date
    y: units_sold
  growth:
    query: _doc_examples.yaml#sales_summary
    type: kpi
    label: "Total Revenue"
    value: revenue

cols:
  - revenue
  - orders
  - growth
Comparison View Gadget XGadget YTool ZWidget AWidget BProduct$0$20,000$40,000$60,000$80,000RevenueRevenue1 Jan20242 Jan3 Jan4 Jan5 Jan6 Jan7 Jan8 Jan9 Jan10 Jan11 Jan12 Jan13 Jan14 Jan15 Jan16 Jan17 Jan18 Jan19 Jan20 Jan21 Jan22 Jan23 Jan24 Jan25 Jan26 Jan27 Jan28 Jan29 Jan30 Jan31 Jan1 Feb2 Feb3 Feb4 Feb5 Feb6 Feb7 FebDate050100150200Units SoldOrders850k Total Revenue 2026-05-12 12:34

Use cols when: - Comparing metrics side-by-side - Creating sidebars - Building wide-screen layouts


Grid Layout

Items are arranged in a flexible grid. Items flow automatically into the next available space, but you can control their position and size using x, y, width and height.

title: "Grid Dashboard"

charts:
  kpi1:
    query: _doc_examples.yaml#sales_summary
    type: kpi
    label: "Total Revenue"
    value: revenue
  kpi2:
    query: _doc_examples.yaml#sales_summary
    type: kpi
    label: "Units Sold"
    value: units_sold
  kpi3:
    query: _doc_examples.yaml#sales_summary
    type: kpi
    label: "Categories"
    value: category_count
  main_chart:
    query: _doc_examples.yaml#sales_by_product
    type: bar
    title: "Revenue by Product"
    x: product
    y: revenue
  data_table:
    query: _doc_examples.yaml#sales
    type: table
    title: "Sales Data"

grid:
  columns: 24
  items:
    - item: kpi1
      width: 8
    - item: kpi2
      width: 8
    - item: kpi3
      width: 8
    - item: main_chart
      width: 24
    - item: data_table
      width: 24
Grid Dashboard 850k Total Revenue 5.8k Units Sold 3.0 Categories Gadget XGadget YTool ZWidget AWidget BProduct$0$5,000$10,000$15,000$20,000$25,000$30,000$35,000$40,000$45,000$50,000$55,000$60,000$65,000$70,000$75,000$80,000$85,000RevenueRevenue by Product Sales DataDateRegionProductCategoryRevenueUnits Sold2024-01-01NorthWidget AElectronics1,500502024-01-01SouthWidget BElectronics2,200802024-01-01EastGadget XAccessories850252024-01-01WestWidget AElectronics1,800602024-01-02NorthGadget YAccessories1,200402024-01-02SouthWidget BElectronics2,400902024-01-02EastTool ZTools950302024-01-02WestWidget AElectronics1,600552024-01-03NorthGadget XAccessories1,100352024-01-03SouthWidget BElectronics2,100752024-01-03EastTool ZTools1,300452024-01-03WestWidget AElectronics1,900652024-01-04NorthGadget YAccessories1,40050 Page 1 of 12 2026-05-12 12:34

Grid Features

  • Flow: Items without x,y fill the next available space
  • Pinning: Items with x,y are fixed to that position
  • Smart Sizing: Charts use natural default sizes based on type
  • Overlapping: Multiple items can occupy the same cells
  • Gap: The gap property controls structural spacing

Note: Sizing properties (width, height, x, y) are defined on the layout item, not the chart itself.


Tab Layout

Organize items into tabs. Each item in the items list is a nested board that defines the content for that tab.

title: "Multi-Tab Dashboard"

charts:
  summary:
    query: _doc_examples.yaml#sales_by_category
    type: bar
    title: "Summary Chart"
    x: category
    y: revenue
  revenue_trend:
    query: _doc_examples.yaml#sales_by_date
    type: line
    title: "Revenue Trend"
    x: date
    y: revenue
  orders_trend:
    query: _doc_examples.yaml#sales_by_date
    type: line
    title: "Orders Trend"
    x: date
    y: units_sold
  details:
    query: _doc_examples.yaml#sales
    type: table
    title: "Detailed Table"

tabs:
  items:
    - title: "Overview"
      rows:
        - summary

    - title: "Trends"
      cols:
        - revenue_trend
        - orders_trend

    - title: "Details"
      rows:
        - details
Multi-Tab Dashboard Overview Trends Details Overview AccessoriesElectronicsToolsCategory$0$10,000$20,000$30,000$40,000$50,000$60,000$70,000$80,000$90,000$100,000$110,000$120,000$130,000$140,000$150,000RevenueSummary Chart 2026-05-12 12:34

Use tabs when: - Managing dashboard density - Organizing related views - Hiding content until needed


Details (Collapsible Sections)

Any nested board item can be made collapsible by adding details. This renders a clickable summary bar that expands/collapses the content — no JavaScript needed.

title: "Dashboard with Details"

charts:
  summary:
    query: _doc_examples.yaml#sales_by_category
    type: bar
    title: "Revenue Summary"
    x: category
    y: revenue
  breakdown:
    query: _doc_examples.yaml#sales
    type: table
    title: "Full Data"

rows:
  - summary

  - details: "Show Raw Data"
    expanded_title: "Hide Raw Data"
    rows:
      - breakdown
Dashboard with Details AccessoriesElectronicsToolsCategory$0$10,000$20,000$30,000$40,000$50,000$60,000$70,000$80,000$90,000$100,000$110,000$120,000$130,000$140,000$150,000RevenueRevenue SummaryShow Raw Data 2026-05-12 12:34

Use details when: - Hiding secondary content behind a toggle - Reducing dashboard clutter - Progressive disclosure of complex data


Choosing a Layout

Layout Best For
Rows Simple vertical flow, mobile, scrolling
Cols Comparing metrics, sidebars
Grid Precise control, dense dashboards
Tabs Multiple views, reducing clutter
Details Collapsible sections, progressive disclosure