5 |
use lib "$ENV{HOME}/public_perl/"; |
use lib "$ENV{HOME}/public_perl/"; |
6 |
use Zot; |
use Zot; |
7 |
|
|
8 |
our ($f, $l, $h, $c, $t); |
our ($f, $l, $h, $c, $t, $e); |
9 |
|
|
10 |
my $compact = $c ? 1 : 0; |
my $compact = $c ? 1 : 0; |
11 |
my $full = $f ? 1 : 0; |
my $full = $f ? 1 : 0; |
12 |
my $labels = $l ? 1 : 0; |
my $labels = $l ? 1 : 0; |
13 |
my $history = $h ? 1 : 0; |
my $history = $h ? 1 : 0; |
14 |
|
my $endpoints = $e ? 1 : 0; |
15 |
my %target_tables; |
my %target_tables; |
16 |
$target_tables{$_}++ |
$target_tables{$_}++ |
17 |
foreach (split /,/, $t); |
foreach (split /,/, $t); |
102 |
$style{'table'}); |
$style{'table'}); |
103 |
foreach my $rel ($table->rels) |
foreach my $rel ($table->rels) |
104 |
{ |
{ |
105 |
$a{$table->name} .= sprintf( " \"%s::%s\" [label=%s %s %s];\n", |
$a{$table->name} .= sprintf( " \"%s::%s\" [label=%s %s %s];\n", |
106 |
$table->name, $rel, $rel, |
$table->name, $rel, $rel, |
107 |
$style{'rel'}{'node'}, |
$style{'rel'}{'node'}, |
108 |
$rel eq '_table' ? $style{'rel'}{'private'} : '' ); |
$rel eq '_table' ? $style{'rel'}{'private'} : '' ); |
109 |
$a{$table->name} .= sprintf( " %s -> \"%s::%s\" [%s %s];\n", |
$a{$table->name} .= sprintf( " %s -> \"%s::%s\" [%s %s];\n", |
110 |
$table->name, $table->name, $rel, |
$table->name, $table->name, $rel, |
111 |
$style{'rel'}{'tail'}); |
$style{'rel'}{'tail'}); |
112 |
|
|
113 |
$relh{$table->name}{$table->rel($rel)} .= sprintf( " \"%s::%s\" -> %s [lhead=\"cluster_%s\" %s %s];\n", |
$a{'ENDPOINT_' . $table->name} .= sprintf( " %s [shape=doubleoctagon]\n \"%s::%s\" -> %s [%s %s];\n", |
114 |
$table->name, $rel, $table->rel($rel), $table->rel($rel), |
$table->rel($rel), $table->name, $rel, $table->rel($rel), |
115 |
$style{'rel'}{'head'}, |
$style{'rel'}{'head'}) |
116 |
$labels ? qq'label="$rel"' : ''); |
if ($endpoints and not $target_tables{$table->rel($rel)}); |
117 |
|
|
118 |
|
$relh{$table->name}{$table->rel($rel)} .= sprintf( " \"%s::%s\" -> %s [lhead=\"cluster_%s\" %s %s];\n", |
119 |
|
$table->name, $rel, $table->rel($rel), $table->rel($rel), |
120 |
|
$style{'rel'}{'head'}, |
121 |
|
$labels ? qq'label="$rel"' : ''); |
122 |
|
|
123 |
push( @gotcha, $table ) |
push( @gotcha, $table ) |
124 |
if ($rel eq '_table'); |
if ($rel eq '_table'); |
125 |
} |
} |
126 |
foreach my $attr ($table->attrs) |
foreach my $attr ($table->attrs) |
127 |
{ |
{ |
135 |
} |
} |
136 |
|
|
137 |
$a{$table->name} .= sprintf "label=\"%s\" %s}\n", $table->name, $style{'cluster'}{'table'} ; |
$a{$table->name} .= sprintf "label=\"%s\" %s}\n", $table->name, $style{'cluster'}{'table'} ; |
138 |
|
$a{$table->name} .= delete $a{'ENDPOINT_' . $table->name} |
139 |
|
if exists $a{'ENDPOINT_' . $table->name}; |
140 |
} |
} |
141 |
|
|
142 |
foreach my $table (@gotcha) |
foreach my $table (@gotcha) |