UNPKG

onix-chess-game

Version:
290 lines (288 loc) 14.8 kB
"use strict"; 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