// fen: string,
// moves: array of Move objects,
// clocks: array of integers,
-// initime: integer (when clock start running),
+// initime: array of integers (when clock start running),
// score: string (several options; '*' == running),
// }
alert("Error while loading database: " + event.target.errorCode);
};
// Create objectStore for vchess->games
- db.createObjectStore("games", { keyPath: "gameId" });
+ let objectStore = db.createObjectStore("games", { keyPath: "gameId" });
+ objectStore.createIndex("score", "score"); //to search by game result
}
}
// TODO: also option to takeback a move ?
// NOTE: for live games only (all on server for corr)
- update: function(gameId, obj) //colorIdx, move, fen, addTime, initime, score
+ update: function(gameId, obj) //colorIdx, nextIdx, move, fen, addTime, score
{
dbOperation((db) => {
let objectStore = db.transaction("games", "readwrite").objectStore("games");
{
game.moves.push(obj.move);
game.fen = obj.fen;
- if (!!obj.addTime) //NaN if first move in game
- game.clocks[obj.colorIdx] += obj.addTime;
+ game.clocks[obj.colorIdx] += obj.addTime;
+ game.initime[obj.nextIdx] = Date.now();
}
- if (!!obj.initime) //just a flag (true)
- game.initime = Date.now();
if (!!obj.score)
game.score = obj.score;
objectStore.put(game); //save updated data
});
},
+ getCurrent: function(callback)
+ {
+ dbOperation((db) => {
+ let objectStore = db.transaction('games').objectStore('games');
+ objectStore.get("*").onsuccess = function(event) {
+ callback(event.target.result);
+ };
+ });
+ },
+
// Delete a game in indexedDB
remove: function(gameId, callback)
{