import and display player rating - closes #7532

pull/8121/head
Thibault Duplessis 2021-02-08 11:28:35 +01:00
parent be91eb92bf
commit 14c3b80d6d
3 changed files with 24 additions and 9 deletions

View File

@ -141,6 +141,7 @@ trait GameHelper { self: I18nHelper with UserHelper with AiHelper with StringHel
case (_, Some(name)) => name
case _ => trans.anonymous.txt()
},
player.rating.ifTrue(withRating) map { rating => s" ($rating)" },
statusIcon
)
case Some(user) =>

View File

@ -63,8 +63,6 @@ case class Player(
def isProposingTakeback = proposeTakebackAt != 0
def withName(name: String) = copy(name = name.some)
def nameSplit: Option[(String, Option[Int])] =
name map {
case Player.nameSplitRegex(n, r) => n -> r.toIntOption
@ -135,6 +133,19 @@ object Player {
make(color, (u.id, perfPicker(u.perfs)))
}
def makeImported(
color: Color,
name: Option[String],
rating: Option[Int]
): Player =
Player(
id = IdGenerator.player(color),
color = color,
aiLevel = none,
name = name orElse "?".some,
rating = rating
)
case class HoldAlert(ply: Int, mean: Int, sd: Int) {
def suspicious = HoldAlert.suspicious(ply)
}

View File

@ -90,16 +90,19 @@ case class ImportData(pgn: String, analyse: Option[String]) {
val date = parsed.tags.anyDate
def name(whichName: TagPicker, whichRating: TagPicker): String =
parsed.tags(whichName).fold("?") { n =>
n + ~parsed.tags(whichRating).map(e => s" (${e take 8})")
}
val dbGame = Game
.make(
chess = game,
whitePlayer = Player.make(chess.White, None) withName name(_.White, _.WhiteElo),
blackPlayer = Player.make(chess.Black, None) withName name(_.Black, _.BlackElo),
whitePlayer = Player.makeImported(
chess.White,
parsed.tags(_.White),
parsed.tags(_.WhiteElo).flatMap(_.toIntOption)
),
blackPlayer = Player.makeImported(
chess.Black,
parsed.tags(_.Black),
parsed.tags(_.BlackElo).flatMap(_.toIntOption)
),
mode = Mode.Casual,
source = Source.Import,
pgnImport = PgnImport.make(user = user, date = date, pgn = pgn).some