BUG-14909 The element tooltip dynaform is not displayed properly when you have scroll bars, this problem is given in Chrome and Safari. SOLVED

This commit is contained in:
Roly Rudy Gutierrez Pinto
2014-05-12 16:59:45 -04:00
parent d03a58fb0c
commit f0f696deda

View File

@@ -14,76 +14,43 @@
var tooltip_is_msie = (navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all)?true:false; var tooltip_is_msie = (navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all)?true:false;
function showTooltip(e,tooltipTxt){ function showTooltip(e,tooltipTxt){
var bodyWidth = Math.max(document.body.clientWidth,document.documentElement.clientWidth) - 20; if (!pmtooltip) {
pmtooltip = document.createElement('DIV');
if(!pmtooltip){ pmtooltip.id = 'pmtooltip';
pmtooltip = document.createElement('DIV'); pmtooltipShadow = document.createElement('DIV');
pmtooltip.id = 'pmtooltip'; pmtooltipShadow.id = 'pmtooltipShadow';
pmtooltipShadow = document.createElement('DIV'); document.body.appendChild(pmtooltip);
pmtooltipShadow.id = 'pmtooltipShadow'; document.body.appendChild(pmtooltipShadow);
}
document.body.appendChild(pmtooltip); var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
document.body.appendChild(pmtooltipShadow); var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
var xOffset = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
if(tooltip_is_msie){ var yOffset = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
pmiframe = document.createElement('IFRAME'); var length = tooltipTxt.length * 4.5;
pmiframe.frameborder='5'; if (length < 100)
pmiframe.style.backgroundColor='#FFFFFF'; length = 100;
pmiframe.src = '#'; if (length > 400)
pmiframe.style.zIndex = 100; length = 400;
pmiframe.style.position = 'absolute'; var x = e.clientX + 10 + xOffset;
document.body.appendChild(pmiframe); var y = e.clientY + 5 + yOffset;
} if (x + length > w) {
x = x - length - 20;
} }
pmtooltip.style.display = 'block';
pmtooltip.style.display='block'; pmtooltip.innerHTML = tooltipTxt;
pmtooltipShadow.style.display='block'; pmtooltip.style.left = x + 'px';
if(tooltip_is_msie)pmiframe.style.display='block'; pmtooltip.style.top = y + 'px';
pmtooltip.style.width = length + 'px';
var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop); pmtooltipShadow.style.display = 'block';
if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; pmtooltipShadow.style.left = (x + pmshadowSize) + 'px';
var leftPos = e.clientX + 10; pmtooltipShadow.style.top = (y + pmshadowSize) + 'px';
pmtooltipShadow.style.width = pmtooltip.offsetWidth + 'px';
pmtooltip.style.width = null; // Reset style width if it's set pmtooltipShadow.style.height = pmtooltip.offsetHeight + 'px';
pmtooltip.innerHTML = tooltipTxt;
pmtooltip.style.left = leftPos + 5 + 'px';
pmtooltip.style.top = e.clientY + st + 'px';
pmtooltipShadow.style.left = leftPos + pmshadowSize + 'px';
pmtooltipShadow.style.top = e.clientY + st + pmshadowSize + 'px';
if(pmtooltip.offsetWidth>pmtooltipMaxWidth){ /* Exceeding max width of tooltip ? */
pmtooltip.style.width = pmtooltipMaxWidth + 'px';
}
var tooltipWidth = pmtooltip.offsetWidth;
if(tooltipWidth<pmtooltipMinWidth)tooltipWidth = pmtooltipMinWidth;
pmtooltip.style.width = tooltipWidth + 'px';
pmtooltipShadow.style.width = pmtooltip.offsetWidth + 'px';
pmtooltipShadow.style.height = pmtooltip.offsetHeight + 'px';
if((leftPos + tooltipWidth)>bodyWidth){
pmtooltip.style.left = (pmtooltipShadow.style.left.replace('px','') - ((leftPos + tooltipWidth)-bodyWidth)) + 'px';
pmtooltipShadow.style.left = (pmtooltipShadow.style.left.replace('px','') - ((leftPos + tooltipWidth)-bodyWidth) + pmshadowSize) + 'px';
}
if(tooltip_is_msie){
pmiframe.style.left = pmtooltip.style.left;
pmiframe.style.top = pmtooltip.style.top;
pmiframe.style.width = pmtooltip.offsetWidth + 'px';
pmiframe.style.height = pmtooltip.offsetHeight + 'px';
}
} }
function hideTooltip(){ function hideTooltip(){
pmtooltip.style.display='none'; pmtooltip.style.display='none';
pmtooltipShadow.style.display='none'; pmtooltipShadow.style.display='none';
if(tooltip_is_msie)pmiframe.style.display='none';
} }