You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
whooshy/public/javascripts/bingo-web.js

88 lines
2.7 KiB
JavaScript

async function submitBingoWords() {
let textContent = document.querySelector('#bingo-textarea').value;
let words = textContent.replace(/[<>]/g, '').split('\n');
let size = document.querySelector('#bingo-grid-size').value;
let dimY = document.querySelector('#bingo-grid-y').value;
let response = await postLocData({
bingoWords: words,
size: size
});
let data = JSON.parse(response.data);
let gameid = data.id;
insertParam('game', gameid);
}
async function submitUsername() {
let username = document.querySelector('#username-input').value;
let response = await postLocData({
username: username
});
console.log(response);
}
async function submitWord(word) {
let response = await postLocData({
bingoWord: word
});
console.log(response);
let data = JSON.parse(response.data);
for (let row of data.fieldGrid) {
for (let field of row) {
document.querySelector(`.bingo-word-panel[b-word="${field.word}"]`)
.setAttribute('b-sub', field.submitted);
}
}
if (data.bingo) {
document.querySelector('#bingo-button').setAttribute('class', '');
}
}
async function submitBingo() {
let response = await postLocData({
bingo: true
});
let data = JSON.parse(response.data);
if (data.bingos.length > 0) {
displayWinner(data.users[data.bingos[0]].username);
clearInterval(refrInterval)
}
console.log(response);
}
async function refresh() {
let response = await postLocData({});
if (response.status === 400)
clearInterval(refrInterval);
let data = JSON.parse(response.data);
if (data.bingos.length > 0) {
displayWinner(data.users[data.bingos[0]].username);
clearInterval(refrInterval)
}
console.log(response);
}
function displayWinner(name) {
let winnerDiv = document.createElement('div');
let greyoverDiv = document.createElement('div');
let winnerSpan = document.createElement('span');
winnerDiv.setAttribute('class', 'popup');
greyoverDiv.setAttribute('class', 'greyover');
winnerSpan.innerText = `${name} has won!`;
winnerDiv.appendChild(winnerSpan);
document.body.append(greyoverDiv);
document.body.appendChild(winnerDiv);
}
window.onload = () => {
if (window && !document.querySelector('#bingoform')) {
refrInterval = setInterval(refresh, 1000);
}
let gridSizeElem = document.querySelector('#bingo-grid-size');
document.querySelector('#bingo-grid-y').innerText = gridSizeElem.value;
gridSizeElem.oninput = () => {
document.querySelector('#bingo-grid-y').innerText = gridSizeElem.value;
};
};