chore(explore): added debounce in DateFilter (#13660)
This commit is contained in:
parent
0e0c99b2fb
commit
7b74eb2730
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue