From: Benjamin Auder Date: Tue, 18 Dec 2018 11:04:44 +0000 (+0100) Subject: Some fixes, add basic preview logic for new problem X-Git-Url: https://git.auder.net/images/%7B%7B%20asset%28%27mixstore/doc/html/left.jpg?a=commitdiff_plain;h=45109880413a50dec3a07298b987fb07d60630b2;p=vchess.git Some fixes, add basic preview logic for new problem --- diff --git a/TODO b/TODO index 4d99536b..3684a842 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ +Set problems style (maybe will fix strange flashing bug?) global lang cookie, + display (remember in each variant what is shown...) translations (how ? switch on index page only, then find ideas...) -for each variant, adapt FEN (Crazyhouse, Grand, Loser, ...) Improve style for various screen sizes diff --git a/public/javascripts/base_rules.js b/public/javascripts/base_rules.js index ae0800cd..7f27e855 100644 --- a/public/javascripts/base_rules.js +++ b/public/javascripts/base_rules.js @@ -273,7 +273,7 @@ class ChessRules turn: fenParts[1], }; let nextIdx = 2; - if (V.hasFlags) + if (V.HasFlags) Object.assign(res, {flags: fenParts[nextIdx++]}); if (V.HasEnpassant) Object.assign(res, {enpassant: fenParts[nextIdx]}); @@ -307,7 +307,7 @@ class ChessRules position += emptyCount; emptyCount = 0; } - fen += V.board2fen(this.board[i][j]); + position += V.board2fen(this.board[i][j]); } } if (emptyCount > 0) @@ -438,7 +438,7 @@ class ChessRules // Set flags and enpassant: const parsedFen = V.ParseFen(fen); if (V.HasFlags) - this.setFlags(fenParsed.flags); + this.setFlags(parsedFen.flags); if (V.HasEnpassant) { const epSq = parsedFen.enpassant != "-" @@ -1013,7 +1013,7 @@ class ChessRules if (!!ingame) { // Hash of current game state *after move*, to detect repetitions - move.hash = hex_md5(this.getFen(); + move.hash = hex_md5(this.getFen()); } } diff --git a/public/javascripts/components/game.js b/public/javascripts/components/game.js index 9d7bb1fb..16e1fdbb 100644 --- a/public/javascripts/components/game.js +++ b/public/javascripts/components/game.js @@ -1162,7 +1162,7 @@ Vue.component('my-game', { { this.mycolor = Math.random() < 0.5 ? 'w' : 'b'; if (this.mycolor == 'b') - this.playComputerMove(); + setTimeout(this.playComputerMove, 100); //small delay for drawing board } //else: against a (IRL) friend or problem solving: nothing more to do }, @@ -1170,7 +1170,7 @@ Vue.component('my-game', { const timeStart = Date.now(); const compMove = this.vr.getComputerMove(); // (first move) HACK: avoid selecting elements before they appear on page: - const delay = Math.max(500-(Date.now()-timeStart), 0); + const delay = Math.max(250-(Date.now()-timeStart), 0); setTimeout(() => { if (this.mode == "computer") //Warning: mode could have changed! this.play(compMove, "animate") @@ -1360,7 +1360,7 @@ Vue.component('my-game', { } } if (this.mode == "computer" && this.vr.turn != this.mycolor) - this.playComputerMove; + setTimeout(this.playComputerMove, 250); //small delay for animation }, undo: function() { // Navigate after game is over diff --git a/public/javascripts/components/problems.js b/public/javascripts/components/problems.js index 68830a4f..3bd13f63 100644 --- a/public/javascripts/components/problems.js +++ b/public/javascripts/components/problems.js @@ -1,7 +1,13 @@ Vue.component('my-problems', { data: function () { return { - problems: problemArray //initial value + problems: problemArray, //initial value + newProblem: { + fen: V.GenRandInitFen(), + instructions: "", + solution: "", + stage: "nothing", //or "preview" after new problem is filled + }, }; }, template: ` @@ -14,32 +20,31 @@ Vue.component('my-problems', {
-
+

Add problem

-
+
- +
-

- Allowed HTML tags: - <p>,<br>,<,ul>,<ol>,<li> -

+

Safe HTML tags allowed

-