spotlight.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. const makeClusterButton = document.getElementById("makeCluster")
  2. let clusters = Array()
  3. let chosenShelves = Array()
  4. function getEByID(id) {
  5. return document.getElementById(id)
  6. }
  7. function shelfClick(id) {
  8. const clickedShelf = getEByID("b" + id.toString())
  9. if (!clusters.flat(1).includes(id)) { //If not id in clusters
  10. if (chosenShelves.includes(id)) { //If id in chosenShelves
  11. chosenShelves = chosenShelves.filter(e => {
  12. return e !== id;
  13. })
  14. clickedShelf.classList.remove("selected")
  15. clickedShelf.innerText = ""
  16. } else { //Else (if id not in chosenShelves
  17. chosenShelves.push(id)
  18. clickedShelf.classList.add("selected")
  19. }
  20. }
  21. chosenShelves.forEach((id, num) => {
  22. getEByID("b" + id.toString()).innerText = (num + 1).toString()
  23. })
  24. if (chosenShelves.length > 0) {
  25. makeClusterButton.classList.remove("hidden")
  26. } else {
  27. makeClusterButton.classList.add("hidden")
  28. }
  29. }
  30. function unselectAll() {
  31. chosenShelves.forEach(id => {
  32. getEByID("b" + id.toString()).innerText = ""
  33. getEByID("b" + id.toString()).classList.remove("selected")
  34. })
  35. chosenShelves = Array()
  36. makeClusterButton.classList.add("hidden")
  37. }
  38. function createCluster() {
  39. const shelves = JSON.stringify(chosenShelves)
  40. const numLights = chosenShelves.length
  41. const sendDict = {["numLights"]: numLights,
  42. ["lights"]: shelves}
  43. console.log(JSON.stringify(sendDict))
  44. sendWebRequest("http://192.168.1.170/api/create_cluster", JSON.stringify(sendDict), "POST")
  45. }
  46. window.onkeydown = function(event) {
  47. if (event.key === "Escape") {
  48. unselectAll()
  49. }
  50. }
  51. function sendWebRequest(url, data, method) {
  52. const Http = new XMLHttpRequest()
  53. Http.open(method, url)
  54. Http.setRequestHeader("data", data)
  55. Http.send()
  56. Http.onreadystatechange = (e) => {
  57. console.log(Http.responseText)
  58. }
  59. }
  60. function updateConfig() {
  61. fetch("http://192.168.1.170/api/get_config")
  62. .then(response => response.json())
  63. .then(data => console.log(data))
  64. }
  65. updateConfig()