<?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;
|
|
}
|
|
|
|
|
|
|
|
?>
|