diff --git a/superset-frontend/src/chart/chartAction.js b/superset-frontend/src/chart/chartAction.js index 74ed410f96..139b7f17ab 100644 --- a/superset-frontend/src/chart/chartAction.js +++ b/superset-frontend/src/chart/chartAction.js @@ -41,6 +41,7 @@ import { logEvent } from '../logger/actions'; import { Logger, LOG_ACTIONS_LOAD_CHART } from '../logger/LogUtils'; import { getClientErrorObject } from '../utils/getClientErrorObject'; import { allowCrossDomain as domainShardingEnabled } from '../utils/hostNamesConfig'; +import { updateExtraFormData } from '../dashboard/actions/nativeFilters'; export const CHART_UPDATE_STARTED = 'CHART_UPDATE_STARTED'; export function chartUpdateStarted(queryController, latestQueryFormData, key) { @@ -163,12 +164,14 @@ const v1ChartDataRequest = async ( resultType, force, requestParams, + setDataMask, ) => { const payload = buildV1ChartDataPayload({ formData, resultType, resultFormat, force, + setDataMask, }); // The dashboard id is added to query params for tracking purposes @@ -200,6 +203,7 @@ const v1ChartDataRequest = async ( export async function getChartDataRequest({ formData, + setDataMask = () => {}, resultFormat = 'json', resultType = 'full', force = false, @@ -234,6 +238,7 @@ export async function getChartDataRequest({ resultType, force, querySettings, + setDataMask, ); } @@ -361,7 +366,11 @@ export function exploreJSON( }; if (dashboardId) requestParams.dashboard_id = dashboardId; + const setDataMask = filtersState => { + dispatch(updateExtraFormData(formData.slice_id, filtersState)); + }; const chartDataRequest = getChartDataRequest({ + setDataMask, formData, resultFormat: 'json', resultType: 'full', diff --git a/superset-frontend/src/explore/exploreUtils.js b/superset-frontend/src/explore/exploreUtils.js index e454f7ad44..c53b91ba26 100644 --- a/superset-frontend/src/explore/exploreUtils.js +++ b/superset-frontend/src/explore/exploreUtils.js @@ -207,6 +207,7 @@ export const buildV1ChartDataPayload = ({ force, resultFormat, resultType, + setDataMask, }) => { const buildQuery = getChartBuildQueryRegistry().get(formData.viz_type) ?? @@ -216,12 +217,19 @@ export const buildV1ChartDataPayload = ({ ...baseQueryObject, }, ])); - return buildQuery({ - ...formData, - force, - result_format: resultFormat, - result_type: resultType, - }); + return buildQuery( + { + ...formData, + force, + result_format: resultFormat, + result_type: resultType, + }, + { + hooks: { + setDataMask, + }, + }, + ); }; export const getLegacyEndpointType = ({ resultType, resultFormat }) =>