Dynamic Chart that shows last datapoint added after zooming - CanvasJS JavaScript Charts

Dynamic Chart that shows last datapoint added after zooming - 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>

JavaScript

var dps = [];
var axisRangeChanged = false;

var chart = new CanvasJS.Chart("chartContainer",{
  zoomEnabled: true,
  theme: "light2",
  title: {
  	text: "Dynamic Line Chart"
  },
  subtitles: [{
  	text: "Try zooming upto last datapoint"
  }],
  axisY: {
    includeZero: false
  },
  rangeChanged: rangeChanged,
  data: [{
    type: "line",
    dataPoints: dps 
  }]
});

var yVal = 100;	
var updateInterval = 500;
var viewportMax = null, lastDataPoint = null;
var updateChart = function (count) {
  count = count || 1;

  for (var j = 0; j < count; j++) {	
    yVal = yVal +  Math.round(5 + Math.random() *(-5-5));
    dps.push({ y: yVal });
  };

  if(axisRangeChanged && lastDataPoint < viewportMax) {
    if(!chart.options.axisX)
      chart.options.axisX = {};
    chart.options.axisX.viewportMaximum = null;
  }
  chart.render();
};

setInterval(function(){updateChart()}, updateInterval);
function rangeChanged(e) {
  if(e.trigger != "reset"){  	
    axisRangeChanged = true;
    document.getElementsByClassName("canvasjs-chart-toolbar")[0].style.display = "block";
    viewportMax = e.axisX[0].viewportMaximum;
    lastDataPoint = e.chart.data[0].dataPoints[e.chart.data[0].dataPoints.length-1].x;
  }else{
  	 axisRangeChanged = false;
     document.getElementsByClassName("canvasjs-chart-toolbar")[0].style.display = "none";
  }
}