shoGambler/templates/bet.html
2025-03-24 18:56:52 +00:00

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>