| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * Contains Table_Stats_Svg class
- *
- * @package PhpMyAdmin
- */
- if (! defined('PHPMYADMIN')) {
- exit;
- }
- require_once 'libraries/plugins/schema/TableStats.class.php';
- /**
- * Table preferences/statistics
- *
- * This class preserves the table co-ordinates,fields
- * and helps in drawing/generating the Tables in SVG XML document.
- *
- * @package PhpMyAdmin
- * @name Table_Stats_Svg
- * @see PMA_SVG
- */
- class Table_Stats_Svg extends TableStats
- {
- /**
- * Defines properties
- */
- public $height;
- public $currentCell = 0;
- /**
- * The "Table_Stats_Svg" constructor
- *
- * @param object $diagram The current SVG image document
- * @param string $db The database name
- * @param string $tableName The table name
- * @param string $font Font face
- * @param integer $fontSize The font size
- * @param integer $pageNumber Page number
- * @param integer &$same_wide_width The max. with among tables
- * @param boolean $showKeys Whether to display keys or not
- * @param boolean $tableDimension Whether to display table position or not
- * @param boolean $offline Whether the coordinates are sent
- *
- *
- * @see PMA_SVG, Table_Stats_Svg::Table_Stats_setWidth,
- * Table_Stats_Svg::Table_Stats_setHeight
- */
- public function __construct(
- $diagram, $db, $tableName, $font, $fontSize, $pageNumber, &$same_wide_width,
- $showKeys = false, $tableDimension = false, $offline = false
- ) {
- parent::__construct(
- $diagram, $db, $pageNumber, $tableName,
- $showKeys, $tableDimension, $offline
- );
- // height and width
- $this->_setHeightTable($fontSize);
- // setWidth must me after setHeight, because title
- // can include table height which changes table width
- $this->_setWidthTable($font, $fontSize);
- if ($same_wide_width < $this->width) {
- $same_wide_width = $this->width;
- }
- }
- /**
- * Displays an error when the table cannot be found.
- *
- * @return void
- */
- protected function showMissingTableError()
- {
- PMA_Export_Relation_Schema::dieSchema(
- $this->pageNumber,
- "SVG",
- sprintf(__('The %s table doesn\'t exist!'), $this->tableName)
- );
- }
- /**
- * Sets the width of the table
- *
- * @param string $font The font size
- * @param integer $fontSize The font size
- *
- * @return void
- * @access private
- *
- * @see PMA_SVG
- */
- private function _setWidthTable($font,$fontSize)
- {
- foreach ($this->fields as $field) {
- $this->width = max(
- $this->width,
- PMA_Font::getStringWidth($field, $font, $fontSize)
- );
- }
- $this->width += PMA_Font::getStringWidth(' ', $font, $fontSize);
- /*
- * it is unknown what value must be added, because
- * table title is affected by the table width value
- */
- while ($this->width
- < PMA_Font::getStringWidth($this->getTitle(), $font, $fontSize)
- ) {
- $this->width += 7;
- }
- }
- /**
- * Sets the height of the table
- *
- * @param integer $fontSize font size
- *
- * @return void
- */
- private function _setHeightTable($fontSize)
- {
- $this->heightCell = $fontSize + 4;
- $this->height = (count($this->fields) + 1) * $this->heightCell;
- }
- /**
- * draw the table
- *
- * @param boolean $showColor Whether to display color
- *
- * @access public
- * @return void
- *
- * @see PMA_SVG,PMA_SVG::printElement
- */
- public function tableDraw($showColor)
- {
- $this->diagram->printElement(
- 'rect', $this->x, $this->y, $this->width,
- $this->heightCell, null, 'fill:#007;stroke:black;'
- );
- $this->diagram->printElement(
- 'text', $this->x + 5, $this->y+ 14, $this->width, $this->heightCell,
- $this->getTitle(), 'fill:#fff;'
- );
- foreach ($this->fields as $field) {
- $this->currentCell += $this->heightCell;
- $fillColor = 'none';
- if ($showColor) {
- if (in_array($field, $this->primary)) {
- $fillColor = '#aea';
- }
- if ($field == $this->displayfield) {
- $fillColor = 'none';
- }
- }
- $this->diagram->printElement(
- 'rect', $this->x, $this->y + $this->currentCell, $this->width,
- $this->heightCell, null, 'fill:' . $fillColor . ';stroke:black;'
- );
- $this->diagram->printElement(
- 'text', $this->x + 5, $this->y + 14 + $this->currentCell,
- $this->width, $this->heightCell, $field, 'fill:black;'
- );
- }
- }
- }
|