@@ -26,8 +26,8 @@ Ardublockly.init = function() {
2626 Ardublockly . bindActionFunctions ( ) ;
2727 Ardublockly . bindBlocklyEventListeners ( ) ;
2828
29- // Check if not running locally
30- if ( document . location . hostname != 'localhost ' ) {
29+ // Hackish way to check if not running locally
30+ if ( document . location . hostname != '127.0.0.1 ' ) {
3131 Ardublockly . openNotConnectedModal ( ) ;
3232 }
3333} ;
@@ -92,12 +92,16 @@ Ardublockly.bindActionFunctions = function() {
9292
9393 // Settings modal input field listeners
9494 Ardublockly . bindClick_ ( 'settings_compiler_location' , function ( ) {
95- ArdublocklyServer . requestNewCompilerLocation (
96- Ardublockly . setCompilerLocationHtml ) ;
95+ ArdublocklyServer . requestNewCompilerLocation ( function ( jsonObj ) {
96+ Ardublockly . setCompilerLocationHtml (
97+ ArdublocklyServer . jsonToHtmlTextInput ( jsonObj ) ) ;
98+ } ) ;
9799 } ) ;
98100 Ardublockly . bindClick_ ( 'settings_sketch_location' , function ( ) {
99- ArdublocklyServer . requestNewSketchLocation (
100- Ardublockly . setSketchLocationHtml ) ;
101+ ArdublocklyServer . requestNewSketchLocation ( function ( jsonObj ) {
102+ Ardublockly . setSketchLocationHtml (
103+ ArdublocklyServer . jsonToHtmlTextInput ( jsonObj ) ) ;
104+ } ) ;
101105 } ) ;
102106} ;
103107
@@ -154,14 +158,9 @@ Ardublockly.initialiseIdeButtons = function() {
154158 Ardublockly . getLocalStr ( 'verifySketch' ) ;
155159 document . getElementById ( 'button_ide_large' ) . title =
156160 Ardublockly . getLocalStr ( 'uploadSketch' ) ;
157- ArdublocklyServer . requestIdeOptions ( function ( jsonResponse ) {
158- if ( jsonResponse != null ) {
159- var parsedJson = JSON . parse ( jsonResponse ) ;
160- // "response_type" : "settings_board",
161- // "element" : "dropdown",
162- // "options" : [ {"value" : "XXX", "text" : "XXX"}, ...]
163- // "selected": "selected key"}
164- Ardublockly . changeIdeButtons ( parsedJson . selected ) ;
161+ ArdublocklyServer . requestIdeOptions ( function ( jsonObj ) {
162+ if ( jsonObj != null ) {
163+ Ardublockly . changeIdeButtons ( jsonObj . selected ) ;
165164 } // else Null: Ardublockly server is not running, do nothing
166165 } ) ;
167166} ;
@@ -325,12 +324,25 @@ Ardublockly.saveTextFileAs = function(fileName, content) {
325324 * and opens the Settings modal dialog.
326325 */
327326Ardublockly . openSettings = function ( ) {
328- ArdublocklyServer . requestCompilerLocation (
329- Ardublockly . setCompilerLocationHtml ) ;
330- ArdublocklyServer . requestSketchLocation ( Ardublockly . setSketchLocationHtml ) ;
331- ArdublocklyServer . requestArduinoBoards ( Ardublockly . setArduinoBoardsHtml ) ;
332- ArdublocklyServer . requestSerialPorts ( Ardublockly . setSerialPortsHtml ) ;
333- ArdublocklyServer . requestIdeOptions ( Ardublockly . setIdeHtml ) ;
327+ ArdublocklyServer . requestCompilerLocation ( function ( jsonObj ) {
328+ Ardublockly . setCompilerLocationHtml (
329+ ArdublocklyServer . jsonToHtmlTextInput ( jsonObj ) ) ;
330+ } ) ;
331+ ArdublocklyServer . requestSketchLocation ( function ( jsonObj ) {
332+ Ardublockly . setSketchLocationHtml (
333+ ArdublocklyServer . jsonToHtmlTextInput ( jsonObj ) ) ;
334+ } ) ;
335+ ArdublocklyServer . requestArduinoBoards ( function ( jsonObj ) {
336+ Ardublockly . setArduinoBoardsHtml (
337+ ArdublocklyServer . jsonToHtmlDropdown ( jsonObj ) ) ;
338+ } ) ;
339+ ArdublocklyServer . requestSerialPorts ( function ( jsonObj ) {
340+ Ardublockly . setSerialPortsHtml (
341+ ArdublocklyServer . jsonToHtmlDropdown ( jsonObj ) ) ;
342+ } ) ;
343+ ArdublocklyServer . requestIdeOptions ( function ( jsonObj ) {
344+ Ardublockly . setIdeHtml ( ArdublocklyServer . jsonToHtmlDropdown ( jsonObj ) ) ;
345+ } ) ;
334346 // Language menu only set on page load within Ardublockly.initLanguage()
335347 Ardublockly . openSettingsModal ( ) ;
336348} ;
@@ -340,11 +352,11 @@ Ardublockly.openSettings = function() {
340352 * @param {element } jsonResponse JSON data coming back from the server.
341353 * @return {undefined } Might exit early if response is null.
342354 */
343- Ardublockly . setCompilerLocationHtml = function ( jsonResponse ) {
344- if ( jsonResponse === null ) return Ardublockly . openNotConnectedModal ( ) ;
345- var newEl = ArdublocklyServer . createElementFromJson ( jsonResponse ) ;
355+ Ardublockly . setCompilerLocationHtml = function ( newEl ) {
356+ if ( newEl === null ) return Ardublockly . openNotConnectedModal ( ) ;
357+
346358 var compLocIp = document . getElementById ( 'settings_compiler_location' ) ;
347- if ( compLocIp != null ) {
359+ if ( compLocIp != null && newEl . value ) {
348360 compLocIp . value = newEl . value ;
349361 }
350362} ;
@@ -354,9 +366,9 @@ Ardublockly.setCompilerLocationHtml = function(jsonResponse) {
354366 * @param {element } jsonResponse JSON data coming back from the server.
355367 * @return {undefined } Might exit early if response is null.
356368 */
357- Ardublockly . setSketchLocationHtml = function ( jsonResponse ) {
358- if ( jsonResponse === null ) return Ardublockly . openNotConnectedModal ( ) ;
359- var newEl = ArdublocklyServer . createElementFromJson ( jsonResponse ) ;
369+ Ardublockly . setSketchLocationHtml = function ( newEl ) {
370+ if ( newEl === null ) return Ardublockly . openNotConnectedModal ( ) ;
371+
360372 var sketchLocIp = document . getElementById ( 'settings_sketch_location' ) ;
361373 if ( sketchLocIp != null ) {
362374 sketchLocIp . value = newEl . value ;
@@ -366,12 +378,12 @@ Ardublockly.setSketchLocationHtml = function(jsonResponse) {
366378/**
367379 * Replaces the Arduino Boards form data with a new HTMl element.
368380 * Ensures there is a change listener to call 'setSerialPort' function
369- * @param {element } jsonResponse JSON data coming back from the server.
381+ * @param {element } jsonObj JSON data coming back from the server.
370382 * @return {undefined } Might exit early if response is null.
371383 */
372- Ardublockly . setArduinoBoardsHtml = function ( jsonResponse ) {
373- if ( jsonResponse === null ) return Ardublockly . openNotConnectedModal ( ) ;
374- var newEl = ArdublocklyServer . createElementFromJson ( jsonResponse ) ;
384+ Ardublockly . setArduinoBoardsHtml = function ( newEl ) {
385+ if ( newEl === null ) return Ardublockly . openNotConnectedModal ( ) ;
386+
375387 var boardDropdown = document . getElementById ( 'board' ) ;
376388 if ( boardDropdown !== null ) {
377389 // Restarting the select elements built by materialize
@@ -391,9 +403,10 @@ Ardublockly.setArduinoBoardsHtml = function(jsonResponse) {
391403Ardublockly . setBoard = function ( ) {
392404 var el = document . getElementById ( 'board' ) ;
393405 var boardValue = el . options [ el . selectedIndex ] . value ;
394- //TODO: Check how ArdublocklyServer deals with invalid data and sanitise
395- ArdublocklyServer . setArduinoBoard (
396- boardValue , Ardublockly . setArduinoBoardsHtml ) ;
406+ ArdublocklyServer . setArduinoBoard ( boardValue , function ( jsonObj ) {
407+ var newEl = ArdublocklyServer . jsonToHtmlDropdown ( jsonObj ) ;
408+ Ardublockly . setArduinoBoardsHtml ( newEl ) ;
409+ } ) ;
397410 Ardublockly . changeBlocklyArduinoBoard (
398411 boardValue . toLowerCase ( ) . replace ( / / g, '_' ) ) ;
399412} ;
@@ -404,9 +417,9 @@ Ardublockly.setBoard = function() {
404417 * @param {element } jsonResponse JSON data coming back from the server.
405418 * @return {undefined } Might exit early if response is null.
406419 */
407- Ardublockly . setSerialPortsHtml = function ( jsonResponse ) {
408- if ( jsonResponse === null ) return Ardublockly . openNotConnectedModal ( ) ;
409- var newEl = ArdublocklyServer . createElementFromJson ( jsonResponse ) ;
420+ Ardublockly . setSerialPortsHtml = function ( newEl ) {
421+ if ( newEl === null ) return Ardublockly . openNotConnectedModal ( ) ;
422+
410423 var serialDropdown = document . getElementById ( 'serial_port' ) ;
411424 if ( serialDropdown !== null ) {
412425 // Restarting the select elements built by materialize
@@ -424,9 +437,10 @@ Ardublockly.setSerialPortsHtml = function(jsonResponse) {
424437Ardublockly . setSerial = function ( ) {
425438 var el = document . getElementById ( 'serial_port' ) ;
426439 var serialValue = el . options [ el . selectedIndex ] . value ;
427- //TODO: check how ArdublocklyServer deals with invalid data and sanitise
428- ArdublocklyServer . setSerialPort (
429- serialValue , Ardublockly . setSerialPortsHtml ) ;
440+ ArdublocklyServer . setSerialPort ( serialValue , function ( jsonObj ) {
441+ var newEl = ArdublocklyServer . jsonToHtmlDropdown ( jsonObj ) ;
442+ Ardublockly . setSerialPortsHtml ( newEl ) ;
443+ } ) ;
430444} ;
431445
432446/**
@@ -435,9 +449,9 @@ Ardublockly.setSerial = function() {
435449 * @param {element } jsonResponse JSON data coming back from the server.
436450 * @return {undefined } Might exit early if response is null.
437451 */
438- Ardublockly . setIdeHtml = function ( jsonResponse ) {
439- if ( jsonResponse === null ) return Ardublockly . openNotConnectedModal ( ) ;
440- var newEl = ArdublocklyServer . createElementFromJson ( jsonResponse ) ;
452+ Ardublockly . setIdeHtml = function ( newEl ) {
453+ if ( newEl === null ) return Ardublockly . openNotConnectedModal ( ) ;
454+
441455 var ideDropdown = document . getElementById ( 'ide_settings' ) ;
442456 if ( ideDropdown !== null ) {
443457 // Restarting the select elements built by materialize
@@ -466,8 +480,9 @@ Ardublockly.setIdeSettings = function(e, preset) {
466480 var ideValue = el . options [ el . selectedIndex ] . value ;
467481 }
468482 Ardublockly . changeIdeButtons ( ideValue ) ;
469- //TODO: check how ArdublocklyServer deals with invalid data and sanitise here
470- ArdublocklyServer . setIdeOptions ( ideValue , Ardublockly . setIdeHtml ) ;
483+ ArdublocklyServer . setIdeOptions ( ideValue , function ( jsonObj ) {
484+ Ardublockly . setIdeHtml ( ArdublocklyServer . jsonToHtmlDropdown ( jsonObj ) ) ;
485+ } ) ;
471486} ;
472487
473488/**
@@ -483,10 +498,10 @@ Ardublockly.sendCode = function() {
483498 * @param {element } jsonResponse JSON data coming back from the server.
484499 * @return {undefined } Might exit early if response is null.
485500 */
486- var sendCodeReturn = function ( jsonResponse ) {
501+ var sendCodeReturn = function ( jsonObj ) {
487502 Ardublockly . largeIdeButtonSpinner ( false ) ;
488- if ( jsonResponse === null ) return Ardublockly . openNotConnectedModal ( ) ;
489- var dataBack = ArdublocklyServer . createElementFromJson ( jsonResponse ) ;
503+ if ( jsonObj === null ) return Ardublockly . openNotConnectedModal ( ) ;
504+ var dataBack = ArdublocklyServer . jsonToIdeModal ( jsonObj ) ;
490505 Ardublockly . arduinoIdeOutput ( dataBack ) ;
491506 } ;
492507
@@ -642,7 +657,7 @@ Ardublockly.importExtraBlocks = function() {
642657 } ;
643658 // Reads the JSON data containing all block categories from ./blocks directory
644659 // TODO: Now reading a local file, to be replaced by server generated JSON
645- Ardublockly . getJsonData ( '../blocks/blocks_data.json' , jsonDataCb ) ;
660+ ArdublocklyServer . getJson ( '../blocks/blocks_data.json' , jsonDataCb ) ;
646661} ;
647662
648663/** Opens a modal with a list of categories to add or remove to the toolbox */
@@ -678,7 +693,7 @@ Ardublockly.openExtraCategoriesSelect = function() {
678693 } ;
679694 // Reads the JSON data containing all block categories from ./blocks directory
680695 // TODO: Now reading a local file, to be replaced by server generated JSON
681- Ardublockly . getJsonData ( '../blocks/blocks_data.json' , jsonDataCb ) ;
696+ ArdublocklyServer . getJson ( '../blocks/blocks_data.json' , jsonDataCb ) ;
682697} ;
683698
684699/** Informs the user that the selected function is not yet implemented. */
0 commit comments