This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch setting-opacity-boundaries
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 849bc044ad286b961b2370c47874118b0aaa3d44
Author: Evan Rusackas <[email protected]>
AuthorDate: Wed Jun 29 18:06:04 2022 -0600

    Respecting max/min opacities, and adding tests.
---
 .../src/utils/getColorFormatters.ts                | 28 ++++++++++++++--------
 .../test/utils/getColorFormatters.test.ts          |  2 ++
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/utils/getColorFormatters.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/utils/getColorFormatters.ts
index 37729459f8..a781e83bff 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/utils/getColorFormatters.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/utils/getColorFormatters.ts
@@ -37,16 +37,24 @@ export const getOpacity = (
   extremeValue: number,
   minOpacity = MIN_OPACITY_BOUNDED,
   maxOpacity = MAX_OPACITY,
-) =>
-  extremeValue === cutoffPoint
-    ? maxOpacity
-    : round(
-        Math.abs(
-          ((maxOpacity - minOpacity) / (extremeValue - cutoffPoint)) *
-            (value - cutoffPoint),
-        ) + minOpacity,
-        2,
-      );
+) => {
+  if (extremeValue === cutoffPoint) {
+    return maxOpacity;
+  }
+  const result = round(
+    Math.abs(
+      ((maxOpacity - minOpacity) / (extremeValue - cutoffPoint)) *
+        (value - cutoffPoint),
+    ) + minOpacity,
+    2,
+  );
+
+  if (result < minOpacity) {
+    return minOpacity;
+  }
+
+  return result > maxOpacity ? maxOpacity : result;
+};
 
 export const getColorFunction = (
   {
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/test/utils/getColorFormatters.test.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/test/utils/getColorFormatters.test.ts
index 051089f87c..23d712128f 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/test/utils/getColorFormatters.test.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/test/utils/getColorFormatters.test.ts
@@ -50,6 +50,8 @@ describe('getOpacity', () => {
     expect(getOpacity(100, 100, 50)).toEqual(0.05);
     expect(getOpacity(100, 100, 100, 0, 0.8)).toEqual(0.8);
     expect(getOpacity(100, 100, 50, 0, 1)).toEqual(0);
+    expect(getOpacity(999, 100, 50, 0, 1)).toEqual(1);
+    expect(getOpacity(-999, 100, 50, 0, 1)).toEqual(0.05);
   });
 });
 

Reply via email to