Skip to content

Commit 134f732

Browse files
authored
Merge pull request #1 from ipax77/dev
v0.6.6
2 parents dd96003 + 789dc0d commit 134f732

12 files changed

+114
-316
lines changed

README.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ Blazor Server Electron app for analyzing chess games with UCI chess engines on l
2424

2525
# Release Notes
2626

27-
<details open="open"><summary>v0.6.5</summary>
27+
<details open="open"><summary>v0.6.6</summary>
28+
29+
>- pax.BlazorChartJs
30+
</details>
31+
32+
<details><summary>v0.6.5</summary>
2833

2934
>- Database bugfix
3035
>- SubVariation linebreaks fix

src/pax.BlazorChess/Models/Chart.cs

-164
This file was deleted.

src/pax.BlazorChess/Pages/AnalyzePage.razor

+6-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
</div>
4646
<div>
4747
<div class="btn-group mt-1">
48-
<button type="button" class="btn btn-outline-light" @onclick="e => loadModal?.Show()">Import</button>
48+
<button type="button" class="btn btn-outline-light" @onclick="ImportClick">Import</button>
4949
@if (Analyzes == null)
5050
{
5151
<button type="button" class="btn btn-outline-info" @onclick="CreateNewAnalyzes">Start analyzing</button>
@@ -164,6 +164,11 @@
164164
AvailableAnalyzes = engineService.GetAnalyzes().ToList();
165165
}
166166

167+
private void ImportClick()
168+
{
169+
loadModal?.Show();
170+
}
171+
167172
private void InfoAvailable(object? sender, EngineInfoEventArgs infoEventArgs)
168173
{
169174
var _engineInfos = infoEventArgs.Infos.ToList();

src/pax.BlazorChess/Pages/EngineAnalyzesPage.razor

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
</div>
6060
}
6161
<div>
62-
<ChartComponent @ref="chart" Chart="_chart" OnChartClicked="ChartClicked"></ChartComponent>
62+
<pax.BlazorChartJs.ChartComponent @ref="chartComponent" ChartJsConfig="chartConfig" OnLabelClicked="ChartClicked"></pax.BlazorChartJs.ChartComponent>
6363
</div>
6464
</div>
6565
</div>

src/pax.BlazorChess/Pages/EngineAnalyzesPage.razor.cs

+25-16
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using pax.chess;
66
using pax.uciChessEngine;
77
using Blazored.Toast.Services;
8-
using Microsoft.AspNetCore.Components.Routing;
8+
using pax.BlazorChartJs;
99

1010
namespace pax.BlazorChess.Pages;
1111
public partial class EngineAnalyzesPage : ComponentBase, IDisposable
@@ -31,15 +31,15 @@ public partial class EngineAnalyzesPage : ComponentBase, IDisposable
3131
List<GameAnalyzes> GameAnalyzis = new List<GameAnalyzes>();
3232
GameAnalyzes? Analysis;
3333
BoardContainer? boardContainer;
34-
ChartComponent? chart;
34+
ChartComponent? chartComponent;
3535
LoadModal? loadModal;
3636
SettingsModal? settingModal;
3737
EngineComponent? engineComponent;
3838
MoveStatsComponent? moveStatsComponent;
3939

4040
CancellationTokenSource cts = new CancellationTokenSource();
4141

42-
private Chart _chart = ChartService.GetRatingChart();
42+
private ChartJsConfig chartConfig = ChartService.GetRatingChart();
4343
private bool Analyzing = false;
4444
private bool Loading = false;
4545

@@ -75,7 +75,7 @@ private async Task Init()
7575

7676
if (Analysis != null)
7777
{
78-
_chart.data.labels = Analysis.Game.State.Moves.Select(s => s.HalfMoveNumber.ToString()).ToList();
78+
chartConfig.SetLabels(Analysis.Game.State.Moves.Select(s => s.HalfMoveNumber.ToString()).ToList());
7979
if (Analysis.Game.ReviewVariations.Any())
8080
{
8181
ReviewVariations = new Dictionary<int, List<Variation>>(Analysis.Game.ReviewVariations);
@@ -131,8 +131,7 @@ private async Task GameImport(Game game)
131131
_nav.NavigateTo(_nav.GetUriWithQueryParameter("GameId", GameId));
132132
}
133133
}
134-
_chart.data.labels = Analysis.Game.State.Moves.Select(s => s.HalfMoveNumber.ToString()).ToList();
135-
chart?.UpdateLabels(_chart.data.labels);
134+
chartConfig.SetLabels(Analysis.Game.State.Moves.Select(s => s.HalfMoveNumber.ToString()).ToList());
136135
ReviewVariations.Clear();
137136
reviewVariations.Clear();
138137
UpdateChart();
@@ -149,8 +148,9 @@ private void SettingsChoosen()
149148
}
150149
}
151150

152-
private void ChartClicked(string label)
151+
private void ChartClicked(KeyValuePair<Guid, string> report)
153152
{
153+
string label = report.Value;
154154
if (Analysis != null)
155155
{
156156
int i;
@@ -167,22 +167,23 @@ private void UpdateChart(bool dry = false)
167167
{
168168
if (Analysis != null)
169169
{
170-
_chart.data.datasets[0].data.Clear();
170+
List<object> data = new();
171+
171172
for (int i = 0; i < Analysis.Game.State.Moves.Count; i++)
172173
{
173174
if (ReviewVariations.ContainsKey(i) && ReviewVariations[i].Any())
174175
{
175176
var chartScore = ReviewVariations[i].OrderBy(o => o.Pv).First().Evaluation?.ChartScore();
176-
_chart.data.datasets[0].data.Add(chartScore == null ? 0 : (double)chartScore);
177+
data.Add(chartScore == null ? 0 : (double)chartScore);
177178
}
178179
else
179180
{
180-
_chart.data.datasets[0].data.Add(0);
181+
data.Add(0);
181182
}
182183
}
183-
if (!dry)
184+
if (!dry && chartConfig.Data.Datasets.Any())
184185
{
185-
chart?.UpdateDataset(_chart.data.datasets[0]);
186+
chartConfig.SetData(chartConfig.Data.Datasets.First(), data);
186187
}
187188
}
188189
}
@@ -191,14 +192,23 @@ private void ObserverMoveChanged()
191192
{
192193
if (Analysis != null && Analysis.Game.ObserverState.CurrentMove != null)
193194
{
195+
var arConfig = chartConfig.Options?.Plugins?.ArbitraryLines?.FirstOrDefault();
194196
if (Analysis.Game.ObserverState.CurrentMove.Variation == null)
195197
{
196-
chart?.DrawHorizontalLine(Analysis.Game.ObserverState.CurrentMove.HalfMoveNumber);
198+
if (arConfig != null)
199+
{
200+
arConfig.XPosition = Analysis.Game.ObserverState.CurrentMove.HalfMoveNumber;
201+
chartComponent?.UpdateChartOptions();
202+
}
197203
}
198204
else
199205
{
200206
var startMove = Analysis.Game.ObserverState.CurrentMove.Variation?.StartMove;
201-
chart?.DrawHorizontalLine(startMove ?? 0);
207+
if (arConfig != null)
208+
{
209+
arConfig.XPosition = startMove ?? 0;
210+
chartComponent?.UpdateChartOptions();
211+
}
202212
}
203213
boardContainer?.DrawReviewHints();
204214
reviewVariations = Analysis.Game.GetCurrentReviewVariations().ToList();
@@ -268,8 +278,7 @@ private async Task Analyse()
268278
int i = 0;
269279
if (Analysis != null)
270280
{
271-
_chart.data.labels = Analysis.Game.State.Moves.Select(s => s.HalfMoveNumber.ToString()).ToList();
272-
chart?.UpdateLabels(_chart.data.labels);
281+
chartConfig.SetLabels(Analysis.Game.State.Moves.Select(s => s.HalfMoveNumber.ToString()).ToList());
273282
Analyzing = true;
274283
await InvokeAsync(() => StateHasChanged());
275284
cts = new CancellationTokenSource();

src/pax.BlazorChess/Program.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using ElectronNET.API;
88
using ElectronNET.API.Entities;
99
using Blazored.Toast;
10+
using pax.BlazorChartJs;
1011

1112
var builder = WebApplication.CreateBuilder(args);
1213

@@ -44,7 +45,7 @@
4445
});
4546
});
4647

47-
48+
builder.Services.AddChartJs();
4849
builder.Services.AddScoped<DbService>();
4950
builder.Services.AddSingleton<ConfigurationService>();
5051
builder.Services.AddSingleton<EngineService>();

0 commit comments

Comments
 (0)