Spaces:
Sleeping
Sleeping
| let info={username:"",projectid:"",} | |
| const loginfunc = async()=>{ | |
| await fetch("./html/login.html").then(res=>res.text()).then(res=>{document.body.getElementsByTagName("div")[0].innerHTML=res}); | |
| const loginbox = document.getElementById("loginbox"); | |
| const loginstatus = document.getElementsByClassName("box")[2]; | |
| const loginbutton = loginstatus.getElementsByClassName("loginbutton")[0]; | |
| loginbutton.addEventListener("click",()=>{ | |
| const username = loginbox.getElementsByClassName("username")[0].value; | |
| info.username=username; | |
| const password = loginbox.getElementsByClassName("password")[0].value; | |
| loginstatus.getElementsByClassName("status")[0].innerText = "logging in..."; | |
| fetch("/login",{ | |
| headers: { | |
| 'Accept': 'application/json', | |
| 'Content-Type': 'application/json' | |
| }, | |
| method: "POST", | |
| body: JSON.stringify({username:username,password:password}), | |
| }).then(res=>{ | |
| if(res.status==200){ | |
| loginstatus.getElementsByClassName("status")[0].innerText = "Login succeeded! Connecting to the cloud server..."; | |
| cloudfunc(); | |
| }else{ | |
| loginstatus.getElementsByClassName("status")[0].innerText = "try again"; | |
| setTimeout(() => { | |
| loginstatus.getElementsByClassName("status")[0].innerText = null; | |
| }, 2000); | |
| } | |
| }) | |
| }) | |
| } | |
| loginfunc(); | |
| const cloudfunc = async ()=>{ | |
| await fetch("/connect"); | |
| await fetch("./html/cloud.html").then(res=>res.text()).then(res=>{document.getElementsByTagName("div")[0].innerHTML=res}); | |
| const util = document.getElementsByClassName("util")[0]; | |
| const table = document.getElementsByClassName("table")[0]; | |
| const changes = document.getElementsByClassName("changes")[0].getElementsByTagName("p"); | |
| const changeval = document.getElementsByClassName("changeval")[0]; | |
| const pconnect = document.getElementsByClassName("projectconnect")[0]; | |
| const changevals = { | |
| choice:changeval.getElementsByClassName("choice")[0], | |
| input:changeval.getElementsByClassName("projectid")[0], | |
| button:changeval.getElementsByClassName("button")[0], | |
| }; | |
| changes[0].getElementsByTagName("span")[0].innerHTML=`<a href ="https://scratch.mit.edu/users/${info.username}/">${info.username}</a>`; | |
| const projectconnect = { | |
| input:pconnect.getElementsByClassName("projectid")[0], | |
| button:pconnect.getElementsByClassName("projectbutton")[0] | |
| }; | |
| projectconnect.input.addEventListener("change",()=>{ | |
| projectconnect.input.value=projectconnect.input.value.match(/[0-9]/g).toString().replace(/,/g,"");; | |
| }); | |
| projectconnect.button.addEventListener("click",()=>{ | |
| if(projectconnect.input.value !==""){ | |
| info.projectid = projectconnect.input.value; | |
| fetch("/handshake",{ | |
| headers: { | |
| 'Accept': 'application/json', | |
| 'Content-Type': 'application/json' | |
| }, | |
| method: "POST", | |
| body: JSON.stringify({projectid:info.projectid}), | |
| }).then(()=>{ | |
| changes[1].getElementsByTagName("span")[0].innerHTML=`<a href ="https://scratch.mit.edu/projects/${info.projectid}/">https://scratch.mit.edu/projects/${info.projectid}/</a>`; | |
| const ws = new WebSocket('ws://localhost:3001'); | |
| ws.onmessage=e=>{ | |
| const data = JSON.parse(e.data); | |
| const clouddatas = data.clouddatas; | |
| const changedlists = data.changedlists; | |
| const cloudkeys = Object.keys(clouddatas); | |
| let str=`<tr class="title"><th>variable names</th><th>value</th></tr>`; | |
| let str2=""; | |
| for(c of cloudkeys){ | |
| str = str+`<tr class="${c}"><td>${c}</td><td>${clouddatas[c].value}</td></tr>`; | |
| str2=str2+`<option value="${c}">${c}</option>` | |
| } | |
| table.getElementsByTagName("table")[0].innerHTML=str; | |
| changevals.choice.innerHTML=str2; | |
| changes[2].getElementsByTagName("span").innerText=changedlists.toString(); | |
| } | |
| }) | |
| } | |
| }) | |
| changevals.input.addEventListener("change",()=>{ | |
| changevals.input.value=changevals.input.value.match(/[0-9]/g).toString().replace(/,/g,""); | |
| }); | |
| changevals.button.addEventListener("click",()=>{ | |
| fetch("/change",{ | |
| headers: { | |
| 'Accept': 'application/json', | |
| 'Content-Type': 'application/json' | |
| }, | |
| method: "POST", | |
| body: JSON.stringify({name:changevals.choice.value,value:changevals.input.value}), | |
| }).then(res=>{ | |
| table.getElementsByTagName("table")[0].getElementsByClassName(changevals.choice.value)[0].getElementsByTagName("td")[1].innerText=changevals.input.value; | |
| }) | |
| }) | |
| } |