guess you already had the Idea of this class. It create a Dynamic Bar Chart of your Dynamic Report, This class can be used for Finance Report, Site Log Report, or any other application that need Bar Chart Auto Generation
By : hermawan
<?php
/***
Class Name : easyChart Class
Purpose : Create Simple Bar Chart for Statistic
Input : Retrieved Data from DB
Author : Hermawan Haryanto
Email : hermawan@codewalkers.com
Website : http://hermawan.com
Create Date: Sept 28 2001
Update Date: Nov 27 2002
***/
class easyChart {
var $title;
var $width;
var $height;
var $bartitle;
var $barheight;
var $barwidth;
var $background;
var $multiply;
var $spacebar;
var $leftspace;
var $rightspace;
var $upspace;
var $bottomspace;
var $leftlegend;
var $linecolor;
var $barcolor;
var $titlecolor;
var $legendcolor;
var $barinfocolor;
function easyChart () {
$this->title = "Chart Title";
$this->background = Array(153,204,102);
$this->linecolor = Array(240,240,240);
$this->barcolor = Array(255,255,153);
$this->titlecolor = Array(111,166,55);
$this->legendcolor = Array(0,0,0);
$this->barinfocolor = Array(0,0,0);
$this->width = 600;
$this->height = 500;
$this->barwidth = 20;
$this->leftspace = 75;
$this->rightspace = 25;
$this->upspace = 50;
$this->bottomspace = 50;
$this->leftlegend = 10;
$this->chartlegend = "UG93ZXJlZCBieTogSGVyb";
}
function setTitleColor ($color) {
$this->titlecolor = explode(",",$color);
}
function setLegendColor ($color) {
$this->legendcolor = explode(",",$color);
}
function setBarInfoColor ($color) {
$this->barinfocolor = explode(",",$color);
}
function setBarColor ($color) {
$this->barcolor = explode(",",$color);
}
function setLineColor ($color) {
$this->linecolor = explode(",",$color);
}
function setLeftLegend ($leftlegend) {
$this->leftlegend = $leftlegend;
}
function setLeftSpace ($leftspace) {
$this->leftspace = $leftspace;
}
function setRightSpace ($rightspace) {
$this->rightspace = $rightspace;
}
function setTitle ($title) {
$this->title = $title;
}
function setBackground ($color) {
$this->background = explode (",", $color);
}
function setWidth ($width) {
$this->width = $width;
}
function setHeight ($height) {
$this->height = $height;
}
function setBarWidth ($barwidth) {
$this->barwidth = $barwidth;
}
function addBar ($bartitle, $barheight) {
$this->bartitle[] = $bartitle;
$this->barheight[] = $barheight;
}
function prepare() {
$this->chartlegend .= "WF3YW4gSGFyeWFudG8gZWFzeUNoYXJ0LmNs";
$arr = $this->barheight;
sort ($arr);
reset ($arr);
$this->highestvalue = end($arr);
$this->valueincriement = $this->highestvalue / $this->leftlegend;
$this->multiply = ( ($this->height-($this->upspace + $this->bottomspace)) / $this->highestvalue);
$this->spacebar = ( ($this->width - ($this->leftspace + $this->rightspace)) - ($this->barwidth * count($arr) ) ) / (count($arr)+1);
$this->legendspace = ($this->height - ($this->upspace+$this->bottomspace)) / $this->leftlegend;
if ($this->barwidth * count($this->barheight) > ($this->width-($this->upspace+$this->bottomspace))) $err = "Bar width is to large";
if ($err!="") {
print $err;
exit;
}
}
function generateChart() {
$im = ImageCreate($this->width,$this->height);
$white = ImageColorAllocate($im,255,255,255);
$background = ImageColorAllocate($im,$this->background[0],$this->background[1],$this->background[2]);
$black = ImageColorAllocate($im,0,0,0);
$gray = ImageColorAllocate($im,100,100,100);
$linecolor = ImageColorAllocate($im,$this->linecolor[0],$this->linecolor[1],$this->linecolor[2]);
$barcolor = ImageColorAllocate($im,$this->barcolor[0],$this->barcolor[1],$this->barcolor[2]);
$titlecolor = ImageColorAllocate($im,$this->titlecolor[0],$this->titlecolor[1],$this->titlecolor[2]);
$legendcolor = ImageColorAllocate($im,$this->legendcolor[0],$this->legendcolor[1],$this->legendcolor[2]);
$barinfocolor = ImageColorAllocate($im,$this->barinfocolor[0],$this->barinfocolor[1],$this->barinfocolor[2]);
@ImageFilledRectangle($im,0,25,$this->width,$this->height-15,$background);
@ImageFilledRectangle($im,1,26,$this->width-2,$this->height-16,$white);
@ImageFilledRectangle($im,2,27,$this->width-3,$this->height-17,$background);
@ImageFilledRectangle($im,$this->leftspace,$this->upspace-10,$this->width-$this->rightspace,$this->height-($this->bottomspace-20),$white);
$titlewidth = strlen($this->title) * ImageFontWidth(5);
$titlexpos = ($this->width - $titlewidth)/2;
@ImageString ($im, 5, $titlexpos, 5, $this->title, $titlecolor);
@ImageString ($im, 1, 0, $this->height - 10, base64_decode($this->chartlegend."YXNzIC0gaHR0cDovL2hlcm1hd2FuLmRtb25zdGVyLmNvbSAtIEdQTA=="), $black);
for($i=0;$i<=$this->leftlegend;$i++){
$legendx = 5;
$legendy = $this->upspace + ($this->legendspace * $i) - 6;
@ImageString($im, 2, $legendx, $legendy, $this->highestvalue-($this->valueincriement*$i), $legendcolor);
@ImageLine ($im, $this->leftspace, $legendy+6, $this->width - $this->rightspace, $legendy+6, $linecolor);
}
for($i=0;$i<count($this->barheight);$i++){
$j=$i+1;
$x1 = ($j * $this->spacebar) + ($i * $this->barwidth) + $this->leftspace;
$y1 = $this->height - ($this->barheight[$i]*$this->multiply) - $this->upspace;
$x2 = $x1 + $this->barwidth;
$y2 = $this->height - $this->bottomspace;
$bartitlewidth = strlen($this->bartitle[$i]) * ImageFontWidth(2);
$centerofbar = $x1 + ($this->barwidth / 2);
$bartitlex = $centerofbar - ($bartitlewidth/2);
$bartitley = $y2 + 5;
@ImageFilledRectangle($im, $x1, $y1, $x2, $y2, $barcolor);
@ImageString($im, 2, $bartitlex, $bartitley, $this->bartitle[$i], $barinfocolor);
}
@ImageJPEG($im);
@ImageDestroy($im);
}
};
// HERE IS THE EXAMPLE TO USE THE CHART CLASS
$chart = new easyChart(); // Object initialized
$chart->setTitle("This is my Bar Chart Title"); // Title of Chart
$chart->setBackground("153,204,102"); // Background of chart [opt]
$chart->setLineColor("225,225,225"); // Line color separator [opt]
$chart->setBarColor("255,255,153"); // Bar color [opt]
$chart->setTitleColor("111,166,55"); // Color Title [opt]
$chart->setLegendColor("0,0,0"); // Legend Color [opt]
$chart->setBarInfoColor("0,0,0"); // Bar Info Color [opt]
$chart->setWidth(600); // Width of Chart
$chart->setHeight(500); // Height of Chart
$chart->setBarWidth(20); // Bar Width
$chart->setLeftSpace(75); // Left Space
$chart->setRightSpace(25); // Right Space
$chart->setLeftLegend(10); // Left Legend
$chart->addBar("Jan",12000000); // Sample content of chart
$chart->addBar("Peb",15000000);
$chart->addBar("Mar",10000000);
$chart->addBar("Apr",9000000);
$chart->addBar("Mei",18000000);
$chart->addBar("Jun",12000000);
$chart->addBar("Jul",160000);
$chart->addBar("Ags",14000000);
$chart->addBar("Sept",12000000);
$chart->addBar("Okt",17000000);
$chart->addBar("Nop",14000000);
$chart->addBar("Des",9000000);
$chart->prepare(); // Chart Preparation
$chart->generateChart(); // Chart Generation
?>
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
More Content Management Code Articles
More By Codewalkers
developerWorks - FREE Tools! |
Attend this launch webcast with Scott Hebner, Vice President of IBM Rational Marketing and Strategy, for an overview of Rational’s new software offerings and resources to help modernize and accelerate software innovation on i on Power Systems – while ensuring past application investments are protected and continue to grow. Learn how these solutions are helping customers extend their core i5/OS solutions toward modern architectures such as SOA and web technologies to deliver business improvements that stand the test of time. FREE! Go There Now!
|
|
|
|
CakePHP is a stable production-ready, rapid-development aid for building Web sites in PHP. This "Cook up Web sites fast with CakePHP" series shows you how to build an online product catalog using CakePHP. FREE! Go There Now!
|
|
|
|
In this tutorial, you can learn how to install and configure the IBM Rational Asset Manager Eclipse client, explore the different views in the Asset Management perspective, learn various search techniques, work with existing assets, and submit a new asset. FREE! Go There Now!
|
|
|
|
Learn from the best! Find out how developers use Rational ClearCase to be more flexible, innovative and deliver higher quality code in the Rational ClearCase Power Users eKit. This complimentary eKit provides a collection of materials, like articles, whitepapers, and demos that can help you become a power user of Rational ClearCase. FREE! Go There Now!
|
|
|
|
This webcast outlines the best practices that must be instituted to gain the maximum benefit from SOA while maintaining high quality of service. Whether you are deploying new applications or managing and monitoring your existing infrastructure, learn how you can ensure high quality of services with SOA based solutions from IBM. All registrants who attend this live Web Seminar will receive complimentary access to a white paper titled “Maintaining QoS in an SOA Environment”. FREE! Go There Now!
|
|
|
|
Rational Modeling Extension for Microsoft .NET enhances usability for code generation supporting a more intelligent refactoring. The latest enhancements enable organizations with Java and .NET systems and software development maintain architectural integrity across heterogeneous platforms. FREE! Go There Now!
|
|
|
|
Get a free trial download of the latest version of IBM Rational Tester for SOA Quality V7.0.1, a functional and regression testing tool that enables the creation, comprehension, modification and execution of testing GUI-less Web services. FREE! Go There Now!
|
|
|
|
Whether you are creating new applications or modifying existing ones, managing integration of new components with traditional z/OS elements is a critical part of building and deploying modern applications. Listen to this webcast to see how IBM can help you optimize your development process using an IDE like Rational Developer for System z that integrates with management tools, such as ClearCase to manage your application development on mainframes. FREE! Go There Now!
|
|
|
|
The unprecedented scope of a service-oriented architecture (SOA) initiative brings to the forefront a number of management and governance issues that were sidestepped in the past. The key to a successful SOA implementation is managing and governing activities throughout the entire SOA delivery lifecycle by ensuring that services conform to the needs of all of the business’s stakeholders. Learn how service lifecycle management allows the business to ensure that the process by which services are defined, created, tested, deployed, optimized and retired is manageable, repeatable and auditable. FREE! Go There Now!
|
|
|
|
With IBM Rational Systems Development Solution, you can deliver products faster with higher quality. Within this kit, Read the “Model Driven Systems Development” white paper to see how to improve product quality and communication. Then check out the rest of the e-Kit to learn more about important topics that can affect the success of any software project through customer examples, tutorials, informative Webcasts, and best practices for designing, building and managing systems. From start to finish, at every stage in your projects, Rational Systems Development Solution can help your company reach its full potential. FREE! Go There Now!
|
|
|
|
All FREE IBM® developerWorks Tools! |