diff --git a/app/views/swiss/form.scala b/app/views/swiss/form.scala index 4aae9bf466..95a00e9887 100644 --- a/app/views/swiss/form.scala +++ b/app/views/swiss/form.scala @@ -60,7 +60,7 @@ object form { form3.split(fields.name, fields.nbRounds), form3.split(fields.rated, fields.variant), fields.clock, - form3.split(fields.description, swiss.settings.position.isDefined option fields.position), + form3.split(fields.description, fields.position), form3.split( fields.roundInterval, swiss.isCreated option fields.startsAt diff --git a/modules/swiss/src/main/SwissApi.scala b/modules/swiss/src/main/SwissApi.scala index 1de33d0593..3e0c5c2d11 100644 --- a/modules/swiss/src/main/SwissApi.scala +++ b/modules/swiss/src/main/SwissApi.scala @@ -71,7 +71,7 @@ final class SwissApi( winnerId = none, settings = Swiss.Settings( nbRounds = data.nbRounds, - rated = data.rated | true, + rated = data.realPosition.isEmpty && (data.rated | true), description = data.description, position = data.realPosition, chatFor = data.realChatFor, @@ -86,6 +86,9 @@ final class SwissApi( def update(swiss: Swiss, data: SwissForm.SwissData): Funit = Sequencing(swiss.id)(byId) { old => + val position = + if (old.isCreated || old.settings.position.isDefined) data.realVariant.standard ?? data.realPosition + else old.settings.position val swiss = old.copy( name = data.name | old.name, @@ -97,11 +100,9 @@ final class SwissApi( else old.nextRoundAt, settings = old.settings.copy( nbRounds = data.nbRounds, - rated = data.rated | old.settings.rated, + rated = position.isEmpty && (data.rated | old.settings.rated), description = data.description orElse old.settings.description, - position = - if (old.isCreated || old.settings.position.isDefined) data.realPosition - else old.settings.position, + position = position, chatFor = data.chatFor | old.settings.chatFor, roundInterval = if (data.roundInterval.isDefined) data.realRoundInterval