diff --git a/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx b/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx index 0a866c094439..9e1d862ebefe 100644 --- a/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx +++ b/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx @@ -300,6 +300,16 @@ export default function RangeFilterPlugin(props: PluginFilterRangeProps) { } }, [enableSingleExactValue]); + const MIN_NUM_STEPS = 20; + const stepHeuristic = (min: number, max: number) => { + const maxStepSize = (max - min) / MIN_NUM_STEPS; + // normalizedStepSize: .06 -> .01, .003 -> .001 + const normalizedStepSize = `1E${Math.floor(Math.log10(maxStepSize))}`; + return Math.min(1, parseFloat(normalizedStepSize)); + }; + + const step = max - min <= 1 ? stepHeuristic(min, max) : 1; + return ( {Number.isNaN(Number(min)) || Number.isNaN(Number(max)) ? ( @@ -323,6 +333,7 @@ export default function RangeFilterPlugin(props: PluginFilterRangeProps) {