101 lines
3.6 KiB
HTML
101 lines
3.6 KiB
HTML
@(pov: Pov, initialFen: Option[String], tour: Option[lila.tournament.MiniStanding], simul: Option[lila.simul.Simul], userTv: Option[User] = None, bookmarked: Boolean)(implicit ctx: Context)
|
|
|
|
@import pov._
|
|
|
|
<div class="side">
|
|
<div class="side_box padded">
|
|
<div class="game_infos" data-icon="@gameIcon(game)">
|
|
<div class="header">
|
|
<span class="setup">
|
|
@bookmark.toggle(game, bookmarked)
|
|
@if(game.imported) {
|
|
<a class="hint--top" href="@routes.Importer.importGame" data-hint="@trans.importGame()">IMPORT</a>
|
|
•
|
|
@if(game.variant.exotic) {
|
|
@variantLink(game.variant, (if (game.variant == chess.variant.KingOfTheHill) game.variant.shortName else game.variant.name).toUpperCase, cssClass = "hint--top", initialFen = initialFen)
|
|
} else {
|
|
@game.variant.name.toUpperCase
|
|
}
|
|
} else {
|
|
@game.clock.map(_.config.show).getOrElse {
|
|
@game.daysPerTurn.map { days =>
|
|
<span data-hint="@trans.correspondence()" class="hint--top">@{(days == 1).fold(trans.oneDay(), trans.nbDays.pluralSame(days))}</span>
|
|
}.getOrElse {
|
|
<span data-hint="@trans.unlimited()" class="hint--top">∞</span>
|
|
}
|
|
} •
|
|
@if(game.variant.exotic) {
|
|
@variantLink(game.variant, (if (game.variant == chess.variant.KingOfTheHill) game.variant.shortName else game.variant.name).toUpperCase, cssClass = "hint--top", initialFen = initialFen)
|
|
} else {
|
|
@game.perfType.map { pt =>
|
|
<span class="hint--top" data-hint="@pt.title">@pt.name.toUpperCase</span>
|
|
}
|
|
} • @game.rated.fold(trans.rated.txt(), trans.casual.txt()).toUpperCase
|
|
}
|
|
</span>
|
|
@game.pgnImport.flatMap(_.date).getOrElse(
|
|
game.isBeingPlayed.fold(trans.playingRightNow(), momentFromNow(game.createdAt))
|
|
)
|
|
</div>
|
|
@game.pgnImport.flatMap(_.date).map { date =>
|
|
Imported
|
|
@game.pgnImport.flatMap(_.user).map { user =>
|
|
by
|
|
@userIdLink(user.some, None, false)
|
|
<br />
|
|
}
|
|
}
|
|
</div>
|
|
<div class="players">
|
|
@List(game.whitePlayer, game.blackPlayer).map { p =>
|
|
<div class="player color-icon is @{p.color.name}">
|
|
@playerLink(p, withOnline = false, withDiff = true, withBerserk = true)
|
|
</div>
|
|
}
|
|
</div>
|
|
@if(game.finishedOrAborted) {
|
|
<div class="status">
|
|
@gameEndStatus(game)
|
|
@game.winner.map { winner =>
|
|
• @winner.color.fold(trans.whiteIsVictorious(), trans.blackIsVictorious())
|
|
}
|
|
</div>
|
|
}
|
|
@if(game.variant.chess960) {
|
|
@initialFen.map { fen =>
|
|
@chess.variant.Chess960.positionNumber(fen).map { number =>
|
|
Chess960 start position: <strong>@number</strong>
|
|
}
|
|
}
|
|
}
|
|
</div>
|
|
|
|
@userTv.map { u =>
|
|
<div class="side_box">
|
|
<h2 class="top user_tv text" data-user-tv="@u.id" data-icon="1">@u.titleUsername</h2>
|
|
</div>
|
|
}
|
|
|
|
@tour match {
|
|
case Some(m) if !m.tour.isCreated => { @tournament.gameStanding(m) }
|
|
case Some(m) => {
|
|
<div class="game_tournament side_box no_padding">
|
|
<p class="top text" data-icon="g"><a href="@routes.Tournament.show(m.tour.id)">@m.tour.fullName</a></p>
|
|
</div>
|
|
}
|
|
case _ => {
|
|
@game.tournamentId.map { tourId =>
|
|
<div class="game_tournament side_box no_padding">
|
|
<p class="top text" data-icon="g"><a href="@routes.Tournament.show(tourId)">@tournamentIdToName(tourId)</a></p>
|
|
</div>
|
|
}
|
|
}
|
|
}
|
|
|
|
@simul.map { sim =>
|
|
<div class="game_simul side_box no_padding">
|
|
<p class="top text" data-icon="|"><a href="@routes.Simul.show(sim.id)">@sim.fullName</a></p>
|
|
</div>
|
|
}
|
|
</div>
|