var chart1 = new CanvasJS.Chart("chartContainer1", {
content:"{x}-" + CanvasJS.formatDate(Number("{y}"), "D/MMM/YY")
labelFormatter: function(e) {
return CanvasJS.formatDate(e.value, "D-MMM-YY")
labelFormatter: function(e) {
return CanvasJS.formatDate(e.value, "D-MMM-YY")
dataPoints: randomData(1, 50, 1000)
dataPoints: randomData(1, 30, 1000)
dataPoints: randomData(1, 30, 1000)
var chart2 = new CanvasJS.Chart("chartContainer2", {
content:"{x}-" + CanvasJS.formatDate(Number("{y}"), "D/MMM/YY")
labelFormatter: function(e) {
return CanvasJS.formatDate(e.value, "D-MMM-YY")
labelFormatter: function(e) {
return CanvasJS.formatDate(e.value, "D-MMM-YY")
dataPoints: randomData(1, 50, 1000)
dataPoints: randomData(1, 90, 1000)
var chart3 = new CanvasJS.Chart("chartContainer3", {
content:"{x}-" + CanvasJS.formatDate(Number("{y}"), "D/MMM/YY")
labelFormatter: function(e) {
return CanvasJS.formatDate(e.value, "D-MMM-YY")
labelFormatter: function(e) {
return CanvasJS.formatDate(e.value, "D-MMM-YY")
dataPoints: randomData(1, 90, 400)
dataPoints: randomData(1, 90, 1000)
var otherChartCanvas = $("#chartContainer1").find(".canvasjs-chart-canvas").get(1);
$("#chartContainer2").on("mousemove mouseup mousedown mouseout", function(e){
otherChartCanvas.dispatchEvent(createEvent(
e.screenX - chart2.get("width"),
e.clientX - chart2.get("width"),
var otherChartCanvas1 = $("#chartContainer1").find(".canvasjs-chart-canvas").get(1);
var otherChartCanvas2 = $("#chartContainer2").find(".canvasjs-chart-canvas").get(1);
var otherChartCanvas3 = $("#chartContainer3").find(".canvasjs-chart-canvas").get(1);
$(chart1.container).on("mousemove mouseup mousedown mouseout", function(e) {
otherChartCanvas2.dispatchEvent(createEvent(
e.screenX + chart1.get("width"),
e.clientX + chart1.get("width"),
otherChartCanvas3.dispatchEvent(createEvent(
e.screenX + chart1.get("width") + chart2.get("width"),
e.clientX + chart1.get("width") + chart2.get("width"),
$(chart2.container).on("mousemove mouseup mousedown mouseout", function(e) {
otherChartCanvas1.dispatchEvent(createEvent(
e.screenX - chart1.get("width"),
e.clientX - chart1.get("width"),
otherChartCanvas3.dispatchEvent(createEvent(
e.screenX + chart2.get("width"),
e.clientX + chart2.get("width"),
$(chart3.container).on("mousemove mouseup mousedown mouseout", function(e) {
otherChartCanvas1.dispatchEvent(createEvent(
e.screenX - chart1.get("width") - chart2.get("width"),
e.clientX - chart1.get("width") - chart2.get("width"),
otherChartCanvas2.dispatchEvent(createEvent(
e.screenX - chart3.get("width"),
e.clientX - chart3.get("width"),
function createEvent(type, screenX, screenY, clientX, clientY){
var event = new MouseEvent(type, {
function randomData(startX, startY, length) {
for (var i = 0; i < length; i += 1) {
var xValue = new Date(2017, 02, startDate++).getTime();
y1 += (Math.random() * 10 - 5) << 0;
dataPoints.push({x: y1, y: xValue});