RelationStatsEps.class.php
3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Contains Relation_Stats_Eps class
*
* @package PhpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
require_once 'libraries/plugins/schema/RelationStats.class.php';
/**
* Relation preferences/statistics
*
* This class fetches the table master and foreign fields positions
* and helps in generating the Table references and then connects
* master table's master field to foreign table's foreign key
* in EPS document.
*
* @package PhpMyAdmin
* @name Relation_Stats_Eps
* @see PMA_EPS
*/
class Relation_Stats_Eps extends RelationStats
{
/**
* The "Relation_Stats_Eps" constructor
*
* @param object $diagram The EPS diagram
* @param string $master_table The master table name
* @param string $master_field The relation field in the master table
* @param string $foreign_table The foreign table name
* @param string $foreign_field The relation field in the foreign table
*/
public function __construct(
$diagram, $master_table, $master_field, $foreign_table, $foreign_field
) {
$this->wTick = 10;
parent::__construct(
$diagram, $master_table, $master_field, $foreign_table, $foreign_field
);
$this->ySrc += 10;
$this->yDest += 10;
}
/**
* draws relation links and arrows
* shows foreign key relations
*
* @param boolean $showColor Whether to use one color per relation or not
*
* @see PMA_EPS
*
* @return void
*/
public function relationDraw($showColor)
{
/* Commented because $color unused.
if ($showColor) {
$listOfColors = array(
'red',
'grey',
'black',
'yellow',
'green',
'cyan',
'orange'
);
shuffle($listOfColors);
$color = $listOfColors[0];
} else {
$color = 'black';
}*/
// draw a line like -- to foreign field
$this->diagram->line(
$this->xSrc,
$this->ySrc,
$this->xSrc + $this->srcDir * $this->wTick,
$this->ySrc,
1
);
// draw a line like -- to master field
$this->diagram->line(
$this->xDest + $this->destDir * $this->wTick,
$this->yDest,
$this->xDest,
$this->yDest,
1
);
// draw a line that connects to master field line and foreign field line
$this->diagram->line(
$this->xSrc + $this->srcDir * $this->wTick,
$this->ySrc,
$this->xDest + $this->destDir * $this->wTick,
$this->yDest,
1
);
$root2 = 2 * sqrt(2);
$this->diagram->line(
$this->xSrc + $this->srcDir * $this->wTick * 0.75,
$this->ySrc,
$this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick,
$this->ySrc + $this->wTick / $root2,
1
);
$this->diagram->line(
$this->xSrc + $this->srcDir * $this->wTick * 0.75,
$this->ySrc,
$this->xSrc + $this->srcDir * (0.75 - 1 / $root2) * $this->wTick,
$this->ySrc - $this->wTick / $root2,
1
);
$this->diagram->line(
$this->xDest + $this->destDir * $this->wTick / 2,
$this->yDest,
$this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick,
$this->yDest + $this->wTick / $root2,
1
);
$this->diagram->line(
$this->xDest + $this->destDir * $this->wTick / 2,
$this->yDest,
$this->xDest + $this->destDir * (0.5 + 1 / $root2) * $this->wTick,
$this->yDest - $this->wTick / $root2,
1
);
}
}