diff --git a/superset-frontend/src/explore/components/ControlPanelsContainer.jsx b/superset-frontend/src/explore/components/ControlPanelsContainer.jsx index e7b036edceb730610c3206ab6df4fef4f5dffe88..8c82d460a53791bbedadc96e9784501c3f9b5f3b 100644 --- a/superset-frontend/src/explore/components/ControlPanelsContainer.jsx +++ b/superset-frontend/src/explore/components/ControlPanelsContainer.jsx @@ -132,7 +132,6 @@ class ControlPanelsContainer extends React.Component { if (visibility && !visibility.call(config, this.props, controlData)) { return null; } - return ( ); diff --git a/superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterControl.tsx b/superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterControl.tsx index 294ce994998b789812f5c1155f4aa2a3cca68489..3e4833d1c13023356e6d83a7ccaa934aef786201 100644 --- a/superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterControl.tsx +++ b/superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterControl.tsx @@ -74,7 +74,6 @@ const fetchTimeRange = async ( ) => { const query = rison.encode(timeRange); const endpoint = `/api/v1/time_range/?q=${query}`; - try { const response = await SupersetClient.get({ endpoint }); const timeRangeString = buildTimeRangeString( @@ -171,20 +170,23 @@ interface DateFilterLabelProps { onChange: (timeRange: string) => void; value?: string; endpoints?: TimeRangeEndpoints; + datasource?: string; } export default function DateFilterControl(props: DateFilterLabelProps) { - const { value = 'Last week', endpoints, onChange } = props; + const { value = 'Last week', endpoints, onChange, datasource } = props; const [actualTimeRange, setActualTimeRange] = useState(value); const [show, setShow] = useState(false); const [frame, setFrame] = useState(guessFrame(value)); + const [isMounted, setIsMounted] = useState(false); const [timeRangeValue, setTimeRangeValue] = useState(value); const [validTimeRange, setValidTimeRange] = useState(false); const [evalResponse, setEvalResponse] = useState(value); const [tooltipTitle, setTooltipTitle] = useState(value); useEffect(() => { + if (!isMounted) setIsMounted(true); fetchTimeRange(value, endpoints).then(({ value: actualRange, error }) => { if (error) { setEvalResponse(error || ''); @@ -218,6 +220,14 @@ export default function DateFilterControl(props: DateFilterLabelProps) { }); }, [value]); + useEffect(() => { + if (isMounted) { + onChange('Last week'); + setTimeRangeValue('Last week'); + setFrame(guessFrame('Last week')); + } + }, [datasource]); + useEffect(() => { fetchTimeRange(timeRangeValue, endpoints).then(({ value, error }) => { if (error) { @@ -236,8 +246,8 @@ export default function DateFilterControl(props: DateFilterLabelProps) { } function onHide() { - setFrame(guessFrame(value)); setTimeRangeValue(value); + setFrame(guessFrame(value)); setShow(false); }