Added possibility to draw tooltip borders

This commit is contained in:
Marcelo Tedeschi
2017-02-05 22:24:16 +01:00
committed by Evert Timberg
parent e519ea399d
commit af11be3ce4
2 changed files with 101 additions and 1 deletions

View File

@@ -0,0 +1,86 @@
<!doctype html>
<html>
<head>
<title>Tooltip Interaction Modes</title>
<script src="../../dist/Chart.bundle.js"></script>
<script src="../utils.js"></script>
<style>
canvas {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
.chart-container {
width: 70%;
margin-left: 40px;
margin-right: 40px;
margin-bottom: 40px;
}
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
}
</style>
</head>
<body>
<div class="container">
</div>
<script>
function createConfig() {
return {
type: 'line',
data: {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [{
label: "Dataset",
borderColor: window.chartColors.red,
backgroundColor: window.chartColors.red,
data: [10, 30, 46, 2, 8, 50, 0],
fill: false,
}]
},
options: {
responsive: true,
title:{
display: true,
text: 'Sample tooltip with border'
},
tooltips: {
position: 'nearest',
mode: 'index',
intersect: false,
yPadding: 10,
xPadding: 10,
caretSize: 8,
backgroundColor: 'rgba(72, 241, 12, 1)',
titleFontColor: window.chartColors.black,
bodyFontColor: window.chartColors.black,
borderColor: 'rgba(0,0,0,1)',
borderWidth: 4
},
}
};
}
window.onload = function() {
var container = document.querySelector('.container');
var div = document.createElement('div');
div.classList.add('chart-container');
var canvas = document.createElement('canvas');
div.appendChild(canvas);
container.appendChild(div);
var ctx = canvas.getContext('2d');
var config = createConfig();
new Chart(ctx, config);
console.log(config);
};
</script>
</body>
</html>

View File

@@ -38,6 +38,8 @@ module.exports = function(Chart) {
cornerRadius: 6,
multiKeyBackground: '#fff',
displayColors: true,
borderColor: 'rgba(0,0,0,0)',
borderWidth: 0,
callbacks: {
// Args are: (tooltipItems, data)
beforeTitle: helpers.noop,
@@ -176,7 +178,9 @@ module.exports = function(Chart) {
backgroundColor: tooltipOpts.backgroundColor,
opacity: 0,
legendColorBackground: tooltipOpts.multiKeyBackground,
displayColors: tooltipOpts.displayColors
displayColors: tooltipOpts.displayColors,
borderColor: tooltipOpts.borderColor,
borderWidth: tooltipOpts.borderWidth
};
}
@@ -608,11 +612,18 @@ module.exports = function(Chart) {
}
ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);
ctx.lineWidth = vm.borderWidth;
ctx.strokeStyle = vm.borderColor;
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
ctx.lineTo(x3, y3);
ctx.stroke();
ctx.fill();
ctx.closePath();
helpers.drawRoundedRectangle(ctx, ptX, ptY, size.width, size.height, vm.cornerRadius);
ctx.fill();
},
drawTitle: function(pt, vm, ctx, opacity) {
@@ -720,6 +731,9 @@ module.exports = function(Chart) {
drawBackground: function(pt, vm, ctx, tooltipSize, opacity) {
ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);
helpers.drawRoundedRectangle(ctx, pt.x, pt.y, tooltipSize.width, tooltipSize.height, vm.cornerRadius);
ctx.strokeStyle = vm.borderColor;
ctx.lineWidth = vm.borderWidth;
ctx.stroke();
ctx.fill();
},
draw: function() {