|
|
- <?php
-
- /**
- This file can read data from an external csv source and output the same
- data in Google DataTable JSON format
-
- Note that it supposes that each data column contains numbers
-
- */
-
- header('Content-type: text/plain');
-
- // datasource url. This can be an external source
- //$datasourceUrl = "http://demo.almende.com/links/graph3d/js/examples/datasource_csv.php";
- $path = dirname("http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]) . '/';
- $dataSourceUrl = $path . "datasource_csv.php";
-
- $reqId = getReqId();
- $data = file_get_contents($dataSourceUrl);
-
-
- $rows = split("\n", $data);
-
- // output the header part of the response
- echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'ok',
- table:{
- cols:[
- ";
-
- // output the column names
- $cols = split(",", $rows[0]);
- $colCount = count($cols);
- $colFirst = true;
- foreach($cols as $col) {
- if ($colFirst == true)
- $colFirst = false;
- else
- echo ",\n"; // end of previous label
-
- $colStr = trim(str_replace('"', '', $col)); // TODO: bad way to remove enclosing quotes
-
- echo " {id:'$colStr', label:'$colStr', type:'number'}";
- }
-
- unset($rows[0]); // remove the first row with headers from the array
-
- // output the part between cols and rows
- echo "
- ],
- rows:[
- ";
-
-
-
- // output the data
- $firstRow = true;
- foreach ($rows as $row) {
- $cols = split(",", $row);
-
- if (count($cols) == $colCount) {
- if ($firstRow == true)
- $firstRow = false;
- else
- echo ",\n"; // end of previous line
-
- echo " {c:["; // start of the row
-
- $firstCol = true;
- foreach ($cols as $col) {
- if ($firstCol == true)
- $firstCol = false;
- else
- echo ", "; // end of previous value
-
- echo "{v:" . $col . "}";
- }
-
- echo "]}"; // end of the row
- }
- }
-
-
- // output the end part of the response
- echo "
- ]
- }
- });
- ";
-
-
-
- /**
- * Retrieve the request id from the get/post data
- * @return {number} $reqId The request id, or 0 if not found
- */
- function getReqId() {
- $reqId = 0;
-
- foreach ($_REQUEST as $req) {
- if (substr($req, 0,6) == "reqId:") {
- $reqId = substr($req, 6);
- }
- }
-
- return $reqId;
- }
-
-
-
- ?>
|