X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=f84ff3aa7ea3ffea87b64dd4aa62ea264d431b6d;hb=5e2a00b0369a4deb704da26cecc553d081bc738e;hp=0cca9fa3dbc1e58ee15718dc87f5f4b80ac2ccf1;hpb=a87944ae9bedc34049b01e584b0a8ab7fccdc767;p=remoteglot diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index 0cca9fa..f84ff3a 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -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 */ @@ -216,7 +218,7 @@ var request_update = function() { possibly_play_sound(current_analysis_data, new_data); current_analysis_data = new_data; - update_board(current_analysis_data, displayed_analysis_data); + update_board(); update_num_viewers(num_viewers); // Next update. @@ -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) { @@ -790,12 +795,11 @@ var possibly_switch_game_from_hash = function() { } } -/** - * @param {Object} data - * @param {?Object} display_data +/** Update all the HTML on the page, based on current global state. */ -var update_board = function(current_data, display_data) { - var data = display_data || current_data; +var update_board = function() { + var data = displayed_analysis_data || current_analysis_data; + var current_data = current_analysis_data; // Convenience alias. display_lines = []; @@ -875,7 +879,7 @@ var update_board = function(current_data, display_data) { } var last_move; - if (display_data) { + if (displayed_analysis_data) { // Displaying some non-current position, pick out the last move // from the history. This will work even if the fetch failed. last_move = format_halfmove_with_number( @@ -924,7 +928,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"); @@ -937,6 +941,7 @@ var update_board = function(current_data, display_data) { update_refutation_lines(); clear_arrows(); update_displayed_line(); + update_move_highlight(); return; } @@ -971,6 +976,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'])); @@ -1327,7 +1333,7 @@ var show_line = function(line_num, move_num) { // TODO: Support exiting to history position if we are in an // analysis line of a history position. displayed_analysis_data = null; - update_board(current_analysis_data, displayed_analysis_data); + update_board(); } } else { current_display_line = display_lines[line_num]; @@ -1337,7 +1343,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; @@ -1348,6 +1354,7 @@ var prev_move = function() { } update_historic_analysis(); update_displayed_line(); + update_move_highlight(); } window['prev_move'] = prev_move; @@ -1357,6 +1364,7 @@ var next_move = function() { } update_historic_analysis(); update_displayed_line(); + update_move_highlight(); } window['next_move'] = next_move; @@ -1366,7 +1374,7 @@ var update_historic_analysis = function() { } if (current_display_move == current_display_line.pretty_pv.length - 1) { displayed_analysis_data = null; - update_board(current_analysis_data, displayed_analysis_data); + update_board(); } // Fetch old analysis for this line if it exists. @@ -1378,14 +1386,14 @@ var update_historic_analysis = function() { url: filename }).done(function(data, textstatus, xhr) { displayed_analysis_data = data; - update_board(current_analysis_data, displayed_analysis_data); + update_board(); }).fail(function(jqXHR, textStatus, errorThrown) { if (textStatus === "abort") { // Aborted because we are switching backends. Don't do anything; // we will already have been cleared. } else { displayed_analysis_data = {'failed': true}; - update_board(current_analysis_data, displayed_analysis_data); + update_board(); } }); } @@ -1425,10 +1433,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(); @@ -1451,9 +1468,6 @@ var update_displayed_line = function() { $("#nextmove").html("Next"); } - 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()); @@ -1539,7 +1553,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) {