2015-01-08 24 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()并初始化图表。