let hosts name their simuls
parent
fb0db9936b
commit
53f3eeaafd
|
@ -121,7 +121,7 @@ final class Simul(
|
|||
def form = Auth { implicit ctx => me =>
|
||||
NoLameOrBot {
|
||||
apiC.teamsIBelongTo(me) map { teams =>
|
||||
Ok(html.simul.form(forms.create, teams))
|
||||
Ok(html.simul.form(forms.create(me), teams))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,16 +129,19 @@ final class Simul(
|
|||
def create = AuthBody { implicit ctx => implicit me =>
|
||||
NoLameOrBot {
|
||||
implicit val req = ctx.body
|
||||
forms.create.bindFromRequest.fold(
|
||||
err =>
|
||||
apiC.teamsIBelongTo(me) map { teams =>
|
||||
BadRequest(html.simul.form(err, teams))
|
||||
},
|
||||
setup =>
|
||||
env.simul.api.create(setup, me) map { simul =>
|
||||
Redirect(routes.Simul.show(simul.id))
|
||||
}
|
||||
)
|
||||
forms
|
||||
.create(me)
|
||||
.bindFromRequest
|
||||
.fold(
|
||||
err =>
|
||||
apiC.teamsIBelongTo(me) map { teams =>
|
||||
BadRequest(html.simul.form(err, teams))
|
||||
},
|
||||
setup =>
|
||||
env.simul.api.create(setup, me) map { simul =>
|
||||
Redirect(routes.Simul.show(simul.id))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,12 +23,19 @@ object form {
|
|||
main(cls := "box box-pad page-small simul-form")(
|
||||
h1(trans.hostANewSimul()),
|
||||
postForm(cls := "form3", action := routes.Simul.create())(
|
||||
br,
|
||||
br,
|
||||
p(trans.whenCreateSimul()),
|
||||
br,
|
||||
br,
|
||||
globalError(form),
|
||||
form3.group(form("name"), trans.name()) { f =>
|
||||
div(
|
||||
form3.input(f),
|
||||
" Simul",
|
||||
br,
|
||||
small(cls := "form-help")(trans.inappropriateNameWarning())
|
||||
)
|
||||
},
|
||||
form3.group(form("variant"), trans.simulVariantsHint()) { _ =>
|
||||
div(cls := "variants")(
|
||||
views.html.setup.filter.renderCheckboxes(
|
||||
|
|
|
@ -142,12 +142,9 @@ object Simul {
|
|||
|
||||
case class OnStart(simul: Simul)
|
||||
|
||||
private def makeName(host: User) =
|
||||
if (host.title.isDefined) host.titleUsername
|
||||
else RandomName()
|
||||
|
||||
def make(
|
||||
host: User,
|
||||
name: String,
|
||||
clock: SimulClock,
|
||||
variants: List[Variant],
|
||||
position: Option[StartingPosition],
|
||||
|
@ -156,7 +153,7 @@ object Simul {
|
|||
team: Option[String]
|
||||
): Simul = Simul(
|
||||
_id = Random nextString 8,
|
||||
name = makeName(host),
|
||||
name = name,
|
||||
status = SimulStatus.Created,
|
||||
clock = clock,
|
||||
hostId = host.id,
|
||||
|
|
|
@ -44,6 +44,7 @@ final class SimulApi(
|
|||
|
||||
def create(setup: SimulForm.Setup, me: User): Fu[Simul] = {
|
||||
val simul = Simul.make(
|
||||
name = setup.name,
|
||||
clock = SimulClock(
|
||||
config = chess.Clock.Config(setup.clockTime * 60, setup.clockIncrement),
|
||||
hostExtraTime = setup.clockExtra * 60
|
||||
|
|
|
@ -2,6 +2,8 @@ package lila.simul
|
|||
|
||||
import play.api.data._
|
||||
import play.api.data.Forms._
|
||||
import play.api.data.validation.{ Constraint, Constraints }
|
||||
import lila.user.User
|
||||
|
||||
import chess.StartingPosition
|
||||
import lila.common.Form._
|
||||
|
@ -28,9 +30,24 @@ object SimulForm {
|
|||
)
|
||||
val colorDefault = "white"
|
||||
|
||||
def create =
|
||||
private val nameType = text.verifying(
|
||||
Constraints minLength 2,
|
||||
Constraints maxLength 40,
|
||||
Constraints.pattern(
|
||||
regex = """[\p{L}\p{N}-\s:,;]+""".r,
|
||||
error = "error.unknown"
|
||||
),
|
||||
Constraint[String] { (t: String) =>
|
||||
if (t.toLowerCase contains "lichess")
|
||||
validation.Invalid(validation.ValidationError("Must not contain \"lichess\""))
|
||||
else validation.Valid
|
||||
}
|
||||
)
|
||||
|
||||
def create(host: User) =
|
||||
Form(
|
||||
mapping(
|
||||
"name" -> nameType,
|
||||
"clockTime" -> numberIn(clockTimeChoices),
|
||||
"clockIncrement" -> numberIn(clockIncrementChoices),
|
||||
"clockExtra" -> numberIn(clockExtraChoices),
|
||||
|
@ -55,6 +72,7 @@ object SimulForm {
|
|||
"team" -> optional(nonEmptyText)
|
||||
)(Setup.apply)(Setup.unapply)
|
||||
) fill Setup(
|
||||
name = host.titleUsername,
|
||||
clockTime = clockTimeDefault,
|
||||
clockIncrement = clockIncrementDefault,
|
||||
clockExtra = clockExtraDefault,
|
||||
|
@ -77,6 +95,7 @@ object SimulForm {
|
|||
def setText = Form(single("text" -> text))
|
||||
|
||||
case class Setup(
|
||||
name: String,
|
||||
clockTime: Int,
|
||||
clockIncrement: Int,
|
||||
clockExtra: Int,
|
||||
|
|
|
@ -2,133 +2,6 @@ package lila
|
|||
|
||||
package object simul extends PackageObject {
|
||||
|
||||
private[simul] object RandomName {
|
||||
|
||||
private val names = IndexedSeq(
|
||||
"Actinium",
|
||||
"Aluminium",
|
||||
"Americium",
|
||||
"Antimony",
|
||||
"Argon",
|
||||
"Arsenic",
|
||||
"Astatine",
|
||||
"Barium",
|
||||
"Berkelium",
|
||||
"Beryllium",
|
||||
"Bismuth",
|
||||
"Bohrium",
|
||||
"Boron",
|
||||
"Bromine",
|
||||
"Cadmium",
|
||||
"Caesium",
|
||||
"Calcium",
|
||||
"Californium",
|
||||
"Carbon",
|
||||
"Cerium",
|
||||
"Chlorine",
|
||||
"Chromium",
|
||||
"Cobalt",
|
||||
"Copernicium",
|
||||
"Copper",
|
||||
"Curium",
|
||||
"Darmstadtium",
|
||||
"Dubnium",
|
||||
"Dysprosium",
|
||||
"Einsteinium",
|
||||
"Erbium",
|
||||
"Europium",
|
||||
"Fermium",
|
||||
"Flerovium",
|
||||
"Fluorine",
|
||||
"Francium",
|
||||
"Gadolinium",
|
||||
"Gallium",
|
||||
"Germanium",
|
||||
"Gold",
|
||||
"Hafnium",
|
||||
"Hassium",
|
||||
"Helium",
|
||||
"Holmium",
|
||||
"Hydrogen",
|
||||
"Indium",
|
||||
"Iodine",
|
||||
"Iridium",
|
||||
"Iron",
|
||||
"Krypton",
|
||||
"Lanthanum",
|
||||
"Lawrencium",
|
||||
"Lead",
|
||||
"Lithium",
|
||||
"Livermorium",
|
||||
"Lutetium",
|
||||
"Magnesium",
|
||||
"Manganese",
|
||||
"Meitnerium",
|
||||
"Mendelevium",
|
||||
"Mercury",
|
||||
"Molybdenum",
|
||||
"Moscovium",
|
||||
"Neodymium",
|
||||
"Neon",
|
||||
"Neptunium",
|
||||
"Nickel",
|
||||
"Nihonium",
|
||||
"Niobium",
|
||||
"Nitrogen",
|
||||
"Nobelium",
|
||||
"Oganesson",
|
||||
"Osmium",
|
||||
"Oxygen",
|
||||
"Palladium",
|
||||
"Phosphorus",
|
||||
"Platinum",
|
||||
"Plutonium",
|
||||
"Polonium",
|
||||
"Potassium",
|
||||
"Praseodymium",
|
||||
"Promethium",
|
||||
"Protactinium",
|
||||
"Radium",
|
||||
"Radon",
|
||||
"Rhenium",
|
||||
"Rhodium",
|
||||
"Roentgenium",
|
||||
"Rubidium",
|
||||
"Ruthenium",
|
||||
"Rutherfordium",
|
||||
"Samarium",
|
||||
"Scandium",
|
||||
"Seaborgium",
|
||||
"Selenium",
|
||||
"Silicon",
|
||||
"Silver",
|
||||
"Sodium",
|
||||
"Strontium",
|
||||
"Sulfur",
|
||||
"Tantalum",
|
||||
"Technetium",
|
||||
"Tellurium",
|
||||
"Tennessine",
|
||||
"Terbium",
|
||||
"Thallium",
|
||||
"Thorium",
|
||||
"Thulium",
|
||||
"Tin",
|
||||
"Titanium",
|
||||
"Tungsten",
|
||||
"Uranium",
|
||||
"Vanadium",
|
||||
"Xenon",
|
||||
"Ytterbium",
|
||||
"Yttrium",
|
||||
"Zinc",
|
||||
"Zirconium"
|
||||
)
|
||||
private val size = names.size
|
||||
|
||||
def apply(): String = names(scala.util.Random nextInt size)
|
||||
}
|
||||
|
||||
private[simul] val logger = lila.log("simul")
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +1,21 @@
|
|||
.simul-form .variants {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
.checkable {
|
||||
flex: 1 1 33%;
|
||||
white-space: nowrap;
|
||||
input {
|
||||
margin-right: .3em;
|
||||
}
|
||||
label, input {
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
.simul-form {
|
||||
#form3-name {
|
||||
width: 48%!important;
|
||||
display: inline-block;
|
||||
}
|
||||
.variants {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
.checkable {
|
||||
flex: 1 1 33%;
|
||||
white-space: nowrap;
|
||||
input {
|
||||
margin-right: .3em;
|
||||
}
|
||||
label, input {
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue