mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Fix interaction on partially visible bar (#9446)
This commit is contained in:
parent
c73add9d6c
commit
ba2f158dc6
@ -166,7 +166,7 @@ function getNearestItems(chart, position, axis, intersect, useFinalPosition) {
|
||||
}
|
||||
|
||||
const center = element.getCenterPoint(useFinalPosition);
|
||||
if (!_isPointInArea(center, chart.chartArea, chart._minPadding)) {
|
||||
if (!_isPointInArea(center, chart.chartArea, chart._minPadding) && !element.inRange(position.x, position.y, useFinalPosition)) {
|
||||
return;
|
||||
}
|
||||
const distance = distanceMetric(position, center);
|
||||
|
||||
42
test/fixtures/core.interaction/nearest-partial-bar.js
vendored
Normal file
42
test/fixtures/core.interaction/nearest-partial-bar.js
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
module.exports = {
|
||||
config: {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: ['a', 'b', 'c'],
|
||||
datasets: [
|
||||
{
|
||||
data: [220, 250, 225],
|
||||
},
|
||||
],
|
||||
},
|
||||
options: {
|
||||
events: ['click'],
|
||||
interaction: {
|
||||
mode: 'nearest'
|
||||
},
|
||||
plugins: {
|
||||
tooltip: true,
|
||||
legend: false
|
||||
},
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
options: {
|
||||
spriteText: true,
|
||||
canvas: {
|
||||
width: 256,
|
||||
height: 256
|
||||
},
|
||||
async run(chart) {
|
||||
const point = {
|
||||
x: chart.chartArea.left + chart.chartArea.width / 2,
|
||||
y: chart.chartArea.top + chart.chartArea.height / 2,
|
||||
};
|
||||
await jasmine.triggerMouseEvent(chart, 'click', point);
|
||||
}
|
||||
}
|
||||
};
|
||||
BIN
test/fixtures/core.interaction/nearest-partial-bar.png
vendored
Normal file
BIN
test/fixtures/core.interaction/nearest-partial-bar.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.5 KiB |
45
test/fixtures/core.interaction/nearest-point-behind-scale.js
vendored
Normal file
45
test/fixtures/core.interaction/nearest-point-behind-scale.js
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
module.exports = {
|
||||
config: {
|
||||
type: 'scatter',
|
||||
data: {
|
||||
datasets: [{
|
||||
data: [{x: 1, y: 1}, {x: 48, y: 1}]
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
events: ['click'],
|
||||
interaction: {
|
||||
mode: 'nearest',
|
||||
intersect: false
|
||||
},
|
||||
plugins: {
|
||||
tooltip: true,
|
||||
legend: false
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
min: 5,
|
||||
max: 50
|
||||
},
|
||||
y: {
|
||||
min: 0,
|
||||
max: 2
|
||||
}
|
||||
},
|
||||
layout: {
|
||||
padding: 50
|
||||
}
|
||||
}
|
||||
},
|
||||
options: {
|
||||
spriteText: true,
|
||||
canvas: {
|
||||
width: 256,
|
||||
height: 256
|
||||
},
|
||||
async run(chart) {
|
||||
const point = chart.getDatasetMeta(0).data[0];
|
||||
await jasmine.triggerMouseEvent(chart, 'click', {y: point.y, x: chart.chartArea.left});
|
||||
}
|
||||
}
|
||||
};
|
||||
BIN
test/fixtures/core.interaction/nearest-point-behind-scale.png
vendored
Normal file
BIN
test/fixtures/core.interaction/nearest-point-behind-scale.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
@ -1,7 +1,6 @@
|
||||
// Tests of the interaction handlers in Core.Interaction
|
||||
|
||||
// Test the rectangle element
|
||||
describe('Core.Interaction', function() {
|
||||
describe('auto', jasmine.fixture.specs('core.interaction'));
|
||||
|
||||
describe('point mode', function() {
|
||||
beforeEach(function() {
|
||||
this.chart = window.acquireChart({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user