From 3702cd488cb0a56c186d6d4d043d18ef801037a3 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sat, 7 Jul 2012 14:58:48 +0200 Subject: [PATCH] show the computer analysis link to the players and watchers --- app/analyse/Analyser.scala | 2 ++ app/analyse/AnalysisRepo.scala | 4 ++++ app/controllers/Round.scala | 8 ++++++-- app/views/analyse/link.scala.html | 4 ++-- app/views/round/player.scala.html | 4 ++-- app/views/round/watcher.scala.html | 4 ++-- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/analyse/Analyser.scala b/app/analyse/Analyser.scala index cf2523eefe..272aeaf2d2 100644 --- a/app/analyse/Analyser.scala +++ b/app/analyse/Analyser.scala @@ -20,6 +20,8 @@ final class Analyser( def get(id: String): IO[Option[Analysis]] = analysisRepo byId id + def has(id: String): IO[Boolean] = analysisRepo isDone id + def getOrGenerate(id: String, userId: String): Future[Valid[Analysis]] = getOrGenerateIO(id, userId) diff --git a/app/analyse/AnalysisRepo.scala b/app/analyse/AnalysisRepo.scala index 9e3da2bea5..622631529e 100644 --- a/app/analyse/AnalysisRepo.scala +++ b/app/analyse/AnalysisRepo.scala @@ -42,4 +42,8 @@ final class AnalysisRepo(val collection: MongoCollection) { } yield decoded } yield Analysis(infos | Nil, done, fail) } + + def isDone(id: String): IO[Boolean] = io { + collection.count(DBObject("_id" -> id, "done" -> true)) > 0 + } } diff --git a/app/controllers/Round.scala b/app/controllers/Round.scala index 51e9c2c883..bcecea7f2b 100644 --- a/app/controllers/Round.scala +++ b/app/controllers/Round.scala @@ -23,6 +23,7 @@ object Round extends LilaController with TheftPrevention { def joiner = env.setup.friendJoiner def bookmarkApi = env.bookmark.api def userRepo = env.user.userRepo + def analyser = env.analyse.analyser def websocketWatcher(gameId: String, color: String) = WebSocket.async[JsValue] { req ⇒ implicit val ctx = reqToCtx(req) @@ -47,13 +48,15 @@ object Round extends LilaController with TheftPrevention { engine ← pov.opponent.userId.fold( u ⇒ userRepo isEngine u, io(false)) + analysed ← analyser has pov.gameId } yield PreventTheft(pov) { Ok(html.round.player( pov, version(pov.gameId), engine, roomHtml map { Html(_) }, - bookmarkers)) + bookmarkers, + analysed)) }, io(Redirect(routes.Setup.await(fullId))) ) @@ -72,7 +75,8 @@ object Round extends LilaController with TheftPrevention { io(Nil) ) roomHtml ← messenger renderWatcher pov.game - } yield Ok(html.round.watcher(pov, version(pov.gameId), Html(roomHtml), bookmarkers)) + analysed ← analyser has pov.gameId + } yield Ok(html.round.watcher(pov, version(pov.gameId), Html(roomHtml), bookmarkers, analysed)) private def join(pov: Pov)(implicit ctx: Context): IO[Result] = joiner(pov.game, ctx.me).fold( diff --git a/app/views/analyse/link.scala.html b/app/views/analyse/link.scala.html index 438a3eb9d6..5d08eef7ea 100644 --- a/app/views/analyse/link.scala.html +++ b/app/views/analyse/link.scala.html @@ -1,5 +1,5 @@ -@(pov: Pov)(implicit ctx: Context) +@(pov: Pov, visible: Boolean = false)(implicit ctx: Context) -
+ diff --git a/app/views/round/player.scala.html b/app/views/round/player.scala.html index 8ef405be2a..415b390c62 100644 --- a/app/views/round/player.scala.html +++ b/app/views/round/player.scala.html @@ -1,4 +1,4 @@ -@(pov: Pov, version: Int, engine: Boolean, roomHtml: Option[Html], bookmarkers: List[User])(implicit ctx: Context) +@(pov: Pov, version: Int, engine: Boolean, roomHtml: Option[Html], bookmarkers: List[User], analysed: Boolean)(implicit ctx: Context) @import pov._ @@ -50,7 +50,7 @@ underchat = underchat.some) {
-@analyse.link(pov) +@analyse.link(pov, analysed) @views.html.game.more(pov, bookmarkers) {