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