2013-03-23 60 views
1

我正在研究混合移动应用程序(Cordova-Phonegap)和Highcharts,我正在查询数据库中的数据并尝试在图表上动态显示数据。PhoneGap和Highcharts

这是获取数据和代码的代码。

var exerciseData = [];//global 
var chart;//global 

编辑2:

$(document).ready(function() { 
//chart is here 
} 

//Cordova is ready    
    function onDeviceReady() { 
    db.transaction(queryDB); 
} 

//查询数据库

function queryDB(tx) { 
     //get all results from db 
     tx.executeSql('SELECT * FROM MYTABLE', [], querySuccess, errorCB); 
} 

function querySuccess(tx, results) { 

      var len = results.rows.length; 
      console.log("MYTABLE table: " + len + " rows found."); 

      for (var i=0; i<len; i++){ 
       console.log("Row = " + i + " Reading_name = " + results.rows.item(i).Reading_name + " Date="+results.rows.item(i).Rec_date + " Reading = " + results.rows.item(i).Reading); 

      //get exercise data only 
      if(results.rows.item(i).Reading_name=='exercise'){ 

       var reading=parseInt(results.rows.item(i).Reading); 
       var thisDate=results.rows.item(i).Rec_date; 

       var exObj=([manageDate(thisDate), reading]); 
       exerciseData.push(exObj);  
       } 

      } 
      } 

现在,当我把exerciseData,并进行如下设置:

chart.series[0].setData(exerciseData,true); 

然后什么在t上显示他图表。

,但如果我把它设置为:

chart.series[0].setData([[1383824000000,10] ],true); 

然后我可以看到图表上的数据点。

如何修复exerciseData数组以显示Highchart图表系列上的数据?

console.log(exObj);显示:

[1363996800000, 10] 

console.log(exerciseData);给了我这样的:

[ 
Array[2] 
0: 1363996800000 
1: 10 
length: 2 
__proto__: Array[0] 
] 

编辑: 图码

$(document).ready(function() { 

      chart = new Highcharts.Chart({ 
       chart: { 
        renderTo: 'container', 
        defaultSeriesType: 'line' 
       }, 
       title: { 

        text: 'chart' 
       }, 
       xAxis: { 
        type: 'datetime', 
        labels: { 
          formatter: function() { 
          return Highcharts.dateFormat('%a %d %b', this.value); 
          }, 
           dateTimeLabelFormats: { 
             minute: '%H:%M', 
             hour: '%H:%M', 
             day: '%e. %b', 
             week: '%e. %b', 
             month: '%b \'%y', 
             year: '%Y' 
            } 
          } 

       }, 
       yAxis: { 

        title: { 
         text: '' 
        }, 
         min: 0 
       }, 

       series: [ 
        { 
         name: 'Exercise', 
         data: [], 
         type:'spline' 
        }, 
        { 
         name: 'MyData2', 
         data: [], 
         type:'line' 
        }); 

      chart.series[0].setData(exerciseData,true);//does not work 
      chart.series[1].setData([[1383824000000,10]],true); 

      }); 

回答

2

试试这个:

var exObj=[]; 
exObj.push(manageDate(thisDate)); 
exObj.push(reading); 
exerciseData.push(exObj); 

另一种方法是用x,y等指定点。

var exObj = { 
    x:manageDate(thisDate), 
    y:reading 
} 

此外,您还需要调用

chart.series[0].setData(exerciseData,true 

里面你的成功的功能。

+0

我试过你的代码,问题是一样的。 – agri 2013-03-23 15:45:37

+0

尝试发布更多图表代码。 – SteveP 2013-03-23 15:46:23

+0

我已添加图表代码,请参阅编辑。 – agri 2013-03-23 16:22:20