From 781ab9bda36d2fd9b44ea429e8d9e8bce839ffc2 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Thu, 15 Mar 2018 18:49:16 -0500 Subject: [PATCH] fix study server analysis on chapter change with network lag closes #4130 --- modules/analyse/src/main/JsonView.scala | 2 ++ ui/analyse/src/interfaces.ts | 1 + ui/analyse/src/study/serverEval.ts | 12 ++++++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/analyse/src/main/JsonView.scala b/modules/analyse/src/main/JsonView.scala index 874efbff0b..27af5e4711 100644 --- a/modules/analyse/src/main/JsonView.scala +++ b/modules/analyse/src/main/JsonView.scala @@ -34,11 +34,13 @@ object JsonView { }).add("acpl" -> lila.analyse.Accuracy.mean(pov, analysis))) def bothPlayers(game: Game, analysis: Analysis) = Json.obj( + "id" -> analysis.id, "white" -> player(game.whitePov)(analysis), "black" -> player(game.blackPov)(analysis) ) def bothPlayers(pov: Accuracy.PovLike, analysis: Analysis) = Json.obj( + "id" -> analysis.id, "white" -> player(pov.copy(color = chess.White))(analysis), "black" -> player(pov.copy(color = chess.Black))(analysis) ) diff --git a/ui/analyse/src/interfaces.ts b/ui/analyse/src/interfaces.ts index 3198c6237a..a8d93900f0 100644 --- a/ui/analyse/src/interfaces.ts +++ b/ui/analyse/src/interfaces.ts @@ -64,6 +64,7 @@ export interface Division { } export interface Analysis { + id: string; white: AnalysisSide; black: AnalysisSide; partial: boolean; diff --git a/ui/analyse/src/study/serverEval.ts b/ui/analyse/src/study/serverEval.ts index eefaa61fcc..cb1220a208 100644 --- a/ui/analyse/src/study/serverEval.ts +++ b/ui/analyse/src/study/serverEval.ts @@ -69,18 +69,18 @@ export function ctrl(root: AnalyseCtrl, chapterId: () => string): ServerEvalCtrl export function view(ctrl: ServerEvalCtrl): VNode { - if (!ctrl.root.data.analysis) return ctrl.requested() ? requested() : requestButton(ctrl); + const analysis = ctrl.root.data.analysis; - return h('div.server_eval.ready.' + ctrl.chapterId(), { + if (!analysis) return ctrl.requested() ? requested() : requestButton(ctrl); + + return h('div.server_eval.ready.' + analysis.id, { hook: { insert(vnode) { ctrl.lastPly(false); li.requestIdleCallback(() => { li.loadScript('/assets/javascripts/chart/acpl.js').then(() => { - if (ctrl.root.data.analysis) { - li.advantageChart(ctrl.root.data, ctrl.root.trans, vnode.elm as HTMLElement); - ctrl.chartEl(vnode.elm as HTMLElement); - } + li.advantageChart(ctrl.root.data, ctrl.root.trans, vnode.elm as HTMLElement); + ctrl.chartEl(vnode.elm as HTMLElement); }); }); }