onix-chess-game
Version:
Chess game board
290 lines (288 loc) • 14.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GameInfo = void 0;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const classnames_1 = tslib_1.__importDefault(require("classnames"));
const onix_core_1 = require("onix-core");
const onix_chess_1 = require("onix-chess");
const react_bootstrap_1 = require("react-bootstrap");
const react_1 = require("react");
class GameInfo extends React.Component {
constructor(props) {
super(props);
this.renderDates = (engine) => {
var _a, _b;
let result = null;
const { game, correspondence } = engine.RawData;
if ((engine.Result > 0) && game) {
const from = new Date((_a = game.createdAt) !== null && _a !== void 0 ? _a : 'now');
if (onix_chess_1.isAdvanceClock(correspondence) && correspondence.lastMoveAt) {
const to = new Date(correspondence.lastMoveAt);
const fmt = onix_core_1._("game", "datesFmt");
const diff = to.getTime() - from.getTime();
console.log(diff);
const strDates = (diff > 86400000) ?
onix_core_1.sprintf(fmt, from.toLocaleDateString(), to.toLocaleDateString()) :
onix_core_1.sprintf(fmt, from.toLocaleString(), to.toLocaleString());
result = (React.createElement("span", null, strDates));
}
else {
result = (React.createElement("span", null, onix_core_1._("game", "completeState")));
}
}
if (!result) {
result = (React.createElement("span", null,
onix_core_1._("game", "startDate"),
": ",
React.createElement("span", null, new Date((_b = game === null || game === void 0 ? void 0 : game.createdAt) !== null && _b !== void 0 ? _b : 'now').toLocaleString())));
}
return (React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 }, result)));
};
this.playerDisplay = (player) => {
if (player) {
const { display, name } = player.user;
return (React.createElement("span", { className: "username" }, display !== null && display !== void 0 ? display : name));
}
else {
return null;
}
};
this.winnerName = (engine) => {
if (engine.Result == onix_chess_1.GameResult.Color.White) {
return this.playerDisplay(engine.White);
}
else if (engine.Result == onix_chess_1.GameResult.Color.Black) {
return this.playerDisplay(engine.Black);
}
else {
return null;
}
};
this.looserName = (engine) => {
if (engine.Result == onix_chess_1.GameResult.Color.White) {
return this.playerDisplay(engine.Black);
}
else if (engine.Result == onix_chess_1.GameResult.Color.Black) {
return this.playerDisplay(engine.White);
}
else {
return null;
}
};
this.resultColor = (engine) => {
if (engine.Result == onix_chess_1.GameResult.Color.White) {
return (React.createElement("h4", { className: "result-color white" },
onix_core_1._("game", "whiteWin"),
" (1 \u2013 0)"));
}
else if (engine.Result == onix_chess_1.GameResult.Color.Black) {
return (React.createElement("h4", { className: "result-color black" },
onix_core_1._("game", "blackWin"),
" (0 \u2013 1)"));
}
else {
return (React.createElement("h4", { className: "result-color draw" },
onix_core_1._("game", "drawWin"),
" (\u00BD \u2013 \u00BD)"));
}
};
this.renderResult = (engine) => {
if (engine.Result) {
return (React.createElement(React.Fragment, null, this.resultColor(engine)));
}
else {
return null;
}
};
this.renderState = (engine) => {
let result = null;
const { game } = engine.RawData;
if (game) {
// 'created' | 'new' | 'wait' | 'started' | 'aborted' | 'mate' | 'resign' | 'stalemate' | 'timeout' | 'draw' | 'outoftime' | 'noStart' | 'cheat' | 'variantEnd' | 'paused' | 'external'
const { status } = game;
if (status.name == "created") {
result = (React.createElement("span", null, onix_core_1._("game", "resCreated")));
}
else if (status.name == "new") {
result = (React.createElement("span", null, onix_core_1._("game", "resNew")));
}
else if (status.name == "wait") {
result = (React.createElement("span", null, onix_core_1._("game", "resWait")));
}
else if (status.name == "aborted") {
result = (React.createElement("span", null, onix_core_1._("game", "resAborted")));
}
else if (status.name == "started") {
result = (React.createElement("span", null, onix_core_1._("game", "resStarted")));
}
else if (status.name == "paused") {
result = (React.createElement("span", null, onix_core_1._("game", "resPaused")));
}
else if (status.name == "mate") {
result = (React.createElement("span", null,
this.winnerName(engine),
" ",
onix_core_1._("game", "resCheckmate")));
}
else if (status.name == "resign") {
result = (React.createElement("span", null,
this.looserName(engine),
" ",
onix_core_1._("game", "resResign")));
}
else if (status.name == "outoftime") {
result = (React.createElement("span", null,
this.winnerName(engine),
" ",
onix_core_1._("game", "resOutOfTime")));
}
else if (status.name == "timeout") {
result = (React.createElement("span", null,
this.looserName(engine),
" ",
onix_core_1._("game", "resNotMoved")));
}
else if (status.name == "noStart") {
result = (React.createElement("span", null, onix_core_1._("game", "resNotStarted")));
}
else if (status.name == "cheat") {
result = (React.createElement("span", null, onix_core_1._("game", "resArbiter")));
}
else if (status.name == "draw") {
if (status.subtype == 5) {
result = (React.createElement("span", null, onix_core_1._("game", "resRepeat")));
}
else if (status.subtype == 6) {
result = (React.createElement("span", null, onix_core_1._("game", "res50move")));
}
else if (status.subtype == 7) {
result = (React.createElement("span", null, onix_core_1._("game", "resDrawArbiter")));
}
else if (status.subtype == 8) {
result = (React.createElement("span", null, onix_core_1._("game", "resStalemate")));
}
else if (status.subtype == 9) {
result = (React.createElement("span", null, onix_core_1._("game", "resMaterial")));
}
else {
result = (React.createElement("span", null, onix_core_1._("game", "resDraw")));
}
}
else if (status.name == "stalemate") {
result = (React.createElement("span", null, onix_core_1._("game", "resStalemate")));
}
else {
result = (React.createElement("span", null, onix_core_1._("game", "resEnd")));
}
}
if (result) {
return (React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 }, result)));
}
return null;
};
this.renderTC = (engine) => {
let result = null;
const { correspondence, clock } = engine.RawData;
if (onix_chess_1.isAdvanceClock(correspondence)) {
const canPP = (correspondence.can_pause) ? "canPostpone" : "noPostpone";
const ppClass = [
"label",
"ml-2",
{
"label-default": correspondence.can_pause,
"label-warning": !correspondence.can_pause,
}
];
result = (React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 },
React.createElement("span", null,
React.createElement("span", null, onix_core_1._("game", "timeControl")),
": ",
React.createElement("span", { className: "label" }, correspondence.limit),
React.createElement("span", { className: classnames_1.default(ppClass) }, onix_core_1._("game", canPP))))));
}
if (result) {
return (React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 }, result)));
}
return null;
};
this.renderRZ = (engine) => {
let result = null;
const { game } = engine.RawData;
if (game) {
const rated = (game.rated) ? "ratedGame" : "unratedGame";
if (game.speed == "correspondence") {
const varName = (game.advance) ? "varAdvance" : "varCorrs";
const compName = (game.advance) ? "allow" : "denied";
const ucClass = [
"label",
{
"label-default": !!game.advance,
"label-warning": !game.advance,
}
];
result = (React.createElement(react_1.Fragment, null,
React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 },
React.createElement("span", null,
React.createElement("span", null, onix_core_1._("game", "variantVsSpeed")),
": ",
React.createElement("span", { className: "label" }, onix_core_1._("game", varName)),
React.createElement("span", { className: "label ml-2" }, onix_core_1._("game", rated))))),
React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 },
React.createElement("span", null,
React.createElement("span", null, onix_core_1._("game", "useCompHints")),
": ",
React.createElement("span", { className: classnames_1.default(ucClass) }, onix_core_1._("game", compName)))))));
}
}
return result;
};
this.renderName = (engine) => {
let result = null;
const { game, tournament } = engine.RawData;
if (tournament) {
const url = tournament.round ? `https://www.chess-online.com/tournaments/round/${tournament.round}` : `https://www.chess-online.com/tournaments/${tournament.id}`;
result = (React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 },
React.createElement("span", { className: "lead bold" },
React.createElement("a", { href: url },
React.createElement("span", { className: "p-r-5" },
React.createElement(react_bootstrap_1.OverlayTrigger, { key: tournament.id, overlay: React.createElement(react_bootstrap_1.Tooltip, { id: `tooltip-${tournament.id}` }, onix_core_1._("game", "viewTournTable")) },
React.createElement("i", { className: "xi-grid1" }))),
tournament.name)))));
}
else if (game) {
result = (React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 },
React.createElement("span", { className: "lead bold" }, game.event))));
}
return result;
};
}
render() {
const { props, renderResult, renderDates, renderState, renderRZ, renderTC, renderName } = this;
const { store } = props;
const { game } = store.getState();
const { engine } = game;
return (React.createElement(react_bootstrap_1.Card, { className: "card-transparent" },
renderResult(engine),
renderState(engine),
React.createElement(react_bootstrap_1.Row, null,
React.createElement(react_bootstrap_1.Col, { className: "mb-1", md: 12 }, renderDates(engine))),
renderRZ(engine),
renderTC(engine),
renderName(engine)));
/*
Простая партия
Турнир: нет
*/
}
}
exports.GameInfo = GameInfo;
//# sourceMappingURL=GameInfo.js.map