2013-03-23 52 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