1- document . querySelector ( '.dropzone' ) . addEventListener ( 'drop' , ( e ) => {
2- e . preventDefault ( ) ;
3- let file = e . dataTransfer . files [ 0 ] ;
1+ const downloadButton = document . querySelector ( '.download' ) ;
2+
3+ function downloadCSV ( ) {
4+ const qubesTable = document . querySelector ( '#qubes' ) ;
5+ const rows = Array . from ( qubesTable . querySelectorAll ( 'tr' ) ) . map ( ( row ) =>
6+ Array . from ( row . querySelectorAll ( 'th,td' ) ) . map ( ( cell ) => cell . textContent )
7+ ) ;
8+ const filename = 'baqup-qubes.csv' ;
9+ const csvContent = rows
10+ . map ( ( row ) => row . map ( ( cell ) => `"${ cell } "` ) . join ( ',' ) )
11+ . join ( '\n' ) ;
12+ const blob = new Blob ( [ csvContent ] , { type : 'text/csv;charset=utf-8;' } ) ;
13+ const url = URL . createObjectURL ( blob ) ;
14+ const a = document . createElement ( 'a' ) ;
15+ a . href = url ;
16+ a . setAttribute ( 'download' , filename ) ;
17+ a . style . display = 'none' ;
18+ document . body . appendChild ( a ) ;
19+ a . click ( ) ;
20+ document . body . removeChild ( a ) ;
21+ }
22+ function handleFile ( file ) {
423 let reader = new FileReader ( ) ;
524 reader . onload = ( event ) => {
625 let jsonData = JSON . parse ( event . target . result ) ;
@@ -9,18 +28,19 @@ document.querySelector('.dropzone').addEventListener('drop', (e) => {
928 addQubesToTable ( qubesTable , jsonData ) ;
1029 } ;
1130 reader . readAsText ( file ) ;
31+ }
32+
33+ document . querySelector ( '.dropzone' ) . addEventListener ( 'drop' , ( e ) => {
34+ e . preventDefault ( ) ;
35+ let file = e . dataTransfer . files [ 0 ] ;
36+ handleFile ( file ) ;
37+ downloadButton . classList . remove ( 'hidden' ) ;
1238} ) ;
1339
1440document . querySelector ( 'input[type=file]' ) . addEventListener ( 'change' , ( e ) => {
1541 let file = e . target . files [ 0 ] ;
16- let reader = new FileReader ( ) ;
17- reader . onload = ( event ) => {
18- let jsonData = JSON . parse ( event . target . result ) ;
19- console . log ( jsonData ) ;
20- const qubesTable = document . querySelector ( '#qubes > tbody' ) ;
21- addQubesToTable ( qubesTable , jsonData ) ;
22- } ;
23- reader . readAsText ( file ) ;
42+ handleFile ( file ) ;
43+ downloadButton . classList . remove ( 'hidden' ) ;
2444} ) ;
2545
2646function addQubesToTable ( qubesTable , jsonData ) {
0 commit comments