Skip to content

Commit f8af7ea

Browse files
author
Robert Crocker
committed
Moved the get browser code to the utils file and Updated the distance from top logic in the pie chart.
1 parent 37f3227 commit f8af7ea

File tree

3 files changed

+39
-33
lines changed

3 files changed

+39
-33
lines changed

src/components/Arc.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable @typescript-eslint/restrict-plus-operands */
12
import React from 'react';
23

34
import { ArcProps } from '../../types';
@@ -14,7 +15,6 @@ export const Arc = React.memo(
1415
margin,
1516
cWidth,
1617
}: ArcProps): JSX.Element => {
17-
1818
let tooltipState = {
1919
cursorX: 0,
2020
cursorY: 0,
@@ -26,13 +26,14 @@ export const Arc = React.memo(
2626
const onMouseMove = (e: any) => {
2727
if (setTooltip) {
2828
tooltipState = {
29-
cursorX: e.pageX,
30-
cursorY: e.pageY,
31-
distanceFromTop: e.clientY,
32-
distanceFromRight: (margin.left + cWidth + margin.right) - cWidth,
29+
cursorX: e.nativeEvent.pageX,
30+
cursorY: e.nativeEvent.pageY,
31+
distanceFromTop: e.nativeEvent.pageY - e.clientY + e.clientY,
32+
distanceFromRight: margin.left + cWidth + margin.right - cWidth,
3333
distanceFromLeft: e.pageX,
3434
data,
3535
};
36+
3637
setTooltip(tooltipState);
3738
}
3839
};

src/components/ListeningRect.tsx

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
xAccessorFunc,
88
yAccessorFunc,
99
} from '../../types';
10+
import { getBrowser } from '../utils';
1011

1112
export default function ListeningRect({
1213
data,
@@ -66,32 +67,6 @@ export default function ListeningRect({
6667
};
6768

6869
function onMouseMove(e: any) {
69-
let sBrowser;
70-
const sUsrAg = navigator.userAgent;
71-
if (sUsrAg.indexOf('Firefox') > -1) {
72-
sBrowser = 'Mozilla Firefox';
73-
// "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
74-
} else if (sUsrAg.indexOf('SamsungBrowser') > -1) {
75-
sBrowser = 'Samsung Internet';
76-
// "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36
77-
} else if (sUsrAg.indexOf('Opera') > -1 || sUsrAg.indexOf('OPR') > -1) {
78-
sBrowser = 'Opera';
79-
// "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106"
80-
} else if (sUsrAg.indexOf('Trident') > -1) {
81-
sBrowser = 'Microsoft Internet Explorer';
82-
// "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko"
83-
} else if (sUsrAg.indexOf('Edge') > -1) {
84-
sBrowser = 'Microsoft Edge';
85-
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"
86-
} else if (sUsrAg.indexOf('Chrome') > -1) {
87-
sBrowser = 'Chrome';
88-
// "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36"
89-
} else if (sUsrAg.indexOf('Safari') > -1) {
90-
sBrowser = 'Safari';
91-
// "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306"
92-
} else {
93-
sBrowser = 'unknown';
94-
}
9570
const mousePosition = d3.pointer(e);
9671
const hoveredX = xScale.invert(mousePosition[0]);
9772
const hoveredY = yScale.invert(mousePosition[1]);
@@ -115,7 +90,7 @@ export default function ListeningRect({
11590
closestXValue = xAccessor(closestDataPoint);
11691

11792
tooltipState.cursorX =
118-
sBrowser === 'Chrome'
93+
getBrowser() === 'Chrome'
11994
? e.nativeEvent.pageX - e.nativeEvent.layerX + xScale(closestXValue)
12095
: e.nativeEvent.pageX - e.nativeEvent.offsetX + xScale(closestXValue);
12196
}
@@ -143,7 +118,7 @@ export default function ListeningRect({
143118
closestYValue = layers[closestYIndex][closestXIndex][1];
144119

145120
tooltipState.cursorY =
146-
sBrowser === 'Chrome'
121+
getBrowser() === 'Chrome'
147122
? e.pageY - e.nativeEvent.layerY + yScale(closestYValue)
148123
: e.pageY - e.nativeEvent.offsetY + yScale(closestYValue);
149124

src/utils.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,36 @@ export const themes = {
2424
dark: DarkTheme,
2525
};
2626

27+
export function getBrowser() {
28+
let browser;
29+
const sUsrAg = navigator.userAgent;
30+
if (sUsrAg.indexOf('Firefox') > -1) {
31+
browser = 'Mozilla Firefox';
32+
// "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
33+
} else if (sUsrAg.indexOf('SamsungBrowser') > -1) {
34+
browser = 'Samsung Internet';
35+
// "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36
36+
} else if (sUsrAg.indexOf('Opera') > -1 || sUsrAg.indexOf('OPR') > -1) {
37+
browser = 'Opera';
38+
// "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106"
39+
} else if (sUsrAg.indexOf('Trident') > -1) {
40+
browser = 'Microsoft Internet Explorer';
41+
// "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko"
42+
} else if (sUsrAg.indexOf('Edge') > -1) {
43+
browser = 'Microsoft Edge';
44+
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"
45+
} else if (sUsrAg.indexOf('Chrome') > -1) {
46+
browser = 'Chrome';
47+
// "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36"
48+
} else if (sUsrAg.indexOf('Safari') > -1) {
49+
browser = 'Safari';
50+
// "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306"
51+
} else {
52+
browser = 'unknown';
53+
}
54+
return browser;
55+
}
56+
2757
export const EXTRA_LEGEND_MARGIN = 6;
2858

2959
export function getXAxisCoordinates(

0 commit comments

Comments
 (0)