@@ -48,40 +48,14 @@ class OverlayManager implements OverlayManagerClass {
4848 /** Collection of currely open overlays */
4949 private openOverlays : OpenOverlay [ ] = [ ] ;
5050
51- constructor ( private context : Context , private rowHolder : SVGGElement ) {
51+ constructor ( private context : Context ) {
5252 }
5353
5454 /** all open overlays height combined */
5555 public getCombinedOverlayHeight ( ) : number {
5656 return this . openOverlays . reduce ( ( pre , curr ) => pre + curr . height , 0 ) ;
5757 }
5858
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-
8559 /**
8660 * Opens an overlay - rerenders others internaly
8761 */
@@ -111,7 +85,6 @@ class OverlayManager implements OverlayManagerClass {
11185 "openOverlays" : self . openOverlays ,
11286 "type" : "open" ,
11387 } as OverlayChangeEvent ) ;
114- this . realignBars ( rowItems ) ;
11588 }
11689
11790 /**
@@ -142,32 +115,19 @@ class OverlayManager implements OverlayManagerClass {
142115 "openOverlays" : self . openOverlays ,
143116 "type" : "closed" ,
144117 } as OverlayChangeEvent ) ;
145- this . realignBars ( rowItems ) ;
146118 }
147119
148120 /**
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
151124 */
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 } )` ) ;
167127 }
168128
169129 /**
170- * removes all overlays and renders them again
130+ * Renders / Adjusts Overlays
171131 *
172132 * @summary this is to re-set the "y" position since there is a bug in chrome with
173133 * tranform of an SVG and positioning/scoll of a foreignObjects
@@ -178,6 +138,7 @@ class OverlayManager implements OverlayManagerClass {
178138 /** shared variable to keep track of heigth */
179139 let currY = 0 ;
180140 let updateHeight = ( overlay , y , currHeight ) => {
141+ // console.log(currY, currHeight);
181142 currY += currHeight ;
182143 overlay . actualY = y ;
183144 overlay . height = currHeight ;
@@ -198,11 +159,11 @@ class OverlayManager implements OverlayManagerClass {
198159 overlayHolder . appendChild ( infoOverlay ) ;
199160 updateHeight ( overlay , y , infoOverlay . getBoundingClientRect ( ) . height ) ;
200161 } ;
201-
202- // const rowItems = this.rowHolder.getElementsByClassName("row-item") as NodeListOf<SVGAElement>;
203162 rowItems . forEach ( ( rowItem , index ) => {
204163 const overlay = find ( this . openOverlays , ( o ) => o . index === index ) ;
205164 const overlayEl = rowItem . nextElementSibling . firstElementChild as SVGGElement ;
165+ this . realignRow ( rowItem , currY ) ;
166+
206167 if ( overlay === undefined ) {
207168 if ( overlayEl ) {
208169 // remove closed overlay
@@ -216,8 +177,10 @@ class OverlayManager implements OverlayManagerClass {
216177 }
217178 if ( overlayEl ) {
218179 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" ) ;
220182 fo . setAttribute ( "y" , overlay . actualY . toString ( ) ) ;
183+ bg . setAttribute ( "y" , overlay . actualY . toString ( ) ) ;
221184 return ;
222185 }
223186 addNewOverlay ( rowItem . nextElementSibling as SVGGElement , overlay ) ;
0 commit comments