@@ -19,10 +19,18 @@ function dropzone(): HTMLElement {
1919 return zone
2020}
2121
22- async function handleFile ( file : File ) : Promise < void > {
22+ function footer ( ) : HTMLElement {
23+ const f = document . createElement ( 'footer' )
24+ f . className = 'app-footer'
25+ f . innerHTML = `influence-sensor <span class="version">v${ __APP_VERSION__ } </span>`
26+ return f
27+ }
28+
29+ async function handleFile ( file : File , results : HTMLElement ) : Promise < void > {
30+ results . innerHTML = ''
2331 const status = document . createElement ( 'p' )
2432 status . textContent = 'Reading…'
25- app . appendChild ( status )
33+ results . appendChild ( status )
2634 try {
2735 const zip = await JSZip . loadAsync ( file )
2836 const adapter = detectAdapter ( zip )
@@ -36,9 +44,6 @@ async function handleFile(file: File): Promise<void> {
3644 return
3745 }
3846 const report = analyze ( data )
39- const results = document . createElement ( 'div' )
40- results . id = 'results'
41- app . appendChild ( results )
4247 status . remove ( )
4348 renderReport ( results , report )
4449 } catch {
@@ -49,11 +54,14 @@ async function handleFile(file: File): Promise<void> {
4954function init ( ) : void {
5055 app . innerHTML = ''
5156 const zone = dropzone ( )
52- app . appendChild ( zone )
57+ const results = document . createElement ( 'div' )
58+ results . id = 'results'
59+ app . append ( zone , results , footer ( ) )
60+
5361 const input = zone . querySelector < HTMLInputElement > ( '#file' ) !
5462 input . addEventListener ( 'change' , ( ) => {
5563 const file = input . files ?. [ 0 ]
56- if ( file ) void handleFile ( file )
64+ if ( file ) void handleFile ( file , results )
5765 } )
5866 const stop = ( e : DragEvent ) => {
5967 e . preventDefault ( )
@@ -62,7 +70,7 @@ function init(): void {
6270 zone . addEventListener ( 'drop' , ( e ) => {
6371 stop ( e )
6472 const file = e . dataTransfer ?. files ?. [ 0 ]
65- if ( file ) void handleFile ( file )
73+ if ( file ) void handleFile ( file , results )
6674 } )
6775}
6876
0 commit comments