@(u: User, rankMap: lila.rating.UserRankMap, active: Option[lila.rating.PerfType])(implicit ctx: Context) @import lila.rating.PerfType @showPerf(perf: lila.rating.Perf, perfType: PerfType, name: Option[String] = none) = {

@name.getOrElse(perfType.name).toUpperCase

@perf.glicko.intRating@if(perf.provisional){?} @if(perfType.key == "puzzle") {@trans.nbPuzzles(perf.nb, perf.nb.localize)} else {@trans.nbGames(perf.nb, perf.nb.localize)} @showProgress(perf.progress, withTitle = false) @rankMap.get(perfType.key).map { rank => @trans.rankX(rank.localize) } @if(lila.rating.PerfType.isGame(perfType)) { }
} @showNonEmptyPerf(perf: lila.rating.Perf, perfType: PerfType) = { @if(perf.nonEmpty) {@showPerf(perf, perfType)} }
@if(!u.lame || ctx.is(u) || isGranted(_.UserSpy)) { @showNonEmptyPerf(u.perfs.ultraBullet, PerfType.UltraBullet) @showPerf(u.perfs.bullet, PerfType.Bullet) @showPerf(u.perfs.blitz, PerfType.Blitz) @showPerf(u.perfs.rapid, PerfType.Rapid) @showPerf(u.perfs.classical, PerfType.Classical) @showPerf(u.perfs.correspondence, PerfType.Correspondence)
@showNonEmptyPerf(u.perfs.crazyhouse, PerfType.Crazyhouse) @showNonEmptyPerf(u.perfs.chess960, PerfType.Chess960) @showNonEmptyPerf(u.perfs.kingOfTheHill, PerfType.KingOfTheHill) @showNonEmptyPerf(u.perfs.threeCheck, PerfType.ThreeCheck) @showNonEmptyPerf(u.perfs.antichess, PerfType.Antichess) @showNonEmptyPerf(u.perfs.atomic, PerfType.Atomic) @showNonEmptyPerf(u.perfs.horde, PerfType.Horde) @showNonEmptyPerf(u.perfs.racingKings, PerfType.RacingKings)
@showPerf(u.perfs.puzzle, PerfType.Puzzle) }