Skip to content

Commit bf93c4c

Browse files
authored
Merge pull request #92 from oslabs-beta/tooltiprollback
Implemented functionality for Safari and Firefox
2 parents 59b8422 + db6447a commit bf93c4c

File tree

6 files changed

+40
-13
lines changed

6 files changed

+40
-13
lines changed

src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ function App() {
4646
xAxisLabel="GDP per capita"
4747
yKey="Life expectancy"
4848
yGrid={true}
49-
yAxis="right"
49+
yAxis="left"
5050
yAxisLabel="Life Expectancy"
5151
/>
5252
<LineChart

src/components/Arc.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from 'react';
2-
import * as d3 from 'd3';
32

43
import { ArcProps } from '../../types';
54
import useWindowDimensions from '../hooks/useWindowDimensions';

src/components/ListeningRect.tsx

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,32 @@ export default function ListeningRect({
6666
};
6767

6868
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+
}
6995
const mousePosition = d3.pointer(e);
7096
const hoveredX = xScale.invert(mousePosition[0]);
7197
const hoveredY = yScale.invert(mousePosition[1]);
@@ -88,8 +114,9 @@ export default function ListeningRect({
88114
const closestDataPoint = data[closestXIndex];
89115
closestXValue = xAccessor(closestDataPoint);
90116

91-
tooltipState.cursorX =
92-
e.nativeEvent.pageX - e.nativeEvent.layerX + xScale(closestXValue);
117+
tooltipState.cursorX = sBrowser === 'Chrome'
118+
? e.nativeEvent.pageX - e.nativeEvent.layerX + xScale(closestXValue)
119+
: e.nativeEvent.pageX - e.nativeEvent.offsetX + xScale(closestXValue)
93120
}
94121

95122
// ****************************************
@@ -113,8 +140,10 @@ export default function ListeningRect({
113140
if (typeof closestYIndex === 'number') {
114141
if (typeof closestXIndex === 'number') {
115142
closestYValue = layers[closestYIndex][closestXIndex][1];
116-
tooltipState.cursorY =
117-
e.pageY - e.nativeEvent.layerY + yScale(closestYValue);
143+
144+
tooltipState.cursorY = sBrowser === "Chrome" ?
145+
e.pageY - e.nativeEvent.layerY + yScale(closestYValue)
146+
: e.pageY - e.nativeEvent.offsetY + yScale(closestYValue)
118147

119148
tooltipState.data = {
120149
[xKey]: closestXValue,

src/components/Rectangle.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ const RectangleComp = ({
3434
// of the bar width to the cursor position to calculate the distance from
3535
// right hand side of the page. When the cursor enters the bar from the
3636
// right side of the bar we need to substract half of the bar width.
37-
const offsetFromLeft = e.pageX - e.nativeEvent.layerX;
38-
const offsetFromTop = e.clientY - e.nativeEvent.layerY;
37+
const offsetFromLeft = e.pageX - e.nativeEvent.offsetX;
38+
const offsetFromTop = e.clientY - e.nativeEvent.offsetY;
3939
const rectMidPoint = (x ?? 0) + width / 2;
4040
const rectTop = y ?? 0;
4141

4242
if (setTooltip) {
4343
tooltipState = {
44-
cursorX: e.pageX - e.nativeEvent.layerX + (x ?? 0),
45-
cursorY: e.pageY - e.nativeEvent.layerY + (y ?? 0),
44+
cursorX: e.pageX - e.nativeEvent.offsetX + (x ?? 0),
45+
cursorY: e.pageY - e.nativeEvent.offsetY + (y ?? 0),
4646
distanceFromTop: offsetFromTop + margin.top + rectTop,
4747
distanceFromRight:
4848
clientWidth - (offsetFromLeft + margin.left + rectMidPoint),

src/components/VoronoiCell.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ export const VoronoiCell = ({
4040

4141
const onMouseMove = (e: any) => {
4242
const tooltipState = {
43-
cursorX: e.nativeEvent.pageX - e.nativeEvent.layerX + cellCenter.cx,
44-
cursorY: e.nativeEvent.pageY - e.nativeEvent.layerY + cellCenter.cy,
43+
cursorX: e.nativeEvent.pageX - e.nativeEvent.offsetX + cellCenter.cx,
44+
cursorY: e.nativeEvent.pageY - e.nativeEvent.offsetY + cellCenter.cy,
4545
distanceFromTop: 0,
4646
distanceFromRight: 0,
4747
distanceFromLeft: 0,

src/components/VoronoiWrapper.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React from 'react';
22
import { Data, VoronoiBody } from '../../types';
33
import { VoronoiCell } from './VoronoiCell';
4-
import useWindowDimensions from '../hooks/useWindowDimensions';
54

65
export const VoronoiWrapper = React.memo(
76
({

0 commit comments

Comments
 (0)