From 342a443b9f08882060a7b6a1132c46bc74fb4d06 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 26 Jan 2016 13:28:56 +0700 Subject: [PATCH] fix tournament TV selector --- modules/tournament/src/main/TournamentApi.scala | 12 ++++++++---- modules/tournament/src/main/model.scala | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/tournament/src/main/TournamentApi.scala b/modules/tournament/src/main/TournamentApi.scala index 50a0377382..9350108832 100644 --- a/modules/tournament/src/main/TournamentApi.scala +++ b/modules/tournament/src/main/TournamentApi.scala @@ -86,10 +86,14 @@ private[tournament] final class TournamentApi( private def featureOneOf(tour: Tournament, pairings: Pairings, ranking: Ranking): Funit = tour.featuredId.ifTrue(pairings.nonEmpty) ?? PairingRepo.byId map2 RankedPairing(ranking) map (_.flatten) flatMap { curOption => - val candidates = pairings flatMap RankedPairing(ranking) - if (curOption.exists(_.pairing.playing)) funit - else candidates.sortBy(_.bestRank).headOption ?? { best => - TournamentRepo.setFeaturedGameId(tour.id, best.pairing.gameId) + val bestCandidate = pairings.flatMap(RankedPairing(ranking)).sortBy(_.bestRank).headOption + def select(rp: RankedPairing) = TournamentRepo.setFeaturedGameId(tour.id, rp.pairing.gameId) + curOption.filter(_.pairing.playing) match { + case Some(current) => + if (current.pairing.playing) + bestCandidate.filter(_.bestRank < current.bestRank) ?? select + else bestCandidate ?? select + case None => bestCandidate ?? select } } diff --git a/modules/tournament/src/main/model.scala b/modules/tournament/src/main/model.scala index 536066ff31..cf9bb17d65 100644 --- a/modules/tournament/src/main/model.scala +++ b/modules/tournament/src/main/model.scala @@ -29,7 +29,7 @@ case class TourAndRanks( case class RankedPairing(pairing: Pairing, rank1: Int, rank2: Int) { def bestRank = rank1 min rank2 - def rankSum = rank1 + rank2 + // def rankSum = rank1 + rank2 def bestColor = chess.Color(rank1 < rank2) }