X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=c18349378cd2aac2c592246c9e7d764de5c86da7;hb=511873c4d33587bbbccaa595f015143ecd1b821e;hp=e7a0453fd90569488cb10a761a6ac7830e8967ab;hpb=c17cb0c030ad2b4eb8493fbbc6aba34b68afacb6;p=remoteglot diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index e7a0453..c183493 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -48,8 +48,8 @@ var highlight_to = undefined; /** @type {?jQuery} @private */ var highlighted_move = null; -/** @type {!number} @private */ -var unique = Math.random(); +/** @type {?number} @private */ +var unique = null; /** The current position on the board, represented as a FEN string. * @type {?string} @@ -76,6 +76,28 @@ var current_display_line = null; /** @type {?number} @private */ var current_display_move = null; +var supports_html5_storage = function() { + try { + return 'localStorage' in window && window['localStorage'] !== null; + } catch (e) { + return false; + } +} + +// Make the unique token persistent so people refreshing the page won't count twice. +// Of course, you can never fully protect against people deliberately wanting to spam. +var get_unique = function() { + var use_local_storage = supports_html5_storage(); + if (use_local_storage && localStorage['unique']) { + return localStorage['unique']; + } + var unique = Math.random(); + if (use_local_storage) { + localStorage['unique'] = unique; + } + return unique; +} + var request_update = function() { $.ajax({ url: "http://analysis.sesse.net/analysis.pl?ims=" + ims + "&unique=" + unique @@ -407,16 +429,13 @@ var add_pv = function(fen, uci_pv, pretty_pv, move_num, toplay, opt_limit, opt_s var print_pv = function(line_num, pretty_pv, move_num, toplay, opt_limit, opt_showlast) { var pv = ''; var i = 0; - if (opt_limit && opt_showlast) { + if (opt_limit && opt_showlast && pretty_pv.length > opt_limit) { // Truncate the PV at the beginning (instead of at the end). // We assume here that toplay is 'W'. We also assume that if // opt_showlast is set, then it is the history, and thus, // the UI should be to expand the history. pv = '(…) '; i = pretty_pv.length - opt_limit; - if (i < 0) { - i = 0; - } if (i % 2 == 1) { ++i; } @@ -812,6 +831,8 @@ var update_displayed_line = function() { } var init = function() { + unique = get_unique(); + // Create board. board = new window.ChessBoard('board', 'start'); hiddenboard = new window.ChessBoard('hiddenboard', 'start');