[SS] Add Dashboard cross-filtering from chart and table selections
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 28/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- typescript
- Lĩnh vực
- data-visualization, frontend, testing-qa
Hướng nghiên cứu
Bắt đầu bằng cách lần theo kiến trúc lọc/thực thi có kiểu hiện có của Dashboard, các bộ lọc thủ công, thao tác brushing phạm vi thời gian được đồng bộ hóa, thanh bộ lọc và các bề mặt hiển thị biểu đồ/bảng được hỗ trợ. Xác định tiêu chí hoàn thành dựa trên các yêu cầu đã nêu về authoring, xác thực, thực thi, tương tác, dọn dẹp và kiểm thử trên trình duyệt thực, bao gồm một wave thực thi bị ảnh hưởng và cơ chế bảo vệ khỏi các kết quả cũ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Add Superset-style cross-filtering so an analyst can click a chart mark or table value and use that exact underlying value as a Dashboard filter for other tiles.
This should extend the typed Dashboard filter/execution architecture already used by manual filters and synchronized time-range brushing. It must not introduce a second ad hoc filtering path or interpolate values into SQL.
User value
Analysts should be able to move from viewing a dashboard to asking a follow-up question without leaving the page:
- Click a bar, point, slice, legend value, or eligible table cell.
- See the corresponding Dashboard filter update immediately.
- Rerun only the affected tiles once.
- Click again, use the filter bar, or use an accessible action to change/clear the selection.
Authoring contract
Cross-filter behavior must be explicitly authored and portable. Do not infer targets from display labels.
Use saved-query/panel metadata that maps:
- an exact raw result-column name;
- to a query parameter name;
- with optional interaction behavior such as replace versus toggle.
The Dashboard resolves the parameter to exactly one compatible filter definition. Ambiguous, missing, or type-incompatible mappings must fail closed with a visible diagnostic and leave the visualization non-interactive.
The contract should remain portable between Dashboards; avoid persisting a Dashboard-specific filter id in the saved query unless a tile-local override is used.
Interaction semantics
- Use the raw result value, never the formatted label.
- Plain click applies/replaces a scalar selection.
- Array-compatible filters may support additive/toggle selection through an explicit modifier or authored mode.
- A click on empty plot/background does nothing.
- A sub-threshold click must not conflict with chart brushing.
- Command/Ctrl-drag remains tile movement and must not trigger cross-filtering.
- Cross-filter state is visible and editable in the existing filter bar.
- Provide a keyboard-accessible equivalent action for focused marks/rows where the rendering surface supports it.
- Announce successful application or validation failure through the existing live region.
Execution semantics
- Resolve and validate the proposed value through the existing typed parameter pipeline.
- Commit filter state only after validation succeeds.
- Reserve affected tile generations synchronously before asynchronous preflight/source work.
- Cancel/supersede the previous affected wave once.
- Rerun each dependent tile once, including non-chart executable panels.
- Prevent stale results from the previous selection replacing newer results.
- Do not mutate saved queries, Dashboard documents, layout, workspace revision, or exported presentation data.
Supported surfaces for v1
- vertical and horizontal bars;
- line/area points where a discrete raw dimension value is available;
- pie slices;
- table cells;
- legend values when they correspond to an authored raw field.
Unsupported shapes must remain ordinary visualizations rather than guessing.
Visual state
- Show the active selected mark/value without replacing normal hover/tooltip behavior.
- Keep selections synchronized with external changes from the filter bar.
- Clear stale selected styling when a chart rerenders, a tile changes query/config, or the Dashboard route is destroyed.
- Multiple independent filters and interaction groups may coexist.
Tests
Cover:
- raw value versus formatted label;
- scalar replacement and array toggle behavior;
- unresolved/ambiguous/incompatible mappings;
- chart, pie, table, and legend sources;
- cross-filter plus existing manual filters;
- no conflict with time-range brushing or Command/Ctrl tile movement;
- one affected execution wave and one execution per dependent tile;
- stale-wave protection during rapid consecutive clicks;
- validation failure performs no partial mutation;
- external filter-bar changes update selected styling;
- route/rerender/destruction cleanup;
- light/dark themes and Chromium/Firefox/WebKit.
Acceptance criteria
- Authors can explicitly map a raw visualization field to a Dashboard filter parameter.
- Clicking an eligible mark/value applies the typed filter without SQL interpolation.
- The existing filter bar reflects and can edit/clear the selection.
- Only affected tiles rerun, exactly once per committed selection.
- Rapid selections cannot publish stale results.
- Ambiguous or invalid mappings fail closed with diagnostics.
- Time-range brushing, tooltips, and tile movement retain their current behavior.
- Unit and real-browser tests pass.
Non-goals
- automatic semantic joins between unrelated queries;
- guessing filter mappings from labels;
- arbitrary SQL rewriting;
- lasso/multi-mark selection;
- persistent bookmark state beyond the existing Dashboard filter-state mechanism;
- a full semantic dataset layer.
- Ngôn ngữ chính
- TypeScript
- Star
- 8
- Fork
- 2
- Merge trung bình
- 1 giờ 17 phút
- Pull request đã merge (30 ngày)
- 3
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Altinity/altinity-sql-browser
-
inbox
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Altinity/altinity-sql-browser#605 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
inbox
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Altinity/altinity-sql-browser#509 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
inbox
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Altinity/altinity-sql-browser#489 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
flamegraphĐang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Altinity/altinity-sql-browser#684 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 68/100
Altinity/altinity-sql-browser#680 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Altinity/altinity-sql-browser
Issue tương tự
-
type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
lingdojo/kana-dojo#31593 · 1 bình luận · 5 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 90/100
apache/fineract-backoffice-ui#697 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue hacktoberfest help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
libredb/libredb-studio#1291 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug P1
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Yeachan-Heo/gajae-code#6295 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày