Skip to content

Implement Cross-Filtering for Interactive Dashboard Exploration #270

Description

@cliftonc

Summary

When a user clicks on a data point in one chart, other charts on the dashboard should automatically filter to show related data. This creates an interactive exploration experience similar to Tableau and Power BI.

Current State

Portlets operate independently. Dashboard filters apply universally but manual interaction doesn't propagate between charts.

Proposed Features

Core Functionality

  • Click-to-Filter: Click on bar/pie/scatter point filters other portlets by that dimension value
  • Visual Indicators: Show which cross-filter is currently active
  • Clear Filter: Button to reset cross-filter state
  • Multi-select Mode: Hold Ctrl/Cmd to filter by multiple values

Configuration Options

  • Filter Targets: Configure which portlets respond to which sources
  • Filter Groups: Group portlets that share cross-filter behavior
  • Bidirectional Filtering: Enable two-way cross-filtering between charts

Example Usage

<AnalyticsDashboard
  config={dashboardConfig}
  crossFilterGroups={[
    { id: 'sales-group', portlets: ['chart-1', 'chart-2', 'chart-3'] }
  ]}
/>

Competitor Reference

  • Embeddable: Architecture enables "two-way interaction" with "variables/events" for custom behaviors
  • Tableau: Cross-filtering is a core dashboard feature
  • Power BI: "Cross-filter" and "cross-highlight" between visuals

Technical Approach

  1. Create CrossFilterContext provider at dashboard level
  2. Emit filter events from chart click handlers with dimension/value payload
  3. Subscribe portlets to filter context changes
  4. Merge cross-filters with dashboard filters in query execution
  5. Add visual indicator components for active filters

Labels

enhancement feature-request dashboard client

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestp3-lowPriority 3 - LowstaleNo recent activity

    Projects

    Status
    Idea

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions