@@ -53,14 +53,22 @@ function clearFields(form) {
5353 form . prompt . value = prompt ;
5454}
5555
56+ const BLANK_IMAGE_URL = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"/>' ;
5657async function generateSubmit ( form ) {
5758 const prompt = document . querySelector ( "#prompt" ) . value ;
5859
5960 // Convert file data to base64
6061 let formData = Object . fromEntries ( new FormData ( form ) ) ;
6162 formData . initimg = formData . initimg . name !== '' ? await toBase64 ( formData . initimg ) : null ;
6263
63- document . querySelector ( 'progress' ) . setAttribute ( 'max' , formData . steps ) ;
64+ let progressSectionEle = document . querySelector ( '#progress-section' ) ;
65+ progressSectionEle . style . display = 'initial' ;
66+ let progressEle = document . querySelector ( '#progress-bar' ) ;
67+ progressEle . setAttribute ( 'max' , formData . steps ) ;
68+ let progressImageEle = document . querySelector ( '#progress-image' ) ;
69+ progressImageEle . src = BLANK_IMAGE_URL ;
70+
71+ progressImageEle . style . display = { } . hasOwnProperty . call ( formData , 'progress_images' ) ? 'initial' : 'none' ;
6472
6573 // Post as JSON, using Fetch streaming to get results
6674 fetch ( form . action , {
@@ -73,22 +81,31 @@ async function generateSubmit(form) {
7381 while ( true ) {
7482 let { value, done} = await reader . read ( ) ;
7583 value = new TextDecoder ( ) . decode ( value ) ;
76- if ( done ) break ;
84+ if ( done ) {
85+ progressSectionEle . style . display = 'none' ;
86+ break ;
87+ }
7788
7889 for ( let event of value . split ( '\n' ) . filter ( e => e !== '' ) ) {
7990 const data = JSON . parse ( event ) ;
8091
8192 if ( data . event == 'result' ) {
8293 noOutputs = false ;
8394 document . querySelector ( "#no-results-message" ) ?. remove ( ) ;
84- appendOutput ( data . files [ 0 ] , data . files [ 1 ] , data . config )
85- } else if ( data . event == 'upscaling-started' ) {
86- document . getElementById ( "processing_cnt" ) . textContent = data . processed_file_cnt ;
87- document . getElementById ( "scaling-inprocess-message" ) . style . display = "block" ;
88- } else if ( data . event == 'upscaling-done' ) {
89- document . getElementById ( "scaling-inprocess-message" ) . style . display = "none" ;
95+ appendOutput ( data . files [ 0 ] , data . files [ 1 ] , data . config ) ;
96+ progressEle . setAttribute ( 'value' , 0 ) ;
97+ progressEle . setAttribute ( 'max' , formData . steps ) ;
98+ progressImageEle . src = BLANK_IMAGE_URL ;
99+ } else if ( data . event == 'upscaling-started' ) {
100+ document . getElementById ( "processing_cnt" ) . textContent = data . processed_file_cnt ;
101+ document . getElementById ( "scaling-inprocess-message" ) . style . display = "block" ;
102+ } else if ( data . event == 'upscaling-done' ) {
103+ document . getElementById ( "scaling-inprocess-message" ) . style . display = "none" ;
90104 } else if ( data . event == 'step' ) {
91- document . querySelector ( 'progress' ) . setAttribute ( 'value' , data . step . toString ( ) ) ;
105+ progressEle . setAttribute ( 'value' , data . step ) ;
106+ if ( data . url ) {
107+ progressImageEle . src = data . url ;
108+ }
92109 }
93110 }
94111 }
0 commit comments