2012-11-23 75 views
0

我做了什麼? 我正在構建一個包含多個數據的儀表板。數據是以數組的形式存在的。作爲谷歌圖表儀表板API中的數組的多個數據源

我需要實現什麼? 我已經在教程的幫助下實現了儀表板,但我無法實現其他數據源。

這裏是我的代碼

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 

<title> 
      Google Visualization API Sample 
     </title> 

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load('visualization', '1.1', {packages: ['controls']}); 
</script> 
<script type="text/javascript"> 

function drawVisualization() { 

// Prepare the data 
     var data1 = google.visualization.arrayToDataTable([ 
     ['Name', 'Type', 'Precheck Alarms', 'Postcheck Alarms'], 
     ['Michael' , 'Type1', 12, 5], 
     ['Elisa', 'Type2', 20, 7], 
     ['Robert', 'Type1', 7, 3], 
     ['John', 'Type1', 54, 2], 
     ['Jessica', 'Type2', 22, 6], 
     ['Aaron', 'Type1', 3, 1], 
     ['Margareth', 'Type2', 42, 8], 
     ['Miranda', 'Type2', 33, 6] 
     ]); 
     var data2 = google.visualization.arrayToDataTable([ 
     ['Name', 'Type', 'Precheck Alarms', 'Postcheck Alarms'], 
     ['Michael' , 'Type1', 12, 5], 
     ['Elisa', 'Type2', 20, 7], 
     ['Robert', 'Type1', 7, 3], 
     ['John', 'Type1', 54, 2], 
     ['Jessica', 'Type2', 22, 6], 
     ['Aaron', 'Type1', 3, 1], 
     ['Margareth', 'Type2', 42, 8], 
     ['Miranda', 'Type2', 33, 6] 
     ]);  

    // Define a category picker control for the Type column 



var categoryPicker = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'control2', 
    'options': { 
     'filterColumnLabel': 'Type', 
     'ui': { 
     'labelStacking': 'vertical', 
     'allowTyping': false, 
     'allowMultiple': false 
     } 
    } 
    }); 

    // Define a Pie chart 
    var columns_alarms = new google.visualization.ChartWrapper({ 
    'chartType': 'ColumnChart', 
    'containerId': 'chart1', 
    'options': { 
     'width': 600, 
     'height': 600, 
     'legend': 'none', 
     'title': 'Alarms', 
     'chartArea': {'left': 15, 'top': 15, 'right': 0, 'bottom': 0}, 
     //'pieSliceText': 'label' 
    }, 
    // Instruct the piechart to use colums 0 (Name) and 3 (Donuts Eaten) 
    // from the 'data' DataTable. 
    'view': {'columns': [0, 2,3]} 
    }); 

    // Define a table 


var table_alarms = new google.visualization.ChartWrapper({ 
    'chartType': 'Table', 
    'containerId': 'chart2', 
    'options': { 
     'width': '300px' 
    } 
    }); 
var columns_kpi = new google.visualization.ChartWrapper({ 
    'chartType': 'ColumnChart', 
    'containerId': 'chart4', 
    'options': { 
     'width': 600, 
     'height': 600, 
     'legend': 'none', 
     'title': 'Alarms', 
     'chartArea': {'left': 15, 'top': 15, 'right': 0, 'bottom': 0}, 
     //'pieSliceText': 'label' 
    }, 

    // Instruct the piechart to use colums 0 (Name) and 3 (Donuts Eaten) 
    // from the 'data' DataTable. 
    'view': {'columns': [0, 2,3]} 
    }); 

    // Define a table 
    var table_kpi = new google.visualization.ChartWrapper({ 
    'chartType': 'Table', 
    'containerId': 'chart5', 
    'options': { 
     'width': '300px' 
    } 
    }); 

    // Create a dashboard 
    new google.visualization.Dashboard(document.getElementById('dashboard_alarms')). 
    new google.visualization.Dashboard(document.getElementById('dashboard_kpi')). 
     // Establish bindings, declaring the both the slider and the category 
     // picker will drive both charts. 
     bind([categoryPicker], [columns_kpi, table_kpi,columns_alarms, table_alarms]). 
     // Draw the entire dashboard. 
     draw(data1); 
     draw(data2); 

} 


     google.setOnLoadCallback(drawVisualization); 
    </script> 
    </head> 
    <body style="font-family: Arial;border: 0 none;"> 
    <div id="dashboard"> 
     <table> 
     <tr style='vertical-align: top'> 
      <td style='width: 300px; font-size: 0.9em;'> 
      <div id="control1"></div> 
      <div id="control2"></div> 
      <div id="control3"></div> 
      </td> 
      <td style='width: 600px'> 
      <div style="float: left;" id="chart1"></div> 
      <div style="float: left;" id="chart2"></div> 
      <div style="float: left;" id="chart3"></div> 
      <div style="float: left;" id="chart4"></div> 
      <div style="float: left;" id="chart5"></div> 
      </td> 
     </tr> 
     </table> 
    </div> 
    </body> 
</html> 

上面的代碼渲染WSD。

回答

0

代碼中幾乎沒有錯誤。

new google.visualization.Dashboard(document.getElementById('dashboard_alarms')). 
new google.visualization.Dashboard(document.getElementById('dashboard_kpi')). 

應該是

new google.visualization.Dashboard(document.getElementById('dashboard_alarms')); 
new google.visualization.Dashboard(document.getElementById('dashboard_kpi')). 

(的應該是一個「」,‘;’在第一行的末尾)

此外,在相同的兩條線你指與元件編號爲dashboard_alarmsdashboard_kpi,但是你的html中沒有這些元素。您應該添加標籤

<div id="dashboard_alarms"/> 
<div id="dashboard_kpi"/> 

到您的html。

如果您使用Firefox,則可以使用firebug來調試JavaScript代碼。 Goole chrome也可能有一個javascrpt調試器。使用JavaScript調試器,您可以診斷此類問題的原因。

該代碼的工作示例可在jsfiddle獲取。

0

我得到了我自己的問題的答案。需要將綁定到每個儀表板的控制分開。 一個不能共享兩個儀表板的兩個數據源的控件。 只是有一個單獨的控制,它一切正常。

相關問題