X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=e3b3202d14183250bbb840be05803a4481e0d9f8;hp=b6076f4006e9d87034d553c6e7556031802fcff7;hb=64038487a71aa51ab6906275f3752c5821c4a931;hpb=d34683e228fef0efe646611ae42032bea22c583a diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index b6076f4..e3b3202 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -7,7 +7,7 @@ * @type {Number} * @const * @private */ -var SCRIPT_VERSION = 2016032200; +var SCRIPT_VERSION = 2016032201; /** * The current backend URL. @@ -48,7 +48,8 @@ var displayed_analysis_data = null; * name: string, * url: string, * id: string, - * score: Object + * score: =Object, + * result: =string, * }>} * @private */ @@ -897,7 +898,12 @@ var update_game_list = function(games) { game_span.appendChild(game_a); } - var score = " (" + format_short_score(game['score']) + ")"; + var score; + if (game['result']) { + score = " (" + game['result'] + ")"; + } else { + score = " (" + format_short_score(game['score']) + ")"; + } game_span.appendChild(document.createTextNode(score)); games_div.appendChild(game_span); @@ -946,11 +952,10 @@ var update_board = function() { if (current_data['games']) { current_games = current_data['games']; possibly_switch_game_from_hash(); - update_game_list(current_data['games']); } else { current_games = null; - update_game_list(null); } + update_game_list(current_games); // The headline. Names are always fetched from current_data; // the rest can depend a bit. @@ -1028,8 +1033,10 @@ var update_board = function() { // The contains a very brief headline. var title_elems = []; - if (data['score']) { - title_elems.push(format_short_score(data['score']).replace(/^ /, "")); + if (data['position'] && data['position']['result']) { + title_elems.push(data['position']['result']); + } else if (data['score']) { + title_elems.push(format_short_score(data['score'])); } if (last_move !== null) { title_elems.push(last_move); @@ -1078,7 +1085,7 @@ var update_board = function() { update_clock(); // The score. - if (current_display_line) { + if (current_display_line && !current_display_line_is_history) { if (current_display_line.score) { $("#score").text(format_long_score(current_display_line.score)); } else { @@ -1511,6 +1518,24 @@ var next_move = function() { } window['next_move'] = next_move; +var next_game = function() { + if (current_games === null) { + return; + } + + // Try to find the game we are currently looking at. + for (var game_num = 0; game_num < current_games.length; ++game_num) { + var game = current_games[game_num]; + if (game['url'] === backend_url) { + var next_game_num = (game_num + 1) % current_games.length; + switch_backend(current_games[next_game_num]['url'], current_games[next_game_num]['hashurl']); + return; + } + } + + // Couldn't find it; give up. +} + var update_historic_analysis = function() { if (!current_display_line_is_history) { return; @@ -1905,14 +1930,6 @@ var onSnapEnd = function(source, target) { } // End of dragging-related code. -var pad = function(val, num_digits) { - var s = val.toString(); - while (s.length < num_digits) { - s = " " + s; - } - return s; -} - var fmt_cp = function(v) { if (v === 0) { return "0.00"; @@ -1930,9 +1947,9 @@ var format_short_score = function(score) { } if (score[0] === 'm') { if (score[2]) { // Is a bound. - return score[2] + "\u00a0M" + pad(score[1], 3); + return score[2] + "\u00a0M " + score[1]; } else { - return "M" + pad(score[1], 3); + return "M " + score[1]; } } else if (score[0] === 'd') { return "TB draw"; @@ -1940,7 +1957,7 @@ var format_short_score = function(score) { if (score[2]) { // Is a bound. return score[2] + "\u00a0" + fmt_cp(score[1]); } else { - return pad(fmt_cp(score[1]), 5); + return fmt_cp(score[1]); } } return null; @@ -2085,10 +2102,17 @@ var init = function() { redraw_arrows(); }); $(window).keyup(function(event) { - if (event.which == 39) { + if (event.which == 39) { // Left arrow. next_move(); - } else if (event.which == 37) { + } else if (event.which == 37) { // Right arrow. prev_move(); + } else if (event.which >= 49 && event.which <= 57) { // 1-9. + var num = event.which - 49; + if (current_games && current_games.length >= num) { + switch_backend(current_games[num]['url'], current_games[num]['hashurl']); + } + } else if (event.which == 78) { // N. + next_game(); } }); window.addEventListener('hashchange', possibly_switch_game_from_hash, false);