feat: Brushing/selections with range variables
Problem
Dataface charts are currently non-interactive — users can view data but cannot click, drag, or brush to select a subset that filters other charts on the same dashboard. This makes exploratory analysis cumbersome because any filtering must be done through explicit variable controls (dropdowns, text inputs) rather than direct manipulation of the visualization. Supporting brushing and range-variable selections would allow a user to drag-select a date range on a time series, for example, and have that selection propagate as a variable to re-query and update related charts, enabling the cross-filtered dashboard experience analysts expect from modern BI tools.
Context
- Charts are currently view-only, which limits exploratory workflows that depend on selecting a range and using that interaction to filter related views.
- Brushing needs to fit the existing variable model and dashboard semantics rather than living as one chart-specific special case.
- The first version should stay tightly scoped to a useful range-selection workflow instead of trying to solve every interaction pattern at once.
Possible Solutions
- A - Keep charts non-interactive and rely on authored variables only: simplest, but less powerful for exploration.
- B - Recommended: add brushing selections that write into range variables: let charts drive a bounded interactive filter path that fits existing variable semantics.
- C - Build a broad general-purpose interaction language first: more flexible, but too much scope for this feature step.
Plan
- [ ] Define selection/range variable schema and default interaction behavior.
- [ ] Implement chart runtime wiring for emit/consume selection events.
- [ ] Handle edge cases (empty selection, reset, incompatible scales).
- [ ] Add integration tests for linked charts and state persistence.
- [ ] Publish example dashboards illustrating recommended interaction design.
Implementation Progress
- GitHub issue: https://github.com/fivetran/dataface/issues/138
Review Feedback
- [ ] Review cleared