chore(explore): added debounce in DateFilter (#13660)

This commit is contained in:
Yongjie Zhao 2021-03-17 23:04:50 +08:00 committed by GitHub
parent 0e0c99b2fb
commit 7b74eb2730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 13 deletions

View File

@ -39,6 +39,8 @@ import Icon from 'src/components/Icon';
import { Select } from 'src/components/Select';
import { Tooltip } from 'src/common/components/Tooltip';
import { DEFAULT_TIME_RANGE } from 'src/explore/constants';
import { useDebouncedEffect } from 'src/explore/exploreUtils';
import { SLOW_DEBOUNCE } from 'src/constants';
import { SelectOptionType, FrameType } from './types';
import {
@ -220,17 +222,21 @@ export default function DateFilterLabel(props: DateFilterControlProps) {
});
}, [value]);
useEffect(() => {
fetchTimeRange(timeRangeValue, endpoints).then(({ value, error }) => {
if (error) {
setEvalResponse(error || '');
setValidTimeRange(false);
} else {
setEvalResponse(value || '');
setValidTimeRange(true);
}
});
}, [timeRangeValue]);
useDebouncedEffect(
() => {
fetchTimeRange(timeRangeValue, endpoints).then(({ value, error }) => {
if (error) {
setEvalResponse(error || '');
setValidTimeRange(false);
} else {
setEvalResponse(value || '');
setValidTimeRange(true);
}
});
},
SLOW_DEBOUNCE,
[timeRangeValue],
);
function onSave() {
onChange(timeRangeValue);

View File

@ -85,7 +85,7 @@ def parse_human_datetime(human_readable: str) -> datetime:
parsed_dttm, parsed_flags = cal.parseDT(human_readable)
# 0 == not parsed at all
if parsed_flags == 0:
logger.exception(ex)
logger.debug(ex)
raise TimeRangeParseFailError(human_readable)
# when time is not extracted, we 'reset to midnight'
if parsed_flags & 2 == 0:

View File

@ -24,6 +24,10 @@ from flask_appbuilder.api import rison
from flask_appbuilder.security.decorators import has_access_api
from superset import db, event_logger
from superset.charts.commands.exceptions import (
TimeRangeParseFailError,
TimeRangeUnclearError,
)
from superset.common.query_context import QueryContext
from superset.legacy import update_time_range
from superset.models.slice import Slice
@ -93,6 +97,6 @@ class Api(BaseSupersetView):
"timeRange": time_range,
}
return self.json_response({"result": result})
except ValueError as error:
except (ValueError, TimeRangeParseFailError, TimeRangeUnclearError) as error:
error_msg = {"message": f"Unexpected time range: {error}"}
return self.json_response(error_msg, 400)