var board = null;
var history = [];
var move_override = 0;
+var includetransp = true;
var entity_map = {
"&": "&",
});
}
-var get_game = function() {
+var get_game = function(skip_last_move) {
+ var moves_to_drop = 0;
+ if (skip_last_move === true) {
+ moves_to_drop = 1;
+ }
+
var game = new Chess();
- for (var i = 0; i < move_override; ++i) {
+ for (var i = 0; i < move_override - moves_to_drop; ++i) {
game.move(history[i]);
}
return game;
if (i % 2 == 0) {
text += (i/2 + 1) + ". ";
}
- if (i == move_override) {
+ if (i + 1 == move_override) {
text += '<strong>' + history[i] + '</strong>';
} else {
- text += '<a href="javascript:set_move(' + i + ')">' + history[i] + '</a>';
+ text += '<a href="javascript:set_move(' + (i + 1) + ')">' + history[i] + '</a>';
}
text += " ";
}
var game = get_game();
board.position(game.fen());
+
+ var all_moves = game.history({ verbose: true });
+ if (all_moves.length > 0) {
+ var last_move = all_moves.pop();
+ var highlight_from = last_move.from;
+ var highlight_to = last_move.to;
+ $("#board").find('.square-55d63').removeClass('nonuglyhighlight');
+ $("#board").find('.square-' + highlight_from).addClass('nonuglyhighlight');
+ $("#board").find('.square-' + highlight_to).addClass('nonuglyhighlight');
+ }
+
fetch_analysis();
}
var fetch_analysis = function() {
var game = get_game();
+ var fen = game.fen();
$.ajax({
- url: "/opening-stats.pl?fen=" + encodeURIComponent(game.fen())
+ url: "/opening-stats.pl?fen=" + encodeURIComponent(fen) +
+ ";includetransp=" + (includetransp ? 1 : 0)
}).done(function(data, textstatus, xhr) {
show_lines(data, game);
});
}
var lines = [];
+ var transpose_only = [];
for (var i = 0; i < moves.length; ++i) {
var move = moves[i];
var line = [];
var black = parseInt(move['black']);
line.push(move['move']); // Move.
+ transpose_only.push(move['transpose_only']);
var num = white + draw + black;
line.push(num); // N.
line.push(num / total_num); // %.
if (line[0] === undefined) {
$(tr).addClass("totals");
+ } else if (transpose_only[i]) {
+ $(tr).addClass("transponly");
}
for (var j = 0; j < line.length; ++j) {
}
}
+var set_includetransp = function(value) {
+ includetransp = value;
+ update();
+}
+window['set_includetransp'] = set_includetransp;
+
var make_move = function(move) {
if (move_override < history.length && history[move_override] == move) {
// User effectively only moved forward in history.
history.push(new_history[i].san);
}
move_override = history.length;
- update();
};
// update the board position after the piece snap
var onSnapEnd = function() {
var game = get_game();
board.position(game.fen());
- fetch_analysis();
+ update();
};
var init = function() {