2012-04-24 41 views
1

我有一個程序從一個Como數據庫獲取傳感器數據並將其放入一個html頁面中。現在該圖形使用Google Graph API實現,但我必須切換到Highcharts。from Google Visualization Datatable to Highcharts數據格式

我有一個在谷歌格式的JSON數據轉換

function json2gdt(data) { 
    // Build a google.DataTable 
    var gdt = new google.visualization.DataTable(); 
    gdt.addColumn('datetime', 'Time'); 
    gdt.addColumn('number', 'value'); 
    gdt.addRows(data.length*2); 
    var prev = data[0][1]; 
    for (var i=0; i<data.length; i++) { 
    ts = data[i][0] * 1000 
     gdt.setValue(i*2, 0, new Date(ts)); 
    gdt.setValue(i*2, 1, prev); 
     gdt.setValue(i*2+1, 0, new Date(ts)); 
     gdt.setValue(i*2+1, 1, data[i][1]); 
    prev = data[i][1]; 
    } 
    return gdt; 
} 

那麼功能我有一個HTML頁面可視化的圖形功能:

function visualize(json_response) { 
var err = json_response['error']; 
if (err) { 
    $("#chart_div").html("<div class='alert'>" + err + "</div>"); 
    return; 
} 
var data = json_response['data']; 
if (data.length == 0) { 
    $("#chart_div").html("<div class='info'>No data received from this sensor!</div>"); 
    return; 
} 
// Convert Data to a step function 
//var step_data = json2step(data); 
var gdt = json2gdt(data); 
var start; 
if (data && data.length != 0) 
// TODO: fix this to actually compute the half of the time period 
start = new Date(data[Math.floor(data.length/2)][0] * 1000); 
// draw our data in the widget 
if (chart == null) { 
    chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div')); 
} 
// TODO: compute tickness as a function of the time interval 
chart.draw(gdt, {displayAnnotations: false, 
     displayZoomButtons: true, 
     thickness: 2, 
     fill: 10, 
       {% if net.ntype == "ztc" and sens.type == 2 %} 
        colors: ['#F00000'], 
      scaleType: 'fixed', 
      min: 0, 
      max: 1, 
     {% else %} 
        scaleType: 'maximized', 
       {% end %} 
     allowRedraw: true, 
     displayExactValues: true, 
     zoomStartTime: start}); 

}

最後這是一個json數據文件..

#master: sender-64bit-addr receiver-timestamp *;OPCODE;sender-timestamp;sender-seq-num;payload-length;payload# 
#master: input file (re)opened at 4f708e9d 
#master: child [pid=6884] started at 4f708eb1 
0000000000000000 4f708eb2 *ZTCR;00000004;00000002;16;9755080000010000000000# 
0000000000000000 4f708eb2 *ZTCR;00000004;00000003;10;9634050010000003# 
0000000000000000 4f708eb2 *ZTCR;00000005;00000004;0A;97410200EA# 
0000000000000000 4f708eb3 *ZTCR;00000005;00000005;10;9634050010000003# 

任何人都可以幫我嗎?我必須更改高圖的數據格式,或者谷歌圖的相同?

+1

這看起來並不像JSON數據。 – 2012-04-24 09:30:04

回答

0

json對象是這樣的:

"{ 
'data' : [ 
       [1, 10], 
       [2, 11], 
       [3, 12] 
] 
}"