X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=60468bd5af305c2573724c42bf7464c9f91cd1a0;hp=c9b6772cf776952814b80bedf173ca5323965aa2;hb=b019f541610f0f8b993d38b0dd8a4f6df0f0a5f8;hpb=a13ff357bb0ecd37f889690e4e019d474b3c0c5c diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index c9b6772..60468bd 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -899,13 +899,15 @@ var update_game_list = function(games) { // This game. game_span.appendChild(game_name); - var score; - if (current_analysis_data['position']['result']) { - score = " (" + current_analysis_data['position']['result'] + ")"; - } else { - score = " (" + format_short_score(current_analysis_data['score']) + ")"; + if (current_analysis_data && current_analysis_data['position']) { + var score; + if (current_analysis_data['position']['result']) { + score = " (" + current_analysis_data['position']['result'] + ")"; + } else { + score = " (" + format_short_score(current_analysis_data['score']) + ")"; + } + game_span.appendChild(document.createTextNode(score)); } - game_span.appendChild(document.createTextNode(score)); } else { // Some other game. var game_a = document.createElement("a"); @@ -1291,6 +1293,8 @@ var update_clock = function() { clearTimeout(clock_timer); var data = displayed_analysis_data || current_analysis_data; + if (!data) return; + if (data['position']) { var result = data['position']['result']; if (result === '1-0') { @@ -1677,12 +1681,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; } @@ -1702,18 +1711,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()); } /**