@@ -48,40 +48,14 @@ class OverlayManager implements OverlayManagerClass {
48
48
/** Collection of currely open overlays */
49
49
private openOverlays : OpenOverlay [ ] = [ ] ;
50
50
51
- constructor ( private context : Context , private rowHolder : SVGGElement ) {
51
+ constructor ( private context : Context ) {
52
52
}
53
53
54
54
/** all open overlays height combined */
55
55
public getCombinedOverlayHeight ( ) : number {
56
56
return this . openOverlays . reduce ( ( pre , curr ) => pre + curr . height , 0 ) ;
57
57
}
58
58
59
- /**
60
- * Get ref to Overlay SVG Element in DOM.
61
- *
62
- * _Item might be re-drawn, when another Overlay is changed_
63
- */
64
- public getOpenOverlayDomEl ( overlay : OpenOverlay ) {
65
- return this . rowHolder . querySelector ( `.overlay-index-${ overlay . index } ` ) as SVGGElement ;
66
- }
67
-
68
- /**
69
- * Get ref to the last (DOM element wise) Overlay SVG Element in DOM.
70
- *
71
- * _Item might be re-drawn, when another Overlay is changed_
72
- */
73
- public getLastOpenOverlayDomEl ( ) {
74
- const overlays = this . rowHolder . querySelectorAll ( ".info-overlay-holder" ) ;
75
- return overlays . item ( overlays . length - 1 ) as SVGGElement ;
76
- }
77
-
78
- /**
79
- * Are any overlays currently open?
80
- */
81
- public hasOpenOverlays ( ) {
82
- return this . openOverlays . length > 0 ;
83
- }
84
-
85
59
/**
86
60
* Opens an overlay - rerenders others internaly
87
61
*/
@@ -111,7 +85,6 @@ class OverlayManager implements OverlayManagerClass {
111
85
"openOverlays" : self . openOverlays ,
112
86
"type" : "open" ,
113
87
} as OverlayChangeEvent ) ;
114
- this . realignBars ( rowItems ) ;
115
88
}
116
89
117
90
/**
@@ -142,32 +115,19 @@ class OverlayManager implements OverlayManagerClass {
142
115
"openOverlays" : self . openOverlays ,
143
116
"type" : "closed" ,
144
117
} as OverlayChangeEvent ) ;
145
- this . realignBars ( rowItems ) ;
146
118
}
147
119
148
120
/**
149
- * sets the offset for request-bars
150
- * @param {SVGAElement[] } rowItems
121
+ * Sets the offset for a request-bar
122
+ * @param {SVGAElement[] } rowItems
123
+ * @param {number } offset
151
124
*/
152
- private realignBars ( rowItems : SVGAElement [ ] ) {
153
- rowItems . forEach ( ( bar , j ) => {
154
- let offset = this . getOverlayOffset ( j ) ;
155
- bar . setAttribute ( "transform" , `translate(0, ${ offset } )` ) ;
156
- } ) ;
157
- }
158
-
159
- /** y offset to it's default y position */
160
- private getOverlayOffset ( rowIndex : number ) : number {
161
- return this . openOverlays . reduce ( ( col , overlay ) => {
162
- if ( overlay . index < rowIndex ) {
163
- return col + overlay . height ;
164
- }
165
- return col ;
166
- } , 0 ) ;
125
+ private realignRow = ( rowItem : SVGAElement , offset : number ) => {
126
+ rowItem . setAttribute ( "transform" , `translate(0, ${ offset } )` ) ;
167
127
}
168
128
169
129
/**
170
- * removes all overlays and renders them again
130
+ * Renders / Adjusts Overlays
171
131
*
172
132
* @summary this is to re-set the "y" position since there is a bug in chrome with
173
133
* tranform of an SVG and positioning/scoll of a foreignObjects
@@ -178,6 +138,7 @@ class OverlayManager implements OverlayManagerClass {
178
138
/** shared variable to keep track of heigth */
179
139
let currY = 0 ;
180
140
let updateHeight = ( overlay , y , currHeight ) => {
141
+ // console.log(currY, currHeight);
181
142
currY += currHeight ;
182
143
overlay . actualY = y ;
183
144
overlay . height = currHeight ;
@@ -198,11 +159,11 @@ class OverlayManager implements OverlayManagerClass {
198
159
overlayHolder . appendChild ( infoOverlay ) ;
199
160
updateHeight ( overlay , y , infoOverlay . getBoundingClientRect ( ) . height ) ;
200
161
} ;
201
-
202
- // const rowItems = this.rowHolder.getElementsByClassName("row-item") as NodeListOf<SVGAElement>;
203
162
rowItems . forEach ( ( rowItem , index ) => {
204
163
const overlay = find ( this . openOverlays , ( o ) => o . index === index ) ;
205
164
const overlayEl = rowItem . nextElementSibling . firstElementChild as SVGGElement ;
165
+ this . realignRow ( rowItem , currY ) ;
166
+
206
167
if ( overlay === undefined ) {
207
168
if ( overlayEl ) {
208
169
// remove closed overlay
@@ -216,8 +177,10 @@ class OverlayManager implements OverlayManagerClass {
216
177
}
217
178
if ( overlayEl ) {
218
179
updateHeight ( overlay , overlay . defaultY + currY , overlay . height ) ;
219
- const fo = overlayEl . getElementsByTagName ( "foreignObject" ) . item ( 0 ) as SVGForeignObjectElement ;
180
+ const fo = overlayEl . querySelector ( "foreignObject" ) ;
181
+ const bg = overlayEl . querySelector ( ".info-overlay-bg" ) ;
220
182
fo . setAttribute ( "y" , overlay . actualY . toString ( ) ) ;
183
+ bg . setAttribute ( "y" , overlay . actualY . toString ( ) ) ;
221
184
return ;
222
185
}
223
186
addNewOverlay ( rowItem . nextElementSibling as SVGGElement , overlay ) ;
0 commit comments