diff --git a/assets/js/main.js b/assets/js/main.js index faaeddb..5e829e6 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -112,16 +112,6 @@ function autocomplete(inp, arr) { let driversObj = {} let drivers = [] -fetch(`${window.location.href}/drivers.json`).then(res => { - res.json().then(result => { - driversObj = result - Object.entries(result).forEach(driver => { - drivers.push(driver[1].firstName + " " + driver[1].lastName) - }) - autocomplete(document.getElementById("myInput"), drivers); - }) -}) - document.addEventListener("keyup", async function (event) { if (event.keyCode === 13) { let value = document.getElementById("myInput").value @@ -141,78 +131,20 @@ document.addEventListener("keyup", async function (event) { }) if (potential == 1 || document.getElementsByClassName("autocomplete-items")[0].children.length == 1 && value.replace(/[0-9]/g, '') != "") { + if (localStorage.guesses == null) { + localStorage.guesses = JSON.stringify([guess]) + } + else { + let guesses = JSON.parse(localStorage.guesses) + guesses.push(guess) + localStorage.guesses = JSON.stringify(guesses) + } document.getElementById("myInput").value = "" var x = document.getElementsByClassName("autocomplete-items"); for (var i = 0; i < x.length; i++) { x[i].parentNode.removeChild(x[i]); } - let obj = {} - Object.entries(driversObj).forEach(driver => { - if (driver[1].firstName + " " + driver[1].lastName == guess) obj = driver[1] - }) - let frames = Array.from(document.getElementsByClassName("frame")).filter(x => x.childNodes.length == 0) - frames[0].innerHTML = `
${obj.code}
` - frames[1].innerHTML = `` - frames[2].innerHTML = `` - for (let i = 2; i < 6; i++) { - frames[i + 1].innerHTML = `
${Object.values(obj)[i + 3]}
` - } - let answer = await fetch(`${window.location.href}driver?driver=${obj.firstName + " " + obj.lastName}`) - let json = await answer.json() - let won = true - Object.values(json).forEach(async (answer, index) => { - if (answer != 1) won = false - setTimeout(() => { - if (answer == 0) frames[index + 1].classList.add("down") - else if (answer == 1) frames[index + 1].classList.add("correct") - else if (answer == 2) frames[index + 1].classList.add("up") - else if (answer == 3) frames[index + 1].classList.add("incorrect") - else if (answer == 4) frames[index + 1].classList.add("previous") - }, index * 250) - }) - if (won || Array.from(document.getElementsByClassName("frame")).filter(x => x.childNodes.length == 0).length == 0) { - let data = await fetch(`${window.location.href}winner`) - let winner = await data.json() - let gg = document.getElementsByClassName("input")[0] - gg.classList.remove("input") - gg.classList.add("gg") - let greeting = won ? "Congratulations!" : "Bwoah." - gg.innerHTML = `

${greeting}

The driver was

${winner.winner}!

Next Stewardle

00:00:00:000

` - // Set the date we're counting down to - let d = new Date() - var countDownDate = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1, 0, 0, 0)); - - // Update the count down every 1 second - var x = setInterval(function () { - - // Get today's date and time - var now = new Date().getTime(); - - // Find the distance between now and the count down date - var distance = countDownDate - now; - - // Time calculations for days, hours, minutes and seconds - const millisecond = 1 - const second = 1000 - const minute = second * 60 - const hour = minute * 60 - const day = hour * 24; - let hours = Math.trunc((distance % day) / hour) - let minutes = Math.trunc((distance % hour) / minute) - let seconds = Math.trunc((distance % minute) / second) - let milliseconds = secondsLeft = Math.trunc((distance % second) / millisecond) - - // Display the result in the element with id="demo" - document.getElementById("time").innerHTML = ("0" + hours).slice(-2) + ":" - + ("0" + minutes).slice(-2) + ":" + ("0" + seconds).slice(-2) + ":" + ("00" + milliseconds).slice(-3); - - // If the count down is finished, write some text - if (distance < 0) { - clearInterval(x); - document.getElementById("time").innerHTML = "EXPIRED"; - } - }, 1); - } + submit(guess) } else { shake() @@ -227,6 +159,82 @@ function shake() { setTimeout(() => element.style.animation = "shake .5s", 100) } +async function submit(guess) { + return new Promise(async (res, rej) => { + let obj = {} + Object.entries(driversObj).forEach(driver => { + if (driver[1].firstName + " " + driver[1].lastName == guess) obj = driver[1] + }) + let frames = Array.from(document.getElementsByClassName("frame")).filter(x => x.childNodes.length == 0) + frames[0].innerHTML = `
${obj.code}
` + frames[1].innerHTML = `` + frames[2].innerHTML = `` + for (let i = 2; i < 6; i++) { + frames[i + 1].innerHTML = `
${Object.values(obj)[i + 3]}
` + } + let answer = await fetch(`${window.location.href}driver?driver=${obj.firstName + " " + obj.lastName}`) + let json = await answer.json() + let won = true + Object.values(json).forEach(async (answer, index) => { + if (answer != 1) won = false + setTimeout(() => { + if (answer == 0) frames[index + 1].classList.add("down") + else if (answer == 1) frames[index + 1].classList.add("correct") + else if (answer == 2) frames[index + 1].classList.add("up") + else if (answer == 3) frames[index + 1].classList.add("incorrect") + else if (answer == 4) frames[index + 1].classList.add("previous") + }, index * 250) + }) + if (won || Array.from(document.getElementsByClassName("frame")).filter(x => x.childNodes.length == 0).length == 0) { + let data = await fetch(`${window.location.href}winner`) + let winner = await data.json() + let gg = document.getElementsByClassName("input")[0] + if (gg != null) { + gg.classList.remove("input") + gg.classList.add("gg") + let greeting = won ? "Congratulations!" : "Bwoah." + gg.innerHTML = `

${greeting}

The driver was

${winner.winner}!

Next Stewardle

00:00:00:000

` + } + + // Set the date we're counting down to + let d = new Date() + var countDownDate = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1, 0, 0, 0)); + + // Update the count down every 1 second + var x = setInterval(function () { + + // Get today's date and time + var now = new Date().getTime(); + + // Find the distance between now and the count down date + var distance = countDownDate - now; + + // Time calculations for days, hours, minutes and seconds + const millisecond = 1 + const second = 1000 + const minute = second * 60 + const hour = minute * 60 + const day = hour * 24; + let hours = Math.trunc((distance % day) / hour) + let minutes = Math.trunc((distance % hour) / minute) + let seconds = Math.trunc((distance % minute) / second) + let milliseconds = secondsLeft = Math.trunc((distance % second) / millisecond) + + // Display the result in the element with id="demo" + document.getElementById("time").innerHTML = ("0" + hours).slice(-2) + ":" + + ("0" + minutes).slice(-2) + ":" + ("0" + seconds).slice(-2) + ":" + ("00" + milliseconds).slice(-3); + + // If the count down is finished, write some text + if (distance < 0) { + clearInterval(x); + document.getElementById("time").innerHTML = "EXPIRED"; + } + }, 1); + } + res() + }) +} + function similarity(s1, s2) { var longer = s1; var shorter = s2; @@ -308,4 +316,19 @@ function close() { backdrop.style.zIndex = -1 canOpen = true }, 500) -} \ No newline at end of file +} + +document.addEventListener('DOMContentLoaded', (event) => { + fetch(`${window.location.href}/drivers.json`).then(res => { + res.json().then(result => { + driversObj = result + Object.entries(result).forEach(driver => { + drivers.push(driver[1].firstName + " " + driver[1].lastName) + }) + autocomplete(document.getElementById("myInput"), drivers); + JSON.parse(localStorage.guesses).forEach(async guess => { + await submit(guess) + }) + }) + }) +}) \ No newline at end of file