Files @ 638ed591b753
Branch filter:

Location: SlatePermutate/inc/class.graph.php

binki
Add basic crawler support for Hope College in light of their winning the Calvin v. Hope basketball game last weekend.

The crawler is unable to, from the data provided by hope, properly recognize
and handle course labs in any fashion. To do that, the human-formatted comment
fields will need to be parsed. These fields are placed in the same column as
the course title is and are in the subsequent row for a particular section --
these fields are currently ignored through the rule which throws out rows with
too few columns.
<?php /* -*- mode: php; -*- */

class barGraph {

// This array of values is just here for the example.
private $values = array();
private $image = null;

// Pass me a multidimensional array with 'count', the size, and 'label', the label
public function __construct($userVals, $width=600, $height=300) {

  $this->values = $userVals;


  // Get the total number of columns we are going to plot
  $columns  = count($this->values);
  if($columns == 0) {
    throw new Exception("No input data!");
  }
  if($width < 5 || $height < 5) {
    throw new Exception("Image size too small!");
  }

  // Set the amount of space between each column
  $padding = 5; 

  // Get the width of 1 column
  $column_width = $width / $columns ;

  // Generate the image variables
  $im        = imagecreate($width,$height);
  $gray      = imagecolorallocate ($im,0xcc,0xcc,0xcc);
  $gray_lite = imagecolorallocate ($im,0xee,0xee,0xee);
  $gray_dark = imagecolorallocate ($im,0x7f,0x7f,0x7f);
  $white     = imagecolorallocate ($im,0xff,0xff,0xff);
  $black     = imagecolorallocate($im, 0, 0, 0);
    
  // Fill in the background of the image
  imagefilledrectangle($im,0,0,$width,$height,$white);
    
  $maxv = 0;

  // Calculate the maximum value we are going to plot
  for($i=0;$i<$columns;$i++)
    $maxv = max($this->values[$i]['count'], $maxv);

  // Now plot each column 
  for($i=0;$i<$columns;$i++) {
    $column_height = ($height / 100) * (( $this->values[$i]['count'] / $maxv) *100);
    $x1 = $i*$column_width;
    $y1 = $height-$column_height;
    $x2 = (($i+1)*$column_width)-$padding;
    $y2 = $height;

    imagefilledrectangle($im,$x1,$y1,$x2,$y2,$gray);

    $label = $this->values[$i]['label'];
    $font = '/usr/share/fonts/liberation/LiberationSans-Regular.ttf';
    $font2 = '/usr/share/fonts/liberation/LiberationSans-Bold.ttf';

    imagettftext($im, 10, 0, $x1 + ($column_width / 2) - 20, $height - 5, $black, $font, $label);
    imagettftext($im, 7, 0, $x1 + ($column_width / 2) - 7, $height - 20, $gray_dark, $font, $this->values[$i]['count']);
 
  }
  imagettftext($im, 10, 0, 0, 10, $black, $font2, "Past Month:");

  // Send the PNG header information. Replace for JPEG or GIF or whatever
  $this->image = $im;

  header ("Content-type: image/png");
  imagepng($this->image);
}

}

?>