| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- var GRID_PUBLIC_ID
- ,KNOWN_VERSION = 0
- ,GRID
- ,SELECTED = []
- ,CURRENTINPUT = null;
- function lazyGetPseudonyme(cb) {
- var pseudo = window["sessionStorage"].getItem("pseudonyme_" +GRID_PUBLIC_ID);
- if (pseudo) {
- cb(pseudo);
- } else {
- doGet("/api/register?grid=" +GRID_PUBLIC_ID, function(status, pseudo) {
- if (status && pseudo) {
- window["sessionStorage"].setItem("pseudonyme_" +GRID_PUBLIC_ID, pseudo);
- cb(pseudo);
- } else {
- cb(null);
- }
- });
- }
- }
- function keyPressHandler(cell, key) {
- cell.dom.classList.add(R.klass.cell.pending);
- doGet("/api/put?grid=" +GRID_PUBLIC_ID +"&key=" +key +"&x=" +cell.x +"&y=" +cell.y +"&me=" +GRID.playerSelf.idEncoded, function(status, resp) {
- cell.dom.classList.remove(R.klass.cell.pending);
- if (status === 403 && !cell.data.found) {
- cell.dom.classList.add(R.klass.cell.wrong);
- } else if (status === 204) {
- pollNow();
- } else {
- // out of sync ?
- pollNow();
- }
- });
- }
- function updateOnPollResult(resp) {
- if (resp["players"]) {
- GRID.updatePlayers(resp["players"]);
- onPlayersUpdated();
- console.log("players updated");
- }
- if (resp["grid"]) {
- GRID.update(resp["grid"]);
- uiCreateGrid();
- }
- KNOWN_VERSION = Math.max(KNOWN_VERSION, resp["v"] || 0);
- }
- function unselect() {
- SELECTED.forEach(function (cell) {
- cell.dom.classList.remove(R.klass.cell.selected);
- });
- if (CURRENTINPUT) {
- CURRENTINPUT.dom.classList.remove(R.klass.cell.currentInput);
- CURRENTINPUT = null;
- }
- SELECTED = [];
- }
- function select(x, y) {
- var cell = UI_CELLS[x +y *GRID.width];
- SELECTED.push(cell);
- cell.dom.classList.add(R.klass.cell.selected);
- }
- document.addEventListener('DOMContentLoaded', function() {
- GRID_PUBLIC_ID = (document.location.hash.substr(1));
- if (GRID_PUBLIC_ID == "") {
- document.location.href = "/";
- return;
- }
- document.addEventListener('click', gridClickDelegate);
- document.addEventListener('keypress', function(e) {
- if (CURRENTINPUT && !CURRENTINPUT.data.found) {
- if (e.key.length === 1) {
- var key = e.key.charAt(0).toUpperCase();
- if (key.match(/[A-Z]/)) {
- CURRENTINPUT.data.letter = key;
- keyPressHandler(CURRENTINPUT, key);
- onGridUpdated();
- }
- } else if (e.key.toUpperCase() == "DELETE") {
- CURRENTINPUT.data.letter = null;
- onGridUpdated();
- } else if (e.key.toUpperCase() == "BACKSPACE") {
- CURRENTINPUT.data.letter = null;
- //TODO go back
- onGridUpdated();
- }
- }
- console.log(e);
- });
- initPolling();
- });
|