]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11559 corretly center bubble chart when zooming
authorStas Vilchik <stas.vilchik@sonarsource.com>
Mon, 17 Dec 2018 13:32:48 +0000 (14:32 +0100)
committersonartech <sonartech@sonarsource.com>
Thu, 20 Dec 2018 10:41:50 +0000 (11:41 +0100)
server/sonar-web/src/main/js/components/charts/BubbleChart.tsx
server/sonar-web/src/main/js/components/charts/__tests__/BubbleChart-test.tsx
server/sonar-web/src/main/js/components/charts/__tests__/__snapshots__/BubbleChart-test.tsx.snap

index 903d13233458177abd981e7bcac217b188779828..49a50d4ffcc354ce744d621afb8971f58ff02be3 100644 (file)
@@ -98,7 +98,7 @@ interface Props<T> {
   height: number;
   items: BubbleItem<T>[];
   onBubbleClick?: (ref?: T) => void;
-  padding?: [number, number, number, number];
+  padding: [number, number, number, number];
   sizeDomain?: [number, number];
   sizeRange?: [number, number];
   xDomain?: [number, number];
@@ -122,6 +122,7 @@ export default class BubbleChart<T> extends React.Component<Props<T>, State> {
     displayXTicks: true,
     displayYGrid: true,
     displayYTicks: true,
+    padding: [0, 0, 0, 0],
     sizeRange: [5, 45]
   };
 
@@ -146,7 +147,15 @@ export default class BubbleChart<T> extends React.Component<Props<T>, State> {
   };
 
   zoomed = () => {
-    this.setState({ transform: event.transform });
+    const { padding } = this.props;
+    const { x, y, k } = event.transform as { x: number; y: number; k: number };
+    this.setState({
+      transform: {
+        x: x + padding[3] * (k - 1),
+        y: y + padding[0] * (k - 1),
+        k
+      }
+    });
   };
 
   resetZoom = (event: React.MouseEvent<Link>) => {
index d98be168b61069f8a6a25ab385e2d31d5dc3e636..df39a250e12ba8c4531b80194223d13eff6c9a34 100644 (file)
  */
 import * as React from 'react';
 import { mount } from 'enzyme';
+import { AutoSizerProps } from 'react-virtualized';
 import BubbleChart, { Bubble } from '../BubbleChart';
 
+jest.mock('react-virtualized/dist/commonjs/AutoSizer', () => ({
+  AutoSizer: ({ children }: AutoSizerProps) => children({ width: 100, height: NaN })
+}));
+
 it('should display bubbles', () => {
   const items = [{ x: 1, y: 10, size: 7 }, { x: 2, y: 30, size: 5 }];
   const chart = mount(<BubbleChart height={100} items={items} />);
index 9d69488fbd0c2d458272cee0a3fe661142bc92d8..29a3fd2a7e10ffea75413a686543c4ab7794edc0 100644 (file)
@@ -5,8 +5,8 @@ exports[`should display bubbles 1`] = `
   key="0"
   r={45}
   scale={1}
-  x={-10}
-  y={52.3015873015873}
+  x={33.21428571428572}
+  y={70.07936507936508}
 >
   <Tooltip>
     <g>
@@ -19,7 +19,7 @@ exports[`should display bubbles 1`] = `
             "stroke": undefined,
           }
         }
-        transform="translate(-10, 52.3015873015873) scale(1)"
+        transform="translate(33.21428571428572, 70.07936507936508) scale(1)"
       />
     </g>
   </Tooltip>
@@ -31,7 +31,7 @@ exports[`should display bubbles 2`] = `
   key="1"
   r={33.57142857142857}
   scale={1}
-  x={-75}
+  x={66.42857142857144}
   y={33.57142857142857}
 >
   <Tooltip>
@@ -45,7 +45,7 @@ exports[`should display bubbles 2`] = `
             "stroke": undefined,
           }
         }
-        transform="translate(-75, 33.57142857142857) scale(1)"
+        transform="translate(66.42857142857144, 33.57142857142857) scale(1)"
       />
     </g>
   </Tooltip>
@@ -58,8 +58,8 @@ exports[`should render bubble links 1`] = `
   link="foo"
   r={45}
   scale={1}
-  x={-10}
-  y={52.3015873015873}
+  x={33.21428571428572}
+  y={70.07936507936508}
 >
   <Tooltip>
     <g>
@@ -81,7 +81,7 @@ exports[`should render bubble links 1`] = `
                 "stroke": undefined,
               }
             }
-            transform="translate(-10, 52.3015873015873) scale(1)"
+            transform="translate(33.21428571428572, 70.07936507936508) scale(1)"
           />
         </a>
       </Link>
@@ -96,7 +96,7 @@ exports[`should render bubble links 2`] = `
   link="bar"
   r={33.57142857142857}
   scale={1}
-  x={-75}
+  x={66.42857142857144}
   y={33.57142857142857}
 >
   <Tooltip>
@@ -119,7 +119,7 @@ exports[`should render bubble links 2`] = `
                 "stroke": undefined,
               }
             }
-            transform="translate(-75, 33.57142857142857) scale(1)"
+            transform="translate(66.42857142857144, 33.57142857142857) scale(1)"
           />
         </a>
       </Link>
@@ -135,8 +135,8 @@ exports[`should render bubbles with click handlers 1`] = `
   onClick={[MockFunction]}
   r={45}
   scale={1}
-  x={-10}
-  y={52.3015873015873}
+  x={33.21428571428572}
+  y={70.07936507936508}
 >
   <Tooltip>
     <g>
@@ -150,7 +150,7 @@ exports[`should render bubbles with click handlers 1`] = `
             "stroke": undefined,
           }
         }
-        transform="translate(-10, 52.3015873015873) scale(1)"
+        transform="translate(33.21428571428572, 70.07936507936508) scale(1)"
       />
     </g>
   </Tooltip>
@@ -164,7 +164,7 @@ exports[`should render bubbles with click handlers 2`] = `
   onClick={[MockFunction]}
   r={33.57142857142857}
   scale={1}
-  x={-75}
+  x={66.42857142857144}
   y={33.57142857142857}
 >
   <Tooltip>
@@ -179,7 +179,7 @@ exports[`should render bubbles with click handlers 2`] = `
             "stroke": undefined,
           }
         }
-        transform="translate(-75, 33.57142857142857) scale(1)"
+        transform="translate(66.42857142857144, 33.57142857142857) scale(1)"
       />
     </g>
   </Tooltip>