| <?php |
| /*======================================================================= |
| // File: DBSCHEMAEX1.PHP |
| // Description: Draw a DB schema of the DDDA architecture |
| // Created: 2002-08-25 |
| // Author: Johan Persson (johanp@aditus.nu) |
| // Ver: $Id$ |
| // |
| // License: This code is released under QPL |
| // Copyright (C) 2001,2002 Johan Persson |
| // Note: The actual drawing of the tables are semi-automatically |
| // but you can easily adjust the individual tables position |
| // with the 'tblposadj' array. |
| // |
| //======================================================================== |
| */ |
| include "../jpgraph.php"; |
| include "../jpgraph_canvas.php"; |
| include "../jpgraph_canvtools.php"; |
| include "../utils/misc/imgdbschema.inc"; |
| include "../utils/jpdocgen/jpdb.php"; |
| |
| |
| // Global callback to format the table header names |
| function FormatTblName($aName) { |
| // We want to replace any specifi references to the |
| // 'JpGraph' project with the generic '<project>' |
| return str_replace('JpGraph','<project>', $aName); |
| } |
| |
| // Global callback to format each field name in the table |
| function FormatFldName($aName,$aTable) { |
| return $aName; |
| } |
| |
| |
| class Driver { |
| |
| var $ig, $img, $iscale, $ishape; |
| var $iymax,$ixmax; |
| var $iwidth,$iheight; |
| |
| function Driver() { |
| |
| // Define Image size and coordinate grid space to work within |
| $this->iwidth = 600; |
| $this->iheight= 750; |
| $this->iymax = 50; |
| $this->ixmax = 55; |
| |
| // Setup a basic canvas |
| $this->ig = new CanvasGraph($this->iwidth,$this->iheight,'auto'); |
| $this->img = $this->ig->img; |
| |
| // Define the scale to be used |
| $this->iscale = new CanvasScale($this->ig); |
| $this->iscale->Set(0,$this->ixmax,0,$this->iymax); |
| $this->ishape = new Shape($this->ig,$this->iscale); |
| |
| // A small frame around the canvas |
| $this->ig->SetMargin(2,3,2,3); |
| $this->ig->SetMarginColor("teal"); |
| $this->ig->InitFrame(); |
| |
| } |
| |
| function Run() { |
| |
| $leftm=1.5; // Left margin (for table schemes) |
| $topm=5; // Top margin (for table schemes) |
| $tblwidth=15; // Individual table width |
| $tlo=1; // Offset for top line |
| |
| // Add the background color for the project specific tables |
| $this->ishape->IndentedRectangle($leftm,$topm-1,3*$tblwidth+$tlo+6,45, |
| $tlo+2*$tblwidth+2,30,CORNER_BOTTOMLEFT, |
| 'lightblue'); |
| |
| // Stroke the tables (series of x,y offsets, If =-1 then use the |
| // automtic positioning |
| $tblposadj=array($tlo,0,$tblwidth+$tlo+2,0,2*$tblwidth+$tlo+4, |
| 0,-1,16,-1,16); |
| $dbschema = new ImgDBSchema('jpgraph_doc','FormatTblName','FormatFldName'); |
| $dbschema->SetMargin($leftm,$topm); |
| $dbschema->SetTableWidth($tblwidth); |
| $dbschema->Stroke($this->img,$this->iscale,$tblposadj); |
| |
| $tt = new CanvasRectangleText(); |
| $tt->SetFillColor(''); |
| $tt->SetColor(''); |
| $tt->SetFontColor('navy'); |
| |
| // Add explanation |
| $tt->SetFont(FF_ARIAL,FS_NORMAL,12); |
| $tt->Set('Project specific tables',$tblwidth+$leftm+3,16,15); |
| $tt->Stroke($this->img,$this->iscale); |
| |
| // Add title |
| $tt->SetColor(''); |
| $tt->SetFont(FF_VERDANA,FS_BOLD,26); |
| $tt->Set('DDDA - DB Schema',9,0.5,30); |
| $tt->Stroke($this->img,$this->iscale); |
| |
| // Add a version and date |
| $tt->SetFillColor('yellow'); |
| $tt->SetFont(FF_FONT1,FS_NORMAL,10); |
| $tt->Set("Generated: ".date("ymd H:i",time()),1,$this->iymax*0.96,15); |
| $tt->Stroke($this->img,$this->iscale); |
| |
| $this->ig->Stroke(); |
| } |
| } |
| |
| $driver = new Driver(); |
| $driver->Run(); |
| |
| ?> |
| |