diff --git a/ui/analyse/src/study/multiBoard.ts b/ui/analyse/src/study/multiBoard.ts index 86bf465f118d9..3a66eba0856ce 100644 --- a/ui/analyse/src/study/multiBoard.ts +++ b/ui/analyse/src/study/multiBoard.ts @@ -15,6 +15,7 @@ import { h } from 'snabbdom'; import { storage, storedBooleanProp } from 'common/storage'; import { Chessground as makeChessground } from 'chessground'; import { EMPTY_BOARD_FEN } from 'chessops/fen'; +import { resultTag } from './studyView'; export class MultiBoardCtrl { playing: Toggle; @@ -321,11 +322,15 @@ const computeTimeLeft = (preview: ChapterPreview, color: Color): number | undefi }; const boardPlayer = (preview: ChapterPreview, color: Color, showResults?: boolean) => { - const outcome = preview.status && preview.status !== '*' ? preview.status : undefined; - const player = preview.players?.[color], + const outcome = preview.status && preview.status !== '*' ? preview.status : undefined, + player = preview.players?.[color], score = outcome?.split('-')[color === 'white' ? 0 : 1]; return h('span.mini-game__player', [ player && renderUser(player), - showResults ? (score ? h('span.mini-game__result', score) : renderClock(preview, color)) : undefined, + showResults + ? score + ? h(`${resultTag(score)}.mini-game__result`, score) + : renderClock(preview, color) + : undefined, ]); }; diff --git a/ui/analyse/src/study/playerBars.ts b/ui/analyse/src/study/playerBars.ts index 4e0e7f2cbea41..bf92f366b6c65 100644 --- a/ui/analyse/src/study/playerBars.ts +++ b/ui/analyse/src/study/playerBars.ts @@ -10,6 +10,7 @@ import RelayPlayers, { fidePageLinkAttrs } from './relay/relayPlayers'; import { StudyCtrl } from './studyDeps'; import { intersection } from 'tree/path'; import { defined } from 'common'; +import { resultTag } from './studyView'; export default function (ctrl: AnalyseCtrl): VNode[] | undefined { const study = ctrl.study; @@ -57,10 +58,10 @@ function renderPlayer( relayPlayers?: RelayPlayers, ): VNode { const showResult: boolean = - !defined(ctrl.study?.relay) || - ctrl.study?.multiBoard.showResults() || - ctrl.node.ply == ctrl.tree.lastPly(); - const player = players?.[color], + !defined(ctrl.study?.relay) || + ctrl.study?.multiBoard.showResults() || + ctrl.node.ply == ctrl.tree.lastPly(), + player = players?.[color], fideId = parseInt(findTag(tags, `${color}fideid`) || ''), team = findTag(tags, `${color}team`), rating = showRatings && player?.rating, @@ -68,7 +69,7 @@ function renderPlayer( top = ctrl.bottomColor() !== color; return h(`div.study__player.study__player-${top ? 'top' : 'bot'}`, { class: { ticking } }, [ h('div.left', [ - result && h('span.result', result), + result && h(`${resultTag(result)}.result`, result), h('span.info', [ team ? h('span.team', team) : undefined, playerFed(player?.fed), diff --git a/ui/analyse/src/study/relay/relayGames.ts b/ui/analyse/src/study/relay/relayGames.ts index ed50e447e6aba..5daa9a2bb38d9 100644 --- a/ui/analyse/src/study/relay/relayGames.ts +++ b/ui/analyse/src/study/relay/relayGames.ts @@ -7,6 +7,7 @@ import type { ChapterPreview } from '../interfaces'; import { gameLinkAttrs } from '../studyChapters'; import { playerFed } from '../playerBars'; import { h } from 'snabbdom'; +import { resultTag } from '../studyView'; export const gamesList = (study: StudyCtrl, relay: RelayCtrl) => { const chapters = study.chapters.list.all(); @@ -59,7 +60,7 @@ export const gamesList = (study: StudyCtrl, relay: RelayCtrl) => { playerFed(p.fed), h('span.name', [userTitle(p), p.name]), ]), - showResults ? h(s === '1' ? 'good' : s === '0' ? 'bad' : 'status', [s]) : null, + showResults ? h(resultTag(s), [s]) : null, ] : [h('span.mini-game__user', h('span.name', 'Unknown player'))], ); diff --git a/ui/analyse/src/study/studyView.ts b/ui/analyse/src/study/studyView.ts index e443e3bdca9fb..958b58835f332 100644 --- a/ui/analyse/src/study/studyView.ts +++ b/ui/analyse/src/study/studyView.ts @@ -270,3 +270,5 @@ export function underboard(ctrl: AnalyseCtrl): MaybeVNodes { } return [notifView(study.notif), descView(study, true), descView(study, false), buttons(ctrl), panel]; } + +export const resultTag = (s: any) => (s === '1' ? 'good' : s === '0' ? 'bad' : 'status');