未验证 提交 a5df4c60 编写于 作者: P Phillip Kelley-Dotson 提交者: GitHub

feat: default timepicker to last week when dataset is changed (#12609)

* set up timepicker to last when dataset is changed

* simplify logic for dataset change

* update modal code

* remove uneeded code

* fix bug

* fix bug
上级 55c8f9ba
...@@ -132,7 +132,6 @@ class ControlPanelsContainer extends React.Component { ...@@ -132,7 +132,6 @@ class ControlPanelsContainer extends React.Component {
if (visibility && !visibility.call(config, this.props, controlData)) { if (visibility && !visibility.call(config, this.props, controlData)) {
return null; return null;
} }
return ( return (
<Control <Control
key={`control-${name}`} key={`control-${name}`}
...@@ -140,6 +139,7 @@ class ControlPanelsContainer extends React.Component { ...@@ -140,6 +139,7 @@ class ControlPanelsContainer extends React.Component {
validationErrors={validationErrors} validationErrors={validationErrors}
actions={actions} actions={actions}
formData={provideFormDataToProps ? formData : null} formData={provideFormDataToProps ? formData : null}
datasource={formData?.datasource}
{...restProps} {...restProps}
/> />
); );
......
...@@ -74,7 +74,6 @@ const fetchTimeRange = async ( ...@@ -74,7 +74,6 @@ const fetchTimeRange = async (
) => { ) => {
const query = rison.encode(timeRange); const query = rison.encode(timeRange);
const endpoint = `/api/v1/time_range/?q=${query}`; const endpoint = `/api/v1/time_range/?q=${query}`;
try { try {
const response = await SupersetClient.get({ endpoint }); const response = await SupersetClient.get({ endpoint });
const timeRangeString = buildTimeRangeString( const timeRangeString = buildTimeRangeString(
...@@ -171,20 +170,23 @@ interface DateFilterLabelProps { ...@@ -171,20 +170,23 @@ interface DateFilterLabelProps {
onChange: (timeRange: string) => void; onChange: (timeRange: string) => void;
value?: string; value?: string;
endpoints?: TimeRangeEndpoints; endpoints?: TimeRangeEndpoints;
datasource?: string;
} }
export default function DateFilterControl(props: DateFilterLabelProps) { 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<string>(value); const [actualTimeRange, setActualTimeRange] = useState<string>(value);
const [show, setShow] = useState<boolean>(false); const [show, setShow] = useState<boolean>(false);
const [frame, setFrame] = useState<FrameType>(guessFrame(value)); const [frame, setFrame] = useState<FrameType>(guessFrame(value));
const [isMounted, setIsMounted] = useState<boolean>(false);
const [timeRangeValue, setTimeRangeValue] = useState(value); const [timeRangeValue, setTimeRangeValue] = useState(value);
const [validTimeRange, setValidTimeRange] = useState<boolean>(false); const [validTimeRange, setValidTimeRange] = useState<boolean>(false);
const [evalResponse, setEvalResponse] = useState<string>(value); const [evalResponse, setEvalResponse] = useState<string>(value);
const [tooltipTitle, setTooltipTitle] = useState<string>(value); const [tooltipTitle, setTooltipTitle] = useState<string>(value);
useEffect(() => { useEffect(() => {
if (!isMounted) setIsMounted(true);
fetchTimeRange(value, endpoints).then(({ value: actualRange, error }) => { fetchTimeRange(value, endpoints).then(({ value: actualRange, error }) => {
if (error) { if (error) {
setEvalResponse(error || ''); setEvalResponse(error || '');
...@@ -218,6 +220,14 @@ export default function DateFilterControl(props: DateFilterLabelProps) { ...@@ -218,6 +220,14 @@ export default function DateFilterControl(props: DateFilterLabelProps) {
}); });
}, [value]); }, [value]);
useEffect(() => {
if (isMounted) {
onChange('Last week');
setTimeRangeValue('Last week');
setFrame(guessFrame('Last week'));
}
}, [datasource]);
useEffect(() => { useEffect(() => {
fetchTimeRange(timeRangeValue, endpoints).then(({ value, error }) => { fetchTimeRange(timeRangeValue, endpoints).then(({ value, error }) => {
if (error) { if (error) {
...@@ -236,8 +246,8 @@ export default function DateFilterControl(props: DateFilterLabelProps) { ...@@ -236,8 +246,8 @@ export default function DateFilterControl(props: DateFilterLabelProps) {
} }
function onHide() { function onHide() {
setFrame(guessFrame(value));
setTimeRangeValue(value); setTimeRangeValue(value);
setFrame(guessFrame(value));
setShow(false); setShow(false);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册