From 408f0913d976f8c756c57180163236b42a45bff0 Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Sun, 24 May 2020 09:59:38 -0500 Subject: Add trivia game --- src/trivia/static/main.js | 109 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/trivia/static/main.js (limited to 'src/trivia/static/main.js') diff --git a/src/trivia/static/main.js b/src/trivia/static/main.js new file mode 100644 index 0000000..acb649c --- /dev/null +++ b/src/trivia/static/main.js @@ -0,0 +1,109 @@ +window.onload = function () { + var transactionData = new Vue({ + el: '#data', + data: { + gameCode: "", + username: "", + game: undefined, + submitText: "", + STATES: { + GUESSING: 0, + WAITING: 1, + OVER: 2 + }, + interval: undefined + }, + methods: { + nonReady: function (players) { + return players.filter(player => !player.ready) + }, + startStatusLoop: function(){ + // event loop that runs while waiting for host to start + var loadStatus = function (vue_object) { + fetch(new Request(`/trivia/lobby-status`)) + .then(response => response.json()) + .then(response => { + if (response.message) { + console.log(response.message) + } else if(response.gameStarted){ + clearInterval(vue_object.interval) + vue_object.startGameLoop() + + } else { // Just update game object with new players + vue_object.game = response + } + }); + + } + this.interval = window.setInterval(loadStatus, 1000, this) + }, + startGameLoop: function(){ + var loadStatus = function (vue_object) { + fetch(new Request(`/trivia/game-status`)) + .then(response => response.json()) + .then(response => { + if (response.message) { + console.log(response.message) + } else { + vue_object.game = response + } + }); + + } + this.interval = window.setInterval(loadStatus, 1000, this) + }, + hostGame: function () { + fetch(new Request(`/trivia/host-game?name=${this.username}`)) + .then(response => response.json()) + .then(response => { + if (response.message) { + console.log(response.message) + } else { + this.game = response + this.startStatusLoop() + } + }) + }, + joinGame: function () { + fetch(new Request(`/trivia/join-game?name=${this.username}&code=${this.gameCode}`)) + .then(response => response.json()) + .then(response => { + if (response.message) { + console.log(response.message) + } else { + this.game = response + this.startStatusLoop() + } + }) + }, + startGame: function () { + fetch(new Request(`/trivia/start-game`)) + }, + submitQuestion: function(){ + fetch(new Request(`/trivia/submit?text=${this.submitText}`)) + this.submitText = "" + }, + buzzIn: function(){ + console.log("buz") + fetch(new Request(`/trivia/buzz`)) + }, + endRound: function(){ + console.log("endround") + fetch(new Request(`/trivia/endRound`)) + }, + endQuestion: function(){ + console.log("endquestion") + fetch(new Request(`/trivia/endQuestion`)) + }, + giveScore: function(index, score){ + fetch(new Request(`/trivia/giveScore?index=${index}&points=${score}`)) + } + }, + created() { + + }, + computed: { + + } + }); +} \ No newline at end of file -- cgit v1.2.3