@@ -56,9 +56,9 @@ require([
5656 }
5757 let byte_count = 0 ;
5858 let converted_size = size ;
59- while ( converted_size > 1024 ) {
59+ while ( converted_size > 1000 ) {
6060 byte_count += 1 ;
61- converted_size /= 1024 ;
61+ converted_size /= 1000 ;
6262 }
6363 let bytes = ( Math . round ( converted_size * 1000 ) / 1000 ) . toFixed ( 3 ) ;
6464 return `${ bytes } ${ byte_level [ byte_count ] } ` ;
@@ -219,10 +219,14 @@ require([
219219 queue_byte_size = 0 ;
220220 bytes_downloaded = 0 ;
221221 series_count = 0 ;
222+ study_count = 0 ;
223+ case_count = 0 ;
224+ collection_count = 0 ;
222225 start_time = - 1 ;
223226 collections = new Set ( [ ] ) ;
224227 cases = new Set ( [ ] ) ;
225228 studies = new Set ( [ ] ) ;
229+ preset_totals = false ;
226230
227231 cancellation_underway = false ;
228232
@@ -257,12 +261,24 @@ require([
257261 this . bytes_downloaded = 0 ;
258262 this . series_count = 0 ;
259263 this . collections = new Set ( [ ] ) ;
264+ this . collection_count = 0 ;
260265 this . cases = new Set ( [ ] ) ;
266+ this . case_count = 0 ;
261267 this . studies = new Set ( [ ] ) ;
268+ this . study_count = 0 ;
262269 this . cancellation_underway = false ;
263270 this . start_time = - 1 ;
264271 }
265272
273+ set_download_totals ( queue_byte_size , collection_count , case_count , study_count , series_count ) {
274+ this . queue_byte_size = queue_byte_size ;
275+ this . collection_count = collection_count ;
276+ this . case_count = case_count ;
277+ this . study_count = study_count ;
278+ this . series_count = series_count ;
279+ this . preset_totals = true ;
280+ }
281+
266282 get active_requests ( ) {
267283 return ( this . working_queue . length > 0 ) ;
268284 }
@@ -294,11 +310,16 @@ require([
294310 let request_success = false ;
295311 if ( this . hopper . length < this . HOPPER_LIMIT && ! this . cancellation_underway ) {
296312 this . hopper . push ( new DownloadRequest ( request ) ) ;
297- this . queue_byte_size += parseFloat ( request [ 'series_size' ] ) ;
298- this . series_count += 1 ;
299313 this . studies . add ( request [ 'study_id' ] ) ;
300314 this . collections . add ( request [ 'collection_id' ] ) ;
301315 this . cases . add ( request [ 'patient_id' ] ) ;
316+ if ( ! this . preset_totals ) {
317+ this . queue_byte_size += parseFloat ( request [ 'series_size' ] ) ;
318+ this . series_count += 1 ;
319+ this . collection_count = this . collections . size ;
320+ this . study_count = this . studies . size ;
321+ this . case_count = this . cases . size ;
322+ }
302323 request_success = true ;
303324 }
304325 return request_success ;
@@ -494,9 +515,9 @@ require([
494515
495516 get all_requested ( ) {
496517 return `${ this . queues . total_downloads_requested } requested in ` +
497- `${ this . queues . collections . size } collection(s) / ` +
498- `${ this . queues . cases . size } case(s) / ` +
499- `${ this . queues . studies . size } ${ this . queues . studies . size <= 1 ? "study" : "studies" } / ` +
518+ `${ this . queues . collection_count } collection(s) / ` +
519+ `${ this . queues . case_count } case(s) / ` +
520+ `${ this . queues . study_count } ${ this . queues . study_count <= 1 ? "study" : "studies" } / ` +
500521 `${ this . queues . series_count } series` ;
501522 }
502523
@@ -655,6 +676,12 @@ require([
655676 } ) ;
656677 }
657678
679+ set_download_stats ( stats ) {
680+ this . queues . set_download_totals (
681+ stats . queue_byte_size , stats . collection_count , stats . case_count , stats . study_count , stats . series_count
682+ ) ;
683+ }
684+
658685 beginDownloads ( ) {
659686 if ( ! this . queues . isEmpty ( ) ) {
660687 if ( this . in_progress <= 0 ) {
@@ -793,6 +820,9 @@ require([
793820 }
794821 const series_data = await response . json ( ) ;
795822 series . push ( ...series_data [ 'result' ] ) ;
823+ if ( 'download_stats' in series_data ) {
824+ downloader_manager . set_download_stats ( series_data [ 'download_stats' ] ) ;
825+ }
796826 }
797827 } else {
798828 series . push ( {
0 commit comments