Created
March 19, 2019 00:43
-
-
Save rwbrockhoff/58281436553ea987dd289895f287d14d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tooltips: { | |
// Disable the on-canvas tooltip | |
enabled: false, | |
custom: function(tooltipModel) { | |
// Tooltip Element | |
var tooltipEl = document.getElementById('chartjs-tooltip'); | |
// Create element on first render | |
if (!tooltipEl) { | |
tooltipEl = document.createElement('div'); | |
tooltipEl.id = 'chartjs-tooltip'; | |
tooltipEl.innerHTML = '<table></table>'; | |
document.body.appendChild(tooltipEl); | |
} | |
// Hide if no tooltip | |
if (tooltipModel.opacity === 0) { | |
tooltipEl.style.opacity = 0; | |
return; | |
} | |
// Set caret Position | |
tooltipEl.classList.remove('above', 'below', 'no-transform'); | |
if (tooltipModel.yAlign) { | |
tooltipEl.classList.add(tooltipModel.yAlign); | |
} else { | |
tooltipEl.classList.add('no-transform'); | |
} | |
function getBody(bodyItem) { | |
return bodyItem.lines; | |
} | |
// Set Text | |
if (tooltipModel.body) { | |
var titleLines = tooltipModel.title || []; | |
var bodyLines = tooltipModel.body.map(getBody); | |
var innerHtml = '<thead>'; | |
titleLines.forEach(function(title) { | |
innerHtml += '<tr><th>' + title + '</th></tr>'; | |
}); | |
innerHtml += '</thead><tbody>'; | |
bodyLines.forEach(function(body, i) { | |
var colors = tooltipModel.labelColors[i]; | |
var style = 'background:' + colors.backgroundColor; | |
style += '; border-color:' + colors.borderColor; | |
style += '; border-width: 2px'; | |
var span = '<span style="' + style + '"></span>'; | |
innerHtml += '<tr><td>' + span + body + '</td></tr>'; | |
}); | |
innerHtml += '</tbody>'; | |
var tableRoot = tooltipEl.querySelector('table'); | |
tableRoot.innerHTML = innerHtml; | |
} | |
// `this` will be the overall tooltip | |
var position = this._chart.canvas.getBoundingClientRect(); | |
// Display, position, and set styles for font | |
tooltipEl.style.opacity = 1; | |
tooltipEl.style.position = 'absolute'; | |
tooltipEl.style.left = position.left + window.pageXOffset + tooltipModel.caretX + 'px'; | |
tooltipEl.style.top = position.top + window.pageYOffset + tooltipModel.caretY + 'px'; | |
tooltipEl.style.fontFamily = tooltipModel._bodyFontFamily; | |
tooltipEl.style.fontSize = tooltipModel.bodyFontSize + 'px'; | |
tooltipEl.style.fontStyle = tooltipModel._bodyFontStyle; | |
tooltipEl.style.padding = tooltipModel.yPadding + 'px ' + tooltipModel.xPadding + 'px'; | |
tooltipEl.style.pointerEvents = 'none'; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment