Highlighting dataPoints in line chart by changing color of selected region - CanvasJS JavaScript Charts

Highlighting dataPoints in line chart by changing color of selected region - CanvasJS JavaScript Charts

by canvasjs

HTML

<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer" style="height: 360px; width: 100%;"></div>

CSS

.canvasjs-chart-toolbar> button:first-child {
  display: none !important;
}

JavaScript

var chart = new CanvasJS.Chart("chartContainer", {
  title: {
    text: "Select the Region to Highlight dataPoints"
  },
  zoomEnabled: true,
  rangeChanging: changeSelectedDataPoints,
  data: [{
    type: "line",    
    dataPoints: dataGenerator(100),
  }]
});

chart.render();


//----- Function for indicating selected regions dataPoints --------
function changeSelectedDataPoints(e) {
  var data = e.chart.options.data;
  if (!e.chart.options.axisX)
    e.chart.options.axisX = {};

  var axisX = e.axisX[0];

  for (var i = 0; i < data.length; i++) {
    var dataPoints = data[i].dataPoints;    
    for (var j = 0; j < dataPoints.length; j++) {
      if (dataPoints[j].x > axisX.viewportMinimum && dataPoints[j].x < axisX.viewportMaximum) {        
        dataPoints[j].lineColor = dataPoints[j].color = "red";
      } else
        dataPoints[j].lineColor = dataPoints[j].color = "#4F81BC";
    }
  }

  e.chart.options.axisX.viewportMinimum = e.chart.options.axisX.viewportMaximum = null;
}


function dataGenerator(limit) {
  var y = 100;
  var points = [];
  for (var i = 0; i < limit; i += 1) {
    y += (Math.random() * 100 - 50);
    points.push({
      x: i - limit / 2,
      y: y
    });
  }
  return points;
}