var chart_id_list = []; var points_list = []; var series_list = []; var INTERVAL = 10; var RANGE = 30; var eventSource; var clientID; var interval; var isDone = false; var create_new_chart = function(id){ // Function to create a new chart $('#charts').append("
"); $('#chart-'+id.toString()).highcharts({ chart: { type: 'line', animation: false }, title : { text: 'Figure '+id.toString() }, xAxis : { title: { text: 'x' }, tickInterval: 2 }, yAxis : { title: { text: 'y' }, plotLines: [{ width: 1, color: '#808080' }] }, plotOptions : { marker: { enabled: false, } }, legend : { enabled: false }, exporting : { enabled: false }, series : [] }); chart_id_list.push(id); points_list.push(new Queue()); series_list.push([]); } function chart_init(wnd){ // Start listening to server chart_reset(); eventSource = new EventSource("/SendLog?id="+clientID); eventSource.addEventListener("log", function(event){ var data = event.data.split(' '); var figure_id = parseInt(data[2]), line_id = parseInt(data[6]), x = parseFloat(data[8]), y = parseFloat(data[9]), z = parseFloat(data[10]); if(chart_id_list.indexOf(figure_id)<0) create_new_chart(figure_id); var index = chart_id_list.indexOf(figure_id); points_list[index].enqueue([line_id,x,y]); }, false); // Error eventSource.addEventListener("ERROR", function(event){ eventSource.close(); // Close connection console.log("Error: "+event.data); chart_reset(); if(event.data=="Empty diagram") alert(event.data); else alert("Some Error occured!"); wnd.destroy(); isDone = true; }, false); // Stop listening eventSource.addEventListener("DONE", function(event){ eventSource.close(); // Close connection console.log("Done"); isDone = true; }, false); interval = setInterval(function(){ for(var i=0;i1.5*RANGE) series.removePoint(0, false); series.addPoint([x,y], false); } // Shift chart axis to display new values if(x>RANGE) chart.xAxis[0].setExtremes(Math.floor(x-RANGE),Math.floor(x)); // Draw the chart chart.redraw(); } }, INTERVAL); } function chart_reset(){ clearInterval(interval); chart_id_list = []; points_list = []; series_list = []; }