示例#1
0
 static function graphData($type, $locationid, $period, $graph, $timezone)
 {
     if (empty($locationid)) {
         return "ERROR, no measurement id specified for deleting measurement";
     }
     $conxn = apiDB::getConnection();
     $sql = "SELECT CASE WHEN r." . $type . " IS NULL THEN 0 ELSE r." . $type . " END, d.dt as fdate, CASE WHEN r.days IS NULL THEN 1 ELSE r.days END, CASE WHEN r.d_ave IS NULL THEN 0 ELSE r.d_ave END\n\t\t\tFROM getAllDays(CURRENT_DATE, " . $period . ") d left join (\n\t\t\t\tSELECT " . $type . ", cast(todate - interval '8 hours' - interval '1 second' as date) as todate, CEIL(CAST ((EXTRACT(EPOCH FROM todate)-EXTRACT(EPOCH FROM fromdate)) / 86400.0 AS NUMERIC)) AS days,\n\t\t\t\t\tROUND( CAST((" . $type . "/((EXTRACT(EPOCH FROM todate)-EXTRACT(EPOCH FROM fromdate)) / 86400.0)) AS NUMERIC), 1) AS d_ave\n\t\t\t\tFROM " . $type . "measurement\n\t\t\t\tWHERE locationid = " . $locationid . "\n\t\t\t\t) r ON d.dt = r.todate\n\t\t\tORDER BY d.dt DESC ";
     //error_log( $sql2);
     $result = pg_query($conxn, $sql);
     $results_array = array();
     $data = array();
     if ($result) {
         while ($row = pg_fetch_array($result)) {
             for ($i = 0; $i < $row["days"]; $i++) {
                 $date = new DateTime($row["fdate"], new DateTimeZone($timezone));
                 $date->sub(new DateInterval('P' . $i . 'D'));
                 $item = array();
                 array_push($item, date_format($date, 'm/d'));
                 array_push($item, floatval($row["d_ave"]));
                 array_push($data, $item);
                 if ($i > 0) {
                     pg_fetch_array($result);
                 }
                 //otherwise the range shows up in duplicate
             }
         }
         //$datasets = Array();
         //$datasets["type"] = $graph;
         //$datasets["data"] = array_reverse($data);
         //$results_array["JSChart"]["datasets"][0] = $datasets;
     }
     //return $results_array;
     return array_reverse($data);
 }
示例#2
0
 static function graphData($type, $locationid, $period, $graph, $timezone)
 {
     if (empty($locationid)) {
         return "ERROR, no measurement id specified for deleting measurement";
     }
     $conxn = apiDB::getConnection();
     $sql_old = "SELECT " . $type . ", todate::date, ROUND(CAST ((EXTRACT(EPOCH FROM todate)-EXTRACT(EPOCH FROM fromdate)) / 86400.0 AS NUMERIC), 0) AS days, \n                               ROUND( CAST((rain/((EXTRACT(EPOCH FROM todate)-EXTRACT(EPOCH FROM fromdate)) / 86400.0)) AS NUMERIC), 1) AS d_ave \n                        FROM " . $type . "measurement \n                        WHERE locationid = " . $locationid . "\n                           AND fromdate >= CURRENT_TIMESTAMP - INTERVAL '" . $period . " days'\n                        ORDER BY fromdate ";
     $sql = "SELECT CASE WHEN r." . $type . " IS NULL THEN 0 ELSE r." . $type . " END, d.dt as fdate, CASE WHEN r.days IS NULL THEN 1 ELSE r.days END, CASE WHEN r.d_ave IS NULL THEN 0 ELSE r.d_ave END\n\t\t\tFROM getAllDays(CURRENT_DATE, " . $period . ") d left join (\n\t\t\t\tSELECT " . $type . ", fromdate::date, ROUND(CAST ((EXTRACT(EPOCH FROM todate)-EXTRACT(EPOCH FROM fromdate)) / 86400.0 AS NUMERIC), 0) AS days,\n\t\t\t\t\tROUND( CAST((" . $type . "/((EXTRACT(EPOCH FROM todate)-EXTRACT(EPOCH FROM fromdate)) / 86400.0)) AS NUMERIC), 1) AS d_ave\n\t\t\t\tFROM " . $type . "measurement\n\t\t\t\tWHERE locationid = " . $locationid . "\n\t\t\t\t) r ON d.dt = r.fromdate\n\t\t\tORDER BY d.dt ";
     //error_log( $sql2);
     $result = pg_query($conxn, $sql);
     $results_array = array();
     $data = array();
     if ($result) {
         while ($row = pg_fetch_array($result)) {
             for ($i = 0; $i < $row["days"]; $i++) {
                 $date = new DateTime($row["fdate"], new DateTimeZone($timezone));
                 $date->add(new DateInterval('P' . $i . 'D'));
                 $item = array();
                 array_push($item, date_format($date, 'm/d'));
                 array_push($item, floatval($row["d_ave"]));
                 array_push($data, $item);
             }
         }
         $datasets = array();
         $datasets["type"] = $graph;
         $datasets["data"] = $data;
         $results_array["JSChart"]["datasets"][0] = $datasets;
     }
     //return $results_array;
     return $data;
 }