Skip to content

Canvas (drag + resize)

Canvas

The dashboard view at /bi/{dashboard_id}. Built on react-grid-layout — 12 columns, responsive width.

Drag

Click and hold the widget header bar (the row with the title) to drag. Other widgets reflow to make room. Drop to commit.

The drag handle is the header only — clicking inside a chart or table doesn’t initiate a drag, so interactive chart elements (tooltip hover, series highlight) keep working.

Resize

Drag the bottom-right corner to resize. The widget grows or shrinks in 12-col grid units; charts re-render to the new dimensions (ChartView height="100%" so Recharts ResponsiveContainer fills the cell).

Auto-reflow

Widgets reflow up + left into empty space. To preserve a deliberate gap (e.g., a wide markdown header above two narrow KPIs), put a markdown widget there.

Per-breakpoint layouts

react-grid-layout supports per-breakpoint layouts (lg / md / sm / xs / xxs). In v0.3 we save a single layout; the grid auto-collapses on narrower screens but you can’t yet author breakpoint-specific positions.

Chart resize bug fix (commit c33bcec)

Worth noting: Recharts’ ResponsiveContainer doesn’t observe its parent’s resize. We fire a synthetic window.resize event on every RGL drag / resize end so charts re-measure. If a chart looks wrong- sized after a layout change, refresh the page.

Keyboard

ShortcutAction
R (focused widget)Refresh widget
D (focused widget)Duplicate widget
Del (focused widget)Delete widget (with confirm)
Ctrl+S / ⌘SSave layout (auto-saved anyway, but explicit)

Performance

Up to ~20 widgets per dashboard is comfortable. Beyond that, consider splitting into multiple dashboards by topic — the per-widget refresh in parallel hits warehouse rate limits at scale.