X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=469d46b242f4da82d1f711e16924a1260463fcf7;hb=7ba4a5bc5b64e19a1e7f26aa232d5c50770d07ad;hp=926608982dcb31d837447d196495b0920a00bf03;hpb=8aa418f6d6761b95429c4f7120481e709814a1b9;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index 92660898..469d46b2 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -19,7 +19,10 @@ main .button-group#buttonsTchall button.acceptBtn(@click="decisionChallenge(true)") {{ st.tr["Accept challenge?"] }} button.refuseBtn(@click="decisionChallenge(false)") {{ st.tr["Refuse"] }} - input#modalNewgame.modal(type="checkbox") + input#modalNewgame.modal( + type="checkbox" + @change="cadenceFocusIfOpened($event)" + ) div#newgameDiv( role="dialog" data-checkbox="modalNewgame" @@ -42,15 +45,21 @@ main fieldset label(for="cadence") {{ st.tr["Cadence"] }} * div#predefinedCadences - button(type="button") 5+3 button(type="button") 15+5 button(type="button") 45+30 - button(type="button") 7d+2d + button(type="button") 3d + button(type="button") 7d input#cadence( type="text" v-model="newchallenge.cadence" - placeholder="5+0, 1h+30s, 7d+1d ..." + placeholder="5+0, 1h+30s, 5d ..." ) + fieldset + label(for="selectRandomLevel") {{ st.tr["Randomness"] }} + select#selectRandomLevel(v-model="newchallenge.randomness") + option(value="0") {{ st.tr["Deterministic"] }} + option(value="1") {{ st.tr["Symmetric random"] }} + option(value="2") {{ st.tr["Asymmetric random"] }} fieldset(v-if="st.user.id > 0") label(for="selectPlayers") {{ st.tr["Play with?"] }} input#selectPlayers( @@ -175,6 +184,7 @@ export default { vid: parseInt(localStorage.getItem("vid")) || 0, to: "", //name of challenged player (if any) cadence: localStorage.getItem("cadence") || "", + randomness: parseInt(localStorage.getItem("randomness")) || 2, // VariantRules object, stored to not interfere with // diagrams of targetted challenges: V: null, @@ -316,6 +326,10 @@ export default { }, methods: { // Helpers: + cadenceFocusIfOpened: function() { + if (event.target.checked) + document.getElementById("cadence").focus(); + }, send: function(code, obj) { if (this.conn) { this.conn.send(JSON.stringify(Object.assign({ code: code }, obj))); @@ -479,12 +493,8 @@ export default { } case "killed": // I logged in elsewhere: - alert(this.st.tr["New connexion detected: tab now offline"]); - // TODO: this fails. See https://github.com/websockets/ws/issues/489 - //this.conn.removeEventListener("message", this.socketMessageListener); - //this.conn.removeEventListener("close", this.socketCloseListener); - //this.conn.close(); this.conn = null; + alert(this.st.tr["New connexion detected: tab now offline"]); break; case "askidentity": { // Request for identification (TODO: anonymous shouldn't need to reply) @@ -538,6 +548,7 @@ export default { id: c.id, from: this.st.user.sid, to: c.to, + randomness: c.randomness, fen: c.fen, vid: c.vid, cadence: c.cadence, @@ -558,6 +569,7 @@ export default { ) { let newChall = Object.assign({}, chall); newChall.type = this.classifyObject(chall); + newChall.randomness = chall.randomness; newChall.added = Date.now(); let fromValues = Object.assign({}, this.people[chall.from]); delete fromValues["pages"]; //irrelevant in this context @@ -716,6 +728,8 @@ export default { } // NOTE: "from" information is not required here let chall = Object.assign({}, this.newchallenge); + delete chall["V"]; + delete chall["diag"]; const finishAddChallenge = cid => { chall.id = cid || "c" + getRandString(); // Remove old challenge if any (only one at a time of a given type): @@ -750,7 +764,15 @@ export default { // Remember cadence + vid for quicker further challenges: localStorage.setItem("cadence", chall.cadence); localStorage.setItem("vid", chall.vid); + localStorage.setItem("randomness", chall.randomness); document.getElementById("modalNewgame").checked = false; + // Show the challenge if not on current display + if ( + (ctype == "live" && this.cdisplay == "corr") || + (ctype == "corr" && this.cdisplay == "live") + ) { + this.setDisplay('c', ctype); + } }; if (ctype == "live") { // Live challenges have a random ID @@ -831,7 +853,7 @@ export default { // These game informations will be shared let gameInfo = { id: getRandString(), - fen: c.fen || V.GenRandInitFen(), + fen: c.fen || V.GenRandInitFen(c.randomness), // White player index 0, black player index 1: players: c.mycolor ? (c.mycolor == "w" ? [c.seat, c.from] : [c.from, c.seat]) @@ -885,8 +907,8 @@ export default { GameStorage.add(game, (err) => { // If an error occurred, game is not added: abort if (!err) { - if (this.st.settings.sound >= 1) - new Audio("/sounds/newgame.mp3").play().catch(() => {}); + if (this.st.settings.sound) + new Audio("/sounds/newgame.flac").play().catch(() => {}); this.$router.push("/game/" + gameInfo.id); } });