upgrade perf picker
parent
928f73ee52
commit
24d9585e29
|
@ -21,7 +21,7 @@
|
|||
}
|
||||
@ctx.me.map { me =>
|
||||
<div class="ratings">
|
||||
@List("bullet", "blitz", "classical", "chess960", "kingOfTheHill", "threeCheck").map { key =>
|
||||
@List("bullet", "blitz", "classical", "correspondence", "chess960", "kingOfTheHill", "threeCheck").map { key =>
|
||||
@lila.rating.PerfType(key).map { perfType =>
|
||||
<div class="@key">
|
||||
@trans.ratingX(s"""<strong data-icon="${perfType.iconChar}">${me.perfs(key).map(_.intRating).getOrElse("?")}</strong> ${perfType.name}""")
|
||||
|
|
|
@ -14,7 +14,7 @@ private[evaluation] final class Listener(evaluator: Evaluator) extends Actor {
|
|||
def receive = {
|
||||
|
||||
case lila.game.actorApi.FinishGame(game, white, black) =>
|
||||
PerfType(PerfPicker.key(game.speed, game.variant)) ifTrue game.rated map { perfType =>
|
||||
PerfType(PerfPicker key game) ifTrue game.rated map { perfType =>
|
||||
List(
|
||||
game.whitePlayer -> white,
|
||||
game.blackPlayer -> black
|
||||
|
|
|
@ -8,26 +8,28 @@ object PerfPicker {
|
|||
|
||||
val default = (perfs: Perfs) => perfs.standard
|
||||
|
||||
def perfType(speed: Speed, variant: Variant): Option[PerfType] =
|
||||
PerfType(key(speed, variant))
|
||||
def perfType(speed: Speed, variant: Variant, daysPerTurn: Option[Int]): Option[PerfType] =
|
||||
PerfType(key(speed, variant, daysPerTurn))
|
||||
|
||||
def key(speed: Speed, variant: Variant): String =
|
||||
def key(speed: Speed, variant: Variant, daysPerTurn: Option[Int]): String =
|
||||
if (variant.standard) {
|
||||
if (speed == Speed.Unlimited) Speed.Classical.key
|
||||
if (daysPerTurn.isDefined) PerfType.Correspondence.key
|
||||
else if (speed == Speed.Unlimited) PerfType.Classical.key
|
||||
else speed.key
|
||||
}
|
||||
else variant.key
|
||||
|
||||
def key(game: Game): String = key(game.speed, game.variant)
|
||||
def key(game: Game): String = key(game.speed, game.variant, game.daysPerTurn)
|
||||
|
||||
def main(speed: Speed, variant: Variant): Option[Perfs => Perf] =
|
||||
if (variant.standard) Perfs.speedLens(speed).some
|
||||
def main(speed: Speed, variant: Variant, daysPerTurn: Option[Int]): Option[Perfs => Perf] =
|
||||
if (daysPerTurn.isDefined) Some((perfs: Perfs) => perfs.correspondence)
|
||||
else if (variant.standard) Perfs.speedLens(speed).some
|
||||
else Perfs variantLens variant
|
||||
|
||||
def main(game: Game): Option[Perfs => Perf] = main(game.speed, game.variant)
|
||||
def main(game: Game): Option[Perfs => Perf] = main(game.speed, game.variant, game.daysPerTurn)
|
||||
|
||||
def mainOrDefault(game: Game): Perfs => Perf = main(game) | default
|
||||
|
||||
def mainOrDefault(speed: Speed, variant: Variant): Perfs => Perf =
|
||||
main(speed, variant) | default
|
||||
def mainOrDefault(speed: Speed, variant: Variant, daysPerTurn: Option[Int]): Perfs => Perf =
|
||||
main(speed, variant, daysPerTurn) | default
|
||||
}
|
||||
|
|
|
@ -5,10 +5,10 @@ import org.joda.time.DateTime
|
|||
import ornicar.scalalib.Random
|
||||
import play.api.libs.json._
|
||||
|
||||
import actorApi.LobbyUser
|
||||
import lila.game.PerfPicker
|
||||
import lila.rating.RatingRange
|
||||
import lila.user.{ User, Perfs }
|
||||
import actorApi.LobbyUser
|
||||
|
||||
case class Hook(
|
||||
id: String,
|
||||
|
@ -18,6 +18,7 @@ case class Hook(
|
|||
hasClock: Boolean,
|
||||
time: Option[Int],
|
||||
increment: Option[Int],
|
||||
daysPerTurn: Option[Int],
|
||||
mode: Int,
|
||||
allowAnon: Boolean,
|
||||
color: String,
|
||||
|
@ -47,7 +48,7 @@ case class Hook(
|
|||
range => h.rating ?? range.contains
|
||||
}
|
||||
|
||||
private def compatibilityProperties = (variant, time, increment, mode)
|
||||
private def compatibilityProperties = (variant, time, increment, mode, daysPerTurn)
|
||||
|
||||
lazy val realRatingRange: Option[RatingRange] = RatingRange noneIfDefault ratingRange
|
||||
|
||||
|
@ -66,6 +67,7 @@ case class Hook(
|
|||
"mode" -> realMode.toString,
|
||||
"clock" -> clockOption.map(_.show),
|
||||
"time" -> clockOption.map(_.estimateTotalTime),
|
||||
"days" -> daysPerTurn,
|
||||
"speed" -> chess.Speed(clockOption).id,
|
||||
"color" -> chess.Color(color).??(_.name),
|
||||
"perf" -> Json.obj(
|
||||
|
@ -73,7 +75,7 @@ case class Hook(
|
|||
"name" -> perfType.map(_.name))
|
||||
)
|
||||
|
||||
lazy val perfType = PerfPicker.perfType(speed, realVariant)
|
||||
lazy val perfType = PerfPicker.perfType(speed, realVariant, daysPerTurn)
|
||||
|
||||
private lazy val clockOption = (time ifTrue hasClock) |@| increment apply Clock.apply
|
||||
|
||||
|
@ -90,6 +92,7 @@ object Hook {
|
|||
uid: String,
|
||||
variant: Variant,
|
||||
clock: Option[Clock],
|
||||
daysPerTurn: Option[Int],
|
||||
mode: Mode,
|
||||
allowAnon: Boolean,
|
||||
color: String,
|
||||
|
@ -103,6 +106,7 @@ object Hook {
|
|||
hasClock = clock.isDefined,
|
||||
time = clock map (_.limit),
|
||||
increment = clock map (_.increment),
|
||||
daysPerTurn = daysPerTurn,
|
||||
mode = mode.id,
|
||||
allowAnon = allowAnon || user.isEmpty,
|
||||
color = color,
|
||||
|
|
|
@ -64,7 +64,7 @@ object PerfType {
|
|||
title = "Training puzzles",
|
||||
iconChar = '-')
|
||||
|
||||
val all: List[PerfType] = List(Bullet, Blitz, Classical, Standard, Chess960, KingOfTheHill, ThreeCheck, Puzzle)
|
||||
val all: List[PerfType] = List(Bullet, Blitz, Classical, Correspondence, Standard, Chess960, KingOfTheHill, ThreeCheck, Puzzle)
|
||||
val byKey = all map { p => (p.key, p) } toMap
|
||||
|
||||
val default = Standard
|
||||
|
@ -74,5 +74,5 @@ object PerfType {
|
|||
|
||||
def name(key: Perf.Key): Option[String] = apply(key) map (_.name)
|
||||
|
||||
val nonPuzzle: List[PerfType] = List(Bullet, Blitz, Classical, Chess960, KingOfTheHill, ThreeCheck)
|
||||
val nonPuzzle: List[PerfType] = List(Bullet, Blitz, Classical, Correspondence, Chess960, KingOfTheHill, ThreeCheck)
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ case class HookConfig(
|
|||
uid = uid,
|
||||
variant = variant,
|
||||
clock = makeClock,
|
||||
daysPerTurn = makeDaysPerTurn,
|
||||
mode = mode,
|
||||
allowAnon = allowAnon,
|
||||
color = color.name,
|
||||
|
|
|
@ -49,7 +49,7 @@ sealed trait Tournament {
|
|||
def schedule = data.schedule
|
||||
def scheduled = data.schedule.isDefined
|
||||
|
||||
def perfLens = PerfPicker.mainOrDefault(speed, variant)
|
||||
def perfLens = PerfPicker.mainOrDefault(speed, variant, none)
|
||||
|
||||
def userIds = players map (_.id)
|
||||
def activePlayers = players filter (_.active)
|
||||
|
|
|
@ -1184,15 +1184,17 @@ var storage = {
|
|||
$form.find('.color_submits button').toggle(timeOk && ratedOk);
|
||||
};
|
||||
var showRating = function() {
|
||||
var timeMode = $timeModeSelect.val();
|
||||
var key;
|
||||
switch ($variantSelect.val()) {
|
||||
case '1':
|
||||
if ($timeModeSelect.val() == '1') {
|
||||
if (timeMode == '1') {
|
||||
var time = $timeInput.val() * 60 + $incrementInput.val() * 30;
|
||||
if (time < 180) key = 'bullet';
|
||||
else if (time < 480) key = 'blitz';
|
||||
else key = 'classical';
|
||||
} else key = 'classical';
|
||||
} else if (timeMode == '2') key = 'correspondence';
|
||||
else key = 'classical';
|
||||
break;
|
||||
case '2':
|
||||
key = 'chess960';
|
||||
|
@ -1732,6 +1734,8 @@ var storage = {
|
|||
}
|
||||
if (hook.clock) {
|
||||
html += '<span class="clock">' + hook.clock + '</span>';
|
||||
} else if (hook.days) {
|
||||
html += '<span class="clock">' + hook.days + 'D</span>';
|
||||
} else {
|
||||
html += '<span class="clock nope">∞</span>';
|
||||
}
|
||||
|
@ -1747,7 +1751,7 @@ var storage = {
|
|||
['', '<span class="is is2 color-icon ' + (hook.color || "random") + '"></span>'],
|
||||
[hook.username, (hook.rating ? '<a href="/@/' + hook.username + '" class="ulink">' + hook.username + '</a>' : 'Anonymous')],
|
||||
[hook.rating || 0, hook.rating ? hook.rating : ''],
|
||||
[hook.time || 9999, hook.clock ? hook.clock : '∞'],
|
||||
[hook.time || 9999, hook.clock ? hook.clock : (hook.days ? hook.days + 'D' : '∞')],
|
||||
[hook.mode,
|
||||
'<span class="varicon" data-icon="' + hook.perf.icon + '"></span>' +
|
||||
$.trans(hook.mode)
|
||||
|
|
Loading…
Reference in New Issue