@@ -2,14 +2,26 @@ import { addClass, getParentByClassName, removeClass } from "../../helpers/dom";
2
2
import * as svg from "../../helpers/svg" ;
3
3
import { RectData } from "../../typing/rect-data" ;
4
4
5
+ const translateYRegEx = / t r a n s l a t e \( \d + [ , ] + ( \d + ) \) / ;
6
+
7
+ const getTranslateY = ( str : string = "" ) => {
8
+ const res = translateYRegEx . exec ( str ) ;
9
+ if ( res && res . length >= 2 ) {
10
+ return parseInt ( res [ 1 ] , 10 ) ;
11
+ }
12
+ return 0 ;
13
+ } ;
14
+
5
15
/** static event-handler to show tooltip */
6
16
export const onHoverInShowTooltip = ( base : SVGRectElement , rectData : RectData , foreignEl : SVGForeignObjectElement ) => {
7
17
console . log ( "onHoverInShowTooltip" ) ;
8
18
const offsetX = 5 ;
9
19
let offsetY = 5 ;
10
20
const innerDiv = foreignEl . firstElementChild as HTMLDivElement ;
21
+ const row = getParentByClassName ( base , "row-item" ) as SVGAElement ;
22
+ const yTransformOffest = getTranslateY ( row . getAttribute ( "transform" ) ) ;
11
23
const y = base . getAttribute ( "y" ) ;
12
- const yNum = parseInt ( y , 10 ) ;
24
+ const yNum = parseInt ( base . getAttribute ( "y" ) , 10 ) ;
13
25
let x = base . getAttribute ( "x" ) ;
14
26
const xPercInt = parseFloat ( x ) ;
15
27
const rowWidth = base . width . baseVal . value || base . getBoundingClientRect ( ) . width ;
@@ -41,7 +53,7 @@ export const onHoverInShowTooltip = (base: SVGRectElement, rectData: RectData, f
41
53
} else {
42
54
offsetY = - height ;
43
55
}
44
- foreignEl . style . transform = `translate(${ offsetX } px, ${ offsetY } px)` ;
56
+ foreignEl . style . transform = `translate(${ offsetX } px, ${ offsetY + yTransformOffest } px)` ;
45
57
foreignEl . setAttribute ( "height" , height . toString ( ) ) ;
46
58
foreignEl . style . opacity = "1" ;
47
59
// foreignEl.style.display = "block";
0 commit comments