MCPcopy Create free account
hub / github.com/DHTMLX/scheduler / _calculateTooltipPosition

Method _calculateTooltipPosition

codebase/sources/dhtmlxscheduler.js:20869–20917  ·  view source on GitHub ↗
(event2)

Source from the content-addressed store, hash-verified

20867 return this._root || document.body;
20868 }
20869 _calculateTooltipPosition(event2) {
20870 const scheduler2 = this._scheduler;
20871 const domHelpers = scheduler2.$domHelpers;
20872 const viewport = this._getViewPortSize();
20873 const tooltipNode = this.getNode();
20874 const tooltip2 = { top: 0, left: 0, width: tooltipNode.offsetWidth, height: tooltipNode.offsetHeight, bottom: 0, right: 0 };
20875 const offsetX = scheduler2.config.tooltip_offset_x;
20876 const offsetY = scheduler2.config.tooltip_offset_y;
20877 const container = document.body;
20878 const mouse = domHelpers.getRelativeEventPosition(event2, container);
20879 const containerPos = domHelpers.getNodePosition(container);
20880 mouse.y += containerPos.y;
20881 tooltip2.top = mouse.y;
20882 tooltip2.left = mouse.x;
20883 tooltip2.top += offsetY;
20884 tooltip2.left += offsetX;
20885 tooltip2.bottom = tooltip2.top + tooltip2.height;
20886 tooltip2.right = tooltip2.left + tooltip2.width;
20887 const scrollTop = window.scrollY + container.scrollTop;
20888 if (tooltip2.top < viewport.top - scrollTop) {
20889 tooltip2.top = viewport.top;
20890 tooltip2.bottom = tooltip2.top + tooltip2.height;
20891 } else if (tooltip2.bottom > viewport.bottom) {
20892 tooltip2.bottom = viewport.bottom;
20893 tooltip2.top = tooltip2.bottom - tooltip2.height;
20894 }
20895 if (tooltip2.left < viewport.left) {
20896 tooltip2.left = viewport.left;
20897 tooltip2.right = viewport.left + tooltip2.width;
20898 } else if (tooltip2.right > viewport.right) {
20899 tooltip2.right = viewport.right;
20900 tooltip2.left = tooltip2.right - tooltip2.width;
20901 }
20902 if (mouse.x >= tooltip2.left && mouse.x <= tooltip2.right) {
20903 tooltip2.left = mouse.x - tooltip2.width - offsetX;
20904 tooltip2.right = tooltip2.left + tooltip2.width;
20905 }
20906 if (mouse.y >= tooltip2.top && mouse.y <= tooltip2.bottom) {
20907 tooltip2.top = mouse.y - tooltip2.height - offsetY;
20908 tooltip2.bottom = tooltip2.top + tooltip2.height;
20909 }
20910 if (tooltip2.left < 0) {
20911 tooltip2.left = 0;
20912 }
20913 if (tooltip2.right < 0) {
20914 tooltip2.right = 0;
20915 }
20916 return tooltip2;
20917 }
20918 _getViewPortSize() {
20919 const scheduler2 = this._scheduler;
20920 const domHelpers = scheduler2.$domHelpers;

Callers 1

showMethod · 0.95

Calls 2

_getViewPortSizeMethod · 0.95
getNodeMethod · 0.95

Tested by

no test coverage detected