Chart.js/test/fixtures/plugin.tooltip/opacity.js
Jukka Kurkela a6b3b99675
Fix tooltip positioning issues (#8646)
* Fix tooltip positioning issues

* Update fixture, add npm run dev:ff

* Refactor determineXAlign

* Simplify more

* remove unneeded change
2021-03-16 08:06:05 -04:00

108 lines
2.6 KiB
JavaScript

var patternCanvas = document.createElement('canvas');
var patternContext = patternCanvas.getContext('2d');
patternCanvas.width = 6;
patternCanvas.height = 6;
patternContext.fillStyle = '#ff0000';
patternContext.fillRect(0, 0, 6, 6);
patternContext.fillStyle = '#ffff00';
patternContext.fillRect(0, 0, 4, 4);
var pattern = patternContext.createPattern(patternCanvas, 'repeat');
var gradient;
module.exports = {
config: {
type: 'line',
data: {
datasets: [{
data: [8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8],
pointBorderColor: '#ff0000',
pointBackgroundColor: '#00ff00',
showLine: false
}, {
label: '',
data: [4, 4, 4, 4, 4, 5, 3, 4, 4, 4, 4],
pointBorderColor: pattern,
pointBackgroundColor: pattern,
showLine: false
}, {
label: '',
data: [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
showLine: false
}],
labels: ['', '', '', '', '', '', '', '', '', '', '']
},
options: {
scales: {
x: {display: false},
y: {display: false}
},
elements: {
line: {
fill: false
}
},
plugins: {
legend: false,
title: false,
filler: false,
tooltip: {
mode: 'nearest',
intersect: false,
callbacks: {
label: function() {
return '\u200b';
},
}
},
},
layout: {
padding: 15
}
},
plugins: [{
beforeDatasetsUpdate: function(chart) {
if (!gradient) {
gradient = chart.ctx.createLinearGradient(0, 0, 512, 256);
gradient.addColorStop(0, '#ff0000');
gradient.addColorStop(1, '#0000ff');
}
chart.config.data.datasets[2].pointBorderColor = gradient;
chart.config.data.datasets[2].pointBackgroundColor = gradient;
return true;
},
afterDraw: function(chart) {
var canvas = chart.canvas;
var rect = canvas.getBoundingClientRect();
var point, event;
for (var i = 0; i < 3; ++i) {
for (var j = 0; j < 11; ++j) {
point = chart.getDatasetMeta(i).data[j];
event = {
type: 'mousemove',
target: canvas,
clientX: rect.left + point.x,
clientY: rect.top + point.y
};
chart._handleEvent(event);
chart.tooltip.handleEvent(event);
chart.tooltip.opacity = j / 10;
chart.tooltip.draw(chart.ctx);
}
}
}
}]
},
options: {
canvas: {
height: 256,
width: 512
}
}
};