X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=a49fa8da7a24303d4c03df15a76036558e214097;hp=48f23b00dc15e324735a37c3b5c9a400b1982747;hb=9adc7fcb0912ea7fd3ec11f179107b401f91a247;hpb=c7ae0df4abc9ca2168839e94535c1bd39715a57f diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index 48f23b0..a49fa8d 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -7,7 +7,7 @@ * @type {Number} * @const * @private */ -var SCRIPT_VERSION = 2016032201; +var SCRIPT_VERSION = 2016032202; /** * The current backend URL. @@ -765,7 +765,7 @@ var update_refutation_lines = function() { // Find out where the lines start from. var base_line = []; - var base_scores = []; + var base_scores = display_lines[1].scores; var start_display_move_num = 0; if (hash_refutation_lines) { base_line = current_display_line.pretty_pv.slice(0, current_display_move + 1); @@ -1104,17 +1104,19 @@ var update_board = function() { // The score. if (current_display_line && !current_display_line_is_history) { + var score; if (current_display_line.scores && current_display_line.scores.length > 0) { - var score; for (var i = 0; i < current_display_line.scores.length; ++i) { if (current_display_move < current_display_line.scores[i].first_move) { break; } score = current_display_line.scores[i].score; } + } + if (score) { $("#score").text(format_long_score(score)); } else { - $("#score").text("No score for this move"); + $("#score").text("No score for this line"); } } else if (data['score']) { $("#score").text(format_long_score(data['score'])); @@ -1150,7 +1152,7 @@ var update_board = function() { // Print the PV. $("#pvtitle").text("PV:"); - var scores = [{ first_move: 0, score: data['score'] }]; + var scores = [{ first_move: -1, score: data['score'] }]; $("#pv").html(add_pv(data['position']['fen'], data['pv_pretty'], data['position']['move_num'], data['position']['toplay'], scores, 0)); // Update the PV arrow. @@ -1647,6 +1649,9 @@ var update_move_highlight = function() { display_lines.push(current_display_line); $("#pv").html(print_pv(display_lines.length - 1)); display_line_num = display_lines.length - 1; + + // Clear out the PV, so it's not selected by anything later. + display_lines[1].pretty_pv = []; } highlighted_move = $("#automove" + display_line_num + "-" + (current_display_move - current_display_line.start_display_move_num)); @@ -1681,12 +1686,17 @@ var find_display_line_matching_num = function() { return null; } +/** Update the board based on the currently displayed line. + * + * TODO: This should really be called only whenever something changes, + * instead of all the time. + */ var update_displayed_line = function() { if (current_display_line === null) { $("#linenav").hide(); $("#linemsg").show(); display_fen = base_fen; - board.position(base_fen); + set_board_position(base_fen); update_imbalance(base_fen); return; } @@ -1706,18 +1716,23 @@ var update_displayed_line = function() { } var hiddenboard = chess_from(current_display_line.start_fen, current_display_line.pretty_pv, current_display_move); + set_board_position(hiddenboard.fen()); + if (display_fen !== hiddenboard.fen() && !current_display_line_is_history) { + // Fire off a hash request, since we're now off the main position + // and it just changed. + explore_hash(hiddenboard.fen()); + } display_fen = hiddenboard.fen(); + update_imbalance(hiddenboard.fen()); +} + +var set_board_position = function(new_fen) { board_is_animating = true; var old_fen = board.fen(); - board.position(hiddenboard.fen()); + board.position(new_fen); if (board.fen() === old_fen) { board_is_animating = false; - } else if (!current_display_line_is_history) { - // Fire off a hash request, since we're now off the main position - // and it just changed. - explore_hash(display_fen); } - update_imbalance(hiddenboard.fen()); } /** @@ -1993,6 +2008,9 @@ var format_short_score = function(score) { } var format_long_score = function(score) { + if (!score) { + return "???"; + } if (score[0] === 'm') { if (score[1] > 0) { return "White mates in " + score[1];