X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=303f148a2226a845179a8c23bc85e1e916114c0d;hp=34fa7f77082833d0998cfed7bf3479fabd3c0ce9;hb=35c3d5a5717df69ce7ce349d5e91fa93ba32cd0c;hpb=3bd754b0cfc4637b89ae73b5b95e9dce71ea00d5 diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index 34fa7f7..303f148 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -2,15 +2,19 @@ var board = []; var arrows = []; var arrow_targets = []; var occupied_by_arrows = []; +var ims = 0; var highlight_from = undefined; var highlight_to = undefined; +var unique = Math.random(); var request_update = function(board, first) { $.ajax({ - //url: "http://analysis.sesse.net/analysis.pl?first=" + first - url: "http://analysis.sesse.net:5000/analysis.pl?first=" + first - }).done(function(data) { - update_board(board, data); + url: "http://analysis.sesse.net/analysis.pl?ims=" + ims + "&unique=" + unique + //url: "http://analysis.sesse.net:5000/analysis.pl?ims=" + ims + "&unique=" + unique + }).done(function(data, textstatus, xhr) { + ims = xhr.getResponseHeader('X-Remoteglot-Last-Modified'); + var num_viewers = xhr.getResponseHeader('X-Remoteglot-Num-Viewers'); + update_board(board, data, num_viewers); }); } @@ -94,18 +98,18 @@ var position_arrow = function(arrow) { var line_width = arrow.line_width * zoom_factor; var arrow_size = arrow.arrow_size * zoom_factor; - var square_width = Math.floor(($("#board").width() - 1) / 8); - var from_y = (7 - arrow.from_row + 0.5)*square_width + 1; - var to_y = (7 - arrow.to_row + 0.5)*square_width + 1; - var from_x = (arrow.from_col + 0.5)*square_width + 1; - var to_x = (arrow.to_col + 0.5)*square_width + 1; + var square_width = $(".square-a8").width(); + var from_y = (7 - arrow.from_row + 0.5)*square_width; + var to_y = (7 - arrow.to_row + 0.5)*square_width; + var from_x = (arrow.from_col + 0.5)*square_width; + var to_x = (arrow.to_col + 0.5)*square_width; var dx = to_x - from_x; var dy = to_y - from_y; var len = Math.sqrt(dx * dx + dy * dy); dx /= len; dy /= len; - var pos = $("#board").position(); + var pos = $(".square-a8").position(); $("#" + arrow.s1).css({ top: pos.top + from_y + (0.5 * arrow_size) * dy, left: pos.left + from_x + (0.5 * arrow_size) * dx }); $("#" + arrow.d1).css({ top: pos.top + to_y - (0.5 * arrow_size) * dy, left: pos.left + to_x - (0.5 * arrow_size) * dx }); $("#" + arrow.s1v).css({ top: pos.top + from_y - 0 * dy, left: pos.left + from_x - 0 * dx }); @@ -196,7 +200,7 @@ var find_nonstupid_moves = function(data, margin) { var best_score = undefined; var pv_score = undefined; for (var move in data.refutation_lines) { - var score = data.refutation_lines[move].score_sort_key; + var score = parseInt(data.refutation_lines[move].score_sort_key); if (move == data.pv_uci[0]) { pv_score = score; } @@ -216,12 +220,12 @@ var find_nonstupid_moves = function(data, margin) { // The PV move will always be first. var moves = []; for (var move in data.refutation_lines) { - var score = data.refutation_lines[move].score_sort_key; + var score = parseInt(data.refutation_lines[move].score_sort_key); if (move != data.pv_uci[0] && best_score - score <= margin) { moves.push(move); } } - moves = moves.sort(function(a, b) { return data.refutation_lines[b].score_sort_key - data.refutation_lines[a].score_sort_key; }); + moves = moves.sort(function(a, b) { return parseInt(data.refutation_lines[b].score_sort_key) - parseInt(data.refutation_lines[a].score_sort_key); }); moves.unshift(data.pv_uci[0]); return moves; @@ -275,7 +279,7 @@ var update_highlight = function() { } } -var update_board = function(board, data) { +var update_board = function(board, data, num_viewers) { // The headline. var headline = 'Analysis'; if (data.position.last_move !== 'none') { @@ -288,6 +292,14 @@ var update_board = function(board, data) { $("#headline").text(headline); + if (num_viewers === null) { + $("#numviewers").text(""); + } else if (num_viewers == 1) { + $("#numviewers").text("You are the only current viewer"); + } else { + $("#numviewers").text(num_viewers + " current viewers"); + } + // The score. if (data.score !== null) { $("#score").text(data.score);