From 550e5d277d36c0bb279c6a49a8e99b135dd9bdab Mon Sep 17 00:00:00 2001 From: cyfraeviolae Date: Fri, 1 Dec 2023 12:37:30 -0500 Subject: flag btn --- static/script.js | 50 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 13 deletions(-) (limited to 'static/script.js') diff --git a/static/script.js b/static/script.js index 23ee2b2..e15dc88 100644 --- a/static/script.js +++ b/static/script.js @@ -2,6 +2,7 @@ var currentBoard = null; var selected = {}; +var won = [] function newGroup() { var categoryPoint = Math.random(); @@ -11,7 +12,6 @@ function newGroup() { } var group = category.groups[category.groups.length * Math.random() << 0] var clues = randomSelect(group.clues, 4) - console.log(category.name) break; } @@ -22,10 +22,14 @@ function newGroup() { }; } +function first(xs) { + return xs[0] +} + function newNonintersectingGroup(oldGroups) { var group = newGroup(); for (var oldGroup of oldGroups) { - var intersection = oldGroup.fullClues.filter(value => group.fullClues.includes(value)); + var intersection = oldGroup.fullClues.map(first).filter(value => group.fullClues.map(first).includes(value)); if (intersection.length > 0) { return newNonintersectingGroup(oldGroups); } @@ -75,6 +79,7 @@ function clear() { } function consume(grp) { + won.push(grp) selected = {} var els = document.querySelectorAll(`[x-group="${grp}"]`); for (var el of els) { @@ -84,11 +89,29 @@ function consume(grp) { document.getElementById('answers').innerHTML += `
-
${group.hint}
-
${group.clues.map(renderClue).join(', ')}
+
${group.hint} [flag]
+
${group.clues.map(renderAnswerClue).join('')}
`; } +document.getElementById('answers').addEventListener('click', function(evt) { + if (evt.target.classList.contains('flag')) { + evt.preventDefault(); + let options = { + method: 'GET', + headers: {} + }; + + fetch('/flag?q=' + encodeURIComponent(evt.target.getAttribute('x-flag')), options) + .then(body => { + var el = document.createElement('span') + el.innerText = `flagged` + el.classList.add('flagged') + evt.target.replaceWith(el) + }); + } +}); + function checkGuess(selected) { var ans = null; for (var clue of Object.keys(selected)) { @@ -102,8 +125,9 @@ function checkGuess(selected) { return [true, group]; } -function renderClue(clue) { - return clue.split('_').join(' '); +function renderAnswerClue(clue) { + var s = `
${clue[0]}${clue[1]}
`; + return s } function serializeBoard(board) { @@ -142,6 +166,7 @@ function startBoard(board) { var el = document.getElementById('board'); currentBoard = board; + won = []; var clues = []; for (var [i, group] of board.entries()) { @@ -153,17 +178,16 @@ function startBoard(board) { shuffle(clues); el.innerHTML = ``; for (var [i, j, clue] of clues) { - el.innerHTML += `
${renderClue(clue)}
`; + el.innerHTML += `
${clue[0]}
`; } } function giveUp() { - document.getElementById('board').innerHTML = ''; - document.getElementById('answers').innerHTML = ''; - consume(0); - consume(1); - consume(2); - consume(3); + for (var i = 0; i < 4; i++) { + if (!won.includes(i)) { + consume(i); + } + } } document.getElementById('board').addEventListener('click', function(evt) { -- cgit v1.2.3