@@ -14,7 +14,7 @@ export async function processPDF(file, encryptionKey, socket) {
1414 if ( init == false ) {
1515 socket . on ( "saved" , async ( data ) => {
1616 uploadIds [ data . page ] = data . id ;
17-
17+ updateProgressBar ( ) ;
1818 if ( ! uploadIds . includes ( null ) ) {
1919 await saveDocumentToLocalStorage ( file . name , encryptionKey , uploadIds ) ;
2020 loadDocumentPreviews ( ) ;
@@ -41,7 +41,7 @@ export async function processPDF(file, encryptionKey, socket) {
4141 const previewContainer = document . getElementById ( "previewContainer" ) ;
4242 previewContainer . innerHTML = '' ;
4343 uploadIds = new Array ( pdf . numPages ) . fill ( null ) ;
44-
44+ createProgressBar ( pdf . numPages ) ;
4545
4646 for ( let i = 1 ; i <= pdf . numPages ; i ++ ) {
4747 const page = await pdf . getPage ( i ) ;
@@ -84,3 +84,44 @@ export async function processPDF(file, encryptionKey, socket) {
8484
8585 reader . readAsArrayBuffer ( file ) ;
8686}
87+
88+
89+ function createProgressBar ( totalPages ) {
90+ let progressContainer = document . getElementById ( "progressContainer" ) ;
91+ if ( ! progressContainer ) {
92+ progressContainer = document . createElement ( "div" ) ;
93+ progressContainer . id = "progressContainer" ;
94+ progressContainer . style . width = "100%" ;
95+ progressContainer . style . backgroundColor = "#ddd" ;
96+ progressContainer . style . marginTop = "10px" ;
97+ document . body . appendChild ( progressContainer ) ;
98+ }
99+
100+ let progressBar = document . getElementById ( "progressBar" ) ;
101+ if ( ! progressBar ) {
102+ progressBar = document . createElement ( "div" ) ;
103+ progressBar . id = "progressBar" ;
104+ progressBar . classList . add ( 'progressbar' )
105+ progressBar . style . backgroundColor = "#baae41" ;
106+ progressContainer . appendChild ( progressBar ) ;
107+ }
108+ progressBar . textContent = 'Upload läuft. Bitte warten' ;
109+ progressBar . dataset . totalPages = totalPages ;
110+ updateProgressBar ( ) ;
111+ }
112+
113+ function updateProgressBar ( ) {
114+ const progressBar = document . getElementById ( "progressBar" ) ;
115+ if ( progressBar ) {
116+ const totalPages = parseInt ( progressBar . dataset . totalPages ) ;
117+ const uploadedPages = uploadIds . filter ( id => id !== null ) . length ;
118+ const progress = ( uploadedPages / totalPages ) * 100 ;
119+ progressBar . style . width = `${ progress } %` ;
120+ if ( progress === 100 ) {
121+ progressBar . style . backgroundColor = '#369f36' ;
122+ progressBar . textContent = 'Upload abgeschlossen. Klicke deine Präsentation unten an.'
123+ document . getElementById ( 'previewContainer' ) . innerHTML = '' ;
124+ }
125+ }
126+ }
127+
0 commit comments