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 on chart variable. so, instead of single chart variable set these separately (e.g. chartrsrp = new highcharts.chart(...)) , sure reference them differently in requestdata calls.
  • each chart rendered different dom element. so, might render "container-rsrp", "container-sinr", "container-rssi" etc.

hopefully helps!


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -