lila/ui/lobby/src/view/playing.ts

51 lines
1.6 KiB
TypeScript

import { h } from 'snabbdom';
import { Chessground } from 'chessground';
import LobbyController from '../ctrl';
function timer(pov) {
return h('time', window.timeago().format(Date.now() + pov.secondsLeft * 1000));
}
export default function(ctrl: LobbyController) {
return h('div#now_playing',
ctrl.data.nowPlaying.map(function(pov) {
return h('a.mini_board.is2d.' + pov.variant.key + (pov.isMyTurn ? '.my_turn' : ''), {
key: pov.gameId,
attrs: { href: '/' + pov.fullId }
}, [
h('div', [
h('div.cg-board-wrap', {
hook: {
insert(vnode) {
const lm = pov.lastMove;
const config = {
coordinates: false,
drawable: { enabled: false },
resizable: false,
viewOnly: true,
orientation: pov.variant.key === 'racingKings' ? 'white' : pov.color,
fen: pov.fen,
lastMove: lm && [lm[0] + lm[1], lm[2] + lm[3]]
};
Chessground(vnode.elm as HTMLElement, config);
}
}
}, [ h('div.cg-board') ])
]),
h('span.meta', [
pov.opponent.ai ? ctrl.trans('aiNameLevelAiLevel', 'Stockfish', pov.opponent.ai) : pov.opponent.username,
h('span.indicator',
pov.isMyTurn ?
(pov.secondsLeft ? timer(pov) : ctrl.trans('yourTurn')) :
h('span', {
hook: {
insert(vnode) {
(vnode.elm as HTMLElement).innerHTML = ' ';
}
}
}))
])
]);
}));
}