same brapi germplasm-search for get and post
[sgn.git] / mason / biosource / sample / sample_relations.mas
blob559729fa83c483c3cc675027319c807da52b83c2
1 <%doc>
3 =head1 NAME 
4  
5  sample_relations.mas
6  mason component to take sample relations associated to a sample from the database and return it as html
8 =cut
10 =head1 VERSION 
12 0.1
14 =cut 
16 =head1 DESCRIPTION
18  A mason component to take sample relations associated to a sample from the database and return it as html. 
19   
21 =cut
23 =head 1 AUTHOR
25  Aureliano Bombarely (ab782@cornell.edu)
27 =cut 
29 </%doc>
32 <%args>
33 $schema
34 $sample
35 $sample_relations_href
36 </%args>
38 <%perl>
39 use strict;
40 use warnings;
42 use CXGN::Page::FormattingHelpers  qw/ info_section_html info_table_html columnar_table_html page_title_html html_break_string /;
44 my $rel_content;
45 my @relation_types = ('parents', 'brothers', 'children');
47 my $default_message = '<i><font color="gray">Data not available</basefont></i>';
49 ## Now it will take each sample relationship and it will take sample_id, 
50 ## relation_type and sample_name
52 my %sample_relations = %{$sample_relations_href};
54 my @sample_rel_list;
56 foreach my $relation (@relation_types) {
58     if (defined $sample_relations{$relation} ) {
60         my @samples_rel = @{$sample_relations{$relation}};
61     
62         foreach my $sample_rel (@samples_rel) {
63         
64             my $sample_id = $sample_rel->get_sample_id();
65             my $sample_name = $sample_rel->get_sample_name();
66             my $sample_link = '/biosource/sample.pl?id=' . $sample_id;
67             my $sample_html = "<a href=$sample_link>$sample_name</a><br>";
68             
69             my $type_id = $sample_rel->get_type_id();
70             my $type_name_html = $default_message;
71             if (defined $type_id) {
73                 my ($type_cvterm_row) = $schema->resultset('Cv::Cvterm')
74                                                ->search({ cvterm_id => $type_id });
75         
76                 if (defined $type_cvterm_row) {
77                     
78                     $type_name_html = $type_cvterm_row->get_column('name');
79                 }
80             }
82             
83             push @sample_rel_list, [uc($relation), $sample_html, $type_name_html];
84         }
85     }
88     ## Use columnar table to give the html format. If don't exists any data, print message.
89     
90     my $rel_composition_html = columnar_table_html( headings => [ 'Relation', 'Sample', 'Type'],
91                                                     data     => \@sample_rel_list,
92                                                     __alt_freq => 2,
93                                                     __align  => ['c', 'c', 'c'], );
96     my $rel_n = scalar(@sample_rel_list);                                              
97     if ($rel_n == 0) {
98         $rel_composition_html = 'No relation was found associated to this sample';
99     }
101     $rel_content = info_section_html( title        => "Sample Relations (".$rel_n.")", 
102                                       contents     => $rel_composition_html,
103                                       collapsible  => 1,
104                                       collapsed    => 0, );
108 </%perl>
110 <% $rel_content %>
112 <& 
113    /util/import_javascript.mas, 
114    classes => 'CXGN.Effects' 
116