73 lines
No EOL
2.4 KiB
HTML
73 lines
No EOL
2.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>Betting</title>
|
|
</head>
|
|
<body>
|
|
<h1>Betting</h1>
|
|
<p>Vote for what you think will happen</p>
|
|
<p>If you lose the bet, you lose your points</p>
|
|
<p>If you win the bet, you get your points back and more, depending on the stakes</p>
|
|
<p id="question"></p>
|
|
<p id="possible"></p>
|
|
<p id="timer"></p>
|
|
<button id="bet" disabled>Bet</button>
|
|
<a href="/privacy">Privacy Policy</a>
|
|
<a href="/tos">Terms of Service</a>
|
|
<script>
|
|
let outcomes = [];
|
|
|
|
async function updateTimer(time) {
|
|
// noinspection InfiniteLoopJS
|
|
while (true) {
|
|
let timeLeft = time - Math.floor(Date.now() / 1000);
|
|
if (timeLeft <= 0) {
|
|
document.getElementById("timer").innerText = "Betting is now closed";
|
|
document.getElementById("bet").disabled = true;
|
|
} else {
|
|
document.getElementById("timer").innerText = "Betting closes in " + timeLeft + " seconds";
|
|
}
|
|
await new Promise(r => setTimeout(r, 1000));
|
|
}
|
|
}
|
|
|
|
async function getBet() {
|
|
let response = await fetch("/api/getCurrentBet");
|
|
if (response.ok) {
|
|
let data = await response.json();
|
|
document.getElementById("question").innerText = data.question;
|
|
outcomes = data.possible;
|
|
document.getElementById("possible").innerText = "Possible outcomes: " + outcomes.join(", ");
|
|
// noinspection ES6MissingAwait
|
|
updateTimer(data.timeToBet);
|
|
} else {
|
|
document.getElementById("question").innerText = "No bet is currently active";
|
|
}
|
|
}
|
|
|
|
document.getElementById("bet").addEventListener("click", async () => {
|
|
let outcome = prompt("What do you think will happen?");
|
|
if (outcomes.includes(outcome)) {
|
|
let response = await fetch("/api/bet", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
},
|
|
body: JSON.stringify({
|
|
"amount": parseInt(prompt("How many points do you want to bet?")),
|
|
"answer": outcomes.indexOf(outcome)
|
|
})
|
|
});
|
|
if (response.ok) {
|
|
alert("Bet placed!");
|
|
} else {
|
|
alert("Error placing bet");
|
|
}
|
|
} else {
|
|
alert("Invalid outcome");
|
|
}
|
|
});
|
|
|
|
getBet();
|
|
</script>
|
|
</body> |