[Bio] / FigWebServices / conflicted_pegs.cgi Repository:
ViewVC logotype

Annotation of /FigWebServices/conflicted_pegs.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download)

1 : overbeek 1.1 # -*- perl -*-
2 : olson 1.2 #
3 :     # Copyright (c) 2003-2006 University of Chicago and Fellowship
4 :     # for Interpretations of Genomes. All Rights Reserved.
5 :     #
6 :     # This file is part of the SEED Toolkit.
7 :     #
8 :     # The SEED Toolkit is free software. You can redistribute
9 :     # it and/or modify it under the terms of the SEED Toolkit
10 :     # Public License.
11 :     #
12 :     # You should have received a copy of the SEED Toolkit Public License
13 :     # along with this program; if not write to the University of Chicago
14 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
15 :     # Genomes at veronika@thefig.info or download a copy from
16 :     # http://www.theseed.org/LICENSE.TXT.
17 :     #
18 :    
19 : overbeek 1.1
20 :     use HTML;
21 :     use FIG;
22 :     my $fig = new FIG;
23 :    
24 :     my $cgi = new CGI;
25 :    
26 :     if (0) {
27 :     my $VAR1;
28 :     eval(join("",`cat /tmp/conflicted_parms`));
29 :     $cgi = $VAR1;
30 :     # print STDERR &Dumper($cgi);
31 :     }
32 :    
33 :     if (0) {
34 :     print $cgi->header;
35 :     my @params = $cgi->param;
36 :     print "<pre>\n";
37 :     foreach $_ (@params) {
38 :     print "$_\t:",join(",",$cgi->param($_)),":\n";
39 :     }
40 :    
41 :     if (0) {
42 :     if (open(TMP,">/tmp/conflicted_parms")) {
43 :     print TMP &Dumper($cgi);
44 :     close(TMP);
45 :     }
46 :     }
47 :     exit;
48 :     }
49 :    
50 :     my $html = [];
51 :    
52 :     my $user = $cgi->param('user');
53 :     $user =~ s/^master://;
54 :     my %conflicts;
55 :    
56 :     if (open(IN,"<$FIG_Config::global/conflicted.pegs"))
57 :     {
58 :     $line = <IN>;
59 :     while ($line && ($line =~ /^(\S+)/))
60 :     {
61 :     $peg = $1;
62 :     @set = ();
63 :     $hit = 0;
64 :     while ($line && ($line =~ /^(\S+)/) && ($1 eq $peg))
65 :     {
66 :     chomp $line;
67 :     if ($line =~ /\t$user$/) { $hit = 1 }
68 :     push(@set,[split(/\t/,$line)]);
69 :     $line = <IN>;
70 :     }
71 :     if ($hit)
72 :     {
73 :     &process_set($fig,$cgi,$user,\%conflicts,\@set);
74 :     }
75 :     }
76 :     }
77 :    
78 :    
79 :     foreach $sub (sort keys(%conflicts))
80 :     {
81 :     push(@$html,$cgi->h1($sub),"<ul>\n");
82 :     $x = $conflicts{$sub};
83 :     foreach $role (sort keys(%$x))
84 :     {
85 :     push(@$html,"<li> $role\n");
86 :     &display_for_sub_and_role($fig,$cgi,$html,$user,$x->{$role});
87 :     }
88 :     push(@$html,"</ul>\n");
89 :     }
90 :    
91 :     if (@$html == 0)
92 :     {
93 :     push(@$html,$cgi->h1('No conflicts involving your subsystems'));
94 :     }
95 :    
96 :    
97 :     &HTML::show_page($cgi,$html);
98 :    
99 :     sub process_set {
100 :     my($fig,$cgi,$user,$conflicts,$set) = @_;
101 :     my($i,$j,$x,$peg,$func,$subsystem,$role,$curator,$others);
102 :    
103 :     my @mine = grep { $_->[4] eq $user } @$set;
104 :     my @theirs = grep { $_->[4] ne $user } @$set;
105 :    
106 :     for ($i=0; ($i < @mine); $i++)
107 :     {
108 :     $x = $mine[$i];
109 :     ($peg,$func,$subsystem,$role,$curator) = @$x;
110 :     $others = [];
111 :     for ($j=0; ($j < @mine); $j++)
112 :     {
113 :     if ($j != $i)
114 :     {
115 :     push(@$others,$mine[$j]);
116 :     }
117 :     }
118 :     push(@$others,@theirs);
119 :     push(@{$conflicts->{$subsystem}->{$role}},[$peg,$func,$others]);
120 :     }
121 :     }
122 :    
123 :     sub display_for_sub_and_role {
124 :     my($fig,$cgi,$html,$user,$clashes) = @_;
125 :     my($peg,$func,$others,$col_hdrs,$tab,$x,$sub,$role,$curator);
126 :    
127 :     push(@$html,"<ul><br>\n");
128 :     foreach $peg_entry (@$clashes)
129 :     {
130 :     ($peg,$func,$others) = @$peg_entry;
131 :     $peg_link = &HTML::fid_link($cgi,$peg);
132 :     push(@$html,"<li> $peg_link &nbsp; $func\n<br>\n");
133 :     if (@$others > 0)
134 :     {
135 :     $col_hdrs = ["subsystem","role","curator"];
136 :     $tab = [];
137 :     foreach $x (@$others)
138 :     {
139 :     (undef,undef,$sub,$role,$curator) = @$x;
140 :     my $can_alter = (($user = $cgi->param('user')) && ($user eq $fig->subsystem_curator($sub)));
141 :     my $url = $cgi->a({href => "subsys.cgi?can_alter=$can_alter&user=$user&ssa_name=$sub&request=show_ssa"}, $sub);
142 :     push(@$tab,[$sub,$role,$curator]);
143 :     }
144 :     push(@$html,"<br>",&HTML::make_table($col_hdrs,$tab,"In These Subsystems"),"<br><br>");
145 :     }
146 :     push(@$html,"<br>\n");
147 :     }
148 :     push(@$html,"</ul>");
149 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3