diff options
Diffstat (limited to 'src/quiz-bunny/static/main.js')
-rw-r--r-- | src/quiz-bunny/static/main.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/src/quiz-bunny/static/main.js b/src/quiz-bunny/static/main.js new file mode 100644 index 0000000..cb4740e --- /dev/null +++ b/src/quiz-bunny/static/main.js @@ -0,0 +1,103 @@ +window.onload = function () { + var transactionData = new Vue({ + el: '#data', + data: { + gameCode: "", + username: "", + game: undefined, + submitText: "", + STATES: { + TYPING: 0, + VOTING: 1, + OVER: 2, + WAITING: 3, + }, + interval: undefined + }, + methods: { + startStatusLoop: function(){ + // event loop that runs while waiting for host to start + var loadStatus = function (vue_object) { + fetch(new Request(`/quiz-bunny/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(`/quiz-bunny/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(`/quiz-bunny/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(`/quiz-bunny/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(`/quiz-bunny/start-game`)) + }, + submitAnswer: function(){ + fetch(new Request(`/quiz-bunny/submit?text=${this.submitText}`)) + this.submitText = "" + }, + submitVote: function(index){ + fetch(new Request(`/quiz-bunny/vote?index=${index}`)) + }, + ready: function(index){ + fetch(new Request(`/quiz-bunny/ready`)) + }, + leave: function(index){ + clearInterval(this.interval) + this.game = undefined + fetch(new Request(`/quiz-bunny/leave`)) + } + }, + created() { + + }, + computed: { + + } + }); +}
\ No newline at end of file |