Content Management Code

  Home arrow Content Management Code arrow Easy Bar Chart
CONTENT MANAGEMENT CODE

Easy Bar Chart
By: Codewalkers
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 3 stars3 stars3 stars3 stars3 stars / 9
    2002-11-05

    Table of Contents:

     
     

    SEARCH CODEWALKERS

    TOOLS YOU CAN USE

    advertisement
    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

    blog comments powered by Disqus

    CONTENT MANAGEMENT CODE ARTICLES

    - V2 CMS - Content Management System
    - VSNS Lemon
    - Country List For Forms Using SQL
    - eggblog
    - Table generation class
    - STP Simple Template Parser
    - class Vision_To_Form_Elements
    - Cascade Drop Down
    - Cura - CMS
    - Syntax Desktop
    - 216 color table
    - Simple Mini Poll class library (SimPoll)
    - Regex Generator
    - Siteseed
    - Company WebSite Builder PRO


    © 2003-2012 by Developer Shed. All rights reserved. DS Cluster 2 - Follow our Sitemap