prune unnamed, no-move games from the drop-down list

This commit is contained in:
Jesse D. McDonald 2020-03-12 16:41:14 -05:00
parent 98ead6724f
commit 5286e9e18f
1 changed files with 66 additions and 47 deletions

View File

@ -24,6 +24,7 @@ let initialBoard = (function (){
'rnbqkbnr', 'rnbqkbnr',
], ],
'player': 'light', 'player': 'light',
'timestamp': new Date().getTime(),
}); });
return function (){ return JSON.parse(init); } return function (){ return JSON.parse(init); }
})(); })();
@ -265,6 +266,8 @@ function movePiece(priorBoard, side, from, to){
var board = cloneJSON(undoBoard); var board = cloneJSON(undoBoard);
board['prior'] = undoBoard; board['prior'] = undoBoard;
board['timestamp'] = new Date().getTime();
board['move'] = { board['move'] = {
'side': normalizeSide(side), 'side': normalizeSide(side),
'type': type, 'type': type,
@ -523,12 +526,14 @@ function putMeta(){
var lightName = $('#cb_light_name').val(); var lightName = $('#cb_light_name').val();
var darkName = $('#cb_dark_name').val(); var darkName = $('#cb_dark_name').val();
var meta = gun.get(PacoSakoUUID).get('meta').get(gameId); var meta = gun.get(PacoSakoUUID).get('meta').get(gameId);
var stat = (board['move'] && board['move']['took'] === 'k') ? 'mate' : null;
meta.put({ meta.put({
'gameId': gameId, 'gameId': gameId,
'lightName': lightName, 'lightName': lightName,
'darkName': darkName, 'darkName': darkName,
'moves': countMoves(board), 'moves': countMoves(board),
'timestamp': new Date().getTime() 'timestamp': board['timestamp'] || new Date().getTime(),
'status': stat,
}); });
} }
@ -720,9 +725,9 @@ $(function (){
$('#cb_light_name').on('input', updateMeta); $('#cb_light_name').on('input', updateMeta);
$('#cb_dark_name').on('input', updateMeta); $('#cb_dark_name').on('input', updateMeta);
gun.get(PacoSakoUUID).get('meta').map().on(function(d){
if (d && d['gameId']) {
function updateTitle(opt){ function updateTitle(opt){
opt = $(opt);
const then = opt.data('then'); const then = opt.data('then');
const now = new Date().getTime(); const now = new Date().getTime();
var age_str = ''; var age_str = '';
@ -734,32 +739,39 @@ $(function (){
age_str = ' (' + Math.floor((now - then) / (60*60*1000)) + 'h)'; age_str = ' (' + Math.floor((now - then) / (60*60*1000)) + 'h)';
} else if ((now - then) < 14*24*60*60*1000) { } else if ((now - then) < 14*24*60*60*1000) {
age_str = ' (' + Math.floor((now - then) / (24*60*60*1000)) + 'd)'; age_str = ' (' + Math.floor((now - then) / (24*60*60*1000)) + 'd)';
} else if (d['gameId'] !== $('#cb_board').data('gameId')) { } else if (opt.data('gameId') !== $('#cb_board').data('gameId')) {
opt.remove(); opt.remove();
return; return;
} }
opt.text(opt.data('title') + age_str); opt.text(opt.data('title') + age_str);
} }
var opt = $('#cb_game_' + d['gameId']); gun.get(PacoSakoUUID).get('meta').map().on(function(d){
if (opt.length === 0) { if (d && d['gameId']) {
opt = $('<option></option>');
opt.attr('id', 'cb_game_' + d['gameId']);
function refreshTitle(){
updateTitle(opt);
window.setTimeout(refreshTitle, 15000);
};
window.setTimeout(refreshTitle, 0);
}
const lightName = d['lightName'] ? d['lightName'] : 'Light'; const lightName = d['lightName'] ? d['lightName'] : 'Light';
const darkName = d['darkName'] ? d['darkName'] : 'Dark'; const darkName = d['darkName'] ? d['darkName'] : 'Dark';
const moves = !d['moves'] ? '' : const moves = !d['moves'] ? '' :
(', ' + d['moves'] + (d['moves'] === 1 ? ' move' : ' moves')); (', ' + d['moves'] + (d['moves'] === 1 ? ' move' : ' moves'));
opt.data('title', lightName + ' vs. ' + darkName + moves); var opt = $('#cb_game_' + d['gameId']);
if (!(d['lightName'] || d['darkName']) && !d['moves'] && d['gameId'] !== $('#cb_board').data('gameId')) {
if (opt.length >= 1) {
opt.remove();
}
} else {
if (opt.length === 0) {
opt = $('<option></option>');
opt.attr('id', 'cb_game_' + d['gameId']);
}
var stat = '';
if (d['status']) {
stat = ', ' + d['status'];
}
opt.data('gameId', d['gameId']);
opt.data('title', lightName + ' vs. ' + darkName + moves + stat);
opt.data('then', d['timestamp'] || new Date().getTime()); opt.data('then', d['timestamp'] || new Date().getTime());
opt.addClass('cb-game-option'); opt.addClass('cb-game-option');
opt.appendTo('#cb_select_game'); opt.appendTo('#cb_select_game');
@ -776,6 +788,7 @@ $(function (){
for (const e of list) { for (const e of list) {
$(e).appendTo(select); $(e).appendTo(select);
} }
}
var selOpt = $('#cb_game_' + $('#cb_board').data('gameId')); var selOpt = $('#cb_game_' + $('#cb_board').data('gameId'));
if (selOpt.length === 1) { if (selOpt.length === 1) {
@ -786,6 +799,12 @@ $(function (){
} }
}); });
window.setInterval(function(){
$('#cb_select_game').first().children('.cb-game-option').each(function(idx,opt){
updateTitle(opt);
});
}, 15000);
window.onpopstate = function(event){ window.onpopstate = function(event){
var gameId = location.hash.replace(/^#\//, ''); var gameId = location.hash.replace(/^#\//, '');
if (gameId.length === 16) { if (gameId.length === 16) {