|
76 | 76 |
|
77 | 77 | function heroTooltipPlugin(timestamps) { |
78 | 78 | var tooltip; |
| 79 | + var overEl; |
79 | 80 | function init(u) { |
| 81 | + overEl = u.over; |
80 | 82 | tooltip = document.createElement('div'); |
81 | 83 | tooltip.className = 'uplot-tooltip'; |
82 | 84 | tooltip.style.display = 'none'; |
83 | | - u.over.appendChild(tooltip); |
| 85 | + tooltip.style.position = 'fixed'; |
| 86 | + document.body.appendChild(tooltip); |
84 | 87 | } |
85 | 88 | function setCursor(u) { |
86 | 89 | var idx = u.cursor.idx; |
|
114 | 117 | tooltip.style.background = c.tooltipBg; |
115 | 118 | tooltip.style.color = c.text; |
116 | 119 | tooltip.style.border = '1px solid ' + c.tooltipBorder; |
117 | | - var left = u.cursor.left; |
118 | | - var top = u.cursor.top; |
| 120 | + var rect = overEl.getBoundingClientRect(); |
| 121 | + var left = rect.left + u.cursor.left; |
| 122 | + var top = rect.top + u.cursor.top; |
119 | 123 | var tw = tooltip.offsetWidth; |
120 | 124 | var th = tooltip.offsetHeight; |
121 | 125 | var x = left + 12; |
122 | 126 | var y = top - th - 8; |
123 | | - if (x + tw > u.over.offsetWidth) x = left - tw - 12; |
| 127 | + if (x + tw > window.innerWidth) x = left - tw - 12; |
124 | 128 | if (y < 0) y = top + 12; |
125 | 129 | tooltip.style.left = x + 'px'; |
126 | 130 | tooltip.style.top = y + 'px'; |
127 | 131 | } |
128 | | - return { hooks: { init: [init], setCursor: [setCursor] } }; |
| 132 | + function destroy() { |
| 133 | + if (tooltip && tooltip.parentNode) tooltip.parentNode.removeChild(tooltip); |
| 134 | + } |
| 135 | + return { hooks: { init: [init], setCursor: [setCursor], destroy: [destroy] } }; |
129 | 136 | } |
130 | 137 |
|
131 | 138 | function formatHeroDate(ts) { |
|
0 commit comments