diff -r c24a2311f232 -r ce2e9caf2dfa graphs.php --- a/graphs.php Sun Jan 04 12:19:27 2009 -0500 +++ b/graphs.php Sun Jan 04 16:40:36 2009 -0500 @@ -1,1051 +1,6 @@ 7, 'b' => 3, 'c' => 6, 'd' => 0, 'e' => 2); - /** - * GraphMaker::bar_padding - * Padding of bars - */ - var $bar_padding = 5; - /** - * GraphMaker::bar_bordercolor - * Border color of bars - */ - var $bar_bordercolor = array(39, 78, 120); - /** - * GraphMaker::bar_bgcolor - * Background color of bars - */ - var $bar_bgcolor = array(69, 129, 194); - //--------------------------------------------- - /** - * GraphMaker::graph_areaheight - * Height of graphic area - */ - var $graph_areaheight = 100; - /** - * GraphMaker::graph_padding - * Paddings of graph - */ - var $graph_padding = array('left' => 50, 'top' => 20, 'right' => 20, 'bottom' => 20); - /** - * GraphMaker::graph_title - * Title text of graph - */ - var $graph_title = ""; - /** - * GraphMaker::graph_bgcolor - * Background color of graph - */ - var $graph_bgcolor = array(255, 255, 255); - /** - * GraphMaker::graph_bgtransparent - * Boolean for background transparency - */ - var $graph_bgtransparent = 0; - /** - * GraphMaker::graph_transparencylevel - * Transparency level (0=opaque, 127=transparent) - */ - var $graph_transparencylevel = 0; - /** - * GraphMaker::graph_borderwidth - * Width of graph border - */ - var $graph_borderwidth = 1; - /** - * GraphMaker::graph_bordercolor - * Border color of graph - */ - var $graph_bordercolor = array(218, 218, 239); - /** - * GraphMaker::graph_titlecolor - * Color of title text of graph - */ - var $graph_titlecolor = array(99, 88, 78); - //--------------------------------------------- - /** - * GraphMaker::axis_step - * Scale step of axis - */ - var $axis_step = 2; - /** - * GraphMaker::axis_bordercolor - * Border color of axis - */ - var $axis_bordercolor = array(99, 88, 78); - /** - * GraphMaker::axis_bgcolor - * Background color of axis - */ - var $axis_bgcolor = array(152, 137, 124); - - /**************************************************************** - GRAPH - ****************************************************************/ - - /** - * GraphMaker::SetGraphAreaHeight() - * Sets graph height (not counting top and bottom margins) - **/ - function SetGraphAreaHeight($height) { - if ($height > 0) $this->graph_areaheight = $height; - } - - /** - * GraphMaker::SetGraphPadding() - * Sets graph padding (margins) - **/ - function SetGraphPadding($left, $top, $right, $bottom) { - $this->graph_padding = array('left' => (int) $left, - 'top' => (int) $top, - 'right' => (int) $right, - 'bottom' => (int) $bottom); - } - - /** - * GraphMaker::SetGraphTitle() - * Set title text - **/ - function SetGraphTitle($title) { - $this->graph_title = $title; - } - - /** - * GraphMaker::SetGraphBorderColor() - * Sets border color for graph - **/ - function SetGraphBorderColor($red, $green, $blue) { - $this->graph_bordercolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetGraphBorderWidth() - * Set width of border. 0 disables border - **/ - function SetGraphBorderWidth($width = 0) { - $this->graph_borderwidth = $width; - } - - /** - * GraphMaker::SetGraphBackgroundColor() - * Sets background color for graph - **/ - function SetGraphBackgroundColor($red, $green, $blue) { - $this->graph_bgcolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetGraphBackgroundTransparent() - * Sets background color for graph (and set it transparent) - **/ - function SetGraphBackgroundTransparent($red, $green, $blue, $addtransparency = 1) { - $this->graph_bgcolor = array($red, $green, $blue); - $this->graph_bgtransparent = ($addtransparency ? 1 : 0); - } - - /** - * GraphMaker::SetGraphTitleColor() - * Sets title color for graph - **/ - function SetGraphTitleColor($red, $green, $blue) { - $this->graph_titlecolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetGraphTransparency() - * Sets transparency for graph - **/ - function SetGraphTransparency($percent) { - if ($percent < 0) $percent = 0; - elseif ($percent > 100) $percent = 127; - else $percent = $percent * 1.27; - $this->graph_transparencylevel = $percent; - } - - /**************************************************************** - BAR - ****************************************************************/ - - /** - * GraphMaker::SetBarBorderColor() - * Sets border color for bars - **/ - function SetBarBorderColor($red, $green, $blue) { - $this->bar_bordercolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetBarBackgroundColor() - * Sets background color for bars - **/ - function SetBarBackgroundColor($red, $green, $blue) { - $this->bar_bgcolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetBarData() - * Sets data of graph (parameter should be an array with key - * being the name of the bar and the value the value of the bar. - **/ - function SetBarData($data) { - if (is_array($data)) $this->bar_data = $data; - } - - /** - * GraphMaker::SetBarDimensions() - * Sets with and height of each bar - **/ - function SetBarDimensions($width, $height) { - if ($width > 0) $this->bar_width = $width; - if ($height > 0) $this->bar_height = $height; - } - - /** - * GraphMaker::SetBarPadding() - * Sets padding (border) around each bar - **/ - function SetBarPadding($padding) { - if ($padding > 0) $this->bar_padding = $padding; - } - - /**************************************************************** - AXIS - ****************************************************************/ - - /** - * GraphMaker::SetAxisBorderColor() - * Sets border color for axis - **/ - function SetAxisBorderColor($red, $green, $blue) { - $this->axis_bordercolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetAxisBackgroundColor() - * Sets background color for axis - **/ - function SetAxisBackgroundColor($red, $green, $blue) { - $this->axis_bgcolor = array($red, $green, $blue); - } - - /** - * GraphMaker::SetAxisStep() - * Sets axis scale step - **/ - function SetAxisStep($step) { - if ($step > 0) $this->axis_step = $step; - } - - /** - * GraphMaker::GetFinalGraphDimensions() - * From the values already setted, it calculates image - * width and height - **/ - function GetFinalGraphDimensions() { - $w = $this->graph_padding['left'] + - (count($this->bar_data) * ($this->bar_width + ($this->bar_padding * 2))) + - $this->graph_padding['right']; - $h = $this->graph_padding['top'] + - $this->graph_areaheight + - $this->graph_padding['bottom']; - return array($w, $h); - } - - /** - * GraphMaker::LoadGraph() - * Loads definitions from a file - **/ - function LoadGraph($path) { - if (($fp = @fopen($path, "r")) !== false) { - $content = ""; - while (!feof($fp)) { // I do not use filesize() here - $content .= fread($fp, 4096); // because of remote files. If - } // there is no problem with them - fclose($fp); // please let me know - $this->__LoadGraphDefinitions($content); - return true; - } else return false; - } - - /** - * GraphMaker::DrawGraph() - * Draw all the graph: bg, axis, bars, text.. and output it - * Optional file parameter turns output to file, and bool on success - **/ - function DrawGraph($file = "") { - list($w, $h) = $this->GetFinalGraphDimensions(); - $this->graph_width = $w; - $this->graph_height = $h; - - $this->im = imagecreatetruecolor($w, $h); - if ($this->graph_transparencylevel) { - imagealphablending($this->im, true); - } - - $this->__PaintBackground(); - $this->__DrawAxis(); - - $p = 0; - foreach ($this->bar_data as $name => $value) { - $p++; - $this->__DrawBarText($p, $name); - $this->__DrawBar($p, $value); - } - - if (strlen($this->graph_title)) { - $this->__AllocateColor("im_graph_titlecolor", - $this->graph_titlecolor, - $this->graph_transparencylevel); - $this->__DrawText($this->graph_title, - floor($this->graph_width / 2), - $this->graph_borderwidth + 2, - $this->im_graph_titlecolor, - 2, - 1); - } - - if (strlen($file)) { - $ret = imagepng($this->im, $file); - } else { - header('Content-Type: image/png'); - imagepng($this->im); - $ret = true; - } - imagedestroy($this->im); - return $ret; - } - - /** - * GraphMaker::PaintBackground() - * Draw all the graph: bg, axis, bars, text.. and output it - * Optional file parameter turns output to file, and bool on success - **/ - function __PaintBackground() { - $this->__AllocateColor("im_graph_bgcolor", - $this->graph_bgcolor, - 0); - imagefilledrectangle($this->im, - 0, - 0, - $this->graph_width, - $this->graph_height, - $this->im_graph_bgcolor); - if ($this->graph_bgtransparent) { - imagecolortransparent($this->im, $this->im_graph_bgcolor); - } - if ($this->graph_borderwidth) { - $this->__AllocateColor("im_graph_bordercolor", - $this->graph_bordercolor, - $this->graph_transparencylevel); - for ($i = 0; $i < $this->graph_borderwidth; $i++) { - imagerectangle($this->im, - $i, - $i, - $this->graph_width - 1 - $i, - $this->graph_height - 1 - $i, - $this->im_graph_bordercolor); - } - } - } - - /** - * GraphMaker::__DrawAxis() - * Draws all the axis stuff (and scale steps) - **/ - function __DrawAxis() { - $this->__AllocateColor("im_axis_bordercolor", - $this->axis_bordercolor, - $this->graph_transparencylevel); - $this->__AllocateColor("im_axis_bgcolor", - $this->axis_bgcolor, - $this->graph_transparencylevel); - $this->__DrawPolygon($this->graph_padding['left'], $this->graph_height - $this->graph_padding['bottom'], - $this->graph_padding['left'], $this->graph_padding['top'], - $this->graph_padding['left'] + $this->bar_height - 1, $this->graph_padding['top'] - $this->bar_height + 1, - $this->graph_padding['left'] + $this->bar_height - 1, $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->im_axis_bgcolor, true); - $this->__DrawPolygon($this->graph_padding['left'], $this->graph_height - $this->graph_padding['bottom'], - $this->graph_padding['left'], $this->graph_padding['top'], - $this->graph_padding['left'] + $this->bar_height - 1, $this->graph_padding['top'] - $this->bar_height + 1, - $this->graph_padding['left'] + $this->bar_height - 1, $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->im_axis_bordercolor); - - $this->__DrawPolygon($this->graph_padding['left'], $this->graph_height - $this->graph_padding['bottom'], - $this->graph_padding['left'] + $this->bar_height - 1, $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->graph_width - $this->graph_padding['right'] + $this->bar_height - 1, $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->graph_width - $this->graph_padding['right'], $this->graph_height - $this->graph_padding['bottom'], - $this->im_axis_bgcolor, true); - $this->__DrawPolygon($this->graph_padding['left'], $this->graph_height - $this->graph_padding['bottom'], - $this->graph_padding['left'] + $this->bar_height - 1, $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->graph_width - $this->graph_padding['right'] + $this->bar_height - 1, $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->graph_width - $this->graph_padding['right'], $this->graph_height - $this->graph_padding['bottom'], - $this->im_axis_bordercolor); - - // draw lines that separate bars - $total_bars = count($this->bar_data); - for ($i = 1; $i < $total_bars; $i++) { - $offset = $this->graph_padding['left'] + - (($this->bar_width + ($this->bar_padding * 2)) * $i); - imageline($this->im, - $offset, - $this->graph_height - $this->graph_padding['bottom'], - $offset + $this->bar_height - 1, - $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height + 1, - $this->im_axis_bordercolor); - } - - // draw scale steps - $max_value = $this->__GetMaxGraphValue(); - if (($max_value % 10) > 0) { - $max_value = $max_value + (10 - ($max_value % 10)); - } - $this->axis_max = $max_value; - $y = 0; - $style = array($this->im_axis_bordercolor, $this->im_graph_bgcolor); - imagesetstyle($this->im, $style); - while ($y <= $max_value) { - if ($max_value == 0) { $max_value=1; } // corrected by Marcelo Trenkenchu - $offset = floor($this->graph_height - $this->graph_padding['bottom'] - - ($y * $this->graph_areaheight / $max_value)); - imageline($this->im, - $this->graph_padding['left'], - $offset, - $this->graph_padding['left'] + $this->bar_height - 1, - $offset - $this->bar_height + 1, - $this->im_axis_bordercolor); - $this->__DrawText($y, - $this->graph_padding['left'], - $offset, - $this->im_axis_bordercolor, - 1, - 2, - 1); - // gridline - if ($y > 0) { - imageline($this->im, - $this->graph_padding['left'] + $this->bar_height, - $offset - $this->bar_height + 1, - $this->graph_width - $this->graph_padding['right'] + $this->bar_height - 1, - $offset - $this->bar_height + 1, - IMG_COLOR_STYLED); - } - $y += $this->axis_step; - } - - imageline($this->im, - $this->graph_width - $this->graph_padding['right'] + $this->bar_height - 1, - $this->graph_padding['top'] - $this->bar_height + 1, - $this->graph_width - $this->graph_padding['right'] + $this->bar_height - 1, - $this->graph_height - $this->graph_padding['bottom'] - $this->bar_height, - IMG_COLOR_STYLED); - } - - /** - * GraphMaker::__DrawText() - * Draws text on image with color, size and alignment options - **/ - function __DrawText($text, $x, $y, $color, $size = 1, $align = 0, $valign = 0) { - /* - * Align: 0=left | 1=center | 2=right - */ - if ($align == 1) $x -= floor(strlen($text) * imagefontwidth($size) / 2); - elseif ($align == 2) $x -= (strlen($text) * imagefontwidth($size)); - if ($valign == 1) $y -= floor(imagefontheight($size) / 2); - elseif ($valign == 2) $y -= imagefontheight($size); - imagestring($this->im, - $size, - $x, - $y, - $text, - $color); - } - - /** - * GraphMaker::__GetMaxGraphValue() - * Returns max bar value - **/ - function __GetMaxGraphValue() { - $max_value = 0; - foreach ($this->bar_data as $name => $value) { - if ($value > $max_value) $max_value = $value; - } - return $max_value; - } - - /** - * GraphMaker::__DrawBarText() - * Determines top and left to draw text to a choosen bar - **/ - function __DrawBarText($bar, $text) { - $this->__DrawText($text, - $this->graph_padding['left'] + (($this->bar_width + ($this->bar_padding * 2)) * ($bar - 0.5)), - $this->graph_height - $this->graph_padding['bottom'] + 1, - $this->axis_bordercolor, - 1, - 1); - } +require(dirname(__FILE__) . '/graphing/class.3dbargraph.php'); +require(dirname(__FILE__) . '/graphing/class.linegraph.php'); +require(dirname(__FILE__) . '/graphing/class.piegraph.php'); - /** - * GraphMaker::__DrawBar() - * Draws a choosen bar with it's value - **/ - function __DrawBar($bar, $value) { - $x = $this->graph_padding['left'] + - (($this->bar_width + ($this->bar_padding * 2)) * ($bar - 1)) + - $this->bar_padding; - if ($this->axis_max == 0) { $this->axis_max = 1; } // corrected by Marcelo Trenkenchu - $y = $value * $this->graph_areaheight / $this->axis_max; - $this->____DrawBar($x, - $this->graph_height - $this->graph_padding['bottom'] - $y, - $x + $this->bar_width, - $this->graph_height - $this->graph_padding['bottom']); - } - - /** - * GraphMaker::____DrawBar() - * Draws the actual rectangles that form a bar - **/ - function ____DrawBar($x1, $y1, $x2, $y2) { - $this->__AllocateColor("im_bar_bordercolor", - $this->bar_bordercolor, - $this->graph_transparencylevel); - $this->__AllocateColor("im_bar_bgcolor", - $this->bar_bgcolor, - $this->graph_transparencylevel); - $this->__DrawPolygon($x1, $y1, - $x2, $y1, - $x2, $y2, - $x1, $y2, - $this->im_bar_bgcolor, true); - $this->__DrawPolygon($x1, $y1, - $x2, $y1, - $x2, $y2, - $x1, $y2, - $this->im_bar_bordercolor); - $this->__DrawPolygon($x1, $y1, - $x2, $y1, - $x2 + $this->bar_height - 1, $y1 - $this->bar_height + 1, - $x1 + $this->bar_height - 1, $y1 - $this->bar_height + 1, - $this->im_bar_bgcolor, true); - $this->__DrawPolygon($x1, $y1, - $x2, $y1, - $x2 + $this->bar_height - 1, $y1 - $this->bar_height + 1, - $x1 + $this->bar_height - 1, $y1 - $this->bar_height + 1, - $this->im_bar_bordercolor); - $this->__DrawPolygon($x2, $y2, - $x2, $y1, - $x2 + $this->bar_height - 1, $y1 - $this->bar_height + 1, - $x2 + $this->bar_height - 1, $y2 - $this->bar_height + 1, - $this->im_bar_bgcolor, true); - $this->__DrawPolygon($x2, $y2, - $x2, $y1, - $x2 + $this->bar_height - 1, $y1 - $this->bar_height + 1, - $x2 + $this->bar_height - 1, $y2 - $this->bar_height + 1, - $this->im_bar_bordercolor); - } - - /** - * GraphMaker::__DrawPolygon() - * Draws a (filled) (ir)regular polygon - **/ - function __DrawPolygon($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4, $color, $filled = false) { - if ($filled) { - imagefilledpolygon($this->im, array($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4), 4, $color); - } else { - imagepolygon($this->im, array($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4), 4, $color); - } - } - - /** - * GraphMaker::__LoadGraphDefinitions() - * Loads definitions to a graph from text lines (normaly - * they come from a file). This function is called by - * GraphMaker::LoadGraph() - **/ - function __LoadGraphDefinitions($text) { - $text = preg_split("/\r?\n/", $text); - $data = array(); - $section = ''; - for ($i = 0; $i < count($text); $i++) { - if (preg_match("/^\s*#/", $text[$i])) { - //ignore.. it's just a comment - } elseif (preg_match("/^\s*\}\s*/", $text[$i])) { - $section = ''; - } elseif (preg_match("/^\s*(\w+)\s*\{\s*$/", $text[$i], $r)) { - $section = $r[1]; - } else { - $p = strpos($text[$i], "="); - if ($p !== false) { - $data[$section][trim(substr($text[$i], 0, $p))] = trim(substr($text[$i], $p + 1)); - } - } - } - if (is_array($data['graph'])) { - $this->__LoadGraphValues($data['graph']); - } - if (is_array($data['bar'])) { - $this->__LoadBarValues($data['bar']); - } - if (is_array($data['axis'])) { - $this->__LoadAxisValues($data['axis']); - } - if (is_array($data['data'])) { - $this->bar_data = $data['data']; - } - } - - /** - * GraphMaker::__LoadGraphValues() - * Loads definitions to main graph settings - **/ - function __LoadGraphValues($data) { - foreach ($data as $name => $value) { - $name = strtolower($name); - switch ($name) { - case 'background-color': - $this->__SetColorToValue("graph_bgcolor", $value); - break; - case 'border-color': - $this->__SetColorToValue("graph_bordercolor", $value); - break; - case 'title-color': - $this->__SetColorToValue("graph_titlecolor", $value); - break; - case 'background-transparent': - $this->graph_bgtransparent = ($value == 1 || $value == 'yes' ? 1 : 0); - break; - case 'transparency': - $this->SetGraphTransparency(str_replace('%', '', $value)); - break; - case 'title': - $this->graph_title = $value; - break; - case 'border-width': - $this->graph_borderwidth = (int) $value; - break; - case 'area-height': - $this->graph_areaheight = (int) $value; - break; - default: - if (substr($name, 0, 8) == 'padding-' && strlen($name) > 8) { - $this->graph_padding[substr($name, 8)] = $value; - } - } - } - } - - /** - * GraphMaker::__LoadBarValues() - * Loads definitions to bar settings - **/ - function __LoadBarValues($data) { - foreach ($data as $name => $value) { - $name = strtolower($name); - switch ($name) { - case 'background-color': - $this->__SetColorToValue("bar_bgcolor", $value); - break; - case 'border-color': - $this->__SetColorToValue("bar_bordercolor", $value); - break; - case 'padding': - $this->bar_padding = $value; - break; - case 'width': - $this->bar_width = (int) $value; - break; - case 'height': - $this->bar_height = (int) $value; - break; - } - } - } - - /** - * GraphMaker::__LoadAxisValues() - * Loads definitions to axis settings - **/ - function __LoadAxisValues($data) { - foreach ($data as $name => $value) { - switch (strtolower($name)) { - case 'step': - $this->SetAxisStep($value); - break; - case 'background-color': - $this->__SetColorToValue("axis_bgcolor", $value); - break; - case 'border-color': - $this->__SetColorToValue("axis_bordercolor", $value); - } - } - } - - /** - * GraphMaker::__SetColorToValue() - * Sets a color (rgb or in html format) to a variable - **/ - function __SetColorToValue($varname, $color) { - if ($color[0] == "#") { // if it's hex (html format), change to rgb array - if (strlen($color) == 4) { - // if only 3 hex values (I assume it's a shade of grey: #ddd) - $color .= substr($color, -3); - } - $color = array(hexdec($color[1].$color[2]), - hexdec($color[3].$color[4]), - hexdec($color[5].$color[6])); - } - $this->$varname = $color; - } - - function __AllocateColor($varname, $color, $alpha) { - $this->$varname = imagecolorallocatealpha($this->im, - $color[0], - $color[1], - $color[2], - $alpha); - } -} - -// Graph Generator for PHP -// Originally located at http://szewo.com/php/graph, but link was broken, so this file was retrieved from: -// http://web.archive.org/web/20030130065944/szewo.com/php/graph/graph.class.php3.txt -// License unknown, however sources on the web have shown this to be either GPL or public domain. - -// At this point this class has been very nearly rewritten for Enano. - -class GraphMaker_compat { - var $_values; - var $_ShowLabels; - var $_ShowCounts; - var $_ShowCountsMode; - - var $_BarWidth; - var $_GraphWidth; - var $_BarImg; - var $_BarBorderWidth; - var $_BarBorderColor; - var $_BarBackgroundColor; - var $_RowSortMode; - var $_TDClassHead; - var $_TDClassLabel; - var $_TDClassCount; - var $_GraphTitle; - - function __construct() { - $this->_values = array(); - $this->_ShowLabels = true; - $this->_BarWidth = 32; - $this->_GraphWidth = 360; - $this->_BarImg = scriptPath . "/images/graphbit.png"; - $this->_BarBorderWidth = 0; - $this->_BarBorderColor = "red"; - $this->_ShowCountsMode = 2; - $this->_RowSortMode = 1; - $this->_TDClassHead = "graph-title"; - $this->_TDClassLabel = "graph-label"; - $this->_TDClassCount = "graph-count"; - $this->_GraphTitle="Graph title"; - $this->_BarBackgroundColor = "#456798"; - } - - function GraphMaker_compat() { - $this->__construct(); - } - - function SetBarBorderWidth($width) { - $this->_BarBorderWidth = $width; - } - function SetBorderColor($color) { - $this->_BarBorderColor = $color; - } - - function SetBarBackgroundColor($color) - { - $this->_BarBackgroundColor = $color; - } - -// mode = 1 labels asc, 2 label desc - function SetSortMode($mode) { - switch ($mode) { - case 1: - asort($this->_values); - break; - case 2: - arsort($this->_values); - break; - default: - break; - } - - } - - function AddValue($labelName, $theValue) { - array_push($this->_values, array("label" => $labelName, "value" => $theValue)); - } - - function SetBarData($data) - { - foreach ( $data as $name => $value ) - { - $this->AddValue($name, $value); - } - } - function DrawGraph() - { - $this->BarGraphVert(); - } - function SetBarWidth($width) - { - $this->_BarWidth = $width; - } - function SetBarImg($img) - { - $this->_BarImg = $img; - } - function SetShowLabels($lables) - { - $this->_ShowLabels = $labels; - } - function SetGraphWidth($width) - { - $this->_GraphWidth = $width; - } - function SetGraphTitle($title) - { - $this->_GraphTitle = $title; - } - //mode = percentage or counts - function SetShowCountsMode($mode) - { - $this->_ShowCountsMode = $mode; - } - //mode = none(0) label(1) or count(2) - function SetRowSortMode($sortmode) - { - $this->_RowSortMode = $sortmode; - } - - function SetTDClassHead($class) - { - $this->_TDClassHead = $class; - } - function SetTDClassLabel($class) - { - $this->_TDClassLabel = $class; - } - function SetTDClassCount($class) - { - $this->_TDClassCount = $class; - } - function GetMaxVal() - { - $maxval = 0; - foreach ( $this->_values as $value ) - { - if ( $maxval < $value["value"] ) - { - $maxval = $value["value"]; - } - } - return $maxval; - } - function BarGraphVert() - { - $maxval = $this->GetMaxVal(); - foreach($this->_values as $value) - { - $sumval += $value["value"]; - } - - $this->SetSortMode($this->_RowSortMode); - - echo "\n\n
\n\n "; - - if ( strlen($this->_GraphTitle) > 0 ) - { - echo "\n \n \n "; - } - - echo "\n "; - $css_class = 'row1'; - - foreach($this->_values as $value) - { - $css_class = ( $css_class == 'row1' ) ? 'row3' : 'row1'; - echo " \n "; - } - echo "\n "; - if ( $this->_ShowCountsMode > 0 ) - { - $css_class = 'row1'; - echo "\n "; - foreach($this->_values as $value) - { - $css_class = ( $css_class == 'row1' ) ? 'row3' : 'row1'; - switch ($this->_ShowCountsMode) - { - case 1: - $count = round ( 100 * $value["value"] / $sumval ) . "%"; - break; - case 2: - $count = $value["value"]; - break; - default: - break; - } - echo " \n "; - } - echo "\n"; - } - - if ($this->_ShowLabels) - { - $css_class = 'row1'; - echo " \n "; - foreach($this->_values as $value) - { - $css_class = ( $css_class == 'row1' ) ? 'row3' : 'row1'; - echo " \n "; - } - echo "\n"; - } - - echo "
_values)."\" class=\"".$this->_TDClassHead."\">".$this->_GraphTitle."
\n "; - $width = $this->_BarWidth; - $height = ceil( $value["value"] * $this->_GraphWidth / $maxval ); - - echo "
_BarBackgroundColor}; border: ".$this->_BarBorderWidth."px solid ".$this->_BarBorderColor."\">\n "; - echo "
\n "; - - // echo "_BarImg."\" height=\"$width\" width=\"$height\" "; - // echo " style=\"border: ".$this->_BarBorderWidth."px solid ".$this->_BarBorderColor."\""; - // echo ">"; - - echo "
_TDClassCount."\">$count
_TDClassLabel."\""; - echo ">".$value["label"]."
"; - } - - function BarGraphHoriz() - { - $maxval = $this->GetMaxVal(); - - foreach($this->_values as $value) - { - $sumval += $value["value"]; - } - - $this->SetSortMode($this->_RowSortMode); - - echo ""; - - if ( strlen($this->_GraphTitle) > 0 ) - { - echo ""; - } - foreach($this->_values as $value) - { - if ($this->_ShowLabels) - { - echo ""; - echo ""; - } - echo ""; - if ( $this->_ShowCountsMode > 0 ) - { - switch ($this->_ShowCountsMode) - { - case 1: - $count = round(100 * $value["value"] / $sumval )."%"; - break; - case 2: - $count = $value["value"]; - break; /* Exit the switch and the while. */ - default: - break; - } - echo ""; - } - echo ""; - } - echo "
_ShowCountsMode > 0 ) - { - echo " colspan=\"2\""; - } - echo " class=\"".$this->_TDClassHead."\">".$this->_GraphTitle."
_TDClassLabel."\""; - if ( $this->_ShowCountsMode > 0 ) - { - echo " colspan=\"2\""; - } - echo ">".$value["label"]."
_TDClassCount."\">$count"; - $height = $this->_BarWidth; - $width = ceil( $value["value"] * $this->_GraphWidth / $maxval ); - echo "
_BarBorderWidth."px solid ".$this->_BarBorderColor."\">\n "; - echo "
\n "; - //echo "_BarImg."\" height=$height width=$width "; - //echo " style=\"border: ".$this->_BarBorderWidth."px solid ".$this->_BarBorderColor."\""; - //echo ">"; - echo "
"; - } - /** - * Dummy functions for compatibility with the GD version of the class - */ - - function SetGraphPadding($a, $b, $c, $d) - { - return true; - } - function SetBarPadding($a) - { - return true; - } - function SetAxisStep($a) - { - return true; - } - function SetGraphBackgroundTransparent($r, $g, $b, $a) - { - return true; - } - function SetGraphTransparency($a) - { - return true; - } - function SetGraphAreaHeight($a) - { - return true; - } -} - -