Display Crosshair at given X & Y value - CanvasJS JavaScript Charts

Display Crosshair at given X & Y value - CanvasJS JavaScript Charts

by canvasjs

HTML

<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 360px; width: 100%;"></div>
 Axis X  value:<input id="xValue" value="10" type="number" style="width: 85px;" placeholder="Enter Value"/>
 Axis Y  value:<input id="yValue" value="71" type="number" style="width: 85px;" placeholder="Enter Value"/>
 <button id="displayCrosshair">Display Crosshair</button>

JavaScript

var inputXValue = document.getElementById("xValue");
var inputYValue = document.getElementById("yValue");

var chart = new CanvasJS.Chart("chartContainer",{
  title: {
    text: "Display Crosshair at given X & Y Value"
  },
  axisX: {
    crosshair: {
      enabled: true
    },
  },
  axisY: {
    crosshair: {
      enabled: true
    },
  },
  data: [
    {
      type: "line",
      dataPoints: [
        { x: 10, y: 71 },
        { x: 20, y: 55 },
        { x: 30, y: 50 },
        { x: 40, y: 65 },
        { x: 50, y: 95 },
        { x: 60, y: 68 },
        { x: 70, y: 28 },
        { x: 80, y: 34 },
        { x: 90, y: 14 }
      ]
    }
  ]
});

chart.render();


function createEvent(clientX, clientY){
  var event = new MouseEvent("mousemove", {
    view: window,
    bubbles: true,
    cancelable: true, 
    clientX: clientX + $("#chartContainer").offset().left - $(window).scrollLeft(), 
    clientY: clientY + $("#chartContainer").offset().top - $(window).scrollTop()
  });
  return event;
}


$("#displayCrosshair").on("click", function() {
  var chartCanvas = $("#chartContainer").find(".canvasjs-chart-canvas").get(1);
  var pixelX = chart.axisX[0].convertValueToPixel(parseInt(inputXValue.value));   
  var pixelY = chart.axisY[0].convertValueToPixel(parseInt(inputYValue.value));   
  chartCanvas.dispatchEvent(createEvent(pixelX , pixelY));
})