4 SGN::Controller::AJAX::TissueSample - a REST controller class to provide tissue sample functionality
13 package SGN
::Controller
::AJAX
::TissueSample
;
18 use CXGN
::People
::Login
;
19 use CXGN
::Trial
::Search
;
22 BEGIN { extends
'Catalyst::Controller::REST' }
25 default => 'application/json',
27 map => { 'application/json' => 'JSON' },
30 sub tissue_sample_field_trials
: Path
('/ajax/tissue_samples/field_trials') : ActionClass
('REST') { }
32 sub tissue_sample_field_trials_GET
: Args
(0) {
35 my $bcs_schema = $c->dbic_schema('Bio::Chado::Schema', 'sgn_chado');
37 my $trial_search = CXGN
::Trial
::Search
->new({
38 bcs_schema
=>$bcs_schema,
39 trial_has_tissue_samples
=>1,
41 my ($data, $total_count) = $trial_search->search();
43 my %selected_columns = ('tissue_sample_name'=>1, 'tissue_sample_id'=>1, 'plant_name'=>1, 'plot_name'=>1, 'block_number'=>1, 'plant_number'=>1, 'plot_number'=>1, 'rep_number'=>1, 'row_number'=>1, 'col_number'=>1, 'accession_name'=>1, 'is_a_control'=>1);
44 my $selected_columns_json = encode_json \
%selected_columns;
46 my $folder_string = '';
47 if ($_->{folder_name
}){
48 $folder_string = "<a href=\"/folder/$_->{folder_id}\">$_->{folder_name}</a>";
52 "<a href=\"/breeders_toolbox/trial/$_->{trial_id}\">$_->{trial_name}</a>",
54 "<a href=\"/breeders/program/$_->{breeding_program_id}\">$_->{breeding_program_name}</a>",
60 $_->{project_planting_date
},
61 $_->{project_harvest_date
},
62 "<a class='btn btn-sm btn-default' href='/breeders/trial/$_->{trial_id}/download/layout?format=csv&dataLevel=field_trial_tissue_samples&selected_columns=$selected_columns_json'>Download Layout</a>"
65 #print STDERR Dumper \@result;
67 $c->stash->{rest
} = { data
=> \
@result };
70 sub tissue_sample_genotyping_trials
: Path
('/ajax/tissue_samples/genotyping_trials') : ActionClass
('REST') { }
72 sub tissue_sample_genotyping_trials_GET
: Args
(0) {
75 my $bcs_schema = $c->dbic_schema('Bio::Chado::Schema', 'sgn_chado');
77 my $trial_search = CXGN
::Trial
::Search
->new({
78 bcs_schema
=>$bcs_schema,
79 trial_design_list
=>['genotyping_plate']
81 my ($data, $total_count) = $trial_search->search();
84 my $folder_string = '';
85 if ($_->{folder_name
}){
86 $folder_string = "<a href=\"/folder/$_->{folder_id}\">$_->{folder_name}</a>";
90 "<a href=\"/breeders_toolbox/trial/$_->{trial_id}\">$_->{trial_name}</a>",
92 "<a href=\"/breeders/program/$_->{breeding_program_id}\">$_->{breeding_program_name}</a>",
96 $_->{genotyping_facility
},
97 $_->{genotyping_plate_format
},
98 $_->{genotyping_plate_sample_type
},
99 "<a class='btn btn-sm btn-default' href='/breeders/trial/$_->{trial_id}/download/layout?format=csv&dataLevel=plate'>Download Layout</a>"
102 #print STDERR Dumper \@result;
104 $c->stash->{rest
} = { data
=> \
@result };
107 sub tissue_sample_sampling_trials
: Path
('/ajax/tissue_samples/sampling_trials') : ActionClass
('REST') { }
109 sub tissue_sample_sampling_trials_GET
: Args
(0) {
112 my $bcs_schema = $c->dbic_schema('Bio::Chado::Schema', 'sgn_chado');
114 my $trial_search = CXGN
::Trial
::Search
->new({
115 bcs_schema
=>$bcs_schema,
116 trial_design_list
=>['sampling_trial']
118 my ($data, $total_count) = $trial_search->search();
121 my $folder_string = '';
122 if ($_->{folder_name
}){
123 $folder_string = "<a href=\"/folder/$_->{folder_id}\">$_->{folder_name}</a>";
127 "<a href=\"/breeders_toolbox/trial/$_->{trial_id}\">$_->{trial_name}</a>",
129 "<a href=\"/breeders/program/$_->{breeding_program_id}\">$_->{breeding_program_name}</a>",
133 $_->{sampling_facility
},
134 $_->{sampling_trial_sample_type
},
135 "<a class='btn btn-sm btn-default' href='/breeders/trial/$_->{trial_id}/download/layout?format=csv&dataLevel=samplingtrial'>Download Layout</a>"
138 #print STDERR Dumper \@result;
140 $c->stash->{rest
} = { data
=> \
@result };