/** * @license Licensed under the Apache License, Version 2.0 (the "License"): * http://www.apache.org/licenses/LICENSE-2.0 * * @fileoverview JavaScript to configure front end design for Ardublockly app. */ 'use strict'; /** Create a namespace for the application. */ var Ardublockly = Ardublockly || {}; /** Initialises all the design related JavaScript. */ Ardublockly.designJsInit = function () { Ardublockly.materializeJsInit(); Ardublockly.sketchNameSizeEffect(); Ardublockly.sketchNameSet(); // Ardublockly.cloudSketchNameSizeEffect(); // Ardublockly.cloudSketchNameSet(); }; /** * Initialises all required components from materialize framework. * The be executed on document ready. */ Ardublockly.materializeJsInit = function () { // Navigation bar $('.button-collapse').sideNav({ menuWidth: 240, activationWidth: 70, edge: 'left' }); // // Serial bar // $('.button-collapse-right').sideNav({ // menuWidth: 550, // activationWidth: 70, // edge: 'right', // onCloseStart: function(){ // } // }); $('.modal').modal({ dismissible: true, opacity: .5, in_duration: 200, out_duration: 250 }); // Drop down menus $('.dropdown-button').dropdown({ hover: false }); // Overlay content panels using modals (android dialogs) $("ul.tabs").tabs({ swipeable: true, responsiveThreshold: 220 }) $("#app_center_modal").modal({ ready: () => { $(".tab:nth-child(1)>a").click() } }) let a = '' $('#webadbIframeFile').modal({ ready: () => { window.file_manger_modal = false document.getElementById("webadb_iframe").contentWindow.document.getElementById("usbdisconnect").click() let fileIframe = document.getElementById("file_manager") fileIframe.src = '/ya-webadb/apps/demo/out/file-manager.html' fileIframe.onload = function(){ setTimeout(()=>{ document.getElementById("file_manager").contentWindow.document.getElementById("usbconnect").click() document.getElementById("file_manager").contentWindow.router.query.path = "/root" document.getElementById("file_manager").contentWindow.router.replace({ query: { path:'/root'} }); },1000) a = setInterval(()=>{ if(document.getElementById("file_manager").contentWindow.router.query.path.split("/").length == 2){ $('#file_manager_back').css({"display":'none'}) }else{ $('#file_manager_back').css({"display":'block'}) } },1000) } }, complete: () => { clearInterval(a) document.getElementById("file_manager").contentWindow.document.getElementById("usbdisconnect").click() setTimeout(() => { document.getElementById("webadb_iframe").contentWindow.document.getElementById("usbconnect").click() }, 100) window.file_manger_modal = true } }) $('#setting_teacher').modal({ ready: () => { $("#app_center_modal").modal("close") }, }) //Teachable Machine modal $('#Teachable_Machine').modal({ ready: () => { $('#setting_teacher').modal("close") if (platform.name === "Chrome" || platform.name === "Firefox" || platform.name === "Safari") { console.log('chrome or Firefox') } else { Ardublockly.alertMessage( Ardublockly.getLocalStr('unsupportWebcamTitle'), Ardublockly.getLocalStr('unsupportWebcamBody'), false); $('#Teachable_Machine').modal('close') return; } if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestWebcamTitle'), Ardublockly.getLocalStr('requestWebcamBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#Teachable_Machine').modal('close') return; } if (!CCB.userState) { document.getElementById('teachable_modal').style.display = 'none' } CCB.UserInfo = CCB.UserInfo || {} let lang = 'en'; document.location.search.substring(1).split('&').forEach((item) => { if (item.split('=')[0] == 'lang') { lang = item.split('=')[1]; } }); CCB.UserInfo.url = lang; CCB.UserInfo.boards = CCB.boards[0]; $("#TM_id").css("height", $("#Teachable_Machine")[0].offsetHeight) // document.getElementById("TM_id").contentWindow.postMessage("startCam", "*") appendTMIframe("TM_iframe", function () { document.getElementById("TM_id").contentWindow.postMessage(CCB.UserInfo, "*"); }, "//ai-demos.cocorobo.cn/teachable-machine-2/public/"); let loading = document.getElementById('TM_id'); loading.onload = () => { document.getElementById("TM_id").contentWindow.postMessage(CCB.UserInfo, "*") // window.addEventListener('message', function (e) { // if (e.data === 'none') { // } // }) setTimeout(() => { document.getElementById('teachable_modal').style.display = 'none' }, 1000) } // CCB.socket && CCB.socket.emit('command', { // cmd: 'open', // option: { port: $('#ports').val(), baud: $('#serial_baud').val() } // }); window.addEventListener('message', function (e) { let data = ''; if (document.getElementById('TM_id_posenet') && CCB.isOpen && e.data !== "close") { for (const key in e.data) { if (e.data[key] === "yes") { data = key } } data = data.slice(6) === "A" ? "green" : data.slice(6) === "B" ? "purple" : "orange" // socket 发送数据 CCB.socket && CCB.socket.emit('command', { cmd: 'send', option: { msg: `SOF|${data}|`, postfix: "blc" } }) } }, false); }, // 点击 遮罩层 关闭弹框 complete: () => { let obj = document.getElementById('TM_id') || ''; if (obj) { document.getElementById("TM_id") || document.getElementById("TM_id").contentWindow.postMessage("stopCam", "*") obj.parentNode.removeChild(obj) document.getElementById('teachable_modal').style.display = 'block' // socket 关闭 CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } } }) $('#setting_teacher_ponsenet').modal({ ready: () => { $("#app_center_modal").modal("close") }, }) //Teachable Machine modal $('#Teachable_Machine_ponsenet').modal({ ready: () => { $('#setting_teacher_ponsenet').modal("close") if (platform.name === "Chrome" || platform.name === "Firefox") { console.log('chrome or Firefox') } else { Ardublockly.alertMessage( Ardublockly.getLocalStr('unsupportWebcamTitle'), Ardublockly.getLocalStr('unsupportWebcamBody'), false); $('#Teachable_Machine_ponsenet').modal('close') return; } if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestWebcamTitle'), Ardublockly.getLocalStr('requestWebcamBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#Teachable_Machine_ponsenet').modal('close') return; } if (!CCB.userState) { document.getElementById('teachable_posenet_modal').style.display = 'none' } CCB.UserInfo = CCB.UserInfo || {} let lang = 'en'; document.location.search.substring(1).split('&').forEach((item) => { if (item.split('=')[0] == 'lang') { lang = item.split('=')[1]; } }); CCB.UserInfo.url = lang; CCB.UserInfo.boards = CCB.boards[0]; $("#TM_posenet_id").css("height", $("#Teachable_Machine_ponsenet")[0].offsetHeight) // document.getElementById("TM_id").contentWindow.postMessage("startCam", "*") let url = "//ai-demos.cocorobo.cn/teachable-machine-pose-recognition-2/public/" appendTMPosenetIframe("TM_posenet_iframe", function () { document.getElementById("TM_posenet_id").contentWindow.postMessage(CCB.UserInfo, "*"); }, url); let loading = document.getElementById('TM_posenet_id'); loading.onload = () => { document.getElementById("TM_posenet_id").contentWindow.postMessage(CCB.UserInfo, "*") // window.addEventListener('message', function (e) { // if (e.data === 'none') { // } // }) setTimeout(() => { document.getElementById('teachable_posenet_modal').style.display = 'none' }, 1000) } window.addEventListener('message', function (e) { if (document.getElementById('TM_posenet_id') && CCB.isOpen && e.data !== "close") { let data = ''; for (const key in e.data.data) { if (e.data.data[key] !== "no") { data = e.data.data[key] } } // data = data.slice(6) === "A" ? "green" : data.slice(6) === "B" ? "purple" : "orange" // socket 发送数据 CCB.socket && CCB.socket.emit('command', { cmd: 'send', option: { msg: `SOF|${data}|${e.data.posenet ? e.data.posenet : ""}|`, postfix: "blc" } }) } }, false); }, // 点击 遮罩层 关闭弹框 complete: () => { let obj = document.getElementById('TM_posenet_id') || ''; if (obj) { document.getElementById("TM_posenet_id").contentWindow.postMessage("stopCam", "*") obj.parentNode.removeChild(obj) document.getElementById('teachable_posenet_modal').style.display = 'block' // socket 关闭 CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } } }) $("#setting_webcam_capture_modal").modal({ ready: () => { $("#app_center_modal").modal("close") } }) $('#webcam_capture_modal').modal({ ready: () => { $('#setting_webcam_capture_modal').modal('close'); if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestWebcamTitle'), Ardublockly.getLocalStr('requestWebcamBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#webcam_capture_modal').modal('close'); return; } window.send = 'cloud'; window.isSend = false; $('.translatable_disconnectBtn').css('display', 'none'); $('.translatable_connectBtn').css({ "float": "right", 'margin-right': '5px', 'display': 'block' }); $('.translatable_send_cloud').addClass('select_send_way_color'); $('.translatable_send_module').removeClass('select_send_way_color'); $('.send_cloud').css({ 'display': 'block', 'position': 'relative' }); $('.send_module').css({ 'display': 'none', 'position': 'relative' }); $('.port').text(CCB.boards[0]) if (CCB.boards.length > 0 && CCB.userState) { $('.translatable_connectBtn').removeClass('disabled'); // CCB.socket && CCB.socket.emit('command', { // cmd: 'open', // option: { port: $('#ports').val(), baud: $('#serial_baud').val() } // }); } }, complete: () => { document.getElementById('camera_switch').checked = false; Webcam.reset(); CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } }) $("#WeTech_Modal").modal({ ready: () => { $('#app_center_modal').modal('close'); $("#weTech_user").text(CCB.str_group.weTech_user); $("#weTech_pass").html(CCB.str_group.weTech_pass); $("#wetechLogin").text(CCB.str_group.weTech_login); $("#weTech_logout").text(CCB.str_group.weTech_logout); if (localStorage.getItem("wetech_username")) { getGateWay(); } else { $("#wetech_no_login").css("display", "block"); } } }) $("#setting_gesture_recog_modal").modal({ ready: () => { $("#app_center_modal").modal("close") } }) $('#gesture_recog_modal').modal({ ready: () => { $('#setting_gesture_recog_modal').modal('close'); if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestWebcamTitle'), Ardublockly.getLocalStr('requestWebcamBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#gesture_recog_modal').modal('close'); return; } window.send = 'cloud'; window.isSend = false; $('.translatable_disconnectBtn').css('display', 'none'); $('.translatable_connectBtn').css({ "float": "right", 'margin-right': '5px', 'display': 'block' }); $('.translatable_send_cloud').addClass('select_send_way_color'); $('.translatable_send_module').removeClass('select_send_way_color'); $('.send_cloud').css({ 'display': 'block', 'position': 'relative' }); $('.send_module').css({ 'display': 'none', 'position': 'relative' }); $('.port').text(CCB.boards[0]) if (CCB.boards.length > 0 && CCB.userState) { $('.translatable_connectBtn').removeClass('disabled'); // CCB.socket && CCB.socket.emit('command', { // cmd: 'open', // option: { port: $('#ports').val(), baud: $('#serial_baud').val() } // }); } }, complete: () => { document.getElementById('gestureAnalyzeButton').innerHTML = CCB.str_group.gesture_recognition_button_analyze; document.getElementById('cloudRequestStatuss').innerHTML = ''; document.getElementById('gestureResultAreaContent').innerHTML = CCB.str_group.gesture_recognition_button_result; document.getElementById('camera_switch_gesture').checked = false; Webcam.reset(); $("#gestureAnalyzeButton").addClass("disabled"); $('#webCameraGesture').removeClass("webCameraGestureCapturedStyling"); CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } }) $("#setting_voice_input_modal").modal({ ready: () => { $("#app_center_modal").modal("close") } }) $('#voice_input_modal').modal({ ready: () => { $('#setting_voice_input_modal').modal('close'); if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestVoiceRecognitionTitle'), Ardublockly.getLocalStr('requestVoiceRecognitionBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#voice_input_modal').modal('close'); return; } window.send = 'cloud'; window.isSend = false; $('.translatable_disconnectBtn').css('display', 'none'); $('.translatable_connectBtn').css({ "float": "right", 'margin-right': '5px', 'display': 'block' }); $('.translatable_send_cloud').addClass('select_send_way_color'); $('.translatable_send_module').removeClass('select_send_way_color'); $('.send_cloud').css({ 'display': 'block', 'position': 'relative' }); $('.send_module').css({ 'display': 'none', 'position': 'relative' }); $('.port').text(CCB.boards[0]) if (CCB.boards.length > 0 && CCB.userState) { $('.translatable_connectBtn').removeClass('disabled'); // CCB.socket && CCB.socket.emit('command', { // cmd: 'open', // option: { port: $('#ports').val(), baud: $('#serial_baud').val() } // }); } }, complete: () => { $('#speech_button').html(CCB.str_group.start_speech); CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } }) $('#real_time_voice_input_modal').modal({ ready: () => { if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestVoiceRecognitionTitle'), Ardublockly.getLocalStr('requestVoiceRecognitionBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#real_time_voice_input_modal').modal('close'); return; } }, }) $('#setting_objectRecog').modal({ ready: () => { $("#app_center_modal").modal("close") }, }) // 日志 $('#change_log').modal({ ready: () => { if (!document.getElementById('changLog').style.opacity == '1') { document.getElementById('changLog').contentWindow.location.reload(); } setTimeout(() => { document.getElementById('changLog').style.opacity = '1' document.getElementById('changLog').contentWindow.document.getElementsByTagName('body')[0].setAttribute('class', 'ready close') document.getElementById('changLog').contentWindow.document.getElementsByClassName('sidebar-toggle')[0].style.visibility = "hidden"; document.getElementById('changLog').contentWindow.document.getElementsByClassName('body-nav')[0].style.visibility = "hidden" }, 1000) } }) $('#Object_recog_modal').modal({ // 打开弹框 ready: () => { $('#setting_objectRecog').modal("close") if (platform.name === "Chrome" || platform.name === "Firefox" || platform.name === "Safari") { console.log('chrome or Firefox') } else { Ardublockly.alertMessage( Ardublockly.getLocalStr('unsupportWebcamTitle'), Ardublockly.getLocalStr('unsupportWebcamBody'), false); $('#Object_recog_modal').modal('close') return; } if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestWebcamTitle'), Ardublockly.getLocalStr('requestWebcamBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#Object_recog_modal').modal('close'); return; } if (!CCB.userState) { document.getElementById('object_modal').style.display = 'none' } CCB.UserInfo = CCB.UserInfo || {} let lang = 'en'; document.location.search.substring(1).split('&').forEach((item) => { if (item.split('=')[0] == 'lang') { lang = item.split('=')[1]; } }); CCB.UserInfo.boards = CCB.boards[0]; $("#TM_id_object").css("height", $("#Object_recog_modal")[0].offsetHeight) CCB.UserInfo.state = "startCam" CCB.UserInfo.url = lang appendTMIframes("TM_iframe_object", function () { document.getElementById("TM_id_object").contentWindow.postMessage(CCB.UserInfo, "*"); }, "//ai-demos.cocorobo.cn/object-detection-2/"); let loading = document.getElementById('TM_id_object'); loading.onload = () => { document.getElementById("TM_id_object").contentWindow.postMessage(CCB.UserInfo, "*") setTimeout(() => { document.getElementById('object_modal').style.display = 'none' }, 1000) } // CCB.socket && CCB.socket.emit('command', { // cmd: 'open', // option: { port: $('#ports').val(), baud: $('#serial_baud').val() } // }); window.addEventListener('message', function (e) { console.log('data', e.data) if (document.getElementById('TM_id_posenet') && CCB.isOpen && e.data !== "close") { let data = '' e.data && e.data.slice(0, 8).map(x => { data = data + x.class + '|' }) // socket 发送数据 CCB.socket && CCB.socket.emit('command', { cmd: 'send', option: { msg: `SOF|${data}`, postfix: "blc" } }) } }, false); }, // 关闭弹框 complete: () => { let obj = document.getElementById('TM_id_object') || ''; if (obj) { obj.parentNode.removeChild(obj) document.getElementById('object_modal').style.display = 'block' CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } } }) // 姿态识别 $('#setting_posenetRecog').modal({ ready: () => { $("#app_center_modal").modal("close") }, }) $('#Posent_recog_modal').modal({ // 打开弹框 ready: () => { $('#setting_posenetRecog').modal("close") if (platform.name === "Chrome" || platform.name === "Firefox" || platform.name === "Safari") { console.log('chrome or Firefox') } else { Ardublockly.alertMessage( Ardublockly.getLocalStr('unsupportWebcamTitle'), Ardublockly.getLocalStr('unsupportWebcamBody'), false); $('#Posent_recog_modal').modal('close') return; } if (window.location.href.split("://")[0] === "http") { Ardublockly.customAlertMessage( Ardublockly.getLocalStr('requestWebcamTitle'), Ardublockly.getLocalStr('requestWebcamBody'), Ardublockly.getLocalStr('goHttps'), () => { window.location.href = "https://" + window.location.href.split("://")[1] }); $('#Posent_recog_modal').modal('close'); return; } if (!CCB.userState) { document.getElementById('posenet_modal').style.display = 'none' } CCB.UserInfo = CCB.UserInfo || {} let lang = 'en'; document.location.search.substring(1).split('&').forEach((item) => { if (item.split('=')[0] == 'lang') { lang = item.split('=')[1]; } }); $("#TM_id_posenet").css("height", $("#Posent_recog_modal")[0].offsetHeight) CCB.UserInfo.state = "startCam"; CCB.UserInfo.url = lang; CCB.UserInfo.boards = CCB.boards[0]; appendTMIframePosenet("TM_iframe_posenet", function () { document.getElementById("TM_id_posenet").contentWindow.postMessage(CCB.UserInfo, "*"); }, "//ai-demos.cocorobo.cn/posenet-2/demos/dist/"); let loading = document.getElementById('TM_id_posenet'); loading.onload = () => { document.getElementById("TM_id_posenet").contentWindow.postMessage(CCB.UserInfo, "*") setTimeout(() => { document.getElementById('posenet_modal').style.display = 'none' }, 1000) } // socket 连接 CCB.socket && CCB.socket.emit('command', { cmd: 'open', option: { port: $('#ports').val(), baud: $('#serial_baud').val() } }); window.addEventListener('message', function (e) { console.log("iframe data", e.data) // socket 发送数据 if (document.getElementById('TM_id_posenet') && CCB.isOpen && e.data !== "close") { CCB.socket && CCB.socket.emit('command', { cmd: 'send', option: { msg: `SOF|${e.data.posture}|`, postfix: "blc" } }) } }, false); }, // 关闭弹框 complete: () => { let obj = document.getElementById('TM_id_posenet') || ''; if (obj) { obj.parentNode.removeChild(obj) document.getElementById('posenet_modal').style.display = 'block' // socket 关闭 CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } } }) // 机器人控制 $('#controller').modal({ ready: () => { // socket 连接 if (CCB.boards.length > 0) { CCB.issend = true; CCB.socket && CCB.socket.emit('command', { cmd: 'open', option: { port: $('#ports').val(), baud: $('#serial_baud').val() } }); } }, complete: () => { CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); CCB.issend = false; } }) // 机器人控制 $('#controllers').modal({ ready: () => { // socket 连接 // if (CCB.boards.length > 0) { // CCB.issend = true; // CCB.socket && CCB.socket.emit('command', { // cmd: 'open', // option: { port: $('#ports').val(), baud: $('#serial_baud').val() } // }); // } }, complete: () => { CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); CCB.issend = false; } }) window.addEventListener('message', (e) => { if (e.data === 'open') { // socket 连接 CCB.socket && CCB.socket.emit('command', { cmd: 'open', option: { port: $('#ports').val(), baud: $('#serial_baud').val() } }); } else if (e.data === 'close') { // socket 关闭 CCB.socket && CCB.socket.emit('command', { cmd: 'close' }); } }) $(".modale").modal({ dismissible: false }) // Pop-up tool tips $('.tooltipped').tooltip({ 'delay': 50 }); // Select menus // $('select').material_select(); //scrollspy $('.scrollspy').scrollSpy(); $('.modal_close').on('click', function () { $('.modal_closes').modal('close') }) // 更新文件 $("#updatePy").modal({ ready: () => { // 获取 sd 卡的路径 pythoncmdselect('/', function (data) { saveLocalStorage("path", '/'); var arr = data.responseText.split("\n"); saveLocalStorage("fileAndFolder", arr); var str = '