phenotype download will print 0 values, while leaving empty values empty
[sgn.git] / mason / breeders_toolbox / trial.mas
blob335bf1e9d8d08f7d1be440348b4eedb3faba4d71
2 <%doc>
4 =head1 NAME
6 /breeders/trial.mas - a mason component to display a trial detail page
8 =head1 AUTHOR
10 Jeremy D. Edwards
12 =cut
14 </%doc>
16 <%args>
17 $trial_id
18 $breeding_program
19 $trial_name
20 $location_data => undef
21 $year => undef
22 $trial_type => undef
23 $planting_date => undef
24 $harvest_date => undef
25 $trial_description => undef
26 $design_layout_view => undef
27 $user_can_modify => undef
28 $hidap_enabled => undef
29 $folder_name => undef
30 $folder_id => undef
31 </%args>
33 <& /util/import_javascript.mas, classes => [ 'jquery.iframe-post-form', 'CXGN.Trial' , 'jstree/dist/jstree', 'CXGN.BreedersToolbox.HTMLSelect' ] &>
35 <%perl>
36   use Data::Dumper;
37 my $start_time = time();
38 my $description_empty = 1;
39 if ($trial_description) {
40   if ($trial_description ne "") {
41     $description_empty = 0;
42   }
45 my $design_subtitle = '[<a href="\\fieldbook\\trial_download\\'.$trial_id.'">Download Field Book</a>]';
47 my $change_breeding_program_link = qq{[<a id="show_change_breeding_program_link">change</a>] } if $user_can_modify;
49 print STDERR "Check 7 (mason) : ".(time() - $start_time)."\n";
51 #print STDERR "BREEDING PROGRAM: ".Dumper($breeding_program);
53 </%perl>
55 <br/>
57 <& /page/page_title.mas, title=>"Trial detail for ".$trial_name &>
59 <&| /page/info_section.mas, title=>"Trial details",  collapsible => 1, &>
62 <div class="panel panel-default">
63 <table class="table table-hover" >
65 <tr>
66 <td><b>Breeding Program </b></td>
67 <td>
68 <span id="breeding_programs">
69 % if ($breeding_program) {
70 % foreach (@$breeding_program) {
71 %  print "$_->[1] ($_->[2]) <br/>";
72 % }
73 % } else {
74 % print "No Breeding Program";
75 % }
76 </span>
77 </td>
78 <td>
79  <% $change_breeding_program_link %>
80 </td>
81 </tr>
83 <tr>
84 <td><b>Trial Name</b></td>
85 <td>
86 <div id="trial_name">
87 % if ($trial_name) {
88 %   print "$trial_name";
89 % } else {
90 %   print "[No Trial Name]";
91 % }
92 </div>
93 </td>
94 <td>
95   [<a id="edit_trial_name">change</a>]
96 </td>
97 <& /breeders_toolbox/trial/edit_trial_name.mas, trial_id=>$trial_id, trial_name=>$trial_name, trial_type=>"Trial" &>
99 </tr>
101 <tr>
102 <td><b>Trial Type</b></td>
103 <td>
104 <div id="trial_type">
105 % if ($trial_type) {
106 %  print "@$trial_type[1]<br/>";
107 % } else {
108 % print "[Type not set]";
109 % }
110 </div>
111 </td>
112 <td>
113   [<a id="edit_trial_type" >change</a>]
114 </td>
115 </tr>
117 <tr>
118 <td><b>Year</b></td>
119 <td>
120 <div id="trial_year">
121 % if ($year) {
122 %  print "$year";
123 % } else {
124 %  print "[No Year]";
125 % }
126 </div>
127 </td>
128 <td>
129   [<a id="change_year_link">change</a>]
130 </td>
131 </tr>
133 <tr>
134 <td><b>Trial Location</b></td>
135 <td>
136 <div id="trial_location">
137 % if ($location_data) {
138 %  print "$location_data->[1]";
139 % } else {
140 %  print "[No Location]";
141 % }
142 </div>
143 </td>
144 <td>
145   [<a id="change_trial_location_link">change</a>]
146 </td>
147 </tr>
149 <tr>
150 <td><b>Planting Date</b></td>
151 <td>
152 <div id="planting_date">
153 % if ($planting_date) {
154 %  print "$planting_date";
155 % } else {
156 %  print "[No Planting Date]";
157 % }
158 </div>
159 </td>
160 <td>
161     [<a id="change_planting_date_link">change</a>]
162 </td>
163 </tr>
165 <tr>
166 <td><b>Harvest Date</b></td>
167 <td>
168 <div id="harvest_date">
169 % if ($harvest_date) {
170 %  print "$harvest_date";
171 % } else {
172 %  print "[No Harvest Date]";
173 % }
174 </div>
175 </td>
176 <td>
177     [<a id="change_harvest_date_link">change</a>]
178 </td>
179 </tr>
181 <tr><td><b>Description</b></td>
182 <td>
183 <div id="trial_description">
184 % if ($trial_description) {
185 %  print "$trial_description";
186 % } else {
187 %  print "[No Description]";
188 % }
189 </div>
190 </td>
191 <td>
192   [<a id="edit_trial_description">edit</a>]
193 </td>
194 </tr>
195 </table>
196 </div>
198 </&>
200 <div id="edit_trial_description_dialog">
201    Please enter the description for this trial:<br/>
202    <textarea id="trial_description_input" cols="50" rows="10"></textarea>
203 </div>
205 <div id="edit_trial_type_dialog">
206   Please choose the type of this trial:<br />
207   <select id="trial_type_select"></select>
208 </div>
210 <div id="change_trial_location_dialog">
211   Please choose the location fro this trial:<br />
212   <div id="trial_location_select_div" /></div>
213 </div>
215 <div id="change_planting_date_dialog">
216   Please enter a planting date:<br />
217   <input id="planting_date_picker"></input>
218 </select>
220 </div>
222 <div id="change_harvest_date_dialog">
223   Please enter a harvest date [MM/DD/YYYY]:<br />
224   <input id="harvest_date_picker"></input>
225 </div>
227 % my $folder_collapsed = 1;
228 % if ($folder_id) {
229 % $folder_collapsed = 0;
230 % }
232 <&| /page/info_section.mas, title=>"Folder", collaspible=>1, collapsed=>$folder_collapsed,
233   subtitle => '[<a id="new_folder_dialog_link">New Folder</a>] | [<a id="open_folder_dialog_link">Change</a>]' &>
235   <& /breeders_toolbox/folder/folder_set.mas, breeding_program_id => $breeding_program->[0]->[0], breeding_program_name =>$breeding_program->[0]->[1], trial_id => $trial_id, trial_name =>$trial_name &>
236   <& /breeders_toolbox/folder/folder_new.mas, breeding_program_id => $breeding_program->[0]->[0], breeding_program_name =>$breeding_program->[0]->[1] &>
238   <span id="trial_folder_div"><a href="/folder/<% $folder_id %>"><% $folder_name %></a></span>
240 </&>
243 % if ($hidap_enabled) {
245 <&| /page/info_section.mas, id => "hidap_trial", title=>"HIDAP Trial Analysis", collapsible=>1, collapsed => 0 &>
247 <div class="row">
248   <div class="col-sm-4">
249     <a href="http://hidap.sgn.cornell.edu/hd/?tabAnalysis=Map&fbaInput=<% $trial_id %>" target="_blank">
250       <div class="well">
251         <div class="row">
252           <div class="col-sm-9">
253             Phenotype Plot Map
254           </div>
255           <div class="col-sm-3">
256             <span class="glyphicon glyphicon-th"></span>
257           </div>
258         </div>
259       </div>
260     </a>
261   </div>
262   <div class="col-sm-4">
263     <a href="http://hidap.sgn.cornell.edu/hd/?tabAnalysis=Correlation&fbaInput=<% $trial_id %>" target="_blank">
264       <div class="well">
265         <div class="row">
266           <div class="col-sm-9">
267             Phenotype Correlation
268           </div>
269           <div class="col-sm-3">
270             <span class="glyphicon glyphicon-stats"></span>
271           </div>
272         </div>
273       </div>
274     </a>
275   </div>
276   <div class="col-sm-4">
277     <a href="http://hidap.sgn.cornell.edu/hd/?tabAnalysis=Report&fbaInput=<% $trial_id %>" target="_blank">
278       <div class="well">
279         <div class="row">
280           <div class="col-sm-9">
281             Analysis Report
282           </div>
283           <div class="col-sm-3">
284             <span class="glyphicon glyphicon-book"></span>
285           </div>
286         </div>
287       </div>
288     </a>
289   </div>
290 </div>
292 </&>
294 % }
297 <&| /page/info_section.mas, id => "physical_layout", title=>"Physical Trial Layout", collapsible=>1, collapsed => 1, subtitle=>'[<a id="upload_trial_coords_link">Upload trial coordinates</a>]' &>
300   <& /breeders_toolbox/trial/trial_coords.mas, trial_id => $trial_id &>
302 </&>
304 <& /breeders_toolbox/trial/trial_coords_spreadsheet_upload_format_info.mas &>
306 <div id="upload_trial_coord_error_display" class="ui-widget">
307   <table>
308     <tbody></tbody>
309   </table>
310 </div>
312 <div id="trial_coord_upload_success_dialog_message" class="ui-widget">
313   The trial coord upload finished.
314 </div>
316 <div id="upload_trial_coord_dialog" title="Upload trial coordinates">
318   <&| /page/explanation.mas, title=>'Template information' &>
319     <p>
320       <b>File format information</b>
321       <br>
322       <a id="trial_coordinates_upload_spreadsheet_format_info">Spreadsheet format</a>
323     </p>
324   </&>
326   <form method="post" enctype="multipart/form-data" encoding="multipart/form-data" id="upload_trial_coordinates_form" name="upload_trial_coordinates_form">
328     <label for="trial_coordinates_uploaded_file" style="display: inline-block; width: 100px;">Upload trial coordinates file:</label>
329     <input type="file" name="trial_coordinates_uploaded_file" id="trial_coordinates_uploaded_file" encoding="multipart/form-data" />
331     </form>
333 </div>
335 <!--<style>
336   div.left {
337     float: left;
338     clear: both;
339   }
340 .ui-autocomplete {
341   max-height: 100px;
342   overflow-y: auto;
343   /* prevent horizontal scrollbar */
344   overflow-x: hidden;
347 </style> -->
350 <&| /page/info_section.mas, id => "trial_design_section", title=>"Design", collapsible=>1, collapsed=>0, subtitle=>"Download layout [<a id=\"download_layout_xls_link\" href=\"/breeders/trial/$trial_id/download/layout?format=xls\">xls</a>] [<a id=\"download_layout_csv_link\" href=\"/breeders/trial/$trial_id/download/layout?format=csv\">csv</a>]"  &>
352 <& /breeders_toolbox/trial/design.mas, trial_id => $trial_id &>
354 <&| /page/info_section.mas, id => "trial_accessions", title=>"Accessions", is_subsection => 1, collapsible=>1, collapsed=>1 &>
356 <& /breeders_toolbox/trial/trial_accessions.mas, trial_id => $trial_id &>
358 </&>
360 <&| /page/info_section.mas, id => "trial_controls", title=>"Controls",  is_subsection => 1, collapsible=>1, collapsed=>1 &>
362 <& /breeders_toolbox/trial/trial_controls.mas, trial_id => $trial_id &>
364 </&>
366 <&| /page/info_section.mas, id => "trial_plots", title=>"Plots",  is_subsection => 1, collapsible=>1, collapsed=>1 &>
368 <& /breeders_toolbox/trial/trial_plots.mas, trial_id => $trial_id &>
370 </&>
372 </&>
374 <br />
376 %# <&| /page/info_section.mas, title=>"Traits assayed", subtitle=>"Download trial data [<a id=\"download_phenotypes_xls_link\" href=\"/breeders/trial/$trial/download/phenotype?format=xls\">xls</a>] [<a id=\"download_phenotypes_csv_link\" href=\"/breeders/trial/$trial_id/download/phenotype?format=csv\">csv</a>] " &>
377 %# foreach my $trait (@phenotype_data) {
378 %# my $trait_id = $trait->[1];
379 %# my $trait_name = ucfirst($trait->[0]);
380 %# print "$trait_name" . ' [ ' . "<a href=\"/breeders_toolbox/trial/$trial_id/trait/$trait_id\">view statistics</a>" . ' ] ' . "<br />";
381 %# }
383 %# </&>
385 <&| /page/info_section.mas, id=> "trial_detail_traits_assayed", title => "Traits assayed", collapsible=>1, collapsed=>1, hide_if_empty=>1, subtitle => "Download trial data [<a id=\"download_phenotypes_xls_link\" href=\"/breeders/trial/$trial_id/download/phenotype?format=xls\">xls</a>] [<a id=\"download_phenotypes_csv_link\" href=\"/breeders/trial/$trial_id/download/phenotype?format=csv\">csv</a>] " &>
387 <& /breeders_toolbox/trial/phenotype_summary.mas, trial_id => $trial_id &>
389 </&>
392 <&| /page/info_section.mas,
393    title       => 'Trial JBrowse',
394    collapsible => 1,
397         <& /breeders_toolbox/trial_jbrowse_instance.mas, trial_id => $trial_id &>
399 </&>
401 <&| /page/info_section.mas, title=>"Files", collapsible=>1, collapsed=>0 &>
402   <&| /page/info_section.mas, title=>"Data Collection Files", is_subsection => 1, collapsible=>1, collapsed=>0, &>
403     <&| /page/info_section.mas, title=>"Phenotyping Spreadsheets", is_subsection => 1, collapsible=>1, collapsed=>0, subtitle=>'[<a id="create_spreadsheet_link">Create Spreadsheet</a>]' &>
404     </&>
405     <&| /page/info_section.mas, title=>"Android Field Book Layout", is_subsection => 1, collapsible=>1, collapsed=>0, subtitle=>'[<a id="create_fieldbook_link">Create Field Book</a>]' &>
406     </&>
407     <&| /page/info_section.mas, title=>"Data Collector Spreadsheet", is_subsection => 1, collapsible=>1, collapsed=>0, subtitle=> '[<a id="create_DataCollector_link">Create DataCollector Spreadsheet</a>]' &>
408     </&>
409   </&>
410   <&| /page/info_section.mas, title=>"Uploaded Phenotyping Files", is_subsection => 1, collapsible=>1, collapsed=>0, &>
411     <&| /page/info_section.mas, title=>"Phenotyping Spreadsheets", is_subsection => 1, collapsible=>1, collapsed=>0, subtitle=>'[<a id="upload_spreadsheet_phenotypes_link">Upload</a>]'&>
412     </&>
413     <&| /page/info_section.mas, title=>"Android Field Book Exported", is_subsection => 1, collapsible=>1, collapsed=>0, subtitle=>'[<a id="upload_fieldbook_phenotypes_link">Upload</a>]'&>
414     </&>
415     <&| /page/info_section.mas, title=>"Data Collector Spreadsheet", is_subsection => 1, collapsible=>1, collapsed=>0, subtitle=>'[<a id="upload_datacollector_phenotypes_link">Upload</a>]'&>
416     </&>
417   </&>
418 </&>
420 <& /breeders_toolbox/upload_phenotype_spreadsheet.mas &>
421 <& /fieldbook/upload_phenotype_fieldbook.mas &>
422 <& /breeders_toolbox/upload_phenotype_datacollector.mas &>
424 % my $data_agreement_link = "Add/edit data agreement";
425 % if ($user_can_modify) { $data_agreement_link = '[<a id="add_data_agreement">Add/edit data agreement</a>]'; }
426 <&| /page/info_section.mas, title=>"Data Agreement", is_subsection => 0, collapsible=>1, collapsed=>0,  subtitle=> $data_agreement_link  &>
428 <& /breeders_toolbox/data_agreement.mas, trial_id => $trial_id &>
430 </&>
432 <&| /page/info_section.mas, title=>'Delete trial data', subtitle=>'<font color="red" role="">Deletion cannot be undone</font>', collapsed=>1, collapsible=>1 &>
433   <& /breeders_toolbox/trial/trial_deletion.mas, trial_id => $trial_id  &>
435 </&>
437 % print STDERR "Check 9 (mason) : ".(time() - $start_time)."\n";
439 <!-- Phenotypic correlation analysis -->
440 <& /solgs/population/correlation.mas,
441    trial_id => $trial_id
444   <!-- Population structure analysis -- PCA -->
445 <& /solgs/model/pca.mas,
446    trial_id => $trial_id
447  &>
449 % print STDERR "Check 10 (mason) : ".(time() - $start_time)."\n";
451 <div id="trialIDDiv" class="trialIDDivClass" style="display:none;">
452 % print $trial_id;
453 </div>
455 <div id="tablet_field_layout_saved_dialog_message" title="Field book layout file" style="display:none;">
456   <p>
457     <span class="ui-icon ui-icon-circle-check" style="float: left; margin: 0 7px 50px 0;"></span>
458     The field book layout file was saved successfully
459   </p>
460   <p>
461     <a id="tablet_layout_download_link">Download File</a>
462   </p>
463 </div>
465 <div id="create_spreadsheet_dialog" title="Create Phenotyping Spreadsheet" style="display:none;">
466   <div id="trait_list" name="trait_list">
467     <label id="trait_list_label" for="trait_list_list_select" style="display: inline-block; width: 200px;">List of traits:
468     </label>
469   </div>
470 </div>
472 <div id="create_DataCollector_dialog" title="Create Data Collector Spreadsheet" style="display:none;">
473   <div id="trait_list_dc" name="trait_list">
474     <label id="trait_list_label_dc" for="trait_list_list_select" style="display: inline-block; width: 200px;">List of traits:
475     </label>
476   </div>
477 </div>
479 <div id="data_collector_saved_dialog_message" title="Data collector spreadsheet" style="display:none;">
480   <p>
481     <span class="ui-icon ui-icon-circle-check" style="float: left; margin: 0 7px 50px 0;"></span>
482     The data collector spreadsheet file was saved successfully
483   </p>
484   <p>
485     <a id="data_collector_download_link">Download File</a>
486   </p>
487 </div>
489 <div id="change_breeding_program_dialog">
490   Please select a breeding program for this trial:<br />
491   <div id="change_breeding_program_select_div">
492   </div>
493 </div>
495 <div id="change_trial_year_dialog">
496   Please select a year for this trial:<br />
497   <div id="change_year_select_div">
498   </div>
499 </div>
501 <div id="trial_design_view_layout" title="Trial design layout">
502 % print $design_layout_view;
503 </div>
506 <script defer="defer">
508 jQuery(document).ready(function () {
510   trial_detail_page_setup_dialogs();
512   jQuery('#delete_breeding_program_trial_association_link').click(
513      function() {
514         var trial_id = get_trial_id();
516         var yes = confirm("Do you really want to remove this trial from the breeding program?");
517         if (yes) {
518             jQuery.ajax( {
519                 url: '/breeders/program/remove/<% $breeding_program->[0]->[0] %>/'+trial_id,
520                 data: { },
521                 async: false,
522                 success: function(response) {
523                 }
524             });
525         }
526     });
530 </script>