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";
}
}