]> git.sesse.net Git - remoteglot/blobdiff - www/js/remoteglot.js
Prioritize the current display line in move selection.
[remoteglot] / www / js / remoteglot.js
index 7ad1ff02565d904c2080e662a1ad7731b5a5f3e7..b6076f4006e9d87034d553c6e7556031802fcff7 100644 (file)
@@ -7,7 +7,7 @@
  * @type {Number}
  * @const
  * @private */
-var SCRIPT_VERSION = 2016032000;
+var SCRIPT_VERSION = 2016032200;
 
 /**
  * The current backend URL.
@@ -48,6 +48,7 @@ var displayed_analysis_data = null;
  *      name: string,
  *      url: string,
  *      id: string,
+ *      score: Object
  * }>}
  * @private
  */
@@ -644,8 +645,8 @@ var add_pv = function(start_fen, pretty_pv, move_num, toplay, score, start_displ
 
 /**
  * @param {number} line_num
- * @param {number=} opt_limit
- * @param {boolean=} opt_showlast
+ * @param {number=} opt_limit If set, show at most this number of moves.
+ * @param {boolean=} opt_showlast If limit is set, show the last moves instead of the first ones.
  */
 var print_pv = function(line_num, opt_limit, opt_showlast) {
        var display_line = display_lines[line_num];
@@ -731,7 +732,7 @@ var update_history = function() {
        } else {
                $("#history").html(
                        '(<a class="move" href="javascript:collapse_history(true)">collapse</a>) ' +
-                       print_pv(0, 1, 'W'));
+                       print_pv(0));
        }
 }
 
@@ -895,6 +896,10 @@ var update_game_list = function(games) {
                        game_a.appendChild(game_name);
                        game_span.appendChild(game_a);
                }
+
+               var score = " (" + format_short_score(game['score']) + ")";
+               game_span.appendChild(document.createTextNode(score));
+
                games_div.appendChild(game_span);
        }
 }
@@ -912,7 +917,7 @@ var possibly_switch_game_from_hash = function() {
        for (var i = 0; i < current_games.length; ++i) {
                if (current_games[i]['id'] === hash) {
                        if (backend_url !== current_games[i]['url']) {
-                               switch_backend(current_games[i]['url']);
+                               switch_backend(current_games[i]['url'], current_games[i]['hashurl']);
                        }
                        return;
                }
@@ -1801,6 +1806,15 @@ var get_best_move = function(game, source, target, invert) {
                move_hash[moves[i].san] = moves[i];
        }
 
+       // See if we're already exploring some line.
+       if (current_display_line &&
+           current_display_move < current_display_line.pretty_pv.length - 1) {
+               var first_move = current_display_line.pretty_pv[current_display_move + 1];
+               if (move_hash[first_move]) {
+                       return move_hash[first_move];
+               }
+       }
+
        // History and PV take priority over the display lines.
        for (var i = 0; i < 2; ++i) {
                var line = display_lines[i];
@@ -1999,7 +2013,7 @@ var compute_score_sort_key = function(score, invert) {
 /**
  * @param {string} new_backend_url
  */
-var switch_backend = function(new_backend_url) {
+var switch_backend = function(new_backend_url, new_backend_hash_url) {
        // Stop looking at historic data.
        current_display_line = null;
        current_display_move = null;
@@ -2029,6 +2043,7 @@ var switch_backend = function(new_backend_url) {
 
        // Request an immediate fetch with the new backend.
        backend_url = new_backend_url;
+       backend_hash_url = new_backend_hash_url;
        current_analysis_data = null;
        ims = 0;
        request_update();