diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx index 0d16e6b452..d4b0ed84c7 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx @@ -61,7 +61,7 @@ const DefaultValue: FC = ({ ) : ( theme.gridUnit * 2}px; + color: ${({ theme }) => theme.colors.primary.base}; +`; + const StyledCollapse = styled(Collapse)` margin-left: ${({ theme }) => theme.gridUnit * -4 - 1}px; margin-right: ${({ theme }) => theme.gridUnit * -4}px; @@ -351,54 +364,57 @@ const FiltersConfigForm = ( forceUpdate(); }; - const refreshHandler = useCallback(() => { - if (!hasDataset || !formFilter?.dataset?.value) { - forceUpdate(); - return; - } - const formData = getFormData({ - datasetId: formFilter?.dataset?.value, - groupby: formFilter?.column, - ...formFilter, - }); - setNativeFilterFieldValuesWrapper({ - defaultValueQueriesData: null, - isDataDirty: false, - }); - getChartDataRequest({ - formData, - force: false, - requestParams: { dashboardId: 0 }, - }) - .then(response => { - if (isFeatureEnabled(FeatureFlag.GLOBAL_ASYNC_QUERIES)) { - // deal with getChartDataRequest transforming the response data - const result = 'result' in response ? response.result[0] : response; - waitForAsyncData(result) - .then((asyncResult: ChartDataResponseResult[]) => { - setNativeFilterFieldValuesWrapper({ - defaultValueQueriesData: asyncResult, - }); - }) - .catch((error: ClientErrorObject) => { - setError( - error.message || error.error || t('Check configuration'), - ); - }); - } else { - setNativeFilterFieldValuesWrapper({ - defaultValueQueriesData: response.result, - }); - } - }) - .catch((error: Response) => { - error.json().then(body => { - setErrorWrapper( - body.message || error.statusText || t('Check configuration'), - ); - }); + const refreshHandler = useCallback( + (force = false) => { + if (!hasDataset || !formFilter?.dataset?.value) { + forceUpdate(); + return; + } + const formData = getFormData({ + datasetId: formFilter?.dataset?.value, + groupby: formFilter?.column, + ...formFilter, }); - }, [filterId, forceUpdate, form, formFilter, hasDataset]); + setNativeFilterFieldValuesWrapper({ + defaultValueQueriesData: null, + isDataDirty: false, + }); + getChartDataRequest({ + formData, + force, + requestParams: { dashboardId: 0 }, + }) + .then(response => { + if (isFeatureEnabled(FeatureFlag.GLOBAL_ASYNC_QUERIES)) { + // deal with getChartDataRequest transforming the response data + const result = 'result' in response ? response.result[0] : response; + waitForAsyncData(result) + .then((asyncResult: ChartDataResponseResult[]) => { + setNativeFilterFieldValuesWrapper({ + defaultValueQueriesData: asyncResult, + }); + }) + .catch((error: ClientErrorObject) => { + setError( + error.message || error.error || t('Check configuration'), + ); + }); + } else { + setNativeFilterFieldValuesWrapper({ + defaultValueQueriesData: response.result, + }); + } + }) + .catch((error: Response) => { + error.json().then(body => { + setErrorWrapper( + body.message || error.statusText || t('Check configuration'), + ); + }); + }); + }, + [filterId, forceUpdate, form, formFilter, hasDataset], + ); const defaultDatasetSelectOptions = Object.values(loadedDatasets).map( datasetToSelectOption, @@ -693,22 +709,27 @@ const FiltersConfigForm = ( level="error" /> ) : showDefaultValue ? ( - { - setNativeFilterFieldValues(form, filterId, { - defaultDataMask: dataMask, - }); - form.validateFields([ - ['filters', filterId, 'defaultDataMask'], - ]); - forceUpdate(); - }} - filterId={filterId} - hasDataset={hasDataset} - form={form} - formData={newFormData} - enableNoResults={enableNoResults} - /> + + { + setNativeFilterFieldValues(form, filterId, { + defaultDataMask: dataMask, + }); + form.validateFields([ + ['filters', filterId, 'defaultDataMask'], + ]); + forceUpdate(); + }} + filterId={filterId} + hasDataset={hasDataset} + form={form} + formData={newFormData} + enableNoResults={enableNoResults} + /> + + refreshHandler(true)} /> + + ) : ( t('Fill all required fields to enable "Default Value"') )}