Commit Graph

17696 Commits

Author SHA1 Message Date
rusackas
8e936e00e7 fix(drilldetail): sanitize explore URL before navigation
CodeQL flagged a DOM-XSS taint path (js/xss-through-dom) from
DashboardPageIdContext into window.location.href via generateExploreUrl.
Wrap the generated URL in sanitizeUrl(), matching the existing convention
used elsewhere for window.location.href assignments (e.g. ResultSet,
SaveDatasetModal, navigationUtils).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-28 04:51:27 -07:00
rusackas
55cbc1be19 fix(datasource): correct relative import path for ChartSelect
DatasourceEditor.jsx imported ChartSelect from '../Select/ChartSelect',
which resolves to a nonexistent Datasource/components/Select directory.
ChartSelect actually lives at src/components/Select/ChartSelect, so this
broke module resolution. Flagged in review.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 04:03:05 -07:00
rusackas
e82e7ff1dc fix(ChartSelect): prevent multi prop from overriding single-select mode
The multi={false} prop was set before the {...rest} spread, so a
caller passing multi through rest props could silently switch
ChartSelect into multi-select mode even though its value/onChange
contract is single-select only. Omit multi from the forwarded prop
type and apply it after the spread so it can't be overridden.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-28 02:23:02 -07:00
rusackas
53386d5a1b fix(dashboard): treat chart ID 0 as valid in useDashboardFormData
The early-return null check used `!chartId`, which incorrectly
short-circuits for a falsy but valid chart ID of 0. Use an explicit
null/undefined check instead.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-27 07:20:13 -07:00
rusackas
1a815d842c fix(datasource): use nullish coalescing for drill_through_chart_id
|| null coerces a falsy chart id (0) to null, silently dropping a
valid drill-through chart selection when saving dataset properties.
Flagged in review.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 03:19:37 -07:00
rusackas
5685a88be0 fix(drilldetail): wire closeModal into ModalFooter so Close button works
ModalFooter destructures a closeModal prop and wires it to the footer's
Close button onClick, but DrillDetailModal never passed it when
rendering <ModalFooter />, leaving the Close button a no-op.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 17:35:51 -07:00
rusackas
bb9333a327 fix(datasets): include drill_through_chart_id in drill info select columns
DatasetDrillInfoSchema serializes drill_through_chart_id, but the
drill_info_select_columns list used to load the dataset for
get_drill_info left it out, so the field wasn't fetched on that
query path.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-26 12:27:27 -07:00
rusackas
39018c56ac fix(explore): url-encode dashboardPageId in generateExploreUrl
Addresses a GHAS DOM-text-as-HTML finding on DrillDetailModal.tsx
(window.location.href = url) and a related CWE-20 flag: the dashboard
page id was concatenated into the explore URL unencoded.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-26 09:04:08 -07:00
rusackas
f092bc509b fix(datasets): remove duplicate drill_through_chart_id from show_columns
drill_through_chart_id was already included via show_select_columns,
which is spread into show_columns, so re-listing it there created a
duplicate entry as flagged in review.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 06:46:12 -07:00
rusackas
a0de10f262 fix: revert unintended package-lock.json noise
The lockfile picked up a spurious callsites dedup/nesting diff unrelated
to this PR's dependencies (package.json is unchanged). Confirmed with
mistercrunch in review that this wasn't intentional.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-25 19:43:43 -07:00
Maxime Beauchemin
d2d2cee1a7 refactor a dup logic 2025-09-17 21:24:42 -07:00
Maxime Beauchemin
02790b750f refactor a dup logic 2025-09-17 21:24:42 -07:00
Maxime Beauchemin
dd3b89620e fix last test 2025-09-17 21:24:42 -07:00
Maxime Beauchemin
d4d02c5104 refactor: Add generateExploreUrl utility to centralize URL generation
Simplifies repeated postFormData + mountExploreUrl + dashboard_page_id pattern
used across 6+ files by providing a clean, type-safe async utility.

Benefits:
- DrillDetailModal: 15 lines → 5 lines (67% reduction)
- Centralized URL generation logic for better maintainability
- Type-safe options parameter for chartId, tabId, dashboardPageId
- Comprehensive test coverage with 4 test scenarios
- Better error handling and promise chain management

Files refactored:
- DrillDetailModal: Simplified async URL generation
- DrillByModal: Clean promise chain with proper error handling
- SqlLab ResultSet: Modern async/await pattern
- Added comprehensive utility tests

All component tests passing 

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:42 -07:00
Maxime Beauchemin
41e7f51f4b fix: Drill-to-detail context menu filters now display as dashboard-inherited filters
- Mark drill-to-detail filters with `isExtra: true` in `getFormDataWithDashboardContext`
- Ensures context menu filters (e.g., "drill to details by -> Canada") appear as
  dashboard-inherited filters rather than chart-native filters in explore page
- Maintains consistency with filter bar filters which already display correctly
- Updated `getFormDataWithDashboardContext` to accept optional `drillToDetailFilters` parameter

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:42 -07:00
Maxime Beauchemin
843b81c34d feat: improve drill-through modal functionality and navigation
- Make Explore button visible only when drill-through chart is configured
- Change button text from "Edit chart" to "Explore" for clarity
- Fix Explore button to navigate to correct drill-through chart instead of dashboard
- Add proper dashboard context resolution using useDashboardFormData hook
- Use getFormDataWithDashboardContext for proper filter and context mixing
- Simplify StatefulChart rendering with proper formDataOverrides
- Generate explore URLs using getExploreUrl with GET method for reliability
- Add error handling for URL generation with user-friendly toast messages
- Remove duplicate filter conversion logic and use established patterns

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:42 -07:00
Maxime Beauchemin
cf4fd3e389 feat: enhance drill-through modal Edit chart button visibility and navigation
- Only show Edit chart button when drill-through chart is configured
- Fix navigation to properly route to explore page instead of dashboard
- Use Button href for same-tab navigation (no target="_blank")
- Add Dataset.id type definition for URL generation
- Update tests to verify link behavior and required dataset properties

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:42 -07:00
Maxime Beauchemin
abb6069d22 fix two tests 2025-09-17 21:24:41 -07:00
Maxime Beauchemin
e05061bdb2 refactor: Simplify SelectAsyncControl by leveraging SupersetClient searchParams
Replace manual URL construction with SupersetClient's built-in searchParams support.
Rename queryParams prop to searchParams for API alignment and eliminate 12 lines
of URL building logic.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:41 -07:00
Maxime Beauchemin
d8ee744365 refactor: Improve ChartSelect type safety and URL building utilities
- Replace manual URL construction in DrillDetailModal with getExploreUrl utility
- Refactor ChartSelect to derive props from SelectAsyncControl using ComponentProps
- Add comprehensive test coverage for ChartSelect and useDashboardFormData components
- Update DatasourceEditor to use allowClear instead of deprecated clearable prop
- Use rest pattern for better prop forwarding and type safety

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:41 -07:00
Maxime Beauchemin
06e64115aa refactor: Add dashboard filter context to drill-through StatefulChart
- Create DashboardContextFormData type for explicit dashboard context contract
- Add useDashboardFormData hook to encapsulate complex dashboard filter logic
- Simplify DrillDetailPane from 40+ lines to 4 lines using new hook
- Fix Edit Chart link to open drill-through chart instead of original chart
- Ensure StatefulChart inherits dashboard native filters, colors, and context

This ensures drill-through charts get the same dashboard context as regular
dashboard charts, providing consistent filter inheritance and user experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:41 -07:00
Maxime Beauchemin
56152c2366 fix: Ensure drill-through chart field works consistently across CRUD and Explore paths
Fixes two issues with the drill-through chart configuration:

1. **SelectAsyncControl crash on clear**: Fixed isLabeledValue function to handle null values properly when clearing selections
2. **Missing field in Explore path**: Added drill_through_chart_id to both dataset API response and SqlaTable.data property serialization

This ensures the drill-through chart field loads and saves correctly whether accessed from:
- Datasets CRUD interface
- Explore → Edit Dataset flow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 21:24:41 -07:00
Maxime Beauchemin
a891ccdb10 fix package-lock 2025-09-17 21:24:40 -07:00
lc-4918
fd6da21ce0 chore(i18n): update French translations (#35070)
Co-authored-by: l.clement <l.clement@altereo.fr>
2025-09-17 21:05:15 -07:00
marun
1bf112a57a fix(CrudThemeProvider): Optimized theme loading logic (#35155) 2025-09-17 20:49:26 -07:00
marun
1f530d45cb fix(embedded): resolve theme context error in Loading component (#35168)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-17 20:44:04 -07:00
Joe Li
1187902e68 feat(playwright): Add Playwright CI Integration for Cypress Migration (SIP-178) (#35110)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-17 17:13:47 -07:00
Maxime Beauchemin
ad3eff9e90 feat(matrixify): replace single toggle with separate horizontal/vertical layout controls (#35067)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
2025-09-17 22:57:06 +03:00
SBIN2010
3e554674ff feat(waterfall): add changes label series and grouping customize settings (#34847) 2025-09-17 08:24:45 -03:00
Amin Ghadersohi
dced2f8564 feat: Add BaseDAO improvements and test reorganization (#35018)
Co-authored-by: bito-code-review[bot] <188872107+bito-code-review[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-16 18:15:16 -07:00
Maxime Beauchemin
05c6a1bf20 fix(viz): resolve dark mode compatibility issues in BigNumber and Heatmap (#35151)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-16 10:21:47 -07:00
SBIN2010
c193d6d6a1 fix: import bug template params (#35144) 2025-09-16 10:21:29 -07:00
Joe Li
fb840b8e71 fix(deck.gl): restore legend display for Polygon charts with linear palette and fixed color schemes (#35142)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-16 20:20:42 +03:00
Maxime Beauchemin
d0cc6f115b feat: add optional garbage collection after requests (#35061)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-16 09:23:39 -07:00
Hugh A. Miles II
966e231f94 feat: Add Dashboard Filter Support for Alert Reports (#32196)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Hugh A Miles II <hugh@Mac.home>
2025-09-16 10:52:28 -04:00
Richard Fogaca Nienkotter
a66737cb05 feat(custom-tooltip): custom tooltip on deck.gl charts (#34276) 2025-09-16 17:11:19 +03:00
Michael S. Molina
bc6859a99d refactor: Organizes the src/core folder (#35119) 2025-09-16 08:21:16 -03:00
Elizabeth Thompson
133e686224 docs(llms): add PR template guidelines to LLMS.md (#35148)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 15:57:16 -07:00
Elizabeth Thompson
7d0a472d1e feat: Add comprehensive dark mode support for chart thumbnails and examples (#35111)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 13:53:44 -07:00
Maxime Beauchemin
c2534f9155 feat: Add ECharts options overrides to theme system (#34876)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 13:52:38 -07:00
Maxime Beauchemin
088ecdd0bf refactor: Enable G logging rules and comprehensive ruff improvements (#35081)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 12:42:49 -07:00
Maxime Beauchemin
e1a2e4843a chore: standardize webpack dev server host configuration and enable LAN access (#35066)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 10:10:05 -07:00
dependabot[bot]
15e8ffee1e chore(deps): bump axios from 1.11.0 to 1.12.0 in /docs (#35109) 2025-09-14 07:50:16 +07:00
Elizabeth Thompson
19ddcb7e5c fix: Remove emotion-rgba from dependencies and codebase (#35124) 2025-09-13 13:33:20 +03:00
Gabriel Torres Ruiz
36daa2dc3f fix(ListView): implement AntD pagination for ListView component (#35057) 2025-09-12 14:15:05 -07:00
Gabriel Torres Ruiz
7fd5a7668b fix(charts): fix legend theming and hollow symbols in dark mode (#35123) 2025-09-12 23:33:29 +03:00
Mehmet Salih Yavuz
95333e34b1 fix(theming): Lighter text colors on dark mode (#35114) 2025-09-12 15:52:54 +03:00
Daniel Vaz Gaspar
a9fb853e3e fix: Bump FAB to 5.X (#33055)
Co-authored-by: Joe Li <joe@preset.io>
2025-09-12 09:21:37 +01:00
Rafael Benitez
dea9068647 fix(DashboardEditor): CSS template selector UI in dashboard properties modal restored (#35106) 2025-09-11 15:34:16 -07:00
Elizabeth Thompson
3416bd1479 chore: add codeowners (#35107) 2025-09-11 14:07:21 -07:00