same brapi germplasm-search for get and post
[sgn.git] / mason / chado / cvterm.mas
blob9979d32378660c31c5620e75fbd45839972a4ffd
1 <%doc>
3 =head1 NAME
5 /chado/cvterm.mas - a component for printing the cvterm page
7 =head1 DESCRIPTION
9 Parameters:
11 =over 1
13 =item cvterm
15 CXGN::Chado::Cvterm object
19 =back
21 =head1 AUTHOR
23 Naama Menda <nm249@cornell.edu>
25 =cut
27 </%doc>
29 <%args>
30   $cvterm
31 </%args>
33 <%once>
34 use CXGN::Page::FormattingHelpers qw/
35  info_section_html
36  page_title_html
37  columnar_table_html
39 use CXGN::Phenome::Qtl::Tools;
40 </%once>
42 <%perl>
43 my $cvterm_id   = $cvterm->get_cvterm_id;
44 my $db_name     = $cvterm->get_db_name;
45 my $accession   = $cvterm->get_accession;
46 my $cvterm_name = $cvterm->get_cvterm_name;
47 my $definition  = $cvterm->get_definition;
48 my $comment     = $cvterm->comment;
50 my $is_obsolete = $cvterm->get_obsolete();
51 my @synonyms    = $cvterm->get_synonyms();
52 my @def_dbxrefs = $cvterm->get_def_dbxref();
53 my @secondary_dbxrefs = $cvterm->get_secondary_dbxrefs();
54 my @image_ids = $cvterm->get_image_ids;
56 my @def_accessions = map( $_->get_db_name . ":" . $_->get_accession , @def_dbxrefs);
59 my @qtl_pops = CXGN::Phenome::Qtl::Tools->new()->is_from_qtl( $cvterm_id );
60 my @qtl_data;
62 if ( @qtl_pops )
63  {
64     foreach my $pop (@qtl_pops)
65     {
66       my $pop_id   = $pop->get_population_id();
67       my $name     = $pop->get_name(); 
68       my $desc     = $pop->get_description();
69       my $qtl_link = qq | <a href="/phenome/qtl_analysis.pl?population_id=$pop_id&amp;cvterm_id=$cvterm_id" onClick="Qtl.waitPage()">$name</a> |;
70       push @qtl_data, [ $qtl_link, $desc ];
71     }
72  }
74 my $this_page = "/cvterm/$cvterm_id/view/";
75 my $image_subtitle =
76    " <a href=\"/image/add?type_id=$cvterm_id&type=cvterm&refering_page=$this_page\">[Add image]</a>" ;
79 </%perl>
82 <& /util/import_javascript.mas, classes => [qw [CXGN.AJAX.Ontology  CXGN.Phenome.Qtl thickbox jquery  jquery.dataTables] ] &>
85 <script language="javascript">
86   function recursiveAnnotations( a ) {
87       jQuery.ajax( { url:      a.url+"?cvterm_id=<% $cvterm_id %>" ,
88                      dataType: "json",
89                      success: function(response) {
90                               //jQuery("#"+a.content_id).html(response.html);
91                               jQuery("#"+a.count_id).html( response.count + ' ' + a.inflect[ response.count == 1 ? 0 : 1 ]);
92                        if( response.error )  {
93                              alert(response.error);
94                       }
95                      }
96                   });
97   }
98 </script>
101 <& /page/page_title.mas, title=> "$db_name:$accession '$cvterm_name' " &>
104 <&| /page/info_section.mas, title=>"Cvterm details" &>
105 <table>
106 <tr><td>Term id</td><td><b><% $accession %></b></td></tr>
107 <tr><td>Term name</td><td><b><% $cvterm_name %></b></td></tr>
108 <tr><td>Term definition</td><td><b><% $definition %></b></td></tr>
109 <tr><td>Comment</td><td><b><% $comment %></b></td></tr>
110 </table>
112 % if ($is_obsolete) {
113 <b>Obsolete:</b> TRUE <br />
114 % }
116 <br /><b>Synoyms</b><br />
117 % foreach my $synonym (@synonyms) {
118 <% $synonym %> <br />
119 % }
121 <br /><b> Definition dbxrefs</b><br />
122 % foreach my $da (@def_accessions) {
123 <% $da %><br />
124 % }
126 <br /><b> Definition dbxrefs</b><br />
127 % foreach my $ds (@secondary_dbxrefs) {
128 <% $ds %><br />
129 %  }
131 </&>
132 <br />
134 <h4>Add this term to a list</h4>
136 <div id="cvterm_id" style="display:none" ><% $cvterm_name %>|<% $db_name %>:<% $accession %></div>
138 <&| /page/info_section.mas, title=>"Add to list", collapsible=>1, collapsed=>1 &>
139 <div id="paste_to_list">
140 LOAD...
141 </div>
143 </&>
144 <script>
146   if (isLoggedIn()) { 
147     addToListMenu('paste_to_list', 'cvterm_id', { listType: 'traits' } );
148   }
149   else { 
150     jQuery('#paste_to_list').html("&nbsp;Please log in to use lists.");
151   }
152   
153 </script>
155 <br />
158 <& /ontology/embedded_browser.mas, cvterm => $cvterm &>
162 <&| /page/info_section.mas,
163     title=> "Annotated loci",
164     subtitle => '',
165     collapsible => 1,
166     collapsed   => 1,
169 <table id="loci_data" class="display">
170 <thead>
171   <tr>
172     <th>Organism</th>
173     <th>Locus symbol</th>
174     <th>Locus name</th>
175   </tr>
176 </thead>
178 </table>
180 <script>
182   jQuery(document).ready(function () {
183   
184     jQuery('#loci_data').DataTable( { 
185       'ajax': '/cvterm/'+ <% $cvterm_id %> + '/datatables/annotated_loci',
186      });
187   });
189 </script>
192 </&>
196 <&| /page/info_section.mas,
197        title=> "Annotated stocks",
198        collapsible => 1,
199        collapsed=>1,
200        subtitle => '',
201        hide_if_empty => 1,
202  &>
204 <table id="annotated_stocks_data" class="display">
205 <thead>
206   <tr>
207      <th>Type</th>
208     <th>Stock name</th>
209     <th>Description</th>
210   </tr>
211 </thead>
213 </table>
215 <script>
217   jQuery(document).ready(function () {
218   
219     jQuery('#annotated_stocks_data').DataTable( { 
220       'ajax': '/cvterm/'+ <% $cvterm_id %> + '/datatables/annotated_stocks',
221      });
222   });
224 </script>
227 </&>
231 % if ( @qtl_pops )
232 % {
233     <&| /page/info_section.mas,
234         title       => "QTL analysis",
235         collapsible => 1,
236    &>
237      <& /page/columnar_table.mas,
238         headings     => ["Analyze QTL in population", "Population description"], 
239         data         => \@qtl_data,
240         __alt_freq   => 2,
241         __align      =>'l',
242      &>
243   </&>
244 % }
248 <&| /page/info_section.mas,
249       title       => "Phenotyped accessions",
250       collapsible => 1,
251       collapsed=>1,
252       subtitle    => '' ,
256 <table id="phen_stocks_data" class="display">
257 <thead>
258   <tr>
259      <th>Type</th>
260     <th>Stock name</th>
261     <th>Description</th>
262   </tr>
263 </thead>
265 </table>
267 <script>
269   jQuery(document).ready(function () {
270   
271     jQuery('#phen_stocks_data').DataTable( { 
272       'ajax': '/cvterm/'+ <% $cvterm_id %> + '/datatables/phenotyped_stocks',
273      });
274   });
276 </script>
279 </&>
283 <&| /page/info_section.mas,
284       title       => "Phenotyping trials",
285       collapsible => 1,
286       collapsed=>1,
287       subtitle    => '<span id="trial_count"></span>',
290 <script language="javascript">
291     recursiveAnnotations({
292                          url:        "/cvterm/"+<% $cvterm_id %>+"/datatables/direct_trials",
293                          content_id: "trial_div",
294                          count_id:   "trial_count",
295                          inflect:    [ 'trial', 'trials' ],
296                        });
297 </script>
301 <table id="trial_data" class="display">
302 <thead>
303   <tr>
304      <th>Trial name</th>
305      <th>Description</th>
306   </tr>
307 </thead>
309 </table>
311 <script>
313   jQuery(document).ready(function () {
314   
315     jQuery('#trial_data').DataTable( { 
316       'ajax': '/cvterm/'+ <% $cvterm_id %> + '/datatables/direct_trials',
317        }
318      );
319   });
321 </script>
323 </&>
325 <&| /page/info_section.mas, 
326     title => "Images and figures",
327     subtitle      => $image_subtitle,
328     collapsible   => 1,
329     collapsed     => 0,
330     hide_if_empty => 1,
333 <& /image/print_images.mas, images => \@image_ids &>
335 </&>
337 <& /qtl/waitmessage.mas &>