Attempt to get reporting on replay working (WIP)

This commit is contained in:
clarkerubber 2015-01-18 00:23:25 +11:00
parent 6fc2e8fa2e
commit 10a064a662
4 changed files with 48 additions and 34 deletions

View file

@ -16,6 +16,8 @@ import lila.hub.actorApi.map.Tell
import lila.round.actorApi.AnalysisAvailable
import views._
import chess.Color
object Analyse extends LilaController {
private def env = Env.analyse
@ -54,7 +56,7 @@ object Analyse extends LilaController {
}
def replay(pov: Pov, userTv: Option[lila.user.User])(implicit ctx: Context) =
GameRepo initialFen pov.game flatMap { initialFen =>
GameRepo initialFen pov.game.id flatMap { initialFen =>
(env.analyser get pov.game.id) zip
(pov.game.tournamentId ?? lila.tournament.TournamentRepo.byId) zip
Env.game.crosstableApi(pov.game) flatMap {
@ -63,20 +65,28 @@ object Analyse extends LilaController {
if (HTTPRequest.isBot(ctx.req)) divider.empty
else divider(pov.game, initialFen)
val pgn = Env.game.pgnDump(pov.game, initialFen)
Env.api.roundApi.watcher(pov, Env.api.version, tv = none, analysis.map(pgn -> _), initialFen = initialFen.some) map { data => {
Ok(html.analyse.replay(
pov,
data,
Env.analyse.annotator(pgn, analysis, pov.game.opening, pov.game.winnerColor, pov.game.status, pov.game.clock).toString,
analysis,
analysis filter (_.done) map { a => AdvantageChart(a.infoAdvices, pov.game.pgnMoves) },
tour,
new TimeChart(pov.game, pov.game.pgnMoves),
crosstable,
userTv,
division))
}
for {
whiteResult <- Env.mod.assessApi.getResultsByGameIdAndColor(pov.game.id, Color.White)
blackResult <- Env.mod.assessApi.getResultsByGameIdAndColor(pov.game.id, Color.White)
} yield {
Env.api.roundApi.watcher(pov, Env.api.version, tv = none, analysis.map(pgn -> _), initialFen = initialFen.some) map { data => {
Ok(html.analyse.replay(
pov,
data,
Env.analyse.annotator(pgn, analysis, pov.game.opening, pov.game.winnerColor, pov.game.status, pov.game.clock).toString,
analysis,
analysis filter (_.done) map { a => AdvantageChart(a.infoAdvices, pov.game.pgnMoves) },
tour,
new TimeChart(pov.game, pov.game.pgnMoves),
crosstable,
userTv,
division,
whiteResult,
blackResult))
}
}
}
}
}
}

View file

@ -1,4 +1,6 @@
@(pov: Pov, data: play.api.libs.json.JsObject, pgn: String, analysis: Option[lila.analyse.Analysis], advantageChart: Option[String], tour: Option[lila.tournament.Tournament], timeChart: lila.analyse.TimeChart, cross: Option[lila.game.Crosstable], userTv: Option[User], division: chess.Division)(implicit ctx: Context)
@import lila.evaluation.GameGroupResult
@(pov: Pov, data: play.api.libs.json.JsObject, pgn: String, analysis: Option[lila.analyse.Analysis], advantageChart: Option[String], tour: Option[lila.tournament.Tournament], timeChart: lila.analyse.TimeChart, cross: Option[lila.game.Crosstable], userTv: Option[User], division: chess.Division, whiteResult: Option[GameGroupResult], blackResult: Option[GameGroupResult])(implicit ctx: Context)
@import pov._
@ -27,24 +29,7 @@ i18n: @round.jsI18n()
@views.html.game.watchers()
@round.blurs(game)
@round.holdAlerts(game)
<br/>
White:
<select id="whiteAssessment">
<option value="1">Not cheating</option>
<option value="2">Unlikely cheating</option>
<option value="3">Unclear</option>
<option value="4">Likely cheating</option>
<option value="5">Cheating</option>
</select>
<br/>
Black:
<select id="blackAssessment">
<option value="1">Not cheating</option>
<option value="2">Unlikely cheating</option>
<option value="3">Unclear</option>
<option value="4">Likely cheating</option>
<option value="5">Cheating</option>
</select>
@round.assessment(game)
<div class="shortcuts">
<p class="title" data-icon="u"> Keyboard Shortcuts</p>
<div class="inner">

View file

@ -0,0 +1,20 @@
@(game: Game)(implicit ctx: Context)
@import lila.app._
@if(isGranted(_.MarkEngine)) {
@game.players.map { p =>
@if(game.turns > 40) {
<br />
@playerLink(p, cssClass = s"is color-icon ${p.color.name}".some, withOnline = false, mod = true)
<select id="@(p.color.name)Assessment">
<option value="1">Not cheating</option>
<option value="2">Unlikely cheating</option>
<option value="3">Unclear</option>
<option value="4">Likely cheating</option>
<option value="5">Cheating</option>
</select>
<br />
}
}
}

View file

@ -1,6 +1,5 @@
package lila.mod
import lila.analyse.Analysis
import lila.analyse.{ Analysis, AnalysisRepo }
import lila.db.Types.Coll
import lila.evaluation.{ PlayerAssessment, GameGroupResult, GameGroup, Analysed }