1 package SGN
::Controller
::solGS
::Path
;
4 use namespace
::autoclean
;
8 BEGIN { extends
'Catalyst::Controller' }
10 sub check_page_type
: Path
('/solgs/check/page/type') Args
(0) {
11 my ( $self, $c ) = @_;
13 my $page_type = $self->page_type( $c, $c->req->param('page') );
15 my $ret = { 'page_type' => $page_type };
18 $c->res->content_type('application/json');
24 my ( $self, $args ) = @_;
26 my $trait_id = $args->{trait_id
};
27 my $pop_id = $args->{training_pop_id
};
28 my $protocol_id = $args->{genotyping_protocol_id
};
31 if ( $args->{data_set_type
} =~ /combined/ ) {
33 "/solgs/model/combined/trials/$pop_id/trait/$trait_id/gp/$protocol_id";
36 $path = "/solgs/trait/$trait_id/population/$pop_id/gp/$protocol_id";
43 sub training_page_url
{
44 my ( $self, $args ) = @_;
46 my $pop_id = $args->{training_pop_id
};
47 my $protocol_id = $args->{genotyping_protocol_id
};
50 if ( $args->{data_set_type
} =~ /combined/ ) {
51 $path = "/solgs/populations/combined/$pop_id/gp/$protocol_id";
54 $path = "/solgs/population/$pop_id/gp/$protocol_id";
60 sub multi_models_page_url
{
61 my ( $self, $args ) = @_;
63 my $training_pop_id = $args->{training_pop_id
};
64 my $protocol_id = $args->{genotyping_protocol_id
};
65 my $traits_code = $args->{traits_selection_id
};
68 if ( $args->{data_set_type
} =~ /combined/ ) {
70 "/solgs/models/combined/trials/"
73 . $traits_code . '/gp/'
78 "/solgs/traits/all/population/"
81 . $traits_code . '/gp/'
91 my ( $self, $trial_id ) = @_;
93 return "/breeders/trial/$trial_id";
97 sub selection_page_url
{
98 my ( $self, $args ) = @_;
100 my $tr_pop_id = $args->{training_pop_id
};
101 my $sel_pop_id = $args->{selection_pop_id
};
102 my $trait_id = $args->{trait_id
};
103 my $protocol_id = $args->{genotyping_protocol_id
};
106 if ( $args->{data_set_type
} =~ /combined_populations/ ) {
108 "/solgs/combined/model/$tr_pop_id/selection/$sel_pop_id/trait/$trait_id/gp/$protocol_id";
112 "/solgs/selection/$sel_pop_id/model/$tr_pop_id/trait/$trait_id/gp/$protocol_id";
119 sub create_hyperlink
{
120 my ( $self, $url, $text ) = @_;
122 my $link = qq | <a href
="$url">$text</a
> |;
129 my ( $self, $c, $url ) = @_;
131 $url = $c->req->path if !$url;
135 . '|solgs/traits/all/'
136 . '|solgs/model/combined/trials/'
137 . '|solgs/models/combined/trials/';
139 my $selection_pop_pages = 'solgs/selection' . '|solgs/combined/model/';
141 my $training_pop_pages =
142 'solgs/population/' . '|solgs/populations/combined/';
145 if ( $url =~ $model_pages ) {
146 $type = 'training_model';
148 elsif ( $url =~ $selection_pop_pages ) {
149 $type = 'selection_prediction';
151 elsif ( $url =~ $training_pop_pages ) {
152 $type = 'training_population';
160 my ( $self, $c ) = @_;
162 my $page_type = $self->page_type($c);
163 my $path = $c->req->path;
166 if ( $page_type =~ /selection/ ) {
167 my @parts = split( /\//, $path );
168 my @num = grep( /\d+/, @parts );
170 if ( $path =~ /combined/ ) {
172 'training_pop_id' => $num[0],
173 'selection_pop_id' => $num[1],
174 'trait_id' => $num[2],
175 'genotyping_protocol_id' => $num[3]
180 'training_pop_id' => $num[1],
181 'selection_pop_id' => $num[0],
182 'trait_id' => $num[2],
183 'genotyping_protocol_id' => $num[3]
192 sub clean_base_name
{
193 my ( $self, $c ) = @_;
195 my $base = $c->req->base;