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

Annotation of /FigWebServices/cv.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (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 : mkubal 1.6 print STDERR "NEW LOAD of PAGE\n";
14 :    
15 : mkubal 1.1 my $cgi = new CGI;
16 :    
17 :     use HTML;
18 :     use raelib;
19 :     my $raelib=new raelib;
20 :    
21 :     use LWP::Simple qw(!head); # see the caveat in perldoc LWP about importing two head methods.
22 :    
23 :    
24 : efrank 1.3 my $peg;
25 : mkubal 1.6 if ($cgi->param('prot') )
26 :     {
27 : efrank 1.3 $peg = $cgi->param('prot');
28 : mkubal 1.6 }
29 :     else
30 :     {
31 : efrank 1.3 $peg = $cgi->param('prot');
32 :     my(@html);
33 :     push(@html, $cgi->p("Parameter error- prot is required."));
34 :     &HTML::show_page($cgi, \@html, 1);
35 :     exit;
36 :     }
37 :    
38 :     # a global for the results of a search. overridden by an actual search
39 :    
40 :     my $search_results= [];
41 :    
42 : efrank 1.4 my $error_message = "";
43 : efrank 1.3
44 :    
45 :     my $user = "";
46 :     if ($cgi->param('user') ) {
47 :     $user = $cgi->param('user');
48 :     }
49 : mkubal 1.1
50 :     my $fig;
51 :     eval {
52 :     $fig = new FIG;
53 :     };
54 :    
55 :     if ($@ ne "")
56 :     {
57 :     my $err = $@;
58 :    
59 :     my(@html);
60 :    
61 :     push(@html, $cgi->p("Error connecting to SEED database."));
62 :     if ($err =~ /Could not connect to DBI:.*could not connect to server/)
63 :     {
64 :     push(@html, $cgi->p("Could not connect to relational database of type $FIG_Config::dbms named $FIG_Config::db on port $FIG_Config::dbport."));
65 :     }
66 :     else
67 :     {
68 :     push(@html, $cgi->pre($err));
69 :     }
70 :     &HTML::show_page($cgi, \@html, 1);
71 :     exit;
72 :     }
73 :    
74 :     my $html = [];
75 :    
76 :     my $ids;
77 :     my $tag_to_id;
78 :     my $inputs;
79 : mkubal 1.6 print STDERR "REQ: ", $cgi->param('request'), "\n";
80 : mkubal 1.1
81 :     if ($cgi->param('request') eq "Delete Checked Terms")
82 :     {
83 : mkubal 1.6 print STDERR "HERE Delete Clicked\n";
84 : mkubal 1.1 my %id_term_to_source;
85 :     my @checked;
86 :     my @param_list = $cgi->param();
87 :     if (@param_list)
88 :     {
89 :     foreach my $p (@param_list)
90 :     {
91 :     if ( $p=~/delete_checked/)
92 :     {
93 :     if($cgi->param($p))
94 :     {
95 :     $value = $cgi->param($p);
96 : mkubal 1.6 print STDERR "delete_checked_value:$value\n";
97 :     push(@checked,$value)
98 : mkubal 1.1 }
99 :     }
100 :     }
101 : mkubal 1.6
102 :     for my $c (@checked)
103 : mkubal 1.1 {
104 : mkubal 1.6 print STDERR "checked_for_deletion:$c\n";
105 :     @temp = split('split_here',$c);
106 : mkubal 1.1 $id_term_to_source{$temp[1]} = $temp[0];
107 :     }
108 :     }
109 :     &delete_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
110 :     }
111 :     elsif ($cgi->param('request') eq "Search Selected Controlled Vocabulary")
112 :     {
113 : efrank 1.3 if ( $cgi->param('search_term') && $cgi->param('select_cv') ) {
114 :     $search_term=$cgi->param('search_term');
115 :     $cv=$cgi->param('select_cv');
116 :     $search_results = &search($fig,$cgi,$html,$peg,$cv,$search_term);
117 :     }
118 : mkubal 1.1 }
119 : mkubal 1.2 elsif ($cgi->param('request') eq "Add New Terms")
120 :     {
121 :     my %id_term_to_source;
122 :     my @checked;
123 :     my @param_list = $cgi->param();
124 :     if (@param_list)
125 :     {
126 :     foreach my $p (@param_list)
127 :     {
128 :     if ( $p=~/add_checked/)
129 :     {
130 :     print STDERR "checked_param:$p\n";
131 :     if($cgi->param($p))
132 :     {
133 :     $value = $cgi->param($p);
134 :     push(@checked,$value)
135 :     }
136 :     }
137 :     }
138 :    
139 :     for my $c (@checked)
140 :     {
141 :     @temp = split("split_here",$c);
142 :     $source = $temp[0];
143 :     $id_term = $temp[1];
144 :     $id_term_to_source{$id_term} =$source ;
145 :     print STDERR "checked_source:$source\n";
146 :     print STDERR "checked_value:$c\n";
147 :     }
148 :     }
149 :     &add_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
150 :    
151 :     }
152 :    
153 : efrank 1.4 elsif ($cgi->param('request') eq "Add Manual Term")
154 : mkubal 1.1 {
155 : mkubal 1.2 my %id_term_to_source;
156 :     my $id_term;
157 : efrank 1.4 if ( $cgi->param('manual_source') && $cgi->param('manual_id') && $cgi->param('manual_term') ) {
158 :     $manual_source=$cgi->param('manual_source');
159 :     $manual_id=$cgi->param('manual_id');
160 :     $manual_term=$cgi->param('manual_term');
161 :     $id_term = $manual_id.": ".$manual_term;
162 :     $id_term_to_source{$id_term} = $manual_source;
163 : efrank 1.3 &add_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
164 :     } else {
165 : efrank 1.4 $error_message = "Error in 'Add Terms Manually': supply all three items correctly.";
166 : efrank 1.3 }
167 : mkubal 1.1 }
168 :     else
169 :     {
170 : efrank 1.5 #no op. Initial page display
171 : mkubal 1.1 }
172 :    
173 : efrank 1.3 &build_page($fig,$cgi,$html,$peg,$search_results);
174 : mkubal 1.1 &HTML::show_page($cgi,$html,1);
175 :     exit;
176 :    
177 :     sub delete_terms
178 :     {
179 :     my ($fig,$cgi,$html,$peg,$id_term_to_source) = @_;
180 : mkubal 1.6 my @id_term = keys(%{$id_term_to_source});
181 :     foreach my $it (@id_term)
182 :     {
183 :     print STDERR "key:$it\n";
184 :     print STDERR "value:$id_term_to_source->{$it}\n";
185 :     $fig->delete_attribute($peg,$id_term_to_source->{$it},$it)
186 :     }
187 : mkubal 1.1 }
188 :    
189 :     sub search
190 :     {
191 :     my ($fig,$cgi,$html,$peg,$cv,$search_term) =@_;
192 : efrank 1.4 $file = $FIG_Config::global."/cv_search_".$cv.".txt";
193 :     if (! open(LOOKUP,"$file") ) {
194 :     $error_message="Search could not find vocabulary file, $file";
195 :     return;
196 :     }
197 : mkubal 1.1 my @lines = <LOOKUP>;
198 : mkubal 1.2 my @grep_results = grep(/$search_term/i,@lines);
199 :     print STDERR "$grep_results[0]\n";
200 : efrank 1.3 return [@grep_results];
201 :     #my $search_results = [@grep_results];
202 :     #&show_search_results($fig,$cgi,$html,$peg,$cv,$search_results);
203 : mkubal 1.1 }
204 :    
205 : mkubal 1.2 sub add_terms
206 : mkubal 1.1 {
207 : mkubal 1.2 my ($fig,$cgi,$html,$peg,$id_term_to_source) =@_ ;
208 :     my @id_term = keys(%{$id_term_to_source});
209 :     foreach my $it (@id_term)
210 :     {
211 :     print STDERR "added_source:$id_term_to_source->{$it}\n";
212 :     print STDERR "added_value:$it\n";
213 :    
214 :     $fig->add_attribute($peg,$id_term_to_source->{$it},$it);
215 :    
216 :     }
217 : efrank 1.3 #&show_initial($fig,$cgi,$html,$peg);
218 : mkubal 1.1 }
219 :    
220 : efrank 1.3
221 :     sub build_page {
222 :     my ($fig,$cgi,$html,$peg,$search_results)=@_;
223 :    
224 :    
225 :     unshift(@$html, "<TITLE>Controlled Vocabulary Workbench for $peg</TITLE>\n");
226 :    
227 :     # Build seach results table
228 :    
229 :     @sr = @$search_results;
230 :     my $add_col_hdrs = ["Add","Source","ID: Term"];
231 :     my $add_table_rows;
232 :     my $counter = 0;
233 :     for my $r (@sr)
234 :     {
235 :     @temp = split("\t",$r);
236 :     $row = [];
237 :     $cv=$cgi->param('select_cv');
238 :     $source = $cv;
239 :     $id= $temp[1];
240 :     print STDERR "id:$id\n";
241 :     $term = $temp[2];
242 :     print STDERR "term:$term\n";
243 :     $id_and_term = $id.": ".$term;
244 : mkubal 1.6 $cb_value = $cv."split_here".$id."; ".$term;
245 : efrank 1.3 print STDERR "iandt:$id_and_term\n";
246 :     $cb ="<input type=checkbox name=add_checked_$counter value='$cb_value'>" ;
247 :     push(@$row,$cb);
248 :     push(@$row,$source);
249 :     push(@$row,$id_and_term);
250 :     push(@$add_table_rows,$row);
251 :     $counter = $counter + 1;
252 :     }
253 :    
254 :     my $add_terms_button="";
255 :     if ($counter > 0) {
256 :     $add_terms_button= $cgi->submit(-name=>'request', -value=>'Add New Terms');
257 :     }
258 :    
259 :     # build term deletions stuff
260 : mkubal 1.1
261 : efrank 1.3 my $delete_col_hdrs = ["Delete","Source","ID: Term"];
262 :     my @results = $fig->get_attributes($peg);
263 :     print STDERR "@results\n";
264 :     print STDERR "peg:$peg\n";
265 :     my $delete_table_rows;
266 :     my $counter =0;
267 :     for my $r (@results)
268 :     {
269 :     $row = [];
270 :     $source = $r->[1];
271 : mkubal 1.6 print STDERR "deleted_checked_source:$source\n";
272 : efrank 1.3 $id_and_term = $r->[2];
273 : mkubal 1.6 print STDERR "deleted_id_and_term:$id_and_term\n";
274 :     $value = $source."split_here".$id_and_term;
275 :     $cb ="<input type=checkbox name='delete_checked_$counter' value='$value'>" ;
276 : efrank 1.3 push(@$row,$cb);
277 :     push(@$row,$source);
278 :     push(@$row,$id_and_term);
279 :     push(@$delete_table_rows,$row);
280 :     $counter = $counter + 1;
281 :     }
282 :    
283 :    
284 :     # build the page
285 :    
286 :     my $link = "protein.cgi?prot=$peg";
287 :     push @$html,
288 :     #$cgi->start_multipart_form(),
289 :     $cgi->start_form(),
290 :     $cgi->hidden(-name=>'prot', -value=>'$peg'),
291 :     $cgi->hidden(-name=>'user', -value=>'$user'),
292 :     $cgi->br,
293 :     "<a href=$link>Back to protein page</a>",
294 :     $cgi->br,
295 :     "<h2>Controlled Vocabulary Workbench for $peg</h2>",
296 :     $cgi->hr,
297 : efrank 1.4 "<h1>$error_message</h1>",
298 :     $cgi->hr,
299 : efrank 1.3 "<h4>Current Terms Assigned To $peg </h4>\n",
300 :     &HTML::make_table($delete_col_hdrs,$delete_table_rows),
301 :     $cgi->br,
302 :     $cgi->submit(-name=>'request', -value=>'Delete Checked Terms'),
303 :     $cgi->end_form;
304 :    
305 :     push @$html,
306 :     $cgi->start_form(),
307 :     $cgi->hidden(-name=>'prot', -value=>'$peg'),
308 :     $cgi->hidden(-name=>'user', -value=>'$user'),
309 :     $cgi->hr,
310 :     $cgi->br,
311 :     "<h4>Search for New Terms to Add </h4>\n",
312 :     "<select name=select_cv>
313 : mkubal 1.2 <option value=GO >Gene Ontology</option>
314 : efrank 1.3 </select> &nbsp;&nbsp",
315 :     $cgi->textfield(-name => 'search_term', -size => 20),
316 :     $cgi->submit(-name=>'request', -value=>'Search Selected Controlled Vocabulary'),
317 :     $cgi->br,
318 :     $cgi->br,
319 :     &HTML::make_table($add_col_hdrs,$add_table_rows),
320 :     $cgi->br,
321 :     $add_terms_button,
322 :     $cgi->end_form;
323 :    
324 :     push @$html,
325 :     $cgi->start_form(),
326 :     $cgi->hidden(-name=>'prot', -value=>'$peg'),
327 :     $cgi->hidden(-name=>'user', -value=>'$user'),
328 :     $cgi->hr,
329 : efrank 1.4 "<h4>Add Terms Manually (WARNING: This is strongly discouraged to avoid data entry errors.)</h5>",
330 : efrank 1.3 "<h5>Vocabulary Name (single word, no spaces or punctuation), e.g., MyVocab </h5>\n",
331 : efrank 1.4 $cgi->textfield(-name => 'manual_source', -size => 48, -default=>'', -override=>1 ),
332 : efrank 1.3 "<h5>Term ID (single word, no spaces or punctuation), e.g., A147</h5>\n",
333 : efrank 1.4 $cgi->textfield(-name => 'manual_id', -size => 32, -default=>'', -override=>1),
334 : efrank 1.3 "<h5>Term text, e.g., catalytic activity</h5>\n",
335 : efrank 1.4 $cgi->textfield(-name => 'manual_term', -size => 70, -default=>'', -override=>1 ),
336 : efrank 1.3 $cgi->br,$cgi->br,
337 : efrank 1.4 $cgi->submit(-name=>'request', -value=>'Add Manual Term'),
338 : efrank 1.3 $cgi->br,
339 :     $cgi->hr,
340 :     $cgi->end_form;
341 : mkubal 1.1
342 : efrank 1.3 return $html;
343 : mkubal 1.2 }
344 : mkubal 1.1

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3