|
|
- <html>
-
- <head>
- <title>Graph3d documentation</title>
- <link rel='stylesheet' href='default.css' type='text/css'>
-
- <link href="prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="prettify/prettify.js"></script>
- </head>
-
- <body onload="prettyPrint();">
-
- <pre class="prettyprint lang-php">
- <?php
-
- /*
- This datasource returns a response in the form of a google query response
-
- USAGE
- All parameters are optional
- datasource.php?xmin=0&xmax=314&xstepnum=25&ymin=0&ymax=314&ystepnum=25
-
- DOCUMENTATION
- http://code.google.com/apis/visualization/documentation/dev/implementing_data_source.html
-
-
- EXAMPLE OF A RESPONSE FILE
-
- Note that the reqId in the response must correspond with the reqId from the
- request.
- ________________________________________________________________________________
-
- google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'0',
- status:'ok',
- table:{
- cols:[
- {id:'x',
- label:'x',
- type:'number'},
- {id:'y',
- label:'y',
- type:'number'},
- {id:'value',
- label:'value',
- type:'number'}
- ],
- rows:[
- {c:[{v:0}, {v:0}, {v:10.0}]},
- {c:[{v:1}, {v:0}, {v:12.0}]},
- {c:[{v:2}, {v:0}, {v:13.0}]},
- {c:[{v:0}, {v:1}, {v:11.0}]},
- {c:[{v:1}, {v:1}, {v:14.0}]},
- {c:[{v:2}, {v:1}, {v:11.0}]}
- ]
- }
- });
- ________________________________________________________________________________
-
- */
-
-
- /**
- * A custom function
- */
- function custom($x, $y) {
- $d = sqrt(pow($x/100, 2) + pow($y/100, 2));
-
- return 50 * exp(-5 * $d / 10) * sin($d*5)
- }
-
-
-
-
- // retrieve parameters
- $default_stepnum = 25;
-
- $xmin = isset($_REQUEST['xmin']) ? (float)$_REQUEST['xmin'] : -100;
- $xmax = isset($_REQUEST['xmax']) ? (float)$_REQUEST['xmax'] : 100;
- $xstepnum = isset($_REQUEST['xstepnum']) ? (int)$_REQUEST['xstepnum'] : $default_stepnum;
-
- $ymin = isset($_REQUEST['ymin']) ? (float)$_REQUEST['ymin'] : -100;
- $ymax = isset($_REQUEST['ymax']) ? (float)$_REQUEST['ymax'] : 100;
- $ystepnum = isset($_REQUEST['ystepnum']) ? (int)$_REQUEST['ystepnum'] : $default_stepnum;
-
- // in the reply we must fill in the request id that came with the request
- $reqId = getReqId();
-
- // check for a maximum number of datapoints (for safety)
- if ($xstepnum * $ystepnum > 10000) {
- echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'error',
- errors:[{reason:'not_supported', message:'Maximum number of datapoints exceeded'}]
- });";
-
- exit;
- }
-
-
- // output the header part of the response
- echo "google.visualization.Query.setResponse({
- version:'0.6',
- reqId:'$reqId',
- status:'ok',
- table:{
- cols:[
- {id:'x',
- label:'x',
- type:'number'},
- {id:'y',
- label:'y',
- type:'number'},
- {id:'value',
- label:'',
- type:'number'}
- ],
- rows:[";
-
- // output the actual values
- $first = true;
- $xstep = ($xmax - $xmin) / $xstepnum;
- $ystep = ($ymax - $ymin) / $ystepnum;
- for ($x = $xmin; $x < $xmax; $x+=$xstep) {
- for ($y = $ymin; $y < $ymax; $y+=$ystep) {
- $value = custom($x,$y);
-
- if (!$first) {
- echo ",\n";
- }
- else {
- echo "\n";
- }
- echo " {c:[{v:$x}, {v:$y}, {v:$value}]}";
-
- $first = false;
- }
- }
-
-
- // 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;
- }
-
-
- ?>
-
- </pre>
-
- </body>
- </html>
|