X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=673fd12eacb0e3cf9a2e7b4b5c8b4f330d81a389;hp=30f2d061dda1c9dcf0d217d1879f3b0052c68732;hb=243c535dd2efc9d8126aa6c153292d8253239dd9;hpb=4f754b372829496a9f53eb52923446cc2a0398c1 diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index 30f2d06..673fd12 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -252,7 +252,9 @@ var sync_server_clock = function(server_date_string) { var clear_arrows = function() { for (var i = 0; i < arrows.length; ++i) { if (arrows[i].svg) { - arrows[i].svg.parentElement.removeChild(arrows[i].svg); + if (arrows[i].svg.parentElement) { + arrows[i].svg.parentElement.removeChild(arrows[i].svg); + } delete arrows[i].svg; } } @@ -367,7 +369,9 @@ var point_from_end = function(x1, y1, x2, y2, t, u) { var position_arrow = function(arrow) { if (arrow.svg) { - arrow.svg.parentElement.removeChild(arrow.svg); + if (arrow.svg.parentElement) { + arrow.svg.parentElement.removeChild(arrow.svg); + } delete arrow.svg; } if (current_display_line !== null && !current_display_line_is_history) { @@ -734,6 +738,28 @@ var update_board = function(current_data, display_data) { } update_history(); + // Games currently in progress, if any. + $("#games").text(""); + if (current_data['games']) { + var games_div = document.getElementById('games'); + for (var game_num = 0; game_num < current_data['games'].length; ++game_num) { + var game = current_data['games'][game_num]; + var game_span = document.createElement("span"); + game_span.setAttribute("class", "game"); + + var game_name = document.createTextNode(game['name']); + if (game['url'] === backend_url) { + game_span.appendChild(game_name); + } else { + var game_a = document.createElement("a"); + game_a.setAttribute("href", "javascript:switch_backend('" + game['url'] + "')"); + game_a.appendChild(game_name); + game_span.appendChild(game_a); + } + games_div.appendChild(game_span); + } + } + // The headline. Names are always fetched from current_data; // the rest can depend a bit. var headline; @@ -745,6 +771,50 @@ var update_board = function(current_data, display_data) { headline = 'Analysis'; } + // Credits, where applicable. Note that we don't want the footer to change a lot + // when e.g. viewing history, so if any of these changed during the game, + // use the current one still. + if (current_data['using_lomonosov']) { + $("#lomonosov").show(); + } else { + $("#lomonosov").hide(); + } + + // Credits: The engine name/version. + if (current_data['engine'] && current_data['engine']['name'] !== null) { + $("#engineid").text(current_data['engine']['name']); + } + + // Credits: The engine URL. + if (current_data['engine'] && current_data['engine']['url']) { + $("#engineid").attr("href", current_data['engine']['url']); + } else { + $("#engineid").removeAttr("href"); + } + + // Credits: Engine details. + if (current_data['engine'] && current_data['engine']['details']) { + $("#enginedetails").text(" (" + current_data['engine']['details'] + ")"); + } else { + $("#enginedetails").text(""); + } + + // Credits: Move source, possibly with URL. + if (current_data['move_source'] && current_data['move_source_url']) { + $("#movesource").text("Moves provided by "); + var movesource_a = document.createElement("a"); + movesource_a.setAttribute("href", current_data['move_source_url']); + var movesource_text = document.createTextNode(current_data['move_source']); + movesource_a.appendChild(movesource_text); + var movesource_period = document.createTextNode("."); + document.getElementById("movesource").appendChild(movesource_a); + document.getElementById("movesource").appendChild(movesource_period); + } else if (current_data['move_source']) { + $("#movesource").text("Moves provided by " + current_data['move_source'] + "."); + } else { + $("#movesource").text(""); + } + var last_move; if (display_data) { // Displaying some non-current position, pick out the last move @@ -813,11 +883,6 @@ var update_board = function(current_data, display_data) { update_clock(); - // The engine id. - if (data['id'] && data['id']['name'] !== null) { - $("#engineid").text(data['id']['name']); - } - // The score. if (data['score'] !== null) { $("#score").text(data['score']);