Merge pull request #2754 from solgenomics/topic/fix_homepage_add_accessions_dialog
[sgn.git] / mason / breeders_toolbox / download.mas
blobb6e794e9860dd9f116a4f57bae7a2113bec8e8b2
1 <%args>
3 </%args>
5 <& /util/import_javascript.mas, classes => [ 'jqueryui', 'jquery.cookie', 'CXGN.BreederSearch', 'CXGN.List', 'CXGN.BreedersToolbox.HTMLSelect', 'spin_min', 'ladda_min' ] &>
7 <& /page/page_title.mas, title=>"Download Using Lists" &>
9 <div class="container-fluid">
11 <div class="well">
12 Choose a list for each parameter and click "Download".
13 </div>
15 <div class="well well-sm">
16 <h4>Download Phenotypes</h4><p>Select Parameters:</p>
17 <form id="download_form" action="/breeders/download_action" method="POST" >
18 <table class="table table-bordered" >
19   <thead>
20   <tr>
21     <th>
22       Accessions
23     </th>
24     <th>
25       Trials
26     </th>
27     <th>
28       Traits
29     </th>
30     <th>
31         Options
32     </th>
33     <th>
34       Action
35     </th>
36   </tr>
37   </thead>
38   <tbody>
39   <tr>
40     <td>
41       <div id="accession_list">
42       </div>
43     </td>
44     <td>
45       <div id="trial_list">
46       </div>
47     </td>
48     <td>
49       <div id="trait_list">
50       </div>
51    </td>
52     <td>
53     <b>Format:</b><br/>
54     <select class="form-control" id="format" name="format">
55         <option value=".csv">CSV</option>
56         <option value=".xls">XLS</option>
57         <option value="html">HTML</option>
58     </select>
59     <br/>
60     <b>Data Level:</b><br/>
61     <select class="form-control" id="phenotype_datalevel" name="phenotype_datalevel">
62         <option value="all">All</option>
63         <option value="plot">Plot</option>
64         <option value="plant">Plant</option>
65     </select>
66     <br/>
67     <b>Timestamp:</b><br/>
68     <select class="form-control" id="timestamp" name="timestamp">
69         <option value="0">No</option>
70         <option value="1">Yes</option>
71     </select>
72     <br/>
73     <b>Exclude Phenotype Outliers:</b><br/>
74     <select class="form-control" id="exclude_phenotype_outlier" name="exclude_phenotype_outlier">
75         <option value="0">No</option>
76         <option value="1">Yes</option>
77     </select>
78     </td>
79     <td>
80       <button class="btn btn-primary" type="button" id="phenotype">Download</button>
81       <input type="hidden" id="phenotype_download_token" name="phenotype_download_token"/>
82     </td>
83   </tr>
84   </tbody>
85   </table>
86 </form>
87 </div>
89 <div class="well well-sm">
90 <h4>Download Metadata</h4><p>Select Parameters:</p>
91 <form id="download_metadata_form" action="/breeders/download_action" method="POST" >
92 <table class="table table-bordered" >
93   <thead>
94   <tr>
95     <th>
96       Trials
97     </th>
98     <th>
99         Options
100     </th>
101     <th>
102       Action
103     </th>
104   </tr>
105   </thead>
106   <tbody>
107   <tr>
108     <td>
109       <div id="trial_metadata_list">
110       </div>
111     </td>
112     <td>
113     <b>Format:</b><br/>
114     <select class="form-control" id="metadata_format" name="metadata_format">
115         <option value=".xls">XLS</option>
116         <option value=".csv">CSV</option>
117         <option value="html">HTML</option>
118     </select>
119     <br/>
120     <div id="datalevel" style="display:none">
121       <select class="form-control" id="metadata_datalevel" name="metadata_datalevel">
122           <option value="metadata">Metadata</option>
123       </select>
124     </div>
125     </td>
126     <td>
127       <button class="btn btn-primary" type="button" id="metadata">Download</button>
128       <input type="hidden" id="metadata_download_token" name="metadata_download_token"/>
129     </td>
130   </tr>
131   </tbody>
132   </table>
133 </form>
134 </div>
136 <script>
137 $(document).ready(function() {
139     var lo = new CXGN.List();
141     $('#accession_list').html(lo.listSelect('accession_list', [ 'accessions' ], 'select', undefined, undefined));
142     $('#trial_list').html(lo.listSelect('trial_list', [ 'trials' ], 'select', undefined, undefined ));
143     $('#trait_list').html(lo.listSelect('trait_list', [ 'traits' ], 'select', undefined, undefined  ));
144     $('#trial_metadata_list').html(lo.listSelect('trial_metadata_list', ['trials'], 'select', undefined, undefined));
146     $('#metadata').click(function() { 
147       var trial_list_id = $('#trial_metadata_list_list_select').val();
148       var trial_validation = 1;
149       if (trial_list_id) { trial_validation = lo.validate(trial_list_id, 'trials', true); }
151       var problem_lists = new Array();
152       if (trial_validation != 1) {
153         problem_lists.push('trials');
154       }
156       if (problem_lists.length > 0) {
157           alert("The following lists did not pass validation: "+problem_lists.join(", ")+". Please correct the list(s) and try again");
158                 return;
159       }
161       var ladda = Ladda.create(this);
162       ladda.start();
163       var token = new Date().getTime(); //use the current timestamp as the token name and value
164       manage_dl_with_cookie(token, ladda);
165       jQuery('#metadata_download_token').val(token);
166       jQuery('#download_metadata_form').submit();
168     });
170     $('#phenotype').click(function() {
172       var accession_list_id = $('#accession_list_list_select').val();
173       var trial_list_id = $('#trial_list_list_select').val();
174       var trait_list_id = $('#trait_list_list_select').val();
176       var accession_validation = 1;
177       if (accession_list_id) { accession_validation = lo.validate(accession_list_id, 'accessions', true); }
179       var trial_validation = 1;
180       if (trial_list_id) { trial_validation = lo.validate(trial_list_id, 'trials', true); }
182       var trait_validation = 1;
183       if (trait_list_id) { trait_validation = lo.validate(trait_list_id, 'traits', true); }
185       var problem_lists = new Array();
187       if (accession_validation != 1) {
188         problem_lists.push('accessions');
189       }
190       if (trial_validation != 1) {
191         problem_lists.push('trials');
192       }
193       if (trait_validation != 1) {
194         problem_lists.push('trials');
195       }
197       if (problem_lists.length > 0) {
198          alert("The following lists did not pass validation: "+problem_lists.join(", ")+". Please correct the list(s) and try again");
199          return;
200       }
202       var ladda = Ladda.create(this);
203       ladda.start();
204       var token = new Date().getTime(); //use the current timestamp as the token name and value
205       manage_dl_with_cookie(token, ladda);
206       jQuery('#phenotype_download_token').val(token);
207       jQuery('#download_form').submit();
209         });
213 </script>
216 <!-- start of code for pedigree download -->
218 <div class="well well-sm">
219 <form id="download_pedigree" action="/breeders/download_pedigree_action" method="POST">
220 <table class="table"  cellpadding="10">
221   <thead>
222   <tr><td colspan="2"><h4>Download Pedigree </h4><p>Select parameter:</p></tr>
223   <tr>
224     <th>
225       Accessions
226     </th>
227     <th>
228       Format
229     </th>
230     <th>
231       Action
232     </th>
233   </tr>
234   </thead>
235   <tbody>
236   <tr>
237     <td>
238       <div id="accession_list4">
239       </div>
240     </td>
241     <td>
242  <div class="radio">
243   <label><input type="radio" id="ped_format" name="ped_format" value="parents_only" checked>Direct parents only</label>
244  </div>
245  <div class="radio">
246    <label><input type="radio" id="ped_format" name="ped_format" value="full">Full pedigrees</label>
247  </div>
248      </td>
249     <td>
250       <button class="btn btn-primary" type="button" id="pedigree">Download</button>
251       <input type="hidden" id="pedigree_download_token" name="pedigree_download_token"/>
252     </td>
253   </tr>
254   </tbody>
255   </table>
256 </form>
257 </div>
260 <script>
261 $(document).ready(function() {
263     var lo = new CXGN.List();
265     $('#accession_list4').html(lo.listSelect('pedigree_accession_list', [ 'accessions' ], 'select', undefined, undefined));
267     $('#pedigree').click(function() {
269         var accession_list_id = $('#pedigree_accession_list_list_select').val();
270         if (!accession_list_id) {
271             alert("You need to select an accession list!");
272             return;
273         }
275         var accession_validation = 1;
276         if (accession_list_id) {
277             accession_validation = lo.validate(accession_list_id, 'accessions', true);
279         }
281         if (accession_validation != 1) {
282             alert("The accession list did not pass validation. Please correct the list and try again");
283             return;
284         }
286         var ladda = Ladda.create(this);
287         ladda.start();
288         var token = new Date().getTime(); //use the current timestamp as the token name and value
289         manage_dl_with_cookie(token, ladda);
290         jQuery('#pedigree_download_token').val(token);
291         jQuery('#download_pedigree').submit();
293     });
296 </script>
298 <!-- end of code for pedigree download -->
301 <div class="well well-sm">
302 <form id="download_gbs" action="/breeders/download_gbs_action" method="POST">
303 <table class="table"  cellpadding="10">
304   <thead>
305   <tr><td colspan="2"><h4>Download GBS Genotype </h4><p>Select parameter:</p></tr>
306   <tr>
307     <th>
308       Accessions
309     </th>
310     <th>
311       Genotyping Protocol
312     </th>
313     <th>
314       Action
315     </th>
316   </tr>
317   </thead>
318   <tbody>
319   <tr>
320     <td>
321       <div id="accession_list2">
322       </div>
323     </td>
324     <td>
325       <div id="protocol_list">
326       </div>
327     </td>
328     <td>
329       <button class="btn btn-primary" type="button" id="genotype">Download</button>
330       <input type="hidden" id="gbs_download_token" name="gbs_download_token"/>
331     </td>
332   </tr>
333   </tbody>
334   </table>
335 </form>
336 </div>
338 <script>
339   $(document).ready(function() {
341       var lo = new CXGN.List();
343       $('#accession_list2').html(lo.listSelect('genotype_accession_list', [ 'accessions' ], 'select', undefined, undefined));
344       get_select_box("genotyping_protocol", "protocol_list");
346       $('#genotype').click(function() {
348       var accession_list_id = $('#genotype_accession_list_list_select').val();
349       var protocol_list_id = $('#protocol_list').val();
351       var accession_validation = 1;
352       if (accession_list_id) {
353         accession_validation = lo.validate(accession_list_id, 'accessions', true);
354       }
356       if (!( accession_list_id || protocol_list_id) ) {
357         alert("You need to select a list of accessions and a protocol !");
358         return;
359       }
361       var problem_lists = new Array();
363       if (accession_validation != 1) {
364         problem_lists.push('accessions');
365       }
368       console.log(problem_lists);
370       if (problem_lists.length > 0) {
371         alert("The following lists did not pass validation: "+problem_lists.join(", ")+". Please correct the list(s) and try again");
372         return;
373       }
375       var ladda = Ladda.create(this);
376       ladda.start();
377       var token = new Date().getTime(); //use the current timestamp as the token name and value
378       manage_dl_with_cookie(token, ladda);
379       jQuery('#gbs_download_token').val(token);
380       jQuery('#download_gbs').submit();
382     });
384   });
385 </script>
387 <div class="well well-sm">
388 <form id="gbs_qc" action="/breeders/gbs_qc_action" method="POST">
389 <table class="table" cellpadding="10">
390   <thead>
391   <tr><td colspan="3"><h4>GBS Genotype QC</h4><p>Select parameter:</p></tr>
392   <tr>
393     <th>
394       Trials
395     </th>
396     <th>
397       Accessions
398     </th>
399     <th>
400       Genotyping Protocol
401     </th>
402     <th>
403       Action
404     </th>
405   </tr>
406   </thead>
407   <tbody>
408   <tr>
409     <td>
410       <div id="trial_list3">
411       </div>
412     </td>
413     <td>
414       <div id="accession_list3">
415       </div>
416     </td>
417     <td>
418       <div id="protocol_list2">
419       </div>
420     </td>
421     <td>
422       <button class="btn btn-primary" type="button" id="genotype_qc">Download</button>
423       <input type="hidden" id="qc_download_token" name="qc_download_token"/>
424     </td>
425   </tr>
426   </tbody>
427   </table>
428 </form>
429 </div>
431 </div>
433 <script>
434   $(document).ready(function() {
436       var lo = new CXGN.List();
438       $('#accession_list3').html(lo.listSelect('genotype_qc_accession_list', [ 'accessions' ], 'select', undefined, undefined));
439       $('#trial_list3').html(lo.listSelect('genotype_trial_list', [ 'trials' ], 'select', undefined, undefined ));
440       get_select_box("genotyping_protocol", "protocol_list2", {'id':'protocol_list2_select', 'name':'protocol_list2_select'});
442       $('#genotype_qc').click(function() {
444         $('#working').dialog( {
445                 height: 100,
446                 width:  300,
447                 modal: true,
448                 autoOpen: false,
449                 closeOnEscape: true,
450                 draggable: true,
451                 resizable: true,
452                 open: function() { $(this).closest('.ui-dialog').find('.ui-dialog-titlebar-close').hide(); },
453                 title: 'Downloading genotype...'
454                 });
456       var accession_list_id = $('#genotype_qc_accession_list_list_select').val();
457       var trial_list_id = $('#genotype_trial_list_list_select').val();
459       var accession_validation = lo.validate(accession_list_id, 'accessions', true);
460       var trial_validation = lo.validate(trial_list_id, 'trials', true);
462       if (! (accession_list_id || trial_list_id) ) {
463         alert("You need to select an accession or a trail !");
464         return;
465       }
467       var problem_lists = new Array();
469       if (accession_validation != 1) {
470         problem_lists.push('accessions');
471       }
473       if (trial_validation != 1) {
474         problem_lists.push('trials');
475       }
478       //alert("problem_lists is " + problem_lists);
480       console.log(problem_lists);
482       if (problem_lists.length > 0) {
483         alert("The following lists did not pass validation: "+problem_lists.join(", ")+". Please correct the list(s) and try again");
484         return;
485       }
487       var ladda = Ladda.create(this);
488       ladda.start();
489       var token = new Date().getTime(); //use the current timestamp as the token name and value
490       manage_dl_with_cookie(token, ladda);
491       jQuery('#qc_download_token').val(token);
492       jQuery('#gbs_qc').submit();
494     });
496   });
497 </script>