2015-01-08 70 views
0

你好,我有一個JavaScript生成CSV文件中的一個highchart:Highchart Java腳本越來越充滿

<script> 
       function Showgraph(){ 
        $.ajax({ 
         url: 'Merge_files.php', 
         // success: function(data) { 
         // $('.result').html(data); 
         // alert('Load was performed.'); 
         // } 
        }); 
        var options = { 
         chart: { 
          renderTo: 'container', 
          defaultSeriesType: 'line' 
         }, 
         title: { 
          text: 'Measurement data' 
         }, 
         xAxis: { 
          //categories: [], 
          title: { 
           text: 'Measurement number' 
           }, 
           labels: { 
            enable: false, 
           y:20, rotation: -45, allign: 'right' 
           } 
         }, 
         yAxis: { 
          title: { 
           text: 'Retro Reflection' 
          } 
         }, 
         series: [] 
        }; 
        sleep(100); 
        $.get('Sensor_datafull.txt', function(data) { 
         // Split the lines 
         var lines = data.split('\n'); 

         $.each(lines, function(lineNo, line) { 
         var items = line.split(','); 


          var series = { 
           data: [] 
          }; 
          $.each(items, function(itemNo, item) { 
           if (itemNo == 0) { 
            series.name = item; 
           } else { 
            series.data.push(parseFloat(item)); 
           } 
          }); 

          options.series.push(series); 


         }); 

         // Create the chart 
         var chart = new Highcharts.Chart(options); 
        }) 
       } 

<!--Sleep function to pause the Showgraph, so the fiels in Merge_files will be generated before chart --> 

       function sleep(milliseconds) { 
        var start = new Date().getTime(); 
        for (var i = 0; i < 1e7; i++) { 
        if ((new Date().getTime() - start) > milliseconds){ 
         break; 
        } 
        } 
       } 

</script> 

腳本「合併」 7個文件合併成一個大的,並創建圖表。這些文件每秒都會被新的測量數據填滿。該合併文件看起來像:

0.20,-517.2,-314.9,227.2,... 0.33,-228.5,-79.0,130.7,... 0.50,-286.6,-140.6,84.5, ... 0.70,-96.6,-62.6,23.0,... 1.00,-18.6,-12.4,11.6,... 1.50,-62.7,-35.9,-11.0 .... 2.00,-37.7,-24.0,-1.5,...

問題是,當文件達到一定的大小時,不能創建高圖,並凍結。然後,我想知道是否有可能使得高圖只能像csv中的第一個數據(是類別)和每行的500個最後數據。文件或東西?任何其他想法來解決這個問題也是受歡迎的!

預先感謝您的幫助!

+0

您可以使用整個CSV文件構建一個'series',然後使用javascript創建該''series'的一個子集,並設置所需的多個值(例如第一個和最後一個500)。 –

回答

0

最初的問題是您的體系結構不正確。你不能使用睡眠功能,因爲當你的第一個Ajax加載時間更長時,那麼更復雜的代碼「有道理」。爲了避免這種情況,你可以調用一次。在PHP文件中,使用數據準備像數組一樣的結構並將其轉換爲JSON(通過json_encode函數)。在javascrpt中,調用$ .getJSON()並初始化圖表。