Changeset 87


Ignore:
Timestamp:
06/01/07 16:59:30 (5 years ago)
Author:
nigel
Message:

Added the four graph types and auto scaling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • openweather/openweather.module

    r86 r87  
    3737  if ($op == 'create') { 
    3838    return user_access('create weather station'); 
    39   } else { 
    40     print "<p>$op $node</p>"; 
    4139  } 
    4240} 
     
    177175 
    178176  //$output .= openweather_graph($res); 
    179   $output .= "<img src='?q=node/".$node->nid."/graph' />"; 
     177  $output .= "<img src='?q=node/".$node->nid."/graph/temp_out' />"; 
     178  $output .= "<img src='?q=node/".$node->nid."/graph/rel_hum_out' />"; 
     179  $output .= "<img src='?q=node/".$node->nid."/graph/rel_pressure' />"; 
     180  $output .= "<img src='?q=node/".$node->nid."/graph/windspeed' />"; 
    180181 
    181182  $node->links = $links; 
     
    321322  if ($user->uid) {  
    322323    $node = node_load($nid); 
    323     watchdog('INFO', $node->type, WATCHDOG_WARNING); 
    324324    if ($node->type != 'openweather') 
    325325        return false; 
     
    340340  $type = arg(3); 
    341341  $node = node_load($nid); 
    342  
    343   if ($type == null) $type = 'temp_in'; 
    344  
    345   $r = db_query("SELECT `time`, $type FROM {openweather_readings} WHERE nid = $nid AND `time` >= ".(time() - (60*60*24)) . " ORDER BY `time`" ); 
     342  $title = ''; 
     343  $units = ''; 
     344  $autoScale = false; 
     345 
     346  switch ($type){ 
     347  case null: 
     348  case 'temp_out': 
     349    $type = 'temp_out'; 
     350    $title = t("Outdoor temperature"); 
     351    $autoScale = true; 
     352    $units = 'deg C'; 
     353    break; 
     354   
     355  case 'rel_pressure': 
     356    $title = t("Relative pressure"); 
     357    $autoScale = true; 
     358    break; 
     359   
     360  case 'rel_hum_out': 
     361    $title = t("Outdoor relative humidity"); 
     362    $autoScale = true; 
     363    $units = '%'; 
     364    break; 
     365 
     366  case 'windspeed': 
     367    $title = t("Windspeed"); 
     368    $autoScale = false; 
     369    $units = 'kMh'; 
     370    break; 
     371 
     372  default: 
     373    return; 
     374  } 
     375 
     376  $r = db_query("SELECT time(`time`) AS `timevalue`, unix_timestamp(`time`) as `timestamp`, $type FROM {openweather_readings} WHERE nid = $nid AND `time` >= ".(time() - (60*60*24)) . " ORDER BY `time`" ); 
    346377 
    347378  #$results = openweather_get_values($node); 
    348   drupal_set_header('Content-Type: image/png'); 
     379//  drupal_set_header('Content-Type: image/png'); 
    349380  include 'graph.php'; 
    350381  $g = new graph(400, 240); 
    351382  $g->parameter['path_to_fonts'] = 'modules/openweather/fonts/'; 
    352   $g->parameter['title'] = $type; 
     383  $g->parameter['title'] = $title; 
    353384  $g->parameter['x_label'] = 'Date'; 
    354   $g->parameter['y_label'] = ''; 
     385  $g->parameter['y_label'] = $units; 
     386 
     387  $g->parameter['x_axis_text'] = 12; 
    355388 
    356389  $g->x_data = array(); 
    357390  $g->y_data = array( $type=>array() ); 
    358   while ($e = db_fetch_array($r)) { 
    359     $g->x_data = array_merge($g->x_data, array($e[0]=>$e[0])); 
    360     $g->y_data[$type][] = $e[1]; 
    361   } 
     391  $minY = null; 
     392  while ($e = db_fetch_object($r)) { 
     393    $g->x_data = array_merge($g->x_data, array($e->timevalue=>$e->timestamp)); 
     394    $g->y_data[$type][] = $e->$type; 
     395    if ($minY == null || $e->$type < $minY) $minY = $e->$type; 
     396  } 
     397 
     398  $g->y_format[$type] = array('colour'=>'red', 'line'=>'brush', 'brush_size'=>2); 
     399  $g->y_order = array($type); 
     400 
     401  if ($autoScale) $g->parameter['y_min_left'] = $minY; 
     402   
    362403  $g->draw(); 
    363404} 
Note: See TracChangeset for help on using the changeset viewer.