|
|
require(["dojo/ready", "dojo/_base/array", "dojo/dom-construct", |
"dojo/on", "dojo/query", "dojo/dom", "dojo/_base/lang", |
"dojo/dom-attr", "dojo/dom-class", "dojo/dom-style", |
"dojo/dom-geometry", |
"dojo/parser"], function(ready, array, domConstruct, on, query, |
dom, lang, domAttr, domClass, domStyle, domGeom) { |
ready(function() { |
|
tooltipTimer = null; |
|
array.forEach(query("[data-tooltip]"), function(node, index) { |
|
on(node, "mouseover", displayTooltip); |
on(node, "mouseout", hideTooltip); |
domAttr.set(node, "data-tooltip-registered", "true"); |
}); |
|
|
|
function displayTooltip(e) { |
|
function display(e) { |
|
var node = e.target; |
var tooltipValue = domAttr.get(node, "data-tooltip"); |
|
|
|
if (tooltipValue.length > 0) { |
|
domClass.add(node, "relative"); |
|
var tooltipTemplate = "<div id='globalTooltip' |
class='absolute no-wrap'></div>"; |
|
domConstruct.place(tooltipTemplate, node, "first"); |
|
var tooltip = dom.byId("globalTooltip"); |
tooltip.innerHTML = tooltipValue; |
|
var coords = domGeom.getContentBox(node); |
|
domStyle.set(tooltip, { |
left: 40 + "px", |
top: +(coords.h + 6) + "px" |
}); |
|
tooltip.innerHTML = tooltipValue; |
|
|
|
|
if (domStyle.get(tooltip, "width") > 300) { |
|
domClass.remove(tooltip, "no-wrap"); |
domClass.add(tooltip, "width-300"); |
domClass.add(tooltip, "wrap-normal"); |
} |
} |
} |
|
tooltipTimer = setTimeout(lang.partial(display, e), 500); |
} |
|
function hideTooltip(e) { |
clearTimeout(tooltipTimer); |
var node = e.target; |
domClass.remove(node, "relative"); |
domConstruct.destroy("globalTooltip"); |
} |
|
}); |
}); |