]> git.sesse.net Git - remoteglot-book/blobdiff - www/js/book.js
Rename the moves variable so it doesn't clash anymore.
[remoteglot-book] / www / js / book.js
index 796b04ed8b8d7e3caa5fed7433b0cf1430e7d135..d95b6e8acdd6e3f1040b76d78ac80b05ed55c274 100644 (file)
@@ -1,13 +1,27 @@
 (function() {
 
 var board = null;
-var moves = [];
+var history = [];
 var move_override = 0;
 
+var entity_map = {
+       "&": "&",
+       "<": "&lt;",
+       ">": "&gt;",
+       '"': '&quot;',
+       "'": '&#39;',
+};
+
+function escape_html(string) {
+       return String(string).replace(/[&<>"']/g, function (s) {
+               return entity_map[s];
+       });
+}
+
 var get_game = function() {
        var game = new Chess();
        for (var i = 0; i < move_override; ++i) {
-               game.move(moves[i]);
+               game.move(history[i]);
        }
        return game;
 }
@@ -61,6 +75,25 @@ var direction = 1;
 var show_lines = function(data, game) {
        var moves = data['moves'];
        $('#numviewers').text(data['opening']);
+
+       if (data['root_game']) {
+               var text = escape_html(data['root_game']['white']);
+               if (data['root_game']['white_elo']) {
+                       text += " (" + escape_html(data['root_game']['white_elo']) + ")";
+               }
+               text += " &ndash; " + escape_html(data['root_game']['black']);
+               if (data['root_game']['black_elo']) {
+                       text += " (" + escape_html(data['root_game']['black_elo']) + ")";
+               }
+               text += " &nbsp;" + escape_html(data['root_game']['result']).replace(/-/, "&ndash;") + "<br />";
+               if (data['root_game']['eco']) {
+                       text += "[" + escape_html(data['root_game']['eco']) + "] ";
+               }
+               text += "(" + data['root_game']['moves'] + ") ";
+               text += escape_html(data['root_game']['event']) + " &nbsp;" + escape_html(data['root_game']['date']);
+               $('#gamesummary').html(text);
+       }
+
        var total_num = 0;
        for (var i = 0; i < moves.length; ++i) {
                var move = moves[i];
@@ -144,6 +177,10 @@ var show_lines = function(data, game) {
                var line = lines[i];
                var tr = document.createElement("tr");
 
+               if (line[0] === undefined || line[0] === null) {
+                       $(tr).addClass("totals");
+               }
+
                for (var j = 0; j < line.length; ++j) {
                        if (line[j] === null) {
                                add_td(tr, "");
@@ -169,9 +206,9 @@ var show_lines = function(data, game) {
 }
 
 var make_move = function(move) {
-       moves.length = move_override;
-       moves.push(move);
-       move_override = moves.length;
+       history.length = move_override;
+       history.push(move);
+       move_override = history.length;
        update();
 }
 window['make_move'] = make_move;
@@ -185,7 +222,7 @@ var prev_move = function() {
 window['prev_move'] = prev_move;
 
 var next_move = function() {
-       if (move_override < moves.length) {
+       if (move_override < history.length) {
                ++move_override;
                update();
        }
@@ -214,8 +251,8 @@ var onDrop = function(source, target) {
        // illegal move
        if (move === null) return 'snapback';
 
-       moves = game.history({ verbose: true });
-       move_override = moves.length;
+       history = game.history({ verbose: true });
+       move_override = history.length;
 };
 
 // update the board position after the piece snap