bito-code-review[bot] commented on code in PR #34742:
URL: https://github.com/apache/superset/pull/34742#discussion_r3330211600


##########
superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx:
##########
@@ -234,6 +234,40 @@ export default function RangeFilterPlugin(props: 
PluginFilterRangeProps) {
   const [row] = data;
   // @ts-ignore
   const { min, max }: { min: number; max: number } = row;
+
+  // Calculate appropriate step size for decimal values
+  const calculateStep = useCallback((minValue: number, maxValue: number) => {
+    const range = maxValue - minValue;
+
+    // If the range is very small (less than 1), use smaller steps
+    if (range < 1) {
+      // Find the number of decimal places needed
+      const rangeStr = range.toString();
+      const decimalMatch = rangeStr.match(/\.(\d+)/);
+      if (decimalMatch) {
+        const decimalPlaces = decimalMatch[1].length;
+        // Use a step that gives approximately 100 steps across the range
+        return Math.pow(10, -Math.min(decimalPlaces + 1, 6));
+      }
+      return 0.01;
+    }
+
+    // For larger ranges, calculate step to give approximately 100-1000 steps
+    const idealSteps = 100;
+    let step = range / idealSteps;
+
+    // Round step to a nice value (0.001, 0.01, 0.1, 1, 10, etc.)
+    const magnitude = Math.pow(10, Math.floor(Math.log10(step)));
+    step = Math.round(step / magnitude) * magnitude;
+
+    return step;
+  }, []);

Review Comment:
   <!-- Bito Reply -->
   The suggestion to simplify the `calculateStep` function by removing the 
special case for small ranges and using a unified approach with `Math.log10` 
and `Math.round` is valid and improves consistency. The original implementation 
had inconsistent logic for small vs. large ranges, which could lead to 
unexpected step sizes for decimal ranges. The suggested change eliminates this 
inconsistency by applying the same logic for all ranges, ensuring predictable 
behavior. This makes the function simpler and more maintainable.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to