Merge pull request #4106 from solgenomics/topic/wishlist
[sgn.git] / mason / feature / properties.mas
blobb70268c7af528343495dd593ac60d5f7a630f3cd
1 <%args>
2     $feature
3 </%args>
4 <%once>
5     use HTML::Entities;
6     use CXGN::Page::FormattingHelpers qw/info_table_html/;
7     use SGN::View::Feature qw/ description_featureprop_types cvterm_link /;
8 </%once>
9 <%perl>
10    # find all featureprops other that Note, which is already taken
11    # care of, group them by type
12    my $props = $feature->search_related(
13        'featureprops',
14        {
15            # filter out featureprops that are used as the feature's description
16            'type_id' => {
17                -not_in => description_featureprop_types($feature)
18                             ->get_column('cvterm_id')
19                             ->as_query
20             },
21            'length(value)' => { '<=', 1000 },
22        },
23        { prefetch => 'type' },
24      );
25      my %properties;
26      while( my $fp = $props->next ) {
27          push @{$properties{ $fp->type->name } ||= []}, $fp;
28      }
30    if( %properties ) {
31        for my $propname ( sort keys %properties ) {
32            my $fps = $properties{$propname};
33            my $name = $m->scomp('/chado/cvterm_link.mas', cvterm => $fps->[0]->type, caps => 'ucfirst' );
34            my $value = @$fps > 1
35                ? '<ul>'.(join '', map "<li>".encode_entities($_->value)."</li>", @$fps).'</ul>'
36                : encode_entities($fps->[0]->value);
38            print qq|<dl style="float: left; margin: 1em"><dt>$name</dt><dd>$value</dd></dl>\n|;
39        }
40    }
41 </%perl>