Why do I need to pass a DataView (and not just a DataTable) to PieChart.draw ()?

I searched a lot and finally was able to run my google chart code. Here is my code using both a data view and a data table.

// Here is my code for chartDraw.php

<html> <head> <!--Load the AJAX API --> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> function drawChart(){ var jsonData = $.ajax({ url:"getdata.php", dataType:"json", async:false }).responseText; //This is used when you hard code your values: static data. Here I am taking data from database so commented it. /*var jsonData='{"cols":[{"label":"User ID","type":"string"},{"label":"Group Name","type":"string"},{"label":"Requested Nodes","type":"number"},{"label":"Actual PE","type":"number"}],"rows":[{"c":[{"v":"user 1"},{"v":"ufhpc"},{"v":1},{"v":5.000}]},{"c":[{"v":"user2"},{"v":"ufhpc"},{"v":1},{"v":7.000}]}]}'; */ //Create our data table out of JSON data loaded from server var data=new google.visualization.DataTable(jsonData); //PieCharts expects 2 columns of data: a label and a value, so we need to use a DataView to restrict to 2 columns var view=new google.visualization.DataView(data); view.setColumns([0,3]); //Instantiate and draw our chart, passing in some options var chart=new google.visualization.PieChart(document.getElementById('chart_div')); chart.draw(view,{width:400,height:240}); } //Load the visualization API and the piechart package google.load('visualization','1',{'packages':['corechart']}); //Set a callback to run when the google visualization API is loaded google.setOnLoadCallback(drawChart); </script> </head> <body> <!--Div that will hold the pie chart --> <div id="chart_div"></div> </body> </html> 

//getdata.php: contains connections and request

 <?php mysql_connect('localhost','user','password'); mysql_select_db('dbname'); $sqlquery1="select userid,group_name,req_nodes,actualPE from jobs where userid='zhang' limit 200"; $sqlresult1=mysql_query($sqlquery1); $table=array(); $table['cols']=array( array('label'=> 'User ID', type=>'string'), array('label'=>'Group Name', type=>'string'), array('label'=>'Requested Nodes', type=>'number'), array('label'=>'Actual PE', type=>'number') ); $rows=array(); while($r=mysql_fetch_assoc($sqlresult1)){ $temp=array(); $temp[]=array('v' => $r['userid']); $temp[]=array('v' => $r['group_name']); $temp[]=array('v' =>(int) $r['req_nodes']); $temp[]=array('v' =>(float) $r['actualPE']); $rows[]=array('c' => $temp); } $table['rows']=$rows; $jsonTable = json_encode($table); //this print statement just for testing print $jsonTable; ?> 

What is the difference between a DataView class and a DataTable constructor? If I do not use a DataView , it does not print.

+6
source share
1 answer

Use Google:

Google visualization API.

Stack overflow is not for textbooks, but for productive issues. If you want to create tutorials, you can use a website called The Code Player .

0
source

All Articles