This is an automated email from the ASF dual-hosted git repository.
enzomartellucci pushed a change to branch
enxdev/feat/enhance-database-modal-validation
in repository https://gitbox.apache.org/repos/asf/superset.git
from 2df224370e Merge branch 'master' into
enxdev/feat/enhance-database-modal-validation
add 23a47e2f5a chore(deps-dev): bump webpack-dev-server from 5.2.2 to
5.2.3 in /superset-frontend (#37088)
add 3a3cbc2900 chore(deps-dev): bump @types/node from 25.0.3 to 25.0.7 in
/superset-websocket (#37081)
add 6c75365427 chore(deps-dev): bump typescript-eslint from 8.52.0 to
8.53.0 in /docs (#37076)
add 5d5012aa9f chore(deps-dev): bump @types/lodash from 4.17.21 to 4.17.23
in /superset-frontend (#37077)
add 560da50df8 chore(deps): bump @babel/runtime from 7.28.4 to 7.28.6 in
/superset-frontend (#37080)
add 393259bb9e chore(deps-dev): bump typescript-eslint from 8.52.0 to
8.53.0 in /superset-websocket (#37082)
add 0b4fcce03b chore(deps-dev): bump cross-env from 10.0.0 to 10.1.0 in
/superset-frontend (#36657)
add 1166df3579 docs(inthewild): Dark mode issues on InTheWild page (#37034)
add 0c490dc1ab docs(exploring-data): add overview to tutorial (#37028)
add fd3eea0557 chore(deps): bump lodash-es from 4.17.21 to 4.17.22 in
/superset-frontend (#37048)
add 0404c99e39 fix(dashboard): revert cell hover and active colors to
grayscale (#36991)
add e053418c97 fix(Matrixify): Do not clear values when saving (#37090)
add bdcc98743d chore(deps-dev): bump cheerio from 1.1.0 to 1.1.2 in
/superset-frontend (#37002)
add 91dba9dcbf chore(deps-dev): bump @babel/types from 7.28.4 to 7.28.5 in
/superset-frontend (#36652)
add 86bc493423 chore(deps-dev): bump @babel/types from 7.28.4 to 7.28.6 in
/superset-frontend (#37087)
add 4f3403b134 chore(deps): bump antd from 6.1.2 to 6.2.0 in /docs (#37079)
add 35ac4c74fd feat(dashboard): chart customizations modal and plugins
(#36062)
add a272253243 fix(table chart): time comparison totals returning null
(#37111)
add 137ebdee39 fix(prune_logs): improve performance by using id column
only for ordering log records when max_rows_per_run is provided (#37138)
add 4c01b5c324 docs: Add UserGuiding INTHEWILD.yaml (#37030)
add debdfbc835 chore(deps-dev): bump
@babel/plugin-transform-modules-commonjs from 7.27.1 to 7.28.6 in
/superset-frontend (#37117)
add 64424f1625 chore(deps-dev): bump @types/node from 25.0.7 to 25.0.8 in
/superset-websocket (#37116)
add 6ca0f7a925 chore(deps-dev): bump @babel/cli from 7.28.3 to 7.28.6 in
/superset-frontend (#37124)
add 2324b4c9e5 chore(deps-dev): bump @babel/preset-typescript from 7.26.0
to 7.28.5 in /superset-frontend (#36661)
add 6eb4db6930 fix(controls): Only initialize categorical control on
numeric x axis (#37115)
add 23b91d22ef fix(charts): properly parse error responses in
StatefulChart (#37130)
add 81fdc2bd0e feat(dates): adding handling for first of (#37098)
add c867d9379f chore(deps-dev): bump ts-loader from 9.5.2 to 9.5.4 in
/superset-frontend (#36999)
add 96a3f2a187 chore(deps-dev): bump @babel/preset-react from 7.27.1 to
7.28.5 in /superset-frontend (#37047)
add 68e917c3f6 chore(deps-dev): bump eslint-plugin-testing-library from
7.14.0 to 7.15.4 in /superset-frontend (#37052)
add db61e4f62a chore(deps-dev): bump
eslint-plugin-react-you-might-not-need-an-effect from 0.8.3 to 0.8.5 in
/superset-frontend (#37054)
add 7f6cdc5616 chore(deps-dev): bump prettier from 3.7.4 to 3.8.0 in
/superset-websocket (#37149)
add 4c267b7ee2 chore(deps-dev): bump prettier from 3.7.4 to 3.8.0 in /docs
(#37152)
add f69cd43bd0 chore(deps-dev): bump eslint-plugin-prettier from 5.5.4 to
5.5.5 in /docs (#37153)
add c6ad0dbd3a chore(deps-dev): bump prettier from 3.7.4 to 3.8.0 in
/superset-frontend (#37156)
add 89380638b0 chore(deps): bump immer from 11.0.1 to 11.1.3 in
/superset-frontend (#37159)
add 82d74d15ec chore(deps): bump react-intersection-observer from 9.16.0
to 10.0.0 in /superset-frontend (#37162)
add 129b8e10a2 chore(deps-dev): bump @babel/core from 7.28.3 to 7.28.6 in
/superset-frontend (#37154)
add e071e0c5a4 chore(deps-dev): bump eslint-plugin-prettier from 5.5.4 to
5.5.5 in /superset-frontend (#37160)
add b142f1956f chore(deps): bump chrono-node from 2.7.8 to 2.9.0 in
/superset-frontend (#36632)
add 95c14b1fc1 chore(Matrixify): disable matrixify for incompatible viz
types (#37163)
add 9555798d37 fix(data-zoom): Data-zoom not rendered properly in
Matrixify (#37134)
add ab8df1ab34 fix: Move head_custom_extra above csrf token input (#37173)
add 54f19856de fix: HTML detection in tables (#37171)
add c30edaf075 feat: add tab select with save chart to dashboard (#36332)
add 4532ccf638 fix(mcp): push Flask app context in mcp_auth_hook for tool
execution (#37190)
add d0783da3e5 fix(mcp): Handle big_number charts and make semantic
warnings non-blocking (#37142)
add 2bcb66c2fc refactor(mcp): simplify single metric chart type check
(#37215)
add 4b1d92e575 feat: add droppable area to tab empty state (#37210)
add 896947c787 fix(mcp): restore select_columns filtering in list tools
(#37213)
add f4474b2e3e feat: Dynamic currency (#36416)
add b941be01cf chore(deps-dev): bump @types/node from 25.0.8 to 25.0.9 in
/superset-websocket (#37193)
add 33ff127370 chore(deps-dev): bump baseline-browser-mapping from 2.9.9
to 2.9.14 in /superset-frontend (#37198)
add f00f7d1c18 chore(deps): bump ioredis from 5.9.0 to 5.9.2 in
/superset-websocket (#37194)
add a77c2d550c fix(mixed-timeseries): prevent duplicate legend entries
(#37217)
add f984dca5cc fix(sunburst): make Show Total text theme-aware (#37177)
add 6453980d8d chore(deps): bump react-error-boundary from 6.0.0 to 6.1.0
in /superset-frontend (#37206)
add cee5ce13e0 chore(deps-dev): bump @types/node from 25.0.3 to 25.0.9 in
/superset-frontend (#37196)
add a06e6eb680 chore(deps): bump googleapis from 169.0.0 to 170.1.0 in
/superset-frontend (#37195)
add 4d462c76bd chore(deps-dev): bump @types/urijs from 1.19.25 to 1.19.26
in /superset-frontend (#36636)
add 476e454384 chore(deps): update @deck.gl/extensions requirement from
~9.2.2 to ~9.2.5 in /superset-frontend/plugins/legacy-preset-chart-deckgl
(#36618)
add 39238ef8a9 feat(ag-grid-table): Enable Time Shift feature for AG Grid
Table (#37072)
add 2e29e33dd8 fix(calendar-heatmap): correct month display across
timezones (#37064)
add 2900258e05 fix(Dashboard): Auto-apply filters with default values when
extraForm… (#36927)
add c0cbbe393a feat(Matrixify): add matrixify tag to list view and explore
(#37247)
add 409cdad264 fix(mcp): prevent MCP service from corrupting shared
appbuilder singleton (#37252)
add 4393db57d9 fix(native-filters): enable Apply button when selecting
Boolean FALSE value (#37017)
add f4597be341 fix(timeseries): x-axis last month was hidden (#37181)
add 1f19ef92cb refactor(TimezoneSelector): Enhance timezone selection
logic and improve performance (#36486)
add 4e156dc41e Merge branch 'master' into
enxdev/feat/enhance-database-modal-validation
No new revisions were added by this update.
Summary of changes:
RESOURCES/INTHEWILD.yaml | 5 +
docs/docs/using-superset/exploring-data.mdx | 8 +-
docs/package.json | 8 +-
docs/src/pages/inTheWild.tsx | 2 +-
docs/src/styles/custom.css | 9 +
docs/static/img/logos/userguiding.svg | Bin 0 -> 5610 bytes
docs/yarn.lock | 354 ++---
.../e2e/dashboard/horizontalFilterBar.test.ts | 1 +
.../cypress/e2e/dashboard/nativeFilters.test.ts | 3 +
.../cypress-base/cypress/e2e/dashboard/utils.ts | 10 +-
superset-frontend/package-lock.json | 1002 +++++++++-----
superset-frontend/package.json | 42 +-
.../packages/generator-superset/package.json | 2 +-
.../packages/superset-core/package.json | 10 +-
.../src/shared-controls/customControls.tsx | 21 +-
.../src/shared-controls/sharedControls.tsx | 3 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../test/shared-controls/customControls.test.tsx | 57 +
.../packages/superset-ui-core/package.json | 8 +-
.../src/chart/components/FallbackComponent.tsx | 5 +-
.../src/chart/components/StatefulChart.test.tsx | 340 +++++
.../src/chart/components/StatefulChart.tsx | 37 +-
.../superset-ui-core/src/chart/types/Base.ts | 1 +
.../TimezoneSelector/TimezoneOptionsCache.test.tsx | 256 ++++
.../TimezoneSelector/TimezoneOptionsCache.ts | 159 +++
.../TimezoneSelector.DaylightSavingTime.test.tsx | 12 +-
.../TimezoneSelector/TimezoneSelector.test.tsx | 36 +-
.../src/components/TimezoneSelector/index.tsx | 237 ++--
.../src/components/TimezoneSelector/types.ts} | 14 +-
.../CurrencyFormats.ts} | 4 +-
.../src/currency-format/CurrencyFormatter.ts | 88 +-
.../superset-ui-core/src/currency-format/index.ts | 10 +-
.../Drawer => currency-format}/types.ts | 11 +-
.../superset-ui-core/src/currency-format/utils.ts | 129 +-
.../superset-ui-core/src/query/constants.ts | 1 +
.../packages/superset-ui-core/src/query/index.ts | 1 +
.../superset-ui-core/src/query/types/Dashboard.ts | 81 +-
.../superset-ui-core/src/query/types/Datasource.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 2 +
.../src/query/types/QueryFormData.ts | 5 +-
.../src/query/types/QueryResponse.ts | 6 +
.../superset-ui-core/src/utils/html.test.tsx | 18 +
.../packages/superset-ui-core/src/utils/html.tsx | 129 +-
.../chart/components/FallbackComponent.test.tsx | 9 +-
.../test/currency-format/CurrencyFormatter.test.ts | 31 +
.../currency-format/analyzeCurrencyInData.test.ts} | 23 +-
.../currency-format/hasMixedCurrencies.test.ts} | 18 +-
.../currency-format/normalizeCurrency.test.ts} | 23 +-
.../packages/superset-ui-demo/package.json | 8 +-
.../legacy-plugin-chart-calendar/src/Calendar.js | 3 +-
.../legacy-plugin-chart-calendar/src/utils.ts | 10 +-
.../test/getFormattedUTCTime.ts | 28 -
.../test/utils.test.ts | 96 ++
.../src/transformProps.js | 13 +-
.../legacy-preset-chart-deckgl/package.json | 4 +-
.../src/DeckGLContainer.tsx | 6 +-
.../legacy-preset-chart-deckgl/src/Multi/Multi.tsx | 127 +-
.../src/Multi/controlPanel.ts | 29 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 6 +
.../src/controlPanel.tsx | 6 +-
.../src/styles/index.tsx | 4 +-
.../src/transformProps.ts | 18 +-
.../BigNumberPeriodOverPeriod/transformProps.ts | 13 +-
.../src/BigNumber/BigNumberTotal/transformProps.ts | 16 +-
.../BigNumberWithTrendline/transformProps.ts | 11 +-
.../plugin-chart-echarts/src/BigNumber/types.ts | 2 +-
.../src/Funnel/transformProps.ts | 11 +-
.../src/Gauge/transformProps.ts | 6 +
.../src/Heatmap/transformProps.ts | 17 +-
.../src/MixedTimeseries/transformProps.ts | 54 +-
.../plugin-chart-echarts/src/Pie/transformProps.ts | 13 +-
.../src/Sunburst/transformProps.ts | 12 +-
.../src/Timeseries/transformProps.ts | 33 +-
.../src/Treemap/transformProps.ts | 12 +-
.../test/BigNumber/transformProps.test.ts | 56 +
.../test/Timeseries/transformProps.test.ts | 132 ++
.../test/Timeseries/transformers.test.ts | 49 +-
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/PivotTableChart.tsx | 124 +-
.../src/plugin/transformProps.ts | 18 +-
.../src/react-pivottable/Styles.js | 2 +-
.../src/react-pivottable/TableRenderers.jsx | 8 +-
.../src/react-pivottable/utilities.js | 56 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 2 +
.../test/plugin/transformProps.test.ts | 189 +++
.../plugins/plugin-chart-table/src/Styles.tsx | 4 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 2 +-
.../plugin-chart-table/src/transformProps.ts | 35 +-
.../plugins/plugin-chart-table/src/types.ts | 1 +
.../plugin-chart-table/src/utils/formatValue.ts | 11 +-
.../plugin-chart-table/src/utils/isEqualColumns.ts | 3 +
.../test/utils/formatValue.test.ts | 155 +++
...ckglLayerVisibilityCustomizationPlugin.test.tsx | 484 +++++++
.../DeckglLayerVisibilityCustomizationPlugin.tsx | 204 +++
.../DeckglLayerVisibility/buildQuery.test.ts} | 48 +-
.../components/DeckglLayerVisibility/buildQuery.ts | 17 +-
.../DeckglLayerVisibility/controlPanel.ts} | 9 +-
.../components/DeckglLayerVisibility}/index.ts | 15 +-
.../DeckglLayerVisibility/transformProps.test.ts | 100 ++
.../DeckglLayerVisibility}/transformProps.ts | 12 +-
.../components/DeckglLayerVisibility}/types.ts | 39 +-
.../useDeckLayerMetadata.test.ts | 195 +++
.../DeckglLayerVisibility/useDeckLayerMetadata.ts | 87 ++
.../DynamicGroupBy/DynamicGroupByPlugin.tsx | 140 ++
.../components/DynamicGroupBy}/buildQuery.ts | 13 +-
.../components/DynamicGroupBy}/controlPanel.ts | 35 +-
.../DynamicGroupBy}/images/thumbnail.png | Bin
.../components/DynamicGroupBy}/index.ts | 13 +-
.../components/DynamicGroupBy}/transformProps.ts | 0
.../components/DynamicGroupBy}/types.ts | 74 +-
.../TimeColumn/TimeColumnFilterPlugin.tsx | 0
.../components/TimeColumn/buildQuery.ts | 0
.../components/TimeColumn/controlPanel.ts | 0
.../components/TimeColumn}/images/thumbnail.png | Bin
.../components/TimeColumn/index.ts | 6 +-
.../components/TimeColumn/transformProps.ts | 0
.../components/TimeColumn/types.ts | 0
.../components/TimeGrain/TimeGrainFilterPlugin.tsx | 63 +-
.../components/TimeGrain/buildQuery.ts | 0
.../components/TimeGrain}/controlPanel.ts | 4 +-
.../components/TimeGrain}/images/thumbnail.png | Bin
.../components/TimeGrain/index.ts | 6 +-
.../components/TimeGrain/transformProps.ts | 0
.../components/TimeGrain/types.ts | 0
.../components/common.ts | 0
.../chartCustomizations/components}/index.ts | 5 +-
.../components/types.ts | 7 +-
.../Datasource/DatasourceModal/index.tsx | 1 +
.../DatasourceEditor/DatasourceEditor.jsx | 183 ++-
.../tests/DatasourceEditor.test.tsx | 44 +-
.../tests/DatasourceEditorCurrency.test.tsx | 67 +
superset-frontend/src/constants.ts | 7 +
.../dashboard/actions/chartCustomizationActions.ts | 378 +++--
superset-frontend/src/dashboard/actions/hydrate.js | 9 +-
.../src/dashboard/actions/nativeFilters.ts | 23 +-
.../index.tsx | 206 +--
.../DashboardBuilder/DashboardContainer.test.tsx | 211 +--
.../DashboardBuilder/DashboardContainer.tsx | 152 +-
.../dashboard/components/DashboardBuilder/state.ts | 27 +-
.../dashboard/components/FiltersBadge/index.tsx | 53 +-
.../src/dashboard/components/SliceHeader/index.tsx | 4 +-
.../components/SyncDashboardState/index.tsx | 5 +-
.../components/gridComponents/Chart/Chart.jsx | 6 +-
.../components/gridComponents/Tab/Tab.jsx | 86 +-
.../components/gridComponents/Tab/Tab.test.tsx | 69 +-
.../ChartCustomization/ChartCustomizationForm.tsx | 1457 --------------------
.../ChartCustomization/ChartCustomizationModal.tsx | 700 ----------
.../ChartCustomizationTitleContainer.tsx | 184 ---
.../ChartCustomizationTitlePane.tsx | 124 --
.../ChartCustomization/groupBySelectors.ts | 262 ----
.../nativeFilters/ChartCustomization/selectors.ts | 47 -
.../useChartCustomizationModal.tsx | 52 -
.../nativeFilters/ChartCustomization/utils.ts | 63 -
.../nativeFilters/ConfigModal/SharedStyles.tsx | 1 -
.../FilterBar/ActionButtons/index.tsx | 15 +-
.../index.tsx | 31 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 160 ++-
.../FilterBar/FilterBarSettings/index.tsx | 29 +-
.../useFilterConfigModal.tsx | 33 +-
.../FilterBar/FilterControls/FilterControl.tsx | 280 +---
.../{FilterControl.tsx => FilterControlShared.tsx} | 244 +---
.../FilterControls/FilterControls.test.tsx | 186 +++
.../FilterBar/FilterControls/FilterControls.tsx | 206 ++-
.../FilterBar/FilterControls/FilterValue.tsx | 72 +-
.../FilterControls}/GroupByFilterCard.tsx | 403 +++---
.../FilterBar/FilterControls/types.ts | 19 +-
.../nativeFilters/FilterBar/Horizontal.tsx | 15 +-
.../FilterBar/HorizontalFilterBar.test.tsx | 2 +
.../nativeFilters/FilterBar/Vertical.tsx | 23 +-
.../components/nativeFilters/FilterBar/index.tsx | 275 ++--
.../components/nativeFilters/FilterBar/state.ts | 67 +-
.../components/nativeFilters/FilterBar/types.ts | 7 +
.../FilterBar/useFilterControlFactory.tsx | 5 +-
.../components/nativeFilters/FilterBar/utils.ts | 10 +-
.../nativeFilters/FilterCard/FilterCard.test.tsx | 8 +-
.../nativeFilters/FilterCard/FilterCardContent.tsx | 4 +-
.../nativeFilters/FilterCard/NameRow.tsx | 25 +-
.../nativeFilters/FilterCard/TypeRow.tsx | 8 +-
.../components/nativeFilters/FilterCard/types.ts | 5 +-
.../FilterCard/useFilterDependencies.ts | 5 +-
.../nativeFilters/FilterCard/useFilterScope.ts | 4 +-
.../ConfigModalContent/ConfigModalContent.tsx | 164 +++
.../CustomizationContentRenderer.tsx | 133 ++
.../ConfigModalContent/FilterContentRenderer.tsx | 136 ++
.../ConfigModalContent}/index.ts | 9 +-
.../ConfigModalSidebar/ConfigModalSidebar.tsx | 192 +++
.../ConfigModalSidebar/ItemSection.tsx | 77 ++
.../ConfigModalSidebar}/index.ts | 7 +-
.../FiltersConfigModal/DividerConfigForm.tsx | 64 +-
.../FiltersConfigModal/DraggableFilter.test.tsx | 230 +++
.../FiltersConfigModal/DraggableFilter.tsx | 74 +-
.../FiltersConfigForm/DatasetSelect.tsx | 4 +-
.../FiltersConfigForm/DefaultValue.tsx | 20 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 371 +++--
.../FiltersConfigForm/constants.ts | 11 +
.../FiltersConfigForm/getControlItemsMap.tsx | 14 +-
.../FiltersConfigModal/FiltersConfigForm/state.ts | 16 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 151 +-
.../FiltersConfigModal/FiltersConfigModal.tsx | 956 ++++++-------
...erTitleContainer.tsx => ItemTitleContainer.tsx} | 101 +-
.../FiltersConfigModal/ItemTitlePane.tsx | 93 ++
.../FiltersConfigModal/NativeFiltersModal.test.tsx | 9 +-
.../FiltersConfigModal/NewItemDropdown.tsx | 93 ++
.../FiltersConfigModal/hooks/index.ts} | 28 +-
.../hooks/useCustomizationOperations.ts | 127 ++
.../hooks/useFilterOperations.ts | 248 ++++
.../hooks/useItemStateManager.ts | 154 +++
.../FiltersConfigModal/hooks/useModalSaveLogic.ts | 430 ++++++
.../nativeFilters/FiltersConfigModal/state.ts | 16 +-
.../transformers/customizationTransformer.ts | 163 +++
.../transformers/filterTransformer.ts | 172 +++
.../FiltersConfigModal/transformers}/index.ts | 3 +-
.../nativeFilters/FiltersConfigModal/types.ts | 80 +-
.../nativeFilters/FiltersConfigModal/utils.test.ts | 139 ++
.../nativeFilters/FiltersConfigModal/utils.ts | 160 ++-
.../dashboard/components/nativeFilters/state.ts | 191 ++-
.../dashboard/components/nativeFilters/utils.ts | 31 +-
superset-frontend/src/dashboard/constants.ts | 3 +
.../src/dashboard/reducers/dashboardInfo.js | 101 +-
.../dashboard/reducers/groupByCustomizations.ts | 198 ---
.../src/dashboard/reducers/nativeFilters.test.ts | 77 ++
.../src/dashboard/reducers/nativeFilters.ts | 51 +-
superset-frontend/src/dashboard/types.ts | 20 +-
.../dashboard/util/activeAllDashboardFilters.ts | 5 +-
.../src/dashboard/util/calculateScopes.ts | 75 +
.../util/charts/getFormDataWithExtraFilters.ts | 119 +-
.../util/getFormDataWithExtraFilters.test.ts | 114 ++
.../src/dashboard/util/getRelatedCharts.ts | 13 +-
.../util/useFilterFocusHighlightStyles.test.tsx | 4 +
.../util/useFilterFocusHighlightStyles.ts | 10 +-
superset-frontend/src/dataMask/actions.ts | 3 +
superset-frontend/src/dataMask/reducer.ts | 160 ++-
.../components/ControlPanelsContainer.test.tsx | 210 +++
.../explore/components/ControlPanelsContainer.tsx | 29 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 28 +
.../components/ExploreChartHeader/index.jsx | 6 +-
.../src/explore/components/SaveModal.test.jsx | 383 +++++
.../src/explore/components/SaveModal.tsx | 287 +++-
.../ColumnConfigControl/ColumnConfigControl.tsx | 2 +
.../controls/ColumnConfigControl/constants.tsx | 2 +-
.../CurrencyControl.test.tsx} | 27 +-
.../controls/CurrencyControl/CurrencyControl.tsx | 80 +-
.../controls/MatrixifyDimensionControl.test.tsx | 119 ++
.../controls/MatrixifyDimensionControl.tsx | 36 +-
.../controls/SelectAsyncControl/index.tsx | 18 +-
superset-frontend/src/explore/types.ts | 19 +
.../src/features/alerts/AlertReportModal.test.tsx | 3 +-
.../src/features/alerts/AlertReportModal.tsx | 50 +-
superset-frontend/src/features/datasets/types.ts | 1 +
.../components/Select/SelectFilterPlugin.test.tsx | 457 +++++-
.../components/Select/SelectFilterPlugin.tsx | 2 +-
.../src/pages/ChartList/ChartList.test.tsx | 35 +-
.../src/pages/ChartList/ChartList.testHelpers.tsx | 13 +
superset-frontend/src/pages/ChartList/index.tsx | 23 +-
superset-frontend/src/views/store.ts | 2 -
.../src/visualizations/presets/MainPreset.js | 20 +-
superset-websocket/package-lock.json | 286 ++--
superset-websocket/package.json | 8 +-
superset/charts/schemas.py | 9 +
superset/cli/examples.py | 3 +
superset/commands/dashboard/exceptions.py | 4 +
superset/commands/dashboard/update.py | 18 +
superset/commands/logs/prune.py | 6 +-
superset/common/query_actions.py | 65 +
superset/common/query_context_factory.py | 34 +
superset/connectors/sqla/models.py | 6 +-
superset/daos/dashboard.py | 64 +
superset/dashboards/api.py | 91 ++
superset/dashboards/schemas.py | 7 +
superset/datasets/api.py | 2 +
superset/datasets/schemas.py | 2 +
superset/examples/data_loading.py | 2 +
superset/examples/international_sales.py | 238 ++++
superset/mcp_service/auth.py | 83 +-
superset/mcp_service/chart/tool/get_chart_data.py | 21 +-
superset/mcp_service/chart/tool/list_charts.py | 25 +-
.../chart/validation/runtime/__init__.py | 22 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 25 +-
superset/mcp_service/dataset/tool/list_datasets.py | 25 +-
superset/mcp_service/flask_singleton.py | 82 +-
...00_9787190b3d89_add_currency_column_support.py} | 23 +-
superset/models/helpers.py | 10 +
superset/superset_typing.py | 2 +
superset/templates/superset/spa.html | 7 +-
superset/utils/currency.py | 160 +++
superset/utils/date_parser.py | 109 +-
superset/views/core.py | 21 +-
superset/viz.py | 1 +
tests/integration_tests/dashboards/api_tests.py | 325 +++++
tests/integration_tests/datasets/commands_tests.py | 3 +
tests/integration_tests/fixtures/importexport.py | 1 +
.../common/test_query_actions_currency.py | 290 ++++
.../common/test_query_context_factory.py | 106 ++
tests/unit_tests/common/test_time_shifts.py | 33 +
tests/unit_tests/connectors/sqla/models_test.py | 64 +
.../dashboards/test_chart_customizations_dao.py | 339 +++++
tests/unit_tests/datasets/commands/export_test.py | 1 +
tests/unit_tests/datasets/schema_tests.py | 29 +
.../mcp_service/chart/tool/test_get_chart_data.py | 130 +-
.../mcp_service/chart/validation}/__init__.py | 0
.../chart/validation/test_runtime_validator.py | 221 +++
tests/unit_tests/utils/currency_test.py | 332 +++++
tests/unit_tests/utils/date_parser_tests.py | 64 +
304 files changed, 16571 insertions(+), 7280 deletions(-)
create mode 100644 docs/static/img/logos/userguiding.svg
create mode 100644
superset-frontend/packages/superset-ui-chart-controls/test/shared-controls/customControls.test.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/TimezoneSelector/TimezoneOptionsCache.test.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/TimezoneSelector/TimezoneOptionsCache.ts
copy superset-frontend/{plugins/legacy-preset-chart-deckgl/src/TooltipRow.tsx
=> packages/superset-ui-core/src/components/TimezoneSelector/types.ts} (80%)
copy
superset-frontend/packages/superset-ui-core/src/{components/Divider/types.ts =>
currency-format/CurrencyFormats.ts} (90%)
copy superset-frontend/packages/superset-ui-core/src/{components/Drawer =>
currency-format}/types.ts (83%)
copy superset-frontend/{src/explore/exploreUtils/getLegacyEndpointType.test.ts
=>
packages/superset-ui-core/test/currency-format/analyzeCurrencyInData.test.ts}
(57%)
copy
superset-frontend/packages/{superset-ui-chart-controls/test/operators/utils/timeOffset.test.ts
=> superset-ui-core/test/currency-format/hasMixedCurrencies.test.ts} (60%)
copy
superset-frontend/packages/superset-ui-core/{src/components/Input/Input.test.tsx
=> test/currency-format/normalizeCurrency.test.ts} (61%)
delete mode 100644
superset-frontend/plugins/legacy-plugin-chart-calendar/test/getFormattedUTCTime.ts
create mode 100644
superset-frontend/plugins/legacy-plugin-chart-calendar/test/utils.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-table/test/utils/formatValue.test.ts
create mode 100644
superset-frontend/src/chartCustomizations/components/DeckglLayerVisibility/DeckglLayerVisibilityCustomizationPlugin.test.tsx
create mode 100644
superset-frontend/src/chartCustomizations/components/DeckglLayerVisibility/DeckglLayerVisibilityCustomizationPlugin.tsx
copy superset-frontend/src/{filters/components/TimeGrain/index.ts =>
chartCustomizations/components/DeckglLayerVisibility/buildQuery.test.ts} (52%)
copy docs/src/types/apache-superset-core/index.d.ts =>
superset-frontend/src/chartCustomizations/components/DeckglLayerVisibility/buildQuery.ts
(65%)
copy
superset-frontend/{plugins/plugin-chart-echarts/src/utils/convertInteger.ts =>
src/chartCustomizations/components/DeckglLayerVisibility/controlPanel.ts} (84%)
copy superset-frontend/src/{filters/components/Select =>
chartCustomizations/components/DeckglLayerVisibility}/index.ts (74%)
create mode 100644
superset-frontend/src/chartCustomizations/components/DeckglLayerVisibility/transformProps.test.ts
copy superset-frontend/{plugins/legacy-preset-chart-deckgl/src/layers/Hex =>
src/chartCustomizations/components/DeckglLayerVisibility}/transformProps.ts
(82%)
copy superset-frontend/{packages/superset-ui-core/src/dimension =>
src/chartCustomizations/components/DeckglLayerVisibility}/types.ts (58%)
create mode 100644
superset-frontend/src/chartCustomizations/components/DeckglLayerVisibility/useDeckLayerMetadata.test.ts
create mode 100644
superset-frontend/src/chartCustomizations/components/DeckglLayerVisibility/useDeckLayerMetadata.ts
create mode 100644
superset-frontend/src/chartCustomizations/components/DynamicGroupBy/DynamicGroupByPlugin.tsx
copy superset-frontend/{plugins/plugin-chart-echarts/src/Tree =>
src/chartCustomizations/components/DynamicGroupBy}/buildQuery.ts (86%)
copy superset-frontend/src/{filters/components/Range =>
chartCustomizations/components/DynamicGroupBy}/controlPanel.ts (72%)
copy
superset-frontend/{packages/generator-superset/generators/plugin-chart/templates/src
=> src/chartCustomizations/components/DynamicGroupBy}/images/thumbnail.png
(100%)
copy superset-frontend/src/{filters/components/TimeColumn =>
chartCustomizations/components/DynamicGroupBy}/index.ts (77%)
copy superset-frontend/src/{filters/components/TimeGrain =>
chartCustomizations/components/DynamicGroupBy}/transformProps.ts (100%)
rename
superset-frontend/src/{dashboard/components/nativeFilters/ChartCustomization =>
chartCustomizations/components/DynamicGroupBy}/types.ts (51%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeColumn/TimeColumnFilterPlugin.tsx (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeColumn/buildQuery.ts (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeColumn/controlPanel.ts (100%)
copy
superset-frontend/{packages/generator-superset/generators/plugin-chart/templates/src
=> src/chartCustomizations/components/TimeColumn}/images/thumbnail.png (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeColumn/index.ts (86%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeColumn/transformProps.ts (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeColumn/types.ts (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeGrain/TimeGrainFilterPlugin.tsx (70%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeGrain/buildQuery.ts (100%)
copy superset-frontend/src/{filters/components/TimeColumn =>
chartCustomizations/components/TimeGrain}/controlPanel.ts (91%)
copy
superset-frontend/{packages/generator-superset/generators/plugin-chart/templates/src
=> src/chartCustomizations/components/TimeGrain}/images/thumbnail.png (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeGrain/index.ts (86%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeGrain/transformProps.ts (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/TimeGrain/types.ts (100%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/common.ts (100%)
copy superset-frontend/{packages/superset-core/src/utils =>
src/chartCustomizations/components}/index.ts (71%)
copy superset-frontend/src/{filters =>
chartCustomizations}/components/types.ts (99%)
rename superset-frontend/src/dashboard/components/{GroupByBadge =>
CustomizationsBadge}/index.tsx (55%)
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/ChartCustomizationForm.tsx
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/ChartCustomizationModal.tsx
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/ChartCustomizationTitleContainer.tsx
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/ChartCustomizationTitlePane.tsx
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/groupBySelectors.ts
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/selectors.ts
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/useChartCustomizationModal.tsx
delete mode 100644
superset-frontend/src/dashboard/components/nativeFilters/ChartCustomization/utils.ts
copy
superset-frontend/src/dashboard/components/nativeFilters/FilterBar/{FiltersOutOfScopeCollapsible
=> CustomizationsOutOfScopeCollapsible}/index.tsx (63%)
copy
superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/{FilterControl.tsx
=> FilterControlShared.tsx} (54%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.test.tsx
rename
superset-frontend/src/dashboard/components/nativeFilters/{ChartCustomization =>
FilterBar/FilterControls}/GroupByFilterCard.tsx (60%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalContent/ConfigModalContent.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalContent/CustomizationContentRenderer.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalContent/FilterContentRenderer.tsx
copy superset-frontend/{packages/superset-core/src =>
src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalContent}/index.ts
(63%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalSidebar/ConfigModalSidebar.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalSidebar/ItemSection.tsx
copy superset-frontend/{packages/superset-core/src =>
src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalSidebar}/index.ts
(76%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/DraggableFilter.test.tsx
copy
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/{FilterTitleContainer.tsx
=> ItemTitleContainer.tsx} (67%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ItemTitlePane.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/NewItemDropdown.tsx
copy
superset-frontend/{packages/superset-ui-chart-controls/src/utils/colorControls.ts
=> src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/index.ts}
(60%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useCustomizationOperations.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useFilterOperations.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useItemStateManager.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useModalSaveLogic.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/customizationTransformer.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/filterTransformer.ts
copy superset-frontend/{packages/superset-core/src/ui/components =>
src/dashboard/components/nativeFilters/FiltersConfigModal/transformers}/index.ts
(85%)
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/utils.test.ts
delete mode 100644
superset-frontend/src/dashboard/reducers/groupByCustomizations.ts
create mode 100644 superset-frontend/src/dashboard/util/calculateScopes.ts
copy
superset-frontend/src/explore/components/controls/{DateFilterControl/tests/CurrentCalendarFrame.test.tsx
=> CurrencyControl/CurrencyControl.test.tsx} (62%)
create mode 100644 superset/examples/international_sales.py
copy
superset/migrations/versions/{2025-03-03_20-52_94e7a3499973_add_folders_column_to_dataset.py
=> 2025-11-18_14-00_9787190b3d89_add_currency_column_support.py} (66%)
create mode 100644 superset/utils/currency.py
create mode 100644 tests/unit_tests/common/test_query_actions_currency.py
create mode 100644 tests/unit_tests/dashboards/test_chart_customizations_dao.py
copy {superset-core/src/superset_core/api =>
tests/unit_tests/mcp_service/chart/validation}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/chart/validation/test_runtime_validator.py
create mode 100644 tests/unit_tests/utils/currency_test.py