@@ -58,7 +58,7 @@ require([
5858 tippy ( '.manifest-size-warning' , {
5959 content : 'Your cohort is too large to be downloaded in its entirety, and will be truncated at 65,000 records ' +
6060 'ordered by PatientID, CollectionID, StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, SourceDOI, ' +
61- 'CRDCInstanceUUID, and GCSPath .' ,
61+ 'CRDCInstanceUUID, and GCS_URL .' ,
6262 theme : 'light' ,
6363 placement : 'left' ,
6464 arrow : false ,
@@ -92,14 +92,16 @@ require([
9292 update_export_option ( "file-manifest" ) ;
9393
9494 var download_manifest = function ( file_type , clicked_button , e ) {
95+ let manifest_type = $ ( 'input[name="manifest-type"]:checked' ) . val ( ) ;
96+
9597 $ ( '#unallowed-chars-alert' ) . hide ( ) ;
9698 $ ( '#name-too-long-alert-modal' ) . hide ( ) ;
9799
98100 var name = $ ( '#export-manifest-name' ) . val ( ) ;
99101 var unallowed = ( name . match ( base . blacklist ) || [ ] ) ;
100102
101103 if ( name . length == 0 ) {
102- $ ( '#download-csv' ) . prop ( 'title' , 'Please input the name.' ) ;
104+ $ ( '#download-csv' ) . prop ( 'title' , 'Please provide a file name.' ) ;
103105 $ ( '#export-manifest-name' ) [ 0 ] . focus ( ) ;
104106 e . preventDefault ( ) ;
105107 return false ;
@@ -123,20 +125,22 @@ require([
123125 return false ;
124126 }
125127
126- $ ( '#export-manifest-form' ) . submit ( ) ;
127-
128128 $ ( '#download-csv' ) . attr ( 'disabled' , 'disabled' ) ;
129129 $ ( '#download-tsv' ) . attr ( 'disabled' , 'disabled' ) ;
130130 $ ( '#download-json' ) . attr ( 'disabled' , 'disabled' ) ;
131-
132- $ ( '#download-in-progress' ) . modal ( 'show' ) ;
133-
134- base . blockResubmit ( function ( ) {
135- $ ( '#download-csv' ) . removeAttr ( 'disabled' ) ;
136- $ ( '#download-tsv' ) . removeAttr ( 'disabled' ) ;
137- $ ( '#download-json' ) . removeAttr ( 'disabled' ) ;
138- $ ( '#download-in-progress' ) . modal ( 'hide' ) ;
139- } , downloadToken , 'downloadToken' ) ;
131+ $ ( '#get-bq-table' ) . attr ( 'disabled' , 'disabled' ) ;
132+
133+ $ ( '#manifest-in-progress' ) . modal ( 'show' ) ;
134+
135+ if ( manifest_type == 'file-manifest' ) {
136+ base . blockResubmit ( function ( ) {
137+ $ ( '#download-csv' ) . removeAttr ( 'disabled' ) ;
138+ $ ( '#download-tsv' ) . removeAttr ( 'disabled' ) ;
139+ $ ( '#download-json' ) . removeAttr ( 'disabled' ) ;
140+ $ ( '#get-bq-table' ) . removeAttr ( 'disabled' ) ;
141+ $ ( '#manifest-in-progress' ) . modal ( 'hide' ) ;
142+ } , downloadToken , 'downloadToken' ) ;
143+ }
140144
141145 var checked_fields = [ ] ;
142146 $ ( '.field-checkbox' ) . each ( function ( )
@@ -158,25 +162,52 @@ require([
158162 }
159163 } ) ;
160164
161- var include_header = $ ( '#include-header-checkbox' ) [ 0 ] . checked ;
162-
163- var url = BASE_URL + '/cohorts/download_manifest/' + cohort_id + '/' ;
164- url += ( "?file_type=" + file_type ) ;
165- url += ( "&include_header=" + include_header ) ;
166- url += ( "&file_name=" + name ) ;
167- url += ( "&header_fields=" + JSON . stringify ( checked_fields ) ) ;
168- url += ( "&columns=" + JSON . stringify ( checked_columns ) ) ;
169- url += ( "&downloadToken=" + downloadToken ) ;
165+ $ ( 'input[name="file_type"]' ) . val ( file_type ) ;
166+ $ ( 'input[name="header_fields"]' ) . val ( JSON . stringify ( checked_fields ) ) ;
167+ $ ( 'input[name="columns"]' ) . val ( JSON . stringify ( checked_columns ) ) ;
168+ $ ( 'input[name="downloadToken"]' ) . val ( downloadToken ) ;
169+ $ ( 'input[name="include_header"]' ) . val ( $ ( '#include-header-checkbox' ) . is ( ':checked' ) ? 'true' : 'false' ) ;
170170
171171 var select_box_div = $ ( '#file-part-select-box' ) ;
172172 var select_box = select_box_div . find ( 'select' ) ;
173- if ( select_box_div . is ( ":visible" ) )
174- {
173+ if ( select_box_div . is ( ":visible" ) ) {
175174 var selected_file_part = select_box . children ( "option:selected" ) . val ( ) ;
176- url += ( "&file_part=" + selected_file_part ) ;
175+ $ ( 'input[name="file_part"]' ) . val ( selected_file_part ) ;
176+ } else {
177+ $ ( 'input[name="file_part"]' ) . val ( "" ) ;
177178 }
178179
179- location . href = url ;
180+ if ( manifest_type == 'file-manifest' ) {
181+ $ ( '#export-manifest-form' ) . submit ( ) ;
182+ } else {
183+ $ . ajax ( {
184+ url : $ ( '#export-manifest-form' ) . attr ( 'action' ) ,
185+ data : $ ( '#export-manifest-form' ) . serialize ( ) ,
186+ method : 'GET' ,
187+ success : function ( data ) {
188+ if ( data . message ) {
189+ base . showJsMessage ( "info" , data . message , true ) ;
190+ }
191+ } ,
192+ error : function ( xhr ) {
193+ console . log ( xhr ) ;
194+ var responseJSON = $ . parseJSON ( xhr . responseText ) ;
195+ // If we received a redirect, honor that
196+ if ( responseJSON . redirect ) {
197+ base . setReloadMsg ( responseJSON . level || "error" , responseJSON . message ) ;
198+ window . location = responseJSON . redirect ;
199+ } else {
200+ base . showJsMessage ( responseJSON . level || "error" , responseJSON . message , true ) ;
201+ }
202+ } ,
203+ complete : function ( xhr , status ) {
204+ $ ( '#manifest-in-progress' ) . modal ( 'hide' ) ;
205+ $ ( '#get-bq-table' ) . removeAttr ( 'disabled' ) ;
206+ $ ( '#export-manifest-modal' ) . modal ( 'hide' ) ;
207+ $ ( '#export-manifest-form' ) [ 0 ] . reset ( ) ;
208+ }
209+ } ) ;
210+ }
180211 } ;
181212
182213 $ ( '.column-checkbox' ) . change ( function ( ) {
@@ -213,4 +244,9 @@ require([
213244 } ;
214245
215246 update_download_manifest_buttons ( ) ;
247+
248+ $ ( '#get-bq-table' ) . on ( 'click' , function ( ) {
249+ download_manifest ( '' , $ ( this ) ) ;
250+ } ) ;
251+
216252} ) ;
0 commit comments