is there a way to get the nearest point when clicked anywhere on canvas? Maybe somehow harvest the core 'nearest' method? Thanks
I think you will find getElementsAtXAxis
very helpful.
Basically, getElementsAtXAxis
has a very similar behaviour to getElementsAtEvent
although when the click event doesn't intersect a point of the chart, it will return the nearest ChartElement.
The only downside is that it will return all the ChartElement on the nearest x-axis index.
So, if you use multiple datasets, this might not be the best choice for you.
Code example:
canvas.onclick = function(e) {
const elts = chart.getElementsAtXAxis(simulatedEvent);
if (elts && elts.length) {
// Do something with elts[0]
}
};
If anyone is looking for the related piece of code, it's in core.controller.js
:
getElementAtEvent: function(e) {
return Interaction.modes.nearest(this, e, {intersect: true});
},
getElementsAtEvent: function(e) {
return Interaction.modes.index(this, e, {intersect: true});
},
getElementsAtXAxis: function(e) {
return Interaction.modes.index(this, e, {intersect: false});
},
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With