<?
/**
Author: Mario Herrmann <mario at maxx-web dot com>
# English
This is a simple class to paint some statistics
just by using simple HTML code
U don´t need any gdlib extensions to be installed
Maybe the Stylesheet definitions may not fit ur needs
so just change it in the Construktor or just delete the constructor function
and make the settings for "td.dia_normal","td.dia_small" and "td.dia_very_small"
global
Some pictures are needed to paint the Chart axis
ecke.gif,right_dia.gif,right_spitze.gif,up_dia.gif,up_spitze.gif
and pixel.gif
if u don´t want to keep them in the same directory as the script u can use
$object->set_imagefolder("ur/image/folder/");
Usage:
$chart =new THtml_Chart();
$values=array( "Peter"=>array(10),"Ulf"=>array(10.7),"Jan"=>array(17),"Stefan"=>array(9),"Mario"=>array(40));
$chart->show_diagramm($values,"Name","Easter Eggs","Simple Easter Egg Chart",array("Number of founded eggs"));
for more examples view the example.php
# Deutsch
Einfache Klasse zur Darstellung von Daten (Statistiken)
ohne auf Erweiterungen wie die gdlib zurückgreifen zu müssen
Falls die Stylesheetangaben die Im Construktor der Klasse
ausgegeben werden nicht zum Benutzten Layout passen
so können diese leicht geändert werden
Die Bilder ecke.gif,right_dia.gif,right_spitze.gif,up_dia.gif,up_spitze.gif und pixel.gif
werden benötigt um die Achsen des Diagramms zu zeichnen
sollen die Bilder nicht im gleichen Pfad wie das Script liegen
kann mit $object->set_imagefolder("dein/bilder/ordner/"); ein eigener Ordner
angegeben werden
Beispiele sind in der example.php
*/
class THtml_Chart{
var $bar_colors=array("#FF8000","#004080","#FF0000","#008040","#808080");
var $bgcolor="#FFFFFF";
var $headcolor="#CCCCCC";
var $bordercolor="#000000";
var $maxstring="maximal value";
var $show_x_values=false;
var $measure="";
var $imagefolder="";
var $show_avg=false;
var $show_cap_avg=false;
function THtml_Chart(){
echo <<<css
<style type="text/css">
<!--
table { font-family: Verdana, Arial,Helvetica;font-size: 10pt; }
td.dia_normal { font-family: Verdana, Arial,Helvetica;font-size: 10pt; }
td.dia_small { font-size: 8pt;color: #000000; }
td.dia_very_small { font-size: 7pt;color: #000000; }
-->
</style>
css;
}
function _reset(){
$this->bar_colors=array("#FF8000","#004080","#FF0000","#008040","#808080");
$this->bgcolor="#FFFFFF";
$this->headcolor="#CCCCCC";
$this->bordercolor="#000000";
$this->maxstring="maximal value";
$this->show_x_values=false;
$this->measure="";
$this->imagefolder="";
$this->show_avg=false;
}
function set_imagefolder($f){
$this->imagefolder=$f;
}
function set_measure($unit){
$this->measure=$unit;
}
function set_maxstring($v){
$this->maxstring=$v;
}
function htmlcolor($color){
return eregi("^#[0-9A-Fa-f]{6}$",$color);
}
function set_bgcolor($c){
if($this->htmlcolor($c))$this->bgcolor=$c;
}
function set_bordercolor($c){
if($this->htmlcolor($c))$this->bordercolor=$c;
}
function set_headcolor($c){
if($this->htmlcolor($c))$this->headcolor=$c;
}
function set_bar_colors($c){
if(is_array($c)){
foreach($c as $v){
if(!$this->htmlcolor($v))return false;
}
$this->bar_colors=$c;
}
}
function set_show_x_values($c=false){
if(($c))
$this->show_x_values=true;
else
$this->show_x_values=false;
}
function set_show_avg($a=false){
if(($a))
$this->show_avg=true;
else
$this->show_avg=false;
}
function set_show_cap_avg($a=false){
if(($a))
$this->show_cap_avg=true;
else
$this->show_cap_avg=false;
}
function show_diagramm($werte,$yachse,$xachse,$tablehead,$legende){
$max=0;$anzahl=0;$i=0;$a=0;
if(is_array($werte)){
foreach($werte as $bezeichner => $values){
if($this->show_avg){
$avg[]= round(array_sum($values)/count($values),2);
}
foreach($values as $x){
if($x>$max)$max=$x;
if($this->show_cap_avg){
$cap_avg[$i]+=$x;
$i++;
}
}
$anzahl++;
}
if ($max!=0){
?>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="<?=$this->bordercolor?>"><td class="dia_normal">
<table border="0" cellpadding="5" cellspacing="1" width="100%">
<tr bgcolor="<?=$this->headcolor?>"><td colspan="2"><b><? echo $tablehead ?></b></td></tr>
<tr bgcolor="<?=$this->bgcolor?>"><td class="dia_normal">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td class="dia_small" valign="bottom"><b><? echo $yachse ?></b><br><br></td><td valign="bottom"><img src="<?=$this->imagefolder?>up_spitze.gif" border="0"></td>
<td colspan="2" class="dia_small" align="right"><?
$colorcount=0;
for($i=0;$i<count($legende);$i++){
echo "<font color=\"".$this->bar_colors[$colorcount]."\"><b>$legende[$i]</b>";
if($this->show_cap_avg){
echo "( ".round($cap_avg[$i]/$anzahl,2).$this->measure." )";
}
echo "</font><br>";
$colorcount=($colorcount+1)%count($this->bar_colors);
}
?></td>
</tr>
<?
$i=true;
foreach($werte as $bezeichner => $values){
$colorcount=0;
echo "<tr><td class=\"dia_small\" align=\"right\" valign=\"top\"><nobr>$bezeichner</nobr>";
if(is_array($avg))
echo " ($avg[$a]".$this->measure.")";
$a++;
echo "</td>";
if($i)
echo "<td rowspan=\"$anzahl\" background=\"".$this->imagefolder."up_dia.gif\" class=\"dia_very_small\"> </td>";
echo "<td width=\"100%\" class=\"dia_very_small\">";
foreach($values as $x){
$prozent=round(100/$max*$x);
if($this->show_x_values){
echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td class=\"dia_small\" width=\"100%\">";
}
echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"$prozent%\"><tr><td width=\"100%\" bgcolor=\"".$this->bar_colors[$colorcount]."\"><img src=\"".$this->imagefolder."pixel.gif\" width=\"$prozent%\" height=\"4\" border=\"0\"></td></tr></table>";
if($this->show_x_values){
echo "</td><td class=\"dia_very_small\"><nobr> $x <b>".$this->measure."</b></nobr></td></tr></table>";
}
$colorcount=($colorcount+1)%count($this->bar_colors);
}
echo "<br></td><td class=\"dia_small\"></td></tr>";
$i=false;
}
?>
<tr><td class="dia_normal"><span></span></td><td valign="top"><img src="<?=$this->imagefolder?>ecke.gif" border="0"></td><td background="<?=$this->imagefolder?>right_dia.gif"><img src="<?=$this->imagefolder?>right_dia.gif" border="0"></td><td class="dia_normal"><img src="<?=$this->imagefolder?>right_spitze.gif" border="0"></td></tr>
<tr><td colspan="4" align="right" class="dia_small"><b><?=$xachse ?> </b>(<?=$this->maxstring?>:<? echo $max." ".$this->measure;?>)</td></tr>
</table></td></tr>
</table></td></tr></table>
<?
}
}
}
}
?>
|