]> git.sesse.net Git - remoteglot/blobdiff - www/js/remoteglot.js
Show low-depth scores.
[remoteglot] / www / js / remoteglot.js
index e111bc6d8a817cfb4f5aab0eb2a4a66878f971b1..b72f4c426119082512ba43af50bec53fe68a3019 100644 (file)
@@ -7,7 +7,7 @@
  * @type {Number}
  * @const
  * @private */
-var SCRIPT_VERSION = 2020122900;
+var SCRIPT_VERSION = 2021021300;
 
 /**
  * The current backend URL.
@@ -664,8 +664,9 @@ var add_pv = function(start_fen, pv, move_num, toplay, scores, start_display_mov
        if (scores !== null && scores.length >= 1 &&
            scores[scores.length - 1].score !== undefined &&
            scores[scores.length - 1].score !== null &&
-           scores[scores.length - 1].score[0] === "tb") {
-               splicepos = Math.abs(scores[scores.length - 1].score[1]);
+           (scores[scores.length - 1].score[0] === 'T' ||
+            scores[scores.length - 1].score[0] === 't')) {
+               splicepos = scores[scores.length - 1].score[1];
        }
        return print_pv(display_lines.length - 1, splicepos, opt_limit, opt_showlast);
 }
@@ -1212,6 +1213,24 @@ var update_board = function() {
                $("#score").text(format_long_score(data['score']));
        }
 
+       // Low depth.
+       var lowdepth = '';
+       if (data['lowdepth']) {
+               lowdepth = 'Quick look: ';
+               var lds = [];
+               Object.keys(data['lowdepth']).forEach(function(depth) {
+                       lds.push([parseInt(depth), format_short_score(data['lowdepth'][depth])]);
+               });
+               lds.sort(function(a, b) { return a[0] - b[0]; });
+               for (var i = 0; i < lds.length; ++i) {
+                       lowdepth += '<span class="depth">d' + lds[i][0] + ':</span> ' + lds[i][1];
+                       if (i != lds.length - 1) {
+                               lowdepth += ', ';
+                       }
+               }
+       }
+       $("#lowdepth").html(lowdepth);
+
        // The search stats.
        if (data['searchstats']) {
                $("#searchstats").html(data['searchstats']);
@@ -1300,6 +1319,11 @@ var update_board = function() {
                        hiddenboard = new Chess(base_fen);
                        hiddenboard.move(line['pv'][0]);
                        var this_response = hiddenboard.move(line['pv'][1]);
+                       if (this_response === null) {
+                               console.log("BUG: ", i);
+                               console.log(data);
+                               console.log(line['pv']);
+                       }
                        if (response.from !== this_response.from || response.to !== this_response.to) {
                                // Different response depending on lines, abort.
                                response = undefined;
@@ -2116,24 +2140,25 @@ var format_short_score = function(score) {
        if (!score) {
                return "???";
        }
-       if (score[0] === 'tb') {
+       if (score[0] === 'T' || score[0] === 't') {
                var ret = "TB\u00a0";
                if (score[2]) {  // Is a bound.
                        ret = score[2] + "\u00a0TB\u00a0";
                }
-               if (score[1] > 0) {
+               if (score[0] === 'T') {
                        return ret + Math.ceil(score[1] / 2);
                } else {
-                       return ret + "-" + Math.ceil(-score[1] / 2);
+                       return ret + "-" + Math.ceil(score[1] / 2);
                }
-       } else if (score[0] === 'm') {
+       } else if (score[0] === 'M' || score[0] === 'm') {
+               var sign = (score[0] === 'm') ? '-' : '';
                if (score[2]) {  // Is a bound.
-                       return score[2] + "\u00a0M " + score[1];
+                       return score[2] + "\u00a0M " + sign + score[1];
                } else {
-                       return "M " + score[1];
+                       return "M " + sign + score[1];
                }
        } else if (score[0] === 'd') {
-               return "TB draw";
+               return "TB =0";
        } else if (score[0] === 'cp') {
                if (score[2]) {  // Is a bound.
                        return score[2] + "\u00a0" + fmt_cp(score[1]);
@@ -2148,17 +2173,29 @@ var format_long_score = function(score) {
        if (!score) {
                return "???";
        }
-       if (score[0] === 'tb') {
-               if (score[1] > 0) {
+       if (score[0] === 'T') {
+               if (score[1] == 0) {
+                       return "Won for white (tablebase)";
+               } else {
                        return "White wins in " + Math.ceil(score[1] / 2);
+               }
+       } else if (score[0] === 't') {
+               if (score[1] == -1) {
+                       return "Won for black (tablebase)";
                } else {
-                       return "Black wins in " + Math.ceil(-score[1] / 2);
+                       return "Black wins in " + Math.ceil(score[1] / 2);
                }
-       } else if (score[0] === 'm') {
-               if (score[1] > 0) {
+       } else if (score[0] === 'M') {
+               if (score[1] == 0) {
+                       return "White wins by checkmate";
+               } else {
                        return "White mates in " + score[1];
+               }
+       } else if (score[0] === 'm') {
+               if (score[1] == 0) {
+                       return "Black wins by checkmate";
                } else {
-                       return "Black mates in " + (-score[1]);
+                       return "Black mates in " + score[1];
                }
        } else if (score[0] === 'd') {
                return "Theoretical draw";
@@ -2169,12 +2206,10 @@ var format_long_score = function(score) {
 }
 
 var compute_plot_score = function(score) {
-       if (score[0] === 'm' || score[0] === 'tb') {
-               if (score[1] > 0) {
-                       return 500;
-               } else {
-                       return -500;
-               }
+       if (score[0] === 'M' || score[0] === 'T') {
+               return 500;
+       } else if (score[0] === 'm' || score[0] === 't') {
+               return -500;
        } else if (score[0] === 'd') {
                return 0;
        } else if (score[0] === 'cp') {
@@ -2201,22 +2236,18 @@ var compute_score_sort_key = function(score, depth, invert, depth_secondary_key)
        if (!score) {
                return -10000000;
        }
-       if (score[0] === 'tb') {
-               if (score[1] > 0) {
-                       // White reaches TB win.
-                       s = 89999 - score[1];
-               } else {
-                       // Black reaches TB win (note the double negative for score[1]).
-                       s = -89999 - score[1];
-               }
+       if (score[0] === 'T') {
+               // White reaches TB win.
+               s = 89999 - score[1];
+       } else if (score[0] === 't') {
+               // Black reaches TB win.
+               s = -(89999 - score[1]);
+       } else if (score[0] === 'M') {
+               // White mates.
+               s = 99999 - score[1];
        } else if (score[0] === 'm') {
-               if (score[1] > 0) {
-                       // White mates.
-                       s = 99999 - score[1];
-               } else {
-                       // Black mates (note the double negative for score[1]).
-                       s = -99999 - score[1];
-               }
+               // Black mates.
+               s = -(99999 - score[1]);
        } else if (score[0] === 'd') {
                s = 0;
        } else if (score[0] === 'cp') {