mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-06 12:19:08 +02:00
Add error margin for detecting if a point or line is in the chartArea (#5790)
This commit is contained in:
parent
b3b5c7de4f
commit
cb14217c88
@ -710,6 +710,8 @@ module.exports = Element.extend({
|
||||
var yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;
|
||||
var yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;
|
||||
|
||||
var epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error.
|
||||
|
||||
helpers.each(ticks, function(tick, index) {
|
||||
// autoskipper skipped this tick (#4635)
|
||||
if (helpers.isNullOrUndef(tick.label)) {
|
||||
@ -753,7 +755,7 @@ module.exports = Element.extend({
|
||||
}
|
||||
|
||||
var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);
|
||||
if (xLineValue < me.left) {
|
||||
if (xLineValue < me.left - epsilon) {
|
||||
lineColor = 'rgba(0,0,0,0)';
|
||||
}
|
||||
xLineValue += helpers.aliasPixel(lineWidth);
|
||||
@ -780,7 +782,7 @@ module.exports = Element.extend({
|
||||
labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;
|
||||
|
||||
var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);
|
||||
if (yLineValue < me.top) {
|
||||
if (yLineValue < me.top - epsilon) {
|
||||
lineColor = 'rgba(0,0,0,0)';
|
||||
}
|
||||
yLineValue += helpers.aliasPixel(lineWidth);
|
||||
|
@ -72,14 +72,14 @@ module.exports = Element.extend({
|
||||
var radius = vm.radius;
|
||||
var x = vm.x;
|
||||
var y = vm.y;
|
||||
var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)
|
||||
var epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error.
|
||||
|
||||
if (vm.skip) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clipping for Points.
|
||||
if (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {
|
||||
if (chartArea === undefined || (model.x > chartArea.left - epsilon && chartArea.right + epsilon > model.x && model.y > chartArea.top - epsilon && chartArea.bottom + epsilon > model.y)) {
|
||||
ctx.strokeStyle = vm.borderColor || defaultColor;
|
||||
ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);
|
||||
ctx.fillStyle = vm.backgroundColor || defaultColor;
|
||||
|
Loading…
Reference in New Issue
Block a user