fix study server analysis on chapter change with network lag

closes #4130
This commit is contained in:
Thibault Duplessis 2018-03-15 18:49:16 -05:00
parent bac6b36a83
commit 781ab9bda3
3 changed files with 9 additions and 6 deletions

View file

@ -34,11 +34,13 @@ object JsonView {
}).add("acpl" -> lila.analyse.Accuracy.mean(pov, analysis))) }).add("acpl" -> lila.analyse.Accuracy.mean(pov, analysis)))
def bothPlayers(game: Game, analysis: Analysis) = Json.obj( def bothPlayers(game: Game, analysis: Analysis) = Json.obj(
"id" -> analysis.id,
"white" -> player(game.whitePov)(analysis), "white" -> player(game.whitePov)(analysis),
"black" -> player(game.blackPov)(analysis) "black" -> player(game.blackPov)(analysis)
) )
def bothPlayers(pov: Accuracy.PovLike, analysis: Analysis) = Json.obj( def bothPlayers(pov: Accuracy.PovLike, analysis: Analysis) = Json.obj(
"id" -> analysis.id,
"white" -> player(pov.copy(color = chess.White))(analysis), "white" -> player(pov.copy(color = chess.White))(analysis),
"black" -> player(pov.copy(color = chess.Black))(analysis) "black" -> player(pov.copy(color = chess.Black))(analysis)
) )

View file

@ -64,6 +64,7 @@ export interface Division {
} }
export interface Analysis { export interface Analysis {
id: string;
white: AnalysisSide; white: AnalysisSide;
black: AnalysisSide; black: AnalysisSide;
partial: boolean; partial: boolean;

View file

@ -69,18 +69,18 @@ export function ctrl(root: AnalyseCtrl, chapterId: () => string): ServerEvalCtrl
export function view(ctrl: ServerEvalCtrl): VNode { 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: { hook: {
insert(vnode) { insert(vnode) {
ctrl.lastPly(false); ctrl.lastPly(false);
li.requestIdleCallback(() => { li.requestIdleCallback(() => {
li.loadScript('/assets/javascripts/chart/acpl.js').then(() => { 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);
li.advantageChart(ctrl.root.data, ctrl.root.trans, vnode.elm as HTMLElement); ctrl.chartEl(vnode.elm as HTMLElement);
ctrl.chartEl(vnode.elm as HTMLElement);
}
}); });
}); });
} }