'use strict'; goog.provide('Blockly.JavaScript.webduino.tutorials'); goog.require('Blockly.JavaScript'); /* ooooo oooooooooooo oooooooooo. `888' `888' `8 `888' `Y8b 888 888 888 888 888 888oooo8 888 888 888 888 " 888 888 888 o 888 o 888 d88' o888ooooood8 o888ooooood8 o888bood8P' */ Blockly.JavaScript['light'] = function (block) { var dropdown_status = block.getFieldValue('status'); var code = 'document.getElementById("light").setAttribute("class","' + dropdown_status + '");\n'; return code; }; Blockly.JavaScript['light_click'] = function (block) { var statements_click = Blockly.JavaScript.statementToCode(block, 'click'); var code = 'document.getElementById("light").addEventListener("click",function(){\n' + statements_click + '\n});\n'; return code; }; Blockly.JavaScript['light_check'] = function (block) { var dropdown_status = block.getFieldValue('status'); var code = 'document.getElementById("light").getAttribute("class")=="' + dropdown_status + '"'; return [code, Blockly.JavaScript.ORDER_NONE]; }; Blockly.JavaScript['two_led_light'] = function (block) { var dropdown_name = block.getFieldValue('NAME'); var dropdown_status = block.getFieldValue('status'); var code = 'document.getElementById("' + dropdown_name + '").setAttribute("class","' + dropdown_status + '");\n'; return code; }; Blockly.JavaScript['two_led_light_click'] = function (block) { var dropdown_name = block.getFieldValue('NAME'); var statements_name = Blockly.JavaScript.statementToCode(block, 'NAME'); var code = 'document.getElementById("' + dropdown_name + '").addEventListener("click",function(){\n' + statements_name + '\n});\n'; return code; }; Blockly.JavaScript['two_led_light_check'] = function (block) { var dropdown_name = block.getFieldValue('NAME'); var dropdown_check = block.getFieldValue('check'); var code = 'document.getElementById("' + dropdown_name + '").getAttribute("class")=="' + dropdown_check + '"'; return [code, Blockly.JavaScript.ORDER_NONE]; }; Blockly.JavaScript['two_led_start_blinking'] = function (block) { var value_time = Blockly.JavaScript.valueToCode(block, 'time', Blockly.JavaScript.ORDER_ATOMIC); var statements_status1 = Blockly.JavaScript.statementToCode(block, 'status1'); var statements_status2 = Blockly.JavaScript.statementToCode(block, 'status2'); var blinkVar = Blockly.JavaScript.variableDB_.getDistinctName( 'blinkVar', Blockly.Variables.NAME_TYPE); var blinkTimer = Blockly.JavaScript.variableDB_.getDistinctName( 'blinkTimer', Blockly.Variables.NAME_TYPE); var blinkFunction = Blockly.JavaScript.variableDB_.getDistinctName( 'blinkFunction', Blockly.Variables.NAME_TYPE); var code = 'var ' + blinkVar + '=1;\n' + 'var ' + blinkTimer + ';\n' + 'var ' + blinkFunction + '=function(){\n' + ' ' + blinkVar + '=' + blinkVar + '+1;\n' + ' if(' + blinkVar + '%2==0){\n' + statements_status1 + ' \n}else{\n' + statements_status2 + ' }\n' + ' ' + blinkTimer + ' = setTimeout(' + blinkFunction + ',' + value_time + ');\n' + '}\n' + blinkFunction + '();\n'; return code; }; Blockly.JavaScript['two_led_start_blinking'] = function (block) { var value_timer = Blockly.JavaScript.valueToCode(block, 'timer', Blockly.JavaScript.ORDER_ATOMIC); var value_time = Blockly.JavaScript.valueToCode(block, 'time', Blockly.JavaScript.ORDER_ATOMIC); var statements_status1 = Blockly.JavaScript.statementToCode(block, 'status1'); var statements_status2 = Blockly.JavaScript.statementToCode(block, 'status2'); var blinkVar = Blockly.JavaScript.variableDB_.getDistinctName( 'blinkVar', Blockly.Variables.NAME_TYPE); var blinkFunction = Blockly.JavaScript.variableDB_.getDistinctName( 'blinkFunction', Blockly.Variables.NAME_TYPE); var code = 'var ' + blinkVar + '=1;\n' + 'var ' + blinkFunction + '=function(){\n' + ' ' + blinkVar + '=' + blinkVar + '+1;\n' + ' if(' + blinkVar + '%2==0){\n' + statements_status1 + ' \n}else{\n' + statements_status2 + ' }\n' + ' ' + value_timer + ' = setTimeout(' + blinkFunction + ',' + value_time + ');\n' + '};\n' + blinkFunction + '();\n'; return code; }; Blockly.JavaScript['stop_clock'] = function (block) { var value_timer = Blockly.JavaScript.valueToCode(block, 'timer', Blockly.JavaScript.ORDER_ATOMIC); var code = 'clearTimeout(' + value_timer + ');\n'; return code; }; /* ooooooooo. .oooooo. oooooooooo. `888 `Y88. d8P' `Y8b `888' `Y8b 888 .d88' 888 888 888 888ooo88P' 888 888oooo888' 888`88b. 888 ooooo 888 `88b 888 `88b. `88. .88' 888 .88P o888o o888o `Y8bood8P' o888bood8P' */ Blockly.JavaScript['rgb_led_area_color'] = function (block) { var value_color = Blockly.JavaScript.valueToCode(block, 'color', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("show").style.background = ' + value_color + ';\n'; return code; }; Blockly.JavaScript['rgb_led_btn_click'] = function (block) { var dropdown_btn = block.getFieldValue('btn'); var statements_do = Blockly.JavaScript.statementToCode(block, 'do'); var code = 'document.getElementById("' + dropdown_btn + '").addEventListener("click",function(){\n' + statements_do + '\n});\n'; return code; }; Blockly.JavaScript['rgb_led_range'] = function (block) { var statements_do = Blockly.JavaScript.statementToCode(block, 'do'); var varChangeColor = Blockly.JavaScript.variableDB_.getDistinctName( 'changeColor', Blockly.Variables.NAME_TYPE); var code = 'var ' + varChangeColor + ' = function(){\n' + ' var color,r="00",g="00",b="00";\n' + ' var cc = function(e){\n' + ' var id=e.target.id;\n' + ' if(id=="redRange"){r=e.target.value*1; if(r<17){r="0"+r.toString(16);}else{r=r.toString(16);}}\n' + ' if(id=="greenRange"){g=e.target.value*1; if(g<17){g="0"+g.toString(16);}else{g=g.toString(16);}}\n' + ' if(id=="blueRange"){b=e.target.value*1; if(b<17){b="0"+b.toString(16);}else{b=b.toString(16);}}\n' + ' color="#"+r+g+b;\n' + ' ' + statements_do + ' };\n' + ' document.getElementById("redRange").addEventListener("change",cc);\n' + ' document.getElementById("greenRange").addEventListener("change",cc);\n' + ' document.getElementById("blueRange").addEventListener("change",cc);\n' + '};\n' + varChangeColor + '();\n'; return code; }; Blockly.JavaScript['rgb_led_current_color'] = function (block) { var code = 'color'; return [code, Blockly.JavaScript.ORDER_ATOMIC]; }; Blockly.JavaScript['rgb_led_start_dancing'] = function (block) { var value_timer = Blockly.JavaScript.valueToCode(block, 'timer', Blockly.JavaScript.ORDER_ATOMIC); var value_time = Blockly.JavaScript.valueToCode(block, 'time', Blockly.JavaScript.ORDER_ATOMIC); var statements_status = Blockly.JavaScript.statementToCode(block, 'status'); var varDancing = Blockly.JavaScript.variableDB_.getDistinctName( 'dancing', Blockly.Variables.NAME_TYPE); var content; if (!statements_status) { content = ''; } else { content = 'repeat();\n' + 'function repeat(){\n' + ' delay(1)' + statements_status + '.then(function(){\n' + ' repeat();\n });\n }\n'; } var code = 'var ' + varDancing + ' = function(){\n' + ' var time = ' + value_time + ';\n' + ' function delay(time){\n' + ' return new Promise(function(resolve) {\n' + ' ' + value_timer + ' = setTimeout(resolve, time);\n' + ' });\n' + ' }\n' + ' \n' + ' ' + content + '};\n' + varDancing + '();\n'; return code; }; Blockly.JavaScript['rgb_led_dancing_status'] = function (block) { var statements_status = Blockly.JavaScript.statementToCode(block, 'status'); var code = '.then(function(){\n ' + statements_status + ' return delay(time);\n })'; return code; }; /* ooooo ooo ooooo ooooooooooooo ooooooooo. .o. `888' `8' `888' 8' 888 `8 `888 `Y88. .888. 888 8 888 888 888 .d88' .8"888. 888 8 888 888 888ooo88P' .8' `888. 888 8 888 888 888`88b. .88ooo8888. `88. .8' 888 o 888 888 `88b. .8' `888. `YbodP' o888ooooood8 o888o o888o o888o o88o o8888o */ Blockly.JavaScript['ultrasonic_set_number'] = function (block) { var value_number = Blockly.JavaScript.valueToCode(block, 'number', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("show").innerHTML = ' + value_number + ';\n'; return code; }; Blockly.JavaScript['ultrasonic_change_image_size'] = function (block) { var value_size = Blockly.JavaScript.valueToCode(block, 'size', Blockly.JavaScript.ORDER_ATOMIC); if (!value_size) { value_size = 100; } var code = 'document.getElementById("image").style.width = ' + value_size + '+"px";\n'; return code; }; Blockly.JavaScript['ultrasonic_change_image_url'] = function (block) { var value_url = Blockly.JavaScript.valueToCode(block, 'url', Blockly.JavaScript.ORDER_ATOMIC); if (value_url == '\'\'' || !value_url) { value_url = '"/media/tutorials/tutorial-05-01s.jpg"'; } var code = 'document.getElementById("image").setAttribute("src",' + value_url + ');\n'; return code; }; Blockly.JavaScript['ultrasonic_change_music_volume'] = function (block) { var value_volume = Blockly.JavaScript.valueToCode(block, 'volume', Blockly.JavaScript.ORDER_ATOMIC); var varMusicVolume = Blockly.JavaScript.variableDB_.getDistinctName( 'musicVolume', Blockly.Variables.NAME_TYPE); var varMusicVolumeBar = Blockly.JavaScript.variableDB_.getDistinctName( 'musicVolumeBar', Blockly.Variables.NAME_TYPE); var code = 'var ' + varMusicVolume + ' = ' + value_volume + '/100;\n' + 'var ' + varMusicVolumeBar + ' = ' + value_volume + ';\n' + 'if(' + varMusicVolume + '>=1){' + varMusicVolume + '=1;}\n' + 'if(' + varMusicVolumeBar + '>=255){' + varMusicVolumeBar + '=255;}\n' + 'document.getElementById("music").volume=' + varMusicVolume + ';\n' + 'document.getElementById("volume").style.width = (10+' + varMusicVolumeBar + ')+"px";\n' + 'document.getElementById("volume").style.background = "rgba("+' + varMusicVolumeBar + '+","+(255-' + varMusicVolumeBar + ')+",0,1)";\n'; return code; }; Blockly.JavaScript['ultrasonic_change_music_play'] = function (block) { var dropdown_play = block.getFieldValue('play'); var value_play = Blockly.JavaScript.valueToCode(block, 'play', Blockly.JavaScript.ORDER_ATOMIC); var code; if (dropdown_play == 'play') { code = 'document.getElementById("music").play();\n'; } if (dropdown_play == 'pause') { code = 'document.getElementById("music").pause();\n'; } if (dropdown_play == 'stop') { code = 'document.getElementById("music").pause();\n' + 'document.getElementById("music").currentTime = 0;\n'; } return code; }; Blockly.JavaScript['ultrasonic_change_add_music'] = function (block) { var value_music = Blockly.JavaScript.valueToCode(block, 'music', Blockly.JavaScript.ORDER_ATOMIC); if (value_music == '\'\'' || !value_music) { value_music = '\'https://webduinoio.github.io/event20150408/demo/minions/music.mp3\''; } var code = 'document.getElementById("music").innerHTML = "";\n'; return code; }; /* oooooo oooo . .o8 `888. .8' .o8 "888 `888. .8' .ooooo. oooo oooo .o888oo oooo oooo 888oooo. .ooooo. `888.8' d88' `88b `888 `888 888 `888 `888 d88' `88b d88' `88b `888' 888 888 888 888 888 888 888 888 888 888ooo888 888 888 888 888 888 888 . 888 888 888 888 888 .o o888o `Y8bod8P' `V88V"V8P' "888" `V88V"V8P' `Y8bod8P' `Y8bod8P' */ Blockly.JavaScript['tutorial_youtube'] = function (block) { var value_name_ = Blockly.JavaScript.valueToCode(block, 'name_', Blockly.JavaScript.ORDER_ATOMIC); var text_id_ = block.getFieldValue('id_'); var code = 'await new Promise(function (resolve) {\n' + ' var tag = document.createElement("script");\n' + ' tag.src = "https://www.youtube.com/iframe_api";\n' + ' var scptTag = document.getElementsByTagName("script")[0];\n' + ' scptTag.parentNode.insertBefore(tag, scptTag);\n' + ' window.onYouTubeIframeAPIReady = function () {\n' + ' ' + value_name_ + ' = new YT.Player("player", {\n' + ' height: "240",\n' + ' width: "96%",\n' + ' videoId: "' + text_id_ + '",\n' + ' playerVars: {\n' + ' autoplay: 1,\n' + ' controls: 1\n' + ' },\n' + ' events: {\n' + ' onReady: function (evt) {\n' + ' resolve();\n' + ' }\n' + ' }\n' + ' });\n' + ' };\n' + '});\n'; return code; }; Blockly.JavaScript['tutorial_youtube_volume'] = function (block) { var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE); var value_volume_ = Blockly.JavaScript.valueToCode(block, 'volume_', Blockly.JavaScript.ORDER_ATOMIC); var varA = Blockly.JavaScript.variableDB_.getDistinctName( 'varA', Blockly.Variables.NAME_TYPE); var code = 'var ' + varA + ' = ' + value_volume_ + ';\n' + 'if (' + varA + ' >= 100) {\n' + ' ' + varA + ' = 100;\n' + '}\n' + variable_name_ + '.setVolume(' + varA + ');\n'; return code; }; Blockly.JavaScript['tutorial_youtube_speed'] = function (block) { var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE); var dropdown_speed_ = block.getFieldValue('speed_'); var code = variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n'; return code; }; Blockly.JavaScript['tutorial_youtube_control'] = function (block) { var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE); var dropdown_status_ = block.getFieldValue('status_'); var code; if (dropdown_status_ == '1') { code = variable_name_ + '.playVideo();\n'; } else if (dropdown_status_ == '2') { code = variable_name_ + '.pauseVideo();\n'; } else if (dropdown_status_ == '0') { code = variable_name_ + '.seekTo(0);\n' + variable_name_ + '.stopVideo();\n'; } return code; }; Blockly.JavaScript['tutorial_youtube_status'] = function (block) { var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE); var dropdown_status_ = block.getFieldValue('status_'); var code = variable_name_ + '.getPlayerState()==' + dropdown_status_; return [code, Blockly.JavaScript.ORDER_NONE]; }; Blockly.JavaScript['tutorial_youtube_id'] = function(block) { var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE); var value_id_ = Blockly.JavaScript.valueToCode(block, 'id_', Blockly.JavaScript.ORDER_ATOMIC); var code = variable_name_+'.loadVideoById('+value_id_+');\n'; return code; }; /* oooooooooo. ooooo ooo ooooooooooooo ooooooooooooo .oooooo. ooooo ooo `888' `Y8b `888' `8' 8' 888 `8 8' 888 `8 d8P' `Y8b `888b. `8' 888 888 888 8 888 888 888 888 8 `88b. 8 888oooo888' 888 8 888 888 888 888 8 `88b. 8 888 `88b 888 8 888 888 888 888 8 `88b.8 888 .88P `88. .8' 888 888 `88b d88' 8 `888 o888bood8P' `YbodP' o888o o888o `Y8bood8P' o8o `8 */ Blockly.JavaScript['show_text'] = function (block) { var value_show_ = Blockly.JavaScript.valueToCode(block, 'show_', Blockly.JavaScript.ORDER_ATOMIC); var a = value_show_.split(''); value_show_ = a.splice(1, (a.length - 2)).join(''); var code = 'document.getElementById("show").innerHTML = "' + value_show_ + '";\n'; return code; }; Blockly.JavaScript['show_calculate_numbers'] = function (block) { var dropdown_calculate_ = block.getFieldValue('calculate_'); var value_show_calculate_numbers = Blockly.JavaScript.valueToCode(block, 'show_calculate_numbers', Blockly.JavaScript.ORDER_ATOMIC); if (dropdown_calculate_ == 'plus') { dropdown_calculate_ = '+'; } if (dropdown_calculate_ == 'minus') { dropdown_calculate_ = '-'; } if (dropdown_calculate_ == 'times') { dropdown_calculate_ = '*'; } if (dropdown_calculate_ == 'divided') { dropdown_calculate_ = '/'; } var varString = Blockly.JavaScript.variableDB_.getDistinctName( 'varString', Blockly.Variables.NAME_TYPE); var varNumber = Blockly.JavaScript.variableDB_.getDistinctName( 'varNumber', Blockly.Variables.NAME_TYPE); var code = 'var ' + varString + ' = document.getElementById("show").innerHTML;\n' + 'var ' + varNumber + ' = ' + varString + '*1;\n' + varNumber + ' = ' + varNumber + dropdown_calculate_ + value_show_calculate_numbers + ';\n' + 'document.getElementById("show").innerHTML = ' + varNumber + ';\n'; return code; }; Blockly.JavaScript['show_set_numbers'] = function (block) { var value_numbers_ = Blockly.JavaScript.valueToCode(block, 'numbers_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("show").innerHTML = ' + value_numbers_ + ';\n'; return code; }; Blockly.JavaScript['button_change_image_position'] = function (block) { var dropdown_pos_ = block.getFieldValue('pos_'); var value_image_pos_ = Blockly.JavaScript.valueToCode(block, 'image_pos_', Blockly.JavaScript.ORDER_ATOMIC); var code; if (dropdown_pos_ == 'u') { code = 'if(!window.varImageUD){window.varImageUD = 0;}\n' + 'if(!window.varImageUp){window.varImageUp = 0;}\n' + 'if(!window.varImageDown){window.varImageDown = 0;}\n' + 'window.varImageUp = ' + value_image_pos_ + ';\n' + 'window.varImageUD = window.varImageUD + (window.varImageDown - window.varImageUp);\n' + 'document.getElementById("image").style.marginTop = varImageUD+"px";\n' + 'console.log(window.varImageUD);\n'; } if (dropdown_pos_ == 'd') { code = 'if(!window.varImageUD){window.varImageUD = 0;}\n' + 'if(!window.varImageUp){window.varImageUp = 0;}\n' + 'if(!window.varImageDown){window.varImageDown = 0;}\n' + 'window.varImageDown = ' + value_image_pos_ + ';\n' + 'window.varImageUD = window.varImageUD + (window.varImageDown - window.varImageUp);\n' + 'document.getElementById("image").style.marginTop = varImageUD+"px";\n' + 'console.log(window.varImageUD);\n'; } if (dropdown_pos_ == 'l') { code = 'if(!window.varImageLR){window.varImageLR = 0;}\n' + 'if(!window.varImageLeft){window.varImageLeft = 0;}\n' + 'if(!window.varImageRight){window.varImageRight = 0;}\n' + 'window.varImageLeft = ' + value_image_pos_ + ';\n' + 'window.varImageLR = window.varImageLR + (window.varImageRight - window.varImageLeft);\n' + 'document.getElementById("image").style.marginLeft = varImageLR+"px";\n' + 'console.log(window.varImageLR);\n'; } if (dropdown_pos_ == 'r') { code = 'if(!window.varImageLR){window.varImageLR = 0;}\n' + 'if(!window.varImageLeft){window.varImageLeft = 0;}\n' + 'if(!window.varImageRight){window.varImageRight = 0;}\n' + 'window.varImageRight = ' + value_image_pos_ + ';\n' + 'window.varImageLR = window.varImageLR + (window.varImageRight - window.varImageLeft);\n' + 'document.getElementById("image").style.marginLeft = varImageLR+"px";\n' + 'console.log(window.varImageLR);\n'; } return code; }; Blockly.JavaScript['button_reset_image_position'] = function (block) { var code = 'document.getElementById("image").style.margin = "0 0 0 0";\n' + 'window.varImageUD=0;\n' + 'window.varImageLR=0;\n'; return code; }; Blockly.JavaScript['button_game'] = function (block) { var dropdown_npc_ = block.getFieldValue('npc_'); var dropdown_level_ = block.getFieldValue('level_'); var dropdown_distance_ = block.getFieldValue('distance_'); var dropdown_user_ = block.getFieldValue('user_'); var variable_button_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('button_'), Blockly.Variables.NAME_TYPE); var statements_event_ = Blockly.JavaScript.statementToCode(block, 'event_'); var code = 'var btnGameNpcShow_ = document.getElementById("npcshow"),\n' + ' btnGameUserShow_ = document.getElementById("usershow"),\n' + ' btnGameNpc_ = document.getElementById("npc"),\n' + ' btnGameUser_ = document.getElementById("user"),\n' + ' btnGameNpcImg_ = document.getElementById("npcimg"),\n' + ' btnGameUserImg_ = document.getElementById("userimg"),\n' + ' btnGameGoal_ = document.getElementById("goal"),\n' + ' btnGameStart_ = document.getElementById("start"),\n' + ' btnGameTimer_,\n' + ' btnGameA_ = 0,\n' + ' btnGameB_ = 0,\n' + ' btnGameDistance_ = ' + dropdown_distance_ + ',\n' + ' btnGameNpcSpeed_ = ' + dropdown_level_ + ',\n' + ' btnGameUserSpeed_;\n' + ' \n' + 'btnGameStart_.className = "";\n' + 'btnGameNpcImg_.setAttribute("src","http://webduinoio.github.io/webduino-blockly/media/tutorials/' + dropdown_npc_ + '");\n' + 'btnGameUserImg_.setAttribute("src","http://webduinoio.github.io/webduino-blockly/media/tutorials/' + dropdown_user_ + '");\n' + 'btnGameGoal_.innerHTML = btnGameDistance_;\n' + 'btnGameStart_.addEventListener("click",go);\n' + ' \n' + 'function go(){\n' + ' btnGameStart_.className = "go";\n' + ' btnGameA_ = 0;\n' + ' btnGameB_ = 0;\n' + ' ' + statements_event_ + ' btnGameTimer_ = setInterval(function(){\n' + ' btnGameB_ = btnGameB_ + btnGameNpcSpeed_;\n' + ' btnGameNpcShow_.innerHTML = btnGameB_;\n' + ' btnGameNpc_.style.marginLeft = btnGameB_+"px";\n' + ' if(btnGameB_>=btnGameDistance_){\n' + ' alert("GAME OVER!!!! YOU LOSE!!!!!");\n' + ' stop();\n' + ' }\n' + ' },120);\n' + ' \n' + ' function stop(){\n' + ' clearInterval(btnGameTimer_);\n' + ' btnGameA_ = 0;\n' + ' btnGameB_ = 0;\n' + ' btnGameNpcShow_.innerHTML = 0;\n' + ' btnGameUserShow_.innerHTML = 0;\n' + ' btnGameNpc_.style.marginLeft = 0;\n' + ' btnGameUser_.style.marginLeft = 0;\n' + ' btnGameStart_.className = "";\n' + ' ' + variable_button_ + '.removeAllListeners("pressed");\n' + ' ' + variable_button_ + '.removeAllListeners("repressed");\n' + ' ' + variable_button_ + '.removeAllListeners("longPress");\n' + ' }\n' + '}\n'; return code; }; Blockly.JavaScript['button_game_user'] = function (block) { var dropdown_user_ = block.getFieldValue('user_'); var code = ' btnGameA_ = btnGameA_ + ' + dropdown_user_ + ';\n' + ' btnGameUserShow_.innerHTML = btnGameA_;\n' + ' btnGameUser_.style.marginLeft = btnGameA_+"px";\n' + ' if(btnGameA_>=btnGameDistance_){\n' + ' alert("YOU WIN!!!!!");\n' + ' stop();\n' + ' }\n'; return code; }; /* oooooooooo. ooooo ooooo ooooooooooooo `888' `Y8b `888' `888' 8' 888 `8 888 888 888 888 888 888 888 888ooooo888 888 888 888 888 888 888 888 d88' 888 888 888 o888bood8P' o888o o888o o888o */ Blockly.JavaScript['tutorial_dht_show'] = function (block) { var dropdown_dht_ = block.getFieldValue('dht_'); var value_show = Blockly.JavaScript.valueToCode(block, 'show', Blockly.JavaScript.ORDER_ATOMIC); var code; if (dropdown_dht_ == "t") { code = 'document.getElementById("temperature").innerHTML = ' + value_show + ';\n' } if (dropdown_dht_ == "h") { code = 'document.getElementById("humidity").innerHTML = ' + value_show + ';\n' } return code; }; Blockly.JavaScript['tutorial_dht_areachart'] = function (block) { var value_name_ = Blockly.JavaScript.valueToCode(block, 'name_', Blockly.JavaScript.ORDER_ATOMIC); var value_color_t_ = Blockly.JavaScript.valueToCode(block, 'color_t_', Blockly.JavaScript.ORDER_ATOMIC); var value_color_h_ = Blockly.JavaScript.valueToCode(block, 'color_h_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'var ' + value_name_ + ' = {};\n' + value_name_ + '.areachart = false;\n' + value_name_ + '.origin = [\n' + ' ["Time", "temperature", "humidity"]\n' + '];\n' + 'google.load("visualization", "1", {\n' + ' packages: ["corechart"],\n' + ' callback: function() {\n' + ' ' + value_name_ + '.areachart = true;\n' + ' }\n' + '});\n' + 'function drawAreaChart(d) {\n' + ' if (!Array.isArray(d)) {\n' + ' return;\n' + ' }\n' + ' var data = google.visualization.arrayToDataTable(d);\n' + ' var options = {\n' + ' title: "",\n' + ' hAxis: {title: "",titleTextStyle: {color: "#333"}},\n' + ' vAxis: {minValue: 0},\n' + ' chartArea: {top: 50,left: 50,width: "70%",height: "70%"},\n' + ' colors: [' + value_color_t_ + ', ' + value_color_h_ + ']\n' + ' };\n' + ' var code = new google.visualization.AreaChart(document.getElementById("chart_div"));\n' + ' return code.draw(data, options);\n' + '}\n'; return code; }; Blockly.JavaScript['tutorial_dht_gauge'] = function (block) { var value_name_ = Blockly.JavaScript.valueToCode(block, 'name_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'var ' + value_name_ + ' = {};\n' + value_name_ + '.guage = false;\n' + value_name_ + '.origin1 = [\n' + ' ["Label", "Value"],["humidity", 55]\n' + '];\n' + value_name_ + '.origin2 = [\n' + ' ["Label", "Value"],["temperature", 30]\n' + '];\n' + 'google.load("visualization", "1", {\n' + ' packages: ["gauge"],\n' + ' callback: function() {\n' + ' ' + value_name_ + '.gauge = true;\n' + ' }\n' + '});\n' + 'function drawGuage(d1,d2) {\n' + ' if (!Array.isArray(d1)||!Array.isArray(d2)) {\n' + ' return;\n' + ' }\n' + ' var data1 = google.visualization.arrayToDataTable(d1);\n' + ' var data2 = google.visualization.arrayToDataTable(d2);\n' + ' var options1 = {\n' + ' width: 400, height: 120,\n' + ' redFrom: 90, redTo: 100,\n' + ' yellowFrom:75, yellowTo: 90,\n' + ' minorTicks: 5,\n' + ' redColor:"#00f", yellowColor:"#9cf",\n' + ' animation:{easing:"in"}\n' + ' };\n' + ' var options2 = {\n' + ' width: 400, height: 120,\n' + ' redFrom: 90, redTo: 100,\n' + ' yellowFrom:75, yellowTo: 90,\n' + ' minorTicks: 5,\n' + ' animation:{easing:"in"}\n' + ' };\n' + 'var chart1 = new google.visualization.Gauge(document.getElementById("chart_div1"));\n' + 'chart1.draw(data1, options1);\n' + 'var chart2 = new google.visualization.Gauge(document.getElementById("chart_div2"));\n' + 'chart2.draw(data2, options2);\n' + '}\n'; return code; }; Blockly.JavaScript['tutorial_dht_draw'] = function (block) { var variable_chart_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('chart_'), Blockly.Variables.NAME_TYPE); var value_t_ = Blockly.JavaScript.valueToCode(block, 't_', Blockly.JavaScript.ORDER_ATOMIC); var value_h_ = Blockly.JavaScript.valueToCode(block, 'h_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("temperature").innerHTML = ' + value_t_ + ';\n' + 'document.getElementById("humidity").innerHTML = ' + value_h_ + ';\n' + 'var time = new Date();\n' + 'var ts = time.getSeconds();\n' + 'var tm = time.getMinutes();\n' + 'var th = time.getHours();\n' + 'var a = [];\n' + 'if (' + variable_chart_ + '.areachart) {\n' + ' document.getElementById("chart_div").style.display="block";\n' + ' document.getElementById("chart_div1").style.display="none";\n' + ' document.getElementById("chart_div2").style.display="none";\n' + ' a[0] = th + ":" + tm + ":" + ts;\n' + ' a[1] = ' + value_t_ + ';\n' + ' a[2] = ' + value_h_ + ';\n' + ' ' + variable_chart_ + '.origin.push(a);\n' + ' drawAreaChart(' + variable_chart_ + '.origin);\n' + '}\n' + 'if (' + variable_chart_ + '.gauge) {\n' + ' document.getElementById("chart_div").style.display="none";\n' + ' document.getElementById("chart_div1").style.display="inline-block";\n' + ' document.getElementById("chart_div2").style.display="inline-block";\n' + ' ' + variable_chart_ + '.origin1 = [["Label", "Value"],["humidity", ' + value_h_ + ']];\n' + ' ' + variable_chart_ + '.origin2 = [["Label", "Value"],["temperature", ' + value_t_ + ']];\n' + ' drawGuage(' + variable_chart_ + '.origin1,' + variable_chart_ + '.origin2);\n' + '}\n'; return code; }; /* .oooooo..o oooooooooooo ooooooooo. oooooo oooo .oooooo. d8P' `Y8 `888' `8 `888 `Y88. `888. .8' d8P' `Y8b Y88bo. 888 888 .d88' `888. .8' 888 888 `"Y8888o. 888oooo8 888ooo88P' `888. .8' 888 888 `"Y88b 888 " 888`88b. `888.8' 888 888 oo .d8P 888 o 888 `88b. `888' `88b d88' 8""88888P' o888ooooood8 o888o o888o `8' `Y8bood8P' */ Blockly.JavaScript['tutorial_servo_button'] = function (block) { var dropdown_btn_ = block.getFieldValue('btn_'); var statements_do_ = Blockly.JavaScript.statementToCode(block, 'do_'); var code = 'document.getElementById("' + dropdown_btn_ + '").addEventListener("click",function(){\n' + statements_do_ + '\n' + '});\n'; return code; }; Blockly.JavaScript['tutorial_servo_button_set'] = function (block) { var angle_angle_ = block.getFieldValue('angle_'); if (angle_angle_ >= 180) { angle_angle_ = 180; } var code = 'document.getElementById("show").innerHTML = ' + angle_angle_ + ';\n'; return code; }; Blockly.JavaScript['tutorial_servo_calculate'] = function (block) { var dropdown_calculate_ = block.getFieldValue('calculate_'); var value_angle_ = Blockly.JavaScript.valueToCode(block, 'angle_', Blockly.JavaScript.ORDER_ATOMIC); var varAngle = Blockly.JavaScript.variableDB_.getDistinctName( 'varAngle', Blockly.Variables.NAME_TYPE); var a; if (dropdown_calculate_ == "plus") { a = " + "; } if (dropdown_calculate_ == "minus") { a = " - "; } var code = '(function(){\n' + ' var ' + varAngle + ' = document.getElementById("show").innerHTML;\n' + ' ' + varAngle + ' = ( ' + varAngle + '* 1 ) ' + a + value_angle_ + ';\n' + ' document.getElementById("show").innerHTML = ' + varAngle + ';\n' + ' return ' + varAngle + ';\n' + '})()'; return [code, Blockly.JavaScript.ORDER_ATOMIC]; }; /* oooooooooo. ooooo ooo oooooooooooo oooooooooooo oooooooooooo ooooooooo. `888' `Y8b `888' `8' d'""""""d888' d'""""""d888' `888' `8 `888 `Y88. 888 888 888 8 .888P .888P 888 888 .d88' 888oooo888' 888 8 d888' d888' 888oooo8 888ooo88P' 888 `88b 888 8 .888P .888P 888 " 888`88b. 888 .88P `88. .8' d888' .P d888' .P 888 o 888 `88b. o888bood8P' `YbodP' .8888888888P .8888888888P o888ooooood8 o888o o888o */ Blockly.JavaScript['tutorial_buzzer_1'] = function (block) { var value_var_ = Blockly.JavaScript.valueToCode(block, 'var_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("buzzerNotes").innerHTML = ' + value_var_ + '.notes;\n' + 'document.getElementById("buzzerTempos").innerHTML = ' + value_var_ + '.tempos;\n'; return code; }; Blockly.JavaScript['tutorial_buzzer_3'] = function (block) { var dropdown_btn_ = block.getFieldValue('btn_'); var statements_do_ = Blockly.JavaScript.statementToCode(block, 'do_'); var code = 'document.getElementById("' + dropdown_btn_ + '").addEventListener("click",function(){\n' + ' ' + statements_do_ + '\n' + '});\n'; return code; }; /* ooooooooo. oooo . oooo oooo `888 `Y88. `888 .o8 `888 `888 888 .d88' 888 .oo. .ooooo. .o888oo .ooooo. .ooooo. .ooooo. 888 888 888ooo88P' 888P"Y88b d88' `88b 888 d88' `88b d88' `"Y8 d88' `88b 888 888 888 888 888 888 888 888 888 888 888 888ooo888 888 888 888 888 888 888 888 888 . 888 888 888 .o8 888 .o 888 888 o888o o888o o888o `Y8bod8P' "888" `Y8bod8P' `Y8bod8P' `Y8bod8P' o888o o888o */ Blockly.JavaScript['photocell_show_number'] = function (block) { var value_number_ = Blockly.JavaScript.valueToCode(block, 'number_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("show").innerHTML = ' + value_number_ + ';\n'; return code; }; /* ooo ooooo .o. ooooooo ooooo ooooooooo .oooo. .o .ooooo. `88. .888' .888. `8888 d8' d"""""""8' .dP""Y88b o888 888' `Y88. 888b d'888 .8"888. Y888..8P .8' ]8P' 888 888 888 8 Y88. .P 888 .8' `888. `8888' .8' .d8P' 888 `Vbood888 8 `888' 888 .88ooo8888. .8PY888. .8' .dP' 888 888' 8 Y 888 .8' `888. d8' `888b .8' .oP .o 888 .88P' o8o o888o o88o o8888o o888o o88888o .8' 8888888888 o888o .oP' */ Blockly.JavaScript['tutorial_max7219_button'] = function (block) { var dropdown_btn_ = block.getFieldValue('btn_'); var statements_do_ = Blockly.JavaScript.statementToCode(block, 'do_'); var code = 'document.getElementById("' + dropdown_btn_ + '").addEventListener("click",function(){\n' + statements_do_ + '\n' + '});\n'; return code; }; /* .o8 oooo .oooo. .o oooooooo "888 `888 .dP""Y88b .d88 dP""""""" .oooo. .oooo888 oooo ooo 888 ]8P' .d'888 d88888b. `P )88b d88' `888 `88b..8P' 888 <88b. .d' 888 `Y88b .oP"888 888 888 Y888' 888 `88b. 88ooo888oo ]88 d8( 888 888 888 .o8"'88b 888 o. .88P 888 o. .88P `Y888""8o `Y8bod88P" o88' 888o o888o `8bd88P' o888o `8bd88P' */ Blockly.JavaScript['tutorial_adxl345_show'] = function (block) { var dropdown_value_ = block.getFieldValue('value_'); var value_show_ = Blockly.JavaScript.valueToCode(block, 'show_', Blockly.JavaScript.ORDER_ATOMIC); var code= 'document.getElementById("'+dropdown_value_+'").innerHTML = ' + value_show_ + ';\n'; return code; }; Blockly.JavaScript['adxl345_image_angle'] = function(block) { var value_angle_ = Blockly.JavaScript.valueToCode(block, 'angle_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("image").style.transform = "rotate("+'+value_angle_+'+"deg)";\n'; return code; }; /* o8o `"' oooo oooo d8b oooo d8b .ooooo. .ooooo. oooo ooo `888 `888""8P `888""8P d88' `88b d88' `"Y8 `88. .8' 888 888 888 888ooo888 888 `88..8' 888 888 888 888 .o 888 .o8 `888' o888o d888b d888b `Y8bod8P' `Y8bod8P' `8' */ Blockly.JavaScript['tutorial_irrecv_code'] = function (block) { var value_code_ = Blockly.JavaScript.valueToCode(block, 'code_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("code").innerHTML = ' + value_code_ + ';\n'; return code; }; Blockly.JavaScript['tutorial_irrecv_color'] = function (block) { var value_code_ = Blockly.JavaScript.valueToCode(block, 'code_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("area").style.background = ' + value_code_ + ';\n'; return code; }; /* ooooooooo. oooooooooooo ooooo oooooooooo. `888 `Y88. `888' `8 `888' `888' `Y8b 888 .d88' 888 888 888 888 888ooo88P' 888oooo8 888 888 888 888`88b. 888 " 888 888 888 888 `88b. 888 888 888 d88' o888o o888o o888o o888o o888bood8P' */ Blockly.JavaScript['tutorial_rfid_code'] = function (block) { var value_code_ = Blockly.JavaScript.valueToCode(block, 'code_', Blockly.JavaScript.ORDER_ATOMIC); var code = 'document.getElementById("show").innerHTML = ' + value_code_ + ';\n'; return code; };