javascript - Highcharts multiple charts, each with live data -
i have following files: rsrp.txt, sinr.txt, rssi.txt
each of them containg information this:
[1433289760000,-83.5]
i want use multiple charts on same page.
i tried use sample script highcharts page:
var chart; // global /** * request data server, add graph , set timeout request again */ function requestdata() { $.ajax({ url: 'rssi.txt', success: function(point) { var series = chart.series[0], shift = series.data.length > 30; // shift if series longer 20 // add point chart.series[0].addpoint(eval(point), true, shift); // call again after 1 second settimeout(requestdata, 1700); }, cache: false }); } $(document).ready(function() { chart = new highcharts.chart({ chart: { renderto: 'container', defaultseriestype: 'spline', events: { load: requestdata } }, title: { text: 'rssi' }, xaxis: { type: 'datetime', tickpixelinterval: 150, maxzoom: 20 * 1000 }, yaxis: { minpadding: 2.5, maxpadding: 2.5, title: { text: 'dbm', margin: 80 } }, series: [{ name: 'rssi', data: [] }] }); });
copy pasting script outside , changing url not work. (only 1 chart getting updates)
if create second requestdata()-function , copy $(document).ready part not work either.
is possible in highcharts? not problem combine input files single file, if help.
edit:
i tried solve using answers here:
<!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>signal</title> <!-- 1. add these javascript inclusions in head of page --> <script type="text/javascript" src="jquery-1.10.1.js"></script> <script type="text/javascript" src="highcharts.js"></script> <!-- 2. add javascript initialize chart on document ready --> <script> var chart; // global var chartrsrp; /** * request data server, add graph , set timeout request again */ function requestdata() { $.ajax({ url: 'rssi.txt', success: function(point) { var series = chart.series[0], shift = series.data.length > 30; // shift if series longer 20 // add point chart.series[0].addpoint(eval(point), true, shift); // call again after 1 second settimeout(requestdata, 1700); }, cache: false }); } function requestdata2() { $.ajax({ url: 'rsrp.txt', success: function(point) { var series = chartrsrp.series[0], shift = series.data.length > 30; // shift if series longer 20 // add point chartrsrp.series[0].addpoint(eval(point), true, shift); // call again after 1 second settimeout(requestdata, 1700); }, cache: false }); } $(document).ready(function() { chart = new highcharts.chart({ chart: { renderto: 'container', defaultseriestype: 'spline', events: { load: requestdata } }, title: { text: 'rssi' }, xaxis: { type: 'datetime', tickpixelinterval: 150, maxzoom: 20 * 1000 }, yaxis: { minpadding: 2.5, maxpadding: 2.5, title: { text: 'dbm', margin: 80 } }, series: [{ name: 'rssi', data: [] }] }); chartrsrp = new highcharts.chart({ chart: { renderto: 'container2', defaultseriestype: 'spline', events: { load: requestdata2 } }, title: { text: 'rsrp' }, xaxis: { type: 'datetime', tickpixelinterval: 150, maxzoom: 20 * 1000 }, yaxis: { minpadding: 2.5, maxpadding: 2.5, title: { text: 'dbm', margin: 80 } }, series: [{ name: 'rsrp', data: [] }] }); }); </script> </head> <body> <!-- 3. add container --> <div id="container" style="width: 800px; height: 400px; margin: 0 auto"></div> <div id="container2" style="width: 800px; height: 400px; margin: 0 auto"></div>
edit 2: solved way:
requestdata2(); requestdata3(); requestdata4(); settimeout(requestdata, 1300);
in first requestdata()
in highcharts-land, each chart needs own object. it's possible have multiple charts on same page, you'd have make sure that:
- each chart instantiated separately (in case, if you're copying/pasting
$(document).ready
part, you're stepping onchart
variable. so, instead of singlechart
variable set these separately (e.g.chartrsrp = new highcharts.chart(...)
) , sure reference them differently inrequestdata
calls. - each chart rendered different dom element. so, might render "container-rsrp", "container-sinr", "container-rssi" etc.
hopefully helps!
Comments
Post a Comment