Я пытаюсь добавить событие on click в свою линейную диаграмму, используя Chart.js. У меня уже есть подсказки для инструмента, позволяющие отображать информацию из моих линейных диаграмм, но я также хотел бы добавить метод on click, который позволит мне узнать, где пользователь щелкнул по оси x. На данный момент мне бы хотелось, чтобы появилось предупреждение, дающее мне значение на оси x, где пользователь нажал.
RESEARCH:
Я просмотрел документацию диаграммы Chart.js, и я наткнулся на этот метод:.getPointsAtEvent(event)
Вызов getPointsAtEvent (событие) в вашем экземпляре диаграммы, передающий аргумент события или событие jQuery возвращают элементы точки которые находятся на той же позиции этого события.
canvas.onclick = function(evt){
var activePoints = myLineChart.getPointsAtEvent(evt);
// => activePoints is an array of points on the canvas that are at the same position as the click event. };
Я просто не могу понять, как использовать или где разместить функцию в моем коде. Если бы кто-нибудь мог помочь мне выяснить, где я могу добавить это в свой код, мы будем очень благодарны!
МОЙ КОД: (в javascript)
//NOTE: the div 'roomForChart' has been already declared as <div id="roomForChart"></div>
//creating html code inside of javascript to display the canvas used for the graph
htmlForGraph = "<canvas id='myChart' width ='500' height='400'>";
document.getElementById('roomForChart').innerHTML += htmlForGraph;
//NOW TO CREATE DATA
//the data for my line chart
var data = {
labels: ["Aug 1", "Aug 2", "Aug 3","Aug 4","Aug 5"], //the x axis
datasets: [
{ //my red line
label: "Usage Plan",
fillColor: "rgba(255,255,255,0.2)", //adds the color below the line
strokeColor: "rgba(224,0,0,1)",//creates the line
pointColor: "rgba(244,0,0,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [1024, 1024, 1024, 1024, 1024]
},
{ //my green line
label: "Overall Usage",
fillColor: "rgba(48,197,83,0.2)",
strokeColor: "rgba(48,197,83,1)",
pointColor: "rgba(48,197,83,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(48,197,83,1)",
data: [15, 25, 45, 45, 1500]
},
{ //my blue line
label: "Daily Usage",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: [15, 10, 20, 0, 5]
}
] //ending the datasets
}; //ending data
//creating a variable for my chart
var ctx = document.getElementById("myChart").getContext("2d");
//code to create a maximum y value on the chart
var maxUsage = 1024;
var maxSteps = 5;
var myLineChart = new Chart(ctx).Line(data, {
pointDot: false,
scaleOverride: true,
scaleSteps: maxSteps,
scaleStepWidth: Math.ceil(maxUsage / maxSteps),
scaleStartValue: 0
});
//what I have tried but it doesn't show an alert message
ctx.onclick = function(evt){
var activePoints = myLineChart.getPointsAtEvent(evt);
// => activePoints is an array of points on the canvas that are at the same position as the click event.
alert("See me?");
};
Для тех, кто с трудом просматривает диаграмму, вы идете:
Надеюсь, я предоставил достаточно информации, чтобы получить некоторую помощь. Пожалуйста, дайте мне знать, если мне нужно объясниться. Заранее спасибо!!!:)