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

Annotation of /FigWebServices/cv.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download)

1 : mkubal 1.1 # -*- perl -*-
2 :     use InterfaceRoutines;
3 :     use FIG;
4 :     use FIG_Config;
5 :     use URI::Escape; # uri_escape
6 :     use HTML;
7 :     use Data::Dumper;
8 :     #use strict;
9 :     use GenoGraphics;
10 :     use CGI;
11 :     use Tracer;
12 :    
13 :     my $cgi = new CGI;
14 :    
15 :     use HTML;
16 :     use raelib;
17 :     my $raelib=new raelib;
18 :    
19 :     use LWP::Simple qw(!head); # see the caveat in perldoc LWP about importing two head methods.
20 :    
21 :     #for testing
22 :    
23 :     my $peg = "fig|9598.2.peg.1";
24 :    
25 :     my $fig;
26 :     eval {
27 :     $fig = new FIG;
28 :     };
29 :    
30 :     if ($@ ne "")
31 :     {
32 :     my $err = $@;
33 :    
34 :     my(@html);
35 :    
36 :     push(@html, $cgi->p("Error connecting to SEED database."));
37 :     if ($err =~ /Could not connect to DBI:.*could not connect to server/)
38 :     {
39 :     push(@html, $cgi->p("Could not connect to relational database of type $FIG_Config::dbms named $FIG_Config::db on port $FIG_Config::dbport."));
40 :     }
41 :     else
42 :     {
43 :     push(@html, $cgi->pre($err));
44 :     }
45 :     &HTML::show_page($cgi, \@html, 1);
46 :     exit;
47 :     }
48 :    
49 :     my $html = [];
50 :     my $user = $cgi->param('user');
51 :    
52 :     unshift(@$html, "<TITLE>Controlled Vocabulary Workbench</TITLE>\n");
53 :    
54 :     my $ids;
55 :     my $tag_to_id;
56 :     my $inputs;
57 :    
58 :     if ($cgi->param('request') eq "Delete Checked Terms")
59 :     {
60 :     my %id_term_to_source;
61 :     my @checked;
62 :     my @param_list = $cgi->param();
63 :     if (@param_list)
64 :     {
65 :     foreach my $p (@param_list)
66 :     {
67 :     if ( $p=~/delete_checked/)
68 :     {
69 :     if($cgi->param($p))
70 :     {
71 :     $value = $cgi->param($p);
72 :     push(@checked,$value)
73 :     }
74 :     }
75 :     }
76 :    
77 :     for my $c (@checked)
78 :     {
79 :     @temp = split('\t',$c);
80 :     $id_term_to_source{$temp[1]} = $temp[0];
81 :     }
82 :     }
83 :     &delete_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
84 :     }
85 :     elsif ($cgi->param('request') eq "Search Selected Controlled Vocabulary")
86 :     {
87 :     if ($cgi->param('search_term')) {$search_term=$cgi->param('search_term')}
88 :     if ($cgi->param('select_cv')) {$cv=$cgi->param('select_cv')}
89 :     &search($fig,$cgi,$html,$peg,$cv,$search_term);
90 :     }
91 :     elsif ($cgi->param('request') eq "Add Custom Term")
92 :     {
93 :     if ($cgi->param('custom_source')) {$custom_source=$cgi->param('custom_source')}
94 :     if ($cgi->param('custom_id')) {$custom_id=$cgi->param('custom_id')}
95 :     if ($cgi->param('custom_term')) {$custom_term=$cgi->param('custom_term')}
96 :    
97 :     my $triple = [$custom_source,$custom_id,$custom_term];
98 :     &add_custom_term($fig,$cgi,$html,$peg,$triple);
99 :     }
100 :    
101 :     else
102 :     {
103 :     &show_initial($fig,$cgi,$html,$peg);
104 :     }
105 :    
106 :     &HTML::show_page($cgi,$html,1);
107 :     exit;
108 :    
109 :     sub delete_terms
110 :     {
111 :     my ($fig,$cgi,$html,$peg,$id_term_to_source) = @_;
112 :     my @id_term = keys(%{$id_term_to_source});
113 :     foreach my $it (@id_term){$fig->delete_attribute($peg,$id_term_to_source->{$it},$it)}
114 :     &show_initial($fig,$cgi,$html,$peg);
115 :     }
116 :    
117 :     sub search
118 :     {
119 :     my ($fig,$cgi,$html,$peg,$cv,$search_term) =@_;
120 :     open(LOOKUP,"$FIG_config::global/$cv_lookup.txt");
121 :     my @lines = <LOOKUP>;
122 :     my $search_results = grep(/$search_term/i,@lines);
123 :     &show_search_results($fig,$cgi,$html,$peg,$cv,$search_results);
124 :     }
125 :    
126 :     sub add_custom_term
127 :     {
128 :     my ($fig,$cgi,$html,$peg,$triple) =@_ ;
129 :     my @input = @$triple;
130 :     my $key = $input[0];
131 :     my $id = $input[1];
132 :     my $term = $input[2];
133 :     $value = $id.": ".$term;
134 :     $fig->add_attribute($peg,$key,$value);
135 :     }
136 :    
137 :     sub show_search_results {
138 :     my ($fig,$cgi,$html,$peg,$cv,$search_results)=@_;
139 :     @sr = @$search_results;
140 :     my $add_col_hdrs = ["Add","Source","ID: Term"];
141 :     my $add_table_rows;
142 :     for my $r (@sr)
143 :     {
144 :     @temp = split("\t",$r);
145 :     $row = [];
146 :     $source = $cv;
147 :     $id_and_term = $temp[1];
148 :     $cb ="<input type=checkbox name=add_checked value=$id_and_term>" ;
149 :     push(@$row,$cb);
150 :     push(@$row,$source);
151 :     push(@$row,$id_and_term);
152 :     push(@$add_table_rows,$row);
153 :     }
154 :    
155 :     my $delete_col_hdrs = ["Delete","Source","ID: Term"];
156 :     my @results = $fig->get_attributes($peg,'GO');
157 :     my $delete_table_rows;
158 :     my $counter = 0;
159 :     for my $r (@results)
160 :     {
161 :     $row = [];
162 :     $source = $r->[1];
163 :     $id_and_term = $r->[2];
164 :     $cb ="<input type=checkbox name=delete_checked_$counter value=$id_and_term>" ;
165 :     push(@$row,$cb);
166 :     push(@$row,$source);
167 :     push(@$row,$id_and_term);
168 :     push(@$delete_table_rows,$row);
169 :     $counter = $counter + 1;
170 :     }
171 :    
172 :     push @$html,
173 :     $cgi->start_multipart_form(),
174 :     "<h2>Controlled Vocabulary Workbench</h2>\n",
175 :     $cgi->hr,
176 :     "<h4>Current Terms Assigned To Peg </h4>\n",
177 :     &HTML::make_table($delete_col_hdrs,$delete_table_rows),
178 :     $cgi->br,
179 :     $cgi->submit(-name=>'request', -value=>'Delete Checked Terms'),
180 :     $cgi->hr,
181 :     $cgi->br,
182 :     "<h4>Search for New Terms to Add </h4>\n",
183 :     "<select name=select_cv>
184 :     <option value=all >all CVs</option>
185 :     <option value=go >Gene Ontology</option>
186 :     <option value=omim >OMIM</option>
187 :     </select> &nbsp;&nbsp",
188 :     $cgi->textfield(-name => "search_term", -size => 20),
189 :     $cgi->submit(-name=>'request', -value=>'Search Selected Controlled Vocabulary'),
190 :     $cgi->br,
191 :     &HTML::make_table($add_col_hdrs,$add_table_rows),
192 :     $cgi->hr,
193 :     $cgi->br,
194 :     "<h4>Add Custom Terms </h4>\n",
195 :     "<h5>Source </h5>\n",
196 :     $cgi->textfield(-name => "custom_source", -size => 20),
197 :     "<h5>ID</h5>\n",
198 :     $cgi->textfield(-name => "custom_id", -size => 20),
199 :     "<h5>Term</h5>\n",
200 :     $cgi->textfield(-name => "custom_term", -size => 20),
201 :     $cgi->br,$cgi->br,
202 :     $cgi->submit(-name=>'request', -value=>'Add Custom Term'),
203 :     $cgi->br,
204 :     $cgi->hr,
205 :     $cgi->end_form;
206 :    
207 :     return $html;
208 :     }
209 :    
210 :     sub show_initial {
211 :     my ($fig,$cgi,$html,$peg)=@_;
212 :     # generate a blank page
213 :    
214 :     my $col_hdrs = ["Delete","Source","ID: Term"];
215 :     my @results = $fig->get_attributes($peg,'GO');
216 :     my $table_rows;
217 :     for my $r (@results)
218 :     {
219 :     $row = [];
220 :     $source = $r->[1];
221 :     $id_and_term = $r->[2];
222 :     $cb ="<input type=checkbox name=delete_checked value=$source\t$id_and_term>" ;
223 :     push(@$row,$cb);
224 :     push(@$row,$source);
225 :     push(@$row,$id_and_term);
226 :     push(@$table_rows,$row);
227 :     }
228 :    
229 :     push @$html,
230 :     $cgi->start_multipart_form(),
231 :     "<h2>Controlled Vocabulary Workbench</h2>\n",
232 :     $cgi->hr,
233 :     "<h4>Current Terms Assigned To Peg </h4>\n",
234 :     &HTML::make_table($col_hdrs,$table_rows),
235 :     $cgi->br,
236 :     $cgi->submit(-name=>'request', -value=>'Delete Checked Terms'),
237 :     $cgi->hr,
238 :     $cgi->br,
239 :     "<h4>Search for New Terms to Add </h4>\n",
240 :     "<select name=select_cv>
241 :     <option value=all >all CVs</option>
242 :     <option value=go >Gene Ontology</option>
243 :     <option value=omim >OMIM</option>
244 :     </select> &nbsp;&nbsp",
245 :     $cgi->textfield(-name => 'search_term', -size => 20),
246 :     $cgi->submit(-name=>'request', -value=>'Search Selected Controlled Vocabulary'),
247 :     $cgi->hr,
248 :     $cgi->br,
249 :     "<h4>Add Custom Terms </h4>\n",
250 :     "<h5>Source </h5>\n",
251 :     $cgi->textfield(-name => 'custom_source', -size => 20),
252 :     "<h5>ID</h5>\n",
253 :     $cgi->textfield(-name => 'custom_id', -size => 20),
254 :     "<h5>Term</h5>\n",
255 :     $cgi->textfield(-name => 'custom_term', -size => 20),
256 :     $cgi->br,$cgi->br,
257 :     $cgi->submit(-name=>'request', -value=>'Add Custom Term'),
258 :     $cgi->br,
259 :     $cgi->hr,
260 :     $cgi->end_form;
261 :    
262 :     return $html;
263 :     }
264 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3