]> git.sesse.net Git - remoteglot/blobdiff - www/js/remoteglot.js
Split off move highlighting updates.
[remoteglot] / www / js / remoteglot.js
index 92ad761396e3f91d3a8696bcde8d1442b6344206..33ae193cbe42ccc51696060d666e6c5da8b8dd9a 100644 (file)
@@ -88,7 +88,9 @@ var highlight_from = undefined;
 /** @type {!string|undefined} @private */
 var highlight_to = undefined;
 
-/** @type {?jQuery} @private */
+/** The HTML object of the move currently being highlighted (in red).
+ * @type {?jQuery}
+ * @private */
 var highlighted_move = null;
 
 /** @type {?number} @private */
@@ -625,7 +627,10 @@ var print_pv = function(line_num, pretty_pv, move_num, toplay, opt_limit, opt_sh
        return pv;
 }
 
-var update_highlight = function() {
+/** Update the highlighted to/from squares on the board.
+ * Based on the global "highlight_from" and "highlight_to" variables.
+ */
+var update_board_highlight = function() {
        $("#board").find('.square-55d63').removeClass('nonuglyhighlight');
        if ((current_display_line === null || current_display_line_is_history) &&
            highlight_from !== undefined && highlight_to !== undefined) {
@@ -655,11 +660,16 @@ var collapse_history = function(truncate_history) {
 }
 window['collapse_history'] = collapse_history;
 
+/** Update the HTML display of multi-PV from the global "refutation_lines".
+ *
+ * Also recreates the global "display_lines".
+ */
 var update_refutation_lines = function() {
        if (fen === null) {
                return;
        }
        if (display_lines.length > 2) {
+               // Truncate so that only the history and PV is left.
                display_lines = [ display_lines[0], display_lines[1] ];
        }
 
@@ -716,6 +726,9 @@ var update_refutation_lines = function() {
 }
 
 /**
+ * Create a Chess.js board object, containing the given position plus the given moves,
+ * up to the given limit.
+ *
  * @param {?string} fen
  * @param {Array.<string>} moves
  * @param {number} last_move
@@ -916,7 +929,7 @@ var update_board = function(current_data, display_data) {
        } else {
                highlight_from = highlight_to = undefined;
        }
-       update_highlight();
+       update_board_highlight();
 
        if (data['failed']) {
                $("#score").text("No analysis for this move");
@@ -929,6 +942,7 @@ var update_board = function(current_data, display_data) {
                update_refutation_lines();
                clear_arrows();
                update_displayed_line();
+               update_move_highlight();
                return;
        }
 
@@ -963,6 +977,7 @@ var update_board = function(current_data, display_data) {
        // Update the board itself.
        fen = data['position']['fen'];
        update_displayed_line();
+       update_move_highlight();
 
        // Print the PV.
        $("#pv").html(add_pv(data['position']['fen'], data['pv_pretty'], data['position']['move_num'], data['position']['toplay']));
@@ -1329,7 +1344,7 @@ var show_line = function(line_num, move_num) {
 
        update_historic_analysis();
        update_displayed_line();
-       update_highlight();
+       update_board_highlight();
        redraw_arrows();
 }
 window['show_line'] = show_line;
@@ -1340,6 +1355,7 @@ var prev_move = function() {
        }
        update_historic_analysis();
        update_displayed_line();
+       update_move_highlight();
 }
 window['prev_move'] = prev_move;
 
@@ -1349,6 +1365,7 @@ var next_move = function() {
        }
        update_historic_analysis();
        update_displayed_line();
+       update_move_highlight();
 }
 window['next_move'] = next_move;
 
@@ -1417,10 +1434,19 @@ var update_imbalance = function(fen) {
        $('#blackimbalance').html(black_imbalance);
 }
 
-var update_displayed_line = function() {
+/** Mark the currently selected move in red.
+ */
+var update_move_highlight = function() {
        if (highlighted_move !== null) {
                highlighted_move.removeClass('highlight'); 
        }
+       if (current_display_line !== null) {
+               highlighted_move = $("#automove" + current_display_line.line_number + "-" + current_display_move);
+               highlighted_move.addClass('highlight'); 
+       }
+}
+
+var update_displayed_line = function() {
        if (current_display_line === null) {
                $("#linenav").hide();
                $("#linemsg").show();
@@ -1443,9 +1469,6 @@ var update_displayed_line = function() {
                $("#nextmove").html("<a href=\"javascript:next_move();\">Next</a></span>");
        }
 
-       highlighted_move = $("#automove" + current_display_line.line_number + "-" + current_display_move);
-       highlighted_move.addClass('highlight'); 
-
        var hiddenboard = chess_from(current_display_line.start_fen, current_display_line.pretty_pv, current_display_move);
        board.position(hiddenboard.fen());
        update_imbalance(hiddenboard.fen());
@@ -1531,7 +1554,7 @@ var init = function() {
        $(window).resize(function() {
                board.resize();
                update_sparkline(displayed_analysis_data || current_analysis_data);
-               update_highlight();
+               update_board_highlight();
                redraw_arrows();
        });
        $(window).keyup(function(event) {