11// TODO
2- // GET REMOTE JSON
2+ // OK - GET REMOTE JSON
33// DOWNLOAD FILE ON ITEM CLICK
44// CHECK BOARD STATUS
55// UPLOAD FIRMWARE
66//
77var fs = require ( "fs" ) ;
8- var http = require ( 'http' ) ;
8+ var https = require ( 'https' ) ;
9+ var md5 = require ( 'md5' ) ;
910
1011
1112function detect_board ( ) {
@@ -52,8 +53,10 @@ function get_list_firmwares_remote() {
5253
5354 $ . get ( url , function ( data ) {
5455 var obj = $ . parseJSON ( data ) ;
56+
57+
5558 $ . each ( obj , function ( i , value ) {
56- add_item_to_firmware_list ( obj [ i ] , true ) ;
59+ add_item_to_firmware_list ( value , true ) ;
5760 } ) ;
5861
5962 } ) ;
@@ -74,26 +77,41 @@ function get_remote_firmware_url(name) {
7477
7578function add_item_to_firmware_list ( obj , isRemote ) {
7679 console . log ( "added " + obj . name ) ;
77- var file_url = "" ;
80+ var file_url = "" ;
81+
7882 if ( isRemote ) {
7983 file_url = get_remote_firmware_url ( obj . name ) ;
8084console . log ( file_url ) ;
8185 } else {
8286 file_url = get_local_firmware_path ( obj . name ) ;
8387 }
8488
85- $ ( "#firmware-list" ) . append ( '<div class="item" id = ' + obj . id + '><div class="name">' + obj . name + '</div><div class="author">' + obj . author + '</div></div>' ) ;
86- $ ( "#firmware-list #" + obj . id ) . click ( function ( ) {
8789
88- if ( isRemote ) {
89- download_firmware ( file_url , function ( ) {
90- //upload_firmware(file_url, "/dev/sdb");
91- } ) ;
92- } else {
93- upload_firmware ( file_url , "/dev/sdb" ) ;
94- }
90+ $item = $ ( '<div class="item" id = ' + obj . id + '><div class="name">' + obj . name + '</div><div class="author">' + obj . author + '</div></div>' ) ;
91+
92+ $ ( "#firmware-list #list" ) . append ( $item )
93+
94+ $item . click ( function ( ) {
95+ var $div = $ ( "#firmware-upload-section #action" ) ;
96+
97+ $div . fadeOut ( "500" , function ( ) {
98+ $div . find ( ".name" ) . text ( obj . name ) ;
99+ $div . find ( ".author" ) . text ( obj . author ) ;
100+ $div . find ( ".source a" ) . attr ( "href" , obj . source ) ;
101+ $ ( this ) . fadeIn ( "500" ) ;
102+
103+ } ) ;
95104
96- } ) ;
105+ $div . find ( "#upload" ) . click ( function ( ) {
106+ if ( isRemote ) {
107+ download_firmware ( obj , function ( ) {
108+ //upload_firmware(file_url, "/dev/sdb");
109+ } ) ;
110+ } else {
111+ upload_firmware ( file_url , "/dev/sdb" ) ;
112+ }
113+ } ) ;
114+ } ) ;
97115}
98116
99117function get_list_firmwares_local ( ) {
@@ -112,18 +130,40 @@ function get_list_firmwares_local() {
112130
113131
114132//TODO check md5
115- function download_firmware ( name , url , callback ) {
133+ function download_firmware ( obj , callback ) {
116134 if ( ! fs . existsSync ( "./tmp" ) ) {
117135 fs . mkdirSync ( "./tmp" ) ;
118136 }
119137
120- var path = process . cwd ( ) + "/" + name ;
138+ var url = get_remote_firmware_url ( obj . name ) ;
139+ var path = process . cwd ( ) + "/tmp/" + obj . name + ".bin" ;
140+ console . log ( "saving from: " + url ) ;
141+ console . log ( "saving to " + path ) ;
121142
122143 var file = fs . createWriteStream ( path ) ;
123144
124- var request = http . get ( url , function ( response ) {
145+ var request = https . get ( url , function ( response ) {
146+ console . log ( response ) ;
125147 response . pipe ( file ) ;
126- callback ( ) ;
148+
149+ file . on ( 'finish' , function ( d ) {
150+ //check md5
151+ var md5result ;
152+ fs . readFile ( path , function ( err , buf ) {
153+ if ( md5 ( buf ) == obj . md5 ) {
154+ console . log ( "ok" ) ;
155+ md5result = true ;
156+ } else {
157+ console . log ( "nop" ) ;
158+ md5result = false ;
159+ }
160+ callback ( md5result ) ;
161+ } ) ; //readfile
162+ } ) ; //fileonfinish
163+
164+ } ) . on ( 'error' , function ( e ) {
165+ fs . unlink ( dest ) ;
166+ console . log ( e ) ;
127167 } ) ;
128168}
129169
@@ -153,6 +193,20 @@ function bind_buttons() {
153193 } ) ;
154194}
155195
196+ function bind_drag_and_drop_area ( ) {
197+ var holder = document . getElementById ( 'board' ) ;
198+ holder . ondragover = function ( ) { this . className = 'hover' ; return false ; } ;
199+ holder . ondragleave = function ( ) { this . className = '' ; return false ; } ;
200+ holder . ondrop = function ( e ) {
201+ e . preventDefault ( ) ;
202+
203+ for ( var i = 0 ; i < e . dataTransfer . files . length ; ++ i ) {
204+ console . log ( e . dataTransfer . files [ i ] . path ) ;
205+ }
206+ return false ;
207+ } ;
208+ }
209+
156210
157211function hide_all_sections ( ) {
158212 $ ( "#main #editor-container" ) . hide ( ) ;
0 commit comments