feat: charts by nations ready
No files matched your search
@@ -15,9 +15,9 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||
return new ClientServiceProvider(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(serviceCollection));
|
||||
});
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => new global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WotBlitzStatisticsProClientStoreAccessor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationStore>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IEntityStore>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IEntityIdSerializer>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.IOperationRequestFactory>>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.IOperationResultDataFactory>>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp))));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.PlayerQuery>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.FindClansQuery>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.FindPlayersQuery>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.PlayerQuery>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.WotBlitzStatisticsProClient>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.IWotBlitzStatisticsProClient>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<ClientServiceProvider>(sp)));
|
||||
return new global::StrawberryShake.ClientBuilder<global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WotBlitzStatisticsProClientStoreAccessor>("WotBlitzStatisticsProClient", services, serviceCollection);
|
||||
@@ -52,6 +52,13 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.ByteArraySerializer>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializer, global::StrawberryShake.Serialization.TimeSpanSerializer>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.Serialization.ISerializerResolver>(services, sp => new global::StrawberryShake.Serialization.SerializerResolver(global::System.Linq.Enumerable.Concat(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.Serialization.ISerializer>>(parentServices), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::System.Collections.Generic.IEnumerable<global::StrawberryShake.Serialization.ISerializer>>(sp))));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerResultFactory>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultDataFactory<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationRequestFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerBuilder>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationExecutor<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>>(services, sp => new global::StrawberryShake.OperationExecutor<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.Transport.Http.IHttpConnection>(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationStore>(sp), strategy));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.PlayerQuery>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.PlayerQuery>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory<global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansResult>, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.FindClansResultFactory>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultDataFactory<global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansResult>>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationRequestFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery>(sp));
|
||||
@@ -66,13 +73,6 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationExecutor<global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersResult>>(services, sp => new global::StrawberryShake.OperationExecutor<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersResult>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.Transport.Http.IHttpConnection>(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersResult>>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationStore>(sp), strategy));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.FindPlayersQuery>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.FindPlayersQuery>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerResultFactory>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultDataFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultDataFactory<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationRequestFactory>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerBuilder>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IOperationExecutor<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>>(services, sp => new global::StrawberryShake.OperationExecutor<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.Transport.Http.IHttpConnection>(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationResultBuilder<global::System.Text.Json.JsonDocument, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerResult>>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::StrawberryShake.IOperationStore>(sp), strategy));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.PlayerQuery>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.PlayerQuery>(sp));
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::StrawberryShake.IEntityIdSerializer, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WotBlitzStatisticsProClientEntityIdFactory>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.WotBlitzStatisticsProClient>(services);
|
||||
global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton<global::WotBlitzStatisticsPro.Blazor.GraphQl.IWotBlitzStatisticsProClient>(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<global::WotBlitzStatisticsPro.Blazor.GraphQl.WotBlitzStatisticsProClient>(sp));
|
||||
|
||||
@@ -9,10 +9,10 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")]
|
||||
public interface IWotBlitzStatisticsProClient
|
||||
{
|
||||
global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player { get; }
|
||||
|
||||
global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery FindClans { get; }
|
||||
|
||||
global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery FindPlayers { get; }
|
||||
|
||||
global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player { get; }
|
||||
}
|
||||
}
|
||||
@@ -9,19 +9,19 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")]
|
||||
public partial class WotBlitzStatisticsProClient : global::WotBlitzStatisticsPro.Blazor.GraphQl.IWotBlitzStatisticsProClient
|
||||
{
|
||||
private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery _player;
|
||||
private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery _findClans;
|
||||
private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery _findPlayers;
|
||||
private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery _player;
|
||||
public WotBlitzStatisticsProClient(global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery findClans, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery findPlayers, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery player)
|
||||
public WotBlitzStatisticsProClient(global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery player, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery findClans, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery findPlayers)
|
||||
{
|
||||
_player = player ?? throw new global::System.ArgumentNullException(nameof(player));
|
||||
_findClans = findClans ?? throw new global::System.ArgumentNullException(nameof(findClans));
|
||||
_findPlayers = findPlayers ?? throw new global::System.ArgumentNullException(nameof(findPlayers));
|
||||
_player = player ?? throw new global::System.ArgumentNullException(nameof(player));
|
||||
}
|
||||
|
||||
public static global::System.String ClientName => "WotBlitzStatisticsProClient";
|
||||
public global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player => _player;
|
||||
public global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery FindClans => _findClans;
|
||||
public global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery FindPlayers => _findPlayers;
|
||||
public global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player => _player;
|
||||
}
|
||||
}
|
||||
@@ -4,5 +4,10 @@
|
||||
<div id="battlesByTankType" style="width: 33%; min-width: 300px; height:300px; margin-top: 10px;"></div>
|
||||
<div id="winRateByTankType" style="width: 33%; min-width: 300px; height: 300px; margin-top: 10px; "></div>
|
||||
<div id="avgDmgByTankType" style="width: 33%; min-width: 300px; height: 300px; margin-top: 10px; "></div>
|
||||
</div>
|
||||
<div class="chartsRow">
|
||||
<div id="battlesByNation" style="width: 33%; min-width: 300px; height:500px; margin-top: 10px;"></div>
|
||||
<div id="winRateByNation" style="width: 33%; min-width: 300px; height: 500px; margin-top: 10px; "></div>
|
||||
<div id="avgDmgByNation" style="width: 33%; min-width: 300px; height: 500px; margin-top: 10px; "></div>
|
||||
</div>
|
||||
@*<div id="stacked" style="width:300px; height:500px; margin-top: 20px"></div>*@
|
||||
@@ -23,6 +23,11 @@ namespace WotBlitzStatisticsPro.Blazor.Pages
|
||||
await ChartsService.BuildBarChartBattlesByTankType("battlesByTankType", TanksList);
|
||||
await ChartsService.BuildBarChartWinRatesByTankType("winRateByTankType", TanksList);
|
||||
await ChartsService.BuildBarChartAvgDmgByTankType("avgDmgByTankType", TanksList);
|
||||
|
||||
await ChartsService.BuildBarChartBattlesByNation("battlesByNation", TanksList);
|
||||
await ChartsService.BuildBarChartWinRatesByNation("winRateByNation", TanksList);
|
||||
await ChartsService.BuildBarChartAvgDmgByNation("avgDmgByNation", TanksList);
|
||||
|
||||
//await ChartsService.BuildStackedBarChart("stacked");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,12 +123,18 @@
|
||||
<data name="Average XP" xml:space="preserve">
|
||||
<value>Mittlere EP</value>
|
||||
</data>
|
||||
<data name="Avg damage by nation" xml:space="preserve">
|
||||
<value>Mittlerer Schaden dem Nation</value>
|
||||
</data>
|
||||
<data name="Avg damage by tank types" xml:space="preserve">
|
||||
<value>Mittlerer Schaden dem Panzertype</value>
|
||||
</data>
|
||||
<data name="Battles" xml:space="preserve">
|
||||
<value>Gefechte</value>
|
||||
</data>
|
||||
<data name="Battles by nation" xml:space="preserve">
|
||||
<value>Gefechte dem Nation</value>
|
||||
</data>
|
||||
<data name="Battles by tank types" xml:space="preserve">
|
||||
<value>Gefechte dem Panzertype</value>
|
||||
</data>
|
||||
@@ -222,6 +228,9 @@
|
||||
<data name="Win rate" xml:space="preserve">
|
||||
<value>Sieg</value>
|
||||
</data>
|
||||
<data name="Win rate by nation" xml:space="preserve">
|
||||
<value>Sieg dem Nation</value>
|
||||
</data>
|
||||
<data name="Win rate by tank types" xml:space="preserve">
|
||||
<value>Panzertypensieg</value>
|
||||
</data>
|
||||
|
||||
@@ -123,12 +123,18 @@
|
||||
<data name="Average XP" xml:space="preserve">
|
||||
<value>Средний опыт</value>
|
||||
</data>
|
||||
<data name="Avg damage by nation" xml:space="preserve">
|
||||
<value>Средний урон по нациям</value>
|
||||
</data>
|
||||
<data name="Avg damage by tank types" xml:space="preserve">
|
||||
<value>Средний урон по типу танка</value>
|
||||
</data>
|
||||
<data name="Battles" xml:space="preserve">
|
||||
<value>Количество боёв</value>
|
||||
</data>
|
||||
<data name="Battles by nation" xml:space="preserve">
|
||||
<value>Количество боёв по нациям</value>
|
||||
</data>
|
||||
<data name="Battles by tank types" xml:space="preserve">
|
||||
<value>Количество боёв по типу танка</value>
|
||||
</data>
|
||||
@@ -222,6 +228,9 @@
|
||||
<data name="Win rate" xml:space="preserve">
|
||||
<value>Процент побед</value>
|
||||
</data>
|
||||
<data name="Win rate by nation" xml:space="preserve">
|
||||
<value>Процент побед по нациям</value>
|
||||
</data>
|
||||
<data name="Win rate by tank types" xml:space="preserve">
|
||||
<value>Процент побед по типу танка</value>
|
||||
</data>
|
||||
|
||||
@@ -201,6 +201,289 @@ namespace WotBlitzStatisticsPro.Blazor.Services
|
||||
await _jsRuntime.InvokeVoidAsync("eChartsInterop.BuildBarChartByTankType", elementId, _localize.GetString("Avg damage by tank types").Value, chartData);
|
||||
}
|
||||
|
||||
public async Task BuildBarChartBattlesByNation(string elementId, IEnumerable<ITank> tanks)
|
||||
{
|
||||
var battlesCountByNation = new Dictionary<string, long>();
|
||||
|
||||
foreach (var tank in tanks)
|
||||
{
|
||||
if (string.IsNullOrEmpty(tank.TankNationId))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(tank.TankNationId))
|
||||
{
|
||||
battlesCountByNation[tank.TankNationId] += tank.Battles;
|
||||
}
|
||||
else
|
||||
{
|
||||
battlesCountByNation.Add(tank.TankNationId, tank.Battles);
|
||||
}
|
||||
}
|
||||
|
||||
int chinaData = 0;
|
||||
int euData = 0;
|
||||
int franceData = 0;
|
||||
int germanyData = 0;
|
||||
int japanData = 0;
|
||||
int otherData = 0;
|
||||
int ukData = 0;
|
||||
int usaData = 0;
|
||||
int ussrData = 0;
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryChina))
|
||||
{
|
||||
chinaData = Convert.ToInt32(battlesCountByNation[Constants.CountryChina]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryEuropean))
|
||||
{
|
||||
euData = Convert.ToInt32(battlesCountByNation[Constants.CountryEuropean]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryFrance))
|
||||
{
|
||||
franceData = Convert.ToInt32(battlesCountByNation[Constants.CountryFrance]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryGermany))
|
||||
{
|
||||
germanyData = Convert.ToInt32(battlesCountByNation[Constants.CountryGermany]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryJapan))
|
||||
{
|
||||
japanData = Convert.ToInt32(battlesCountByNation[Constants.CountryJapan]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryOther))
|
||||
{
|
||||
otherData = Convert.ToInt32(battlesCountByNation[Constants.CountryOther]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUk))
|
||||
{
|
||||
ukData = Convert.ToInt32(battlesCountByNation[Constants.CountryUk]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUsa))
|
||||
{
|
||||
usaData = Convert.ToInt32(battlesCountByNation[Constants.CountryUsa]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUssr))
|
||||
{
|
||||
ussrData = Convert.ToInt32(battlesCountByNation[Constants.CountryUssr]);
|
||||
}
|
||||
|
||||
|
||||
var chartData = new[]
|
||||
{
|
||||
new {country = Constants.CountryChina, value = chinaData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryEuropean, value = euData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryFrance, value = franceData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryGermany, value = germanyData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryJapan, value = japanData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryOther, value = otherData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryUk, value = ukData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryUsa, value = usaData, color = "#9FE3CE"},
|
||||
new {country = Constants.CountryUssr, value = ussrData, color = "#9FE3CE"},
|
||||
};
|
||||
|
||||
await _jsRuntime.InvokeVoidAsync("eChartsInterop.BuildBarChartByNation", elementId, _localize.GetString("Battles by nation").Value, chartData);
|
||||
}
|
||||
|
||||
public async Task BuildBarChartWinRatesByNation(string elementId, IEnumerable<ITank> tanks)
|
||||
{
|
||||
var battlesCountByNation = new Dictionary<string, long>();
|
||||
var winsCountByNation = new Dictionary<string, long>();
|
||||
|
||||
foreach (var tank in tanks)
|
||||
{
|
||||
if (string.IsNullOrEmpty(tank.TankNationId))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(tank.TankNationId))
|
||||
{
|
||||
battlesCountByNation[tank.TankNationId] += tank.Battles;
|
||||
}
|
||||
else
|
||||
{
|
||||
battlesCountByNation.Add(tank.TankNationId, tank.Battles);
|
||||
}
|
||||
if (winsCountByNation.ContainsKey(tank.TankNationId))
|
||||
{
|
||||
winsCountByNation[tank.TankNationId] += tank.Wins;
|
||||
}
|
||||
else
|
||||
{
|
||||
winsCountByNation.Add(tank.TankNationId, tank.Wins);
|
||||
}
|
||||
}
|
||||
|
||||
int chinaData = 0;
|
||||
int euData = 0;
|
||||
int franceData = 0;
|
||||
int germanyData = 0;
|
||||
int japanData = 0;
|
||||
int otherData = 0;
|
||||
int ukData = 0;
|
||||
int usaData = 0;
|
||||
int ussrData = 0;
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryChina))
|
||||
{
|
||||
chinaData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryChina] /
|
||||
battlesCountByNation[Constants.CountryChina]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryEuropean))
|
||||
{
|
||||
euData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryEuropean] /
|
||||
battlesCountByNation[Constants.CountryEuropean]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryFrance))
|
||||
{
|
||||
franceData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryFrance] /
|
||||
battlesCountByNation[Constants.CountryFrance]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryGermany))
|
||||
{
|
||||
germanyData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryGermany] /
|
||||
battlesCountByNation[Constants.CountryGermany]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryJapan))
|
||||
{
|
||||
japanData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryJapan] /
|
||||
battlesCountByNation[Constants.CountryJapan]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryOther))
|
||||
{
|
||||
otherData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryOther] /
|
||||
battlesCountByNation[Constants.CountryOther]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUk))
|
||||
{
|
||||
ukData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryUk] /
|
||||
battlesCountByNation[Constants.CountryUk]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUsa))
|
||||
{
|
||||
usaData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryUsa] /
|
||||
battlesCountByNation[Constants.CountryUsa]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUssr))
|
||||
{
|
||||
ussrData = Convert.ToInt32(100 * winsCountByNation[Constants.CountryUssr] /
|
||||
battlesCountByNation[Constants.CountryUssr]);
|
||||
}
|
||||
|
||||
var chartData = new[]
|
||||
{
|
||||
new {country = Constants.CountryChina, value = chinaData, color = chinaData.ScaleColor()},
|
||||
new {country = Constants.CountryEuropean, value = euData, color = euData.ScaleColor()},
|
||||
new {country = Constants.CountryFrance, value = franceData, color = franceData.ScaleColor()},
|
||||
new {country = Constants.CountryGermany, value = germanyData, color = germanyData.ScaleColor()},
|
||||
new {country = Constants.CountryJapan, value = japanData, color = japanData.ScaleColor()},
|
||||
new {country = Constants.CountryOther, value = otherData, color = otherData.ScaleColor()},
|
||||
new {country = Constants.CountryUk, value = ukData, color = ukData.ScaleColor()},
|
||||
new {country = Constants.CountryUsa, value = usaData, color = usaData.ScaleColor()},
|
||||
new {country = Constants.CountryUssr, value = ussrData, color = ussrData.ScaleColor()},
|
||||
};
|
||||
|
||||
await _jsRuntime.InvokeVoidAsync("eChartsInterop.BuildBarChartByNation", elementId, _localize.GetString("Win rate by nation").Value, chartData);
|
||||
}
|
||||
|
||||
public async Task BuildBarChartAvgDmgByNation(string elementId, IEnumerable<ITank> tanks)
|
||||
{
|
||||
var battlesCountByNation = new Dictionary<string, long>();
|
||||
var dmgCountByNation = new Dictionary<string, long>();
|
||||
|
||||
foreach (var tank in tanks)
|
||||
{
|
||||
if (string.IsNullOrEmpty(tank.TankNationId))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(tank.TankNationId))
|
||||
{
|
||||
battlesCountByNation[tank.TankNationId] += tank.Battles;
|
||||
}
|
||||
else
|
||||
{
|
||||
battlesCountByNation.Add(tank.TankNationId, tank.Battles);
|
||||
}
|
||||
if (dmgCountByNation.ContainsKey(tank.TankNationId))
|
||||
{
|
||||
dmgCountByNation[tank.TankNationId] += tank.DamageDealt;
|
||||
}
|
||||
else
|
||||
{
|
||||
dmgCountByNation.Add(tank.TankNationId, tank.DamageDealt);
|
||||
}
|
||||
}
|
||||
|
||||
int chinaData = 0;
|
||||
int euData = 0;
|
||||
int franceData = 0;
|
||||
int germanyData = 0;
|
||||
int japanData = 0;
|
||||
int otherData = 0;
|
||||
int ukData = 0;
|
||||
int usaData = 0;
|
||||
int ussrData = 0;
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryChina))
|
||||
{
|
||||
chinaData = Convert.ToInt32(dmgCountByNation[Constants.CountryChina] /
|
||||
battlesCountByNation[Constants.CountryChina]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryEuropean))
|
||||
{
|
||||
euData = Convert.ToInt32(dmgCountByNation[Constants.CountryEuropean] /
|
||||
battlesCountByNation[Constants.CountryEuropean]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryFrance))
|
||||
{
|
||||
franceData = Convert.ToInt32(dmgCountByNation[Constants.CountryFrance] /
|
||||
battlesCountByNation[Constants.CountryFrance]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryGermany))
|
||||
{
|
||||
germanyData = Convert.ToInt32(dmgCountByNation[Constants.CountryGermany] /
|
||||
battlesCountByNation[Constants.CountryGermany]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryJapan))
|
||||
{
|
||||
japanData = Convert.ToInt32(dmgCountByNation[Constants.CountryJapan] /
|
||||
battlesCountByNation[Constants.CountryJapan]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryOther))
|
||||
{
|
||||
otherData = Convert.ToInt32(dmgCountByNation[Constants.CountryOther] /
|
||||
battlesCountByNation[Constants.CountryOther]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUk))
|
||||
{
|
||||
ukData = Convert.ToInt32(dmgCountByNation[Constants.CountryUk] /
|
||||
battlesCountByNation[Constants.CountryUk]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUsa))
|
||||
{
|
||||
usaData = Convert.ToInt32(dmgCountByNation[Constants.CountryUsa] /
|
||||
battlesCountByNation[Constants.CountryUsa]);
|
||||
}
|
||||
if (battlesCountByNation.ContainsKey(Constants.CountryUssr))
|
||||
{
|
||||
ussrData = Convert.ToInt32(dmgCountByNation[Constants.CountryUssr] /
|
||||
battlesCountByNation[Constants.CountryUssr]);
|
||||
}
|
||||
|
||||
var chartData = new[]
|
||||
{
|
||||
new {country = Constants.CountryChina, value = chinaData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryEuropean, value = euData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryFrance, value = franceData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryGermany, value = germanyData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryJapan, value = japanData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryOther, value = otherData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryUk, value = ukData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryUsa, value = usaData, color = "#D98D8B"},
|
||||
new {country = Constants.CountryUssr, value = ussrData, color = "#D98D8B"},
|
||||
};
|
||||
|
||||
await _jsRuntime.InvokeVoidAsync("eChartsInterop.BuildBarChartByNation", elementId, _localize.GetString("Avg damage by nation").Value, chartData);
|
||||
}
|
||||
|
||||
public async Task BuildStackedBarChart(string elementId)
|
||||
{
|
||||
await _jsRuntime.InvokeVoidAsync("eChartsInterop.BuildStackedBarChart", elementId);
|
||||
|
||||
@@ -9,6 +9,9 @@ namespace WotBlitzStatisticsPro.Blazor.Services
|
||||
Task BuildBarChartBattlesByTankType(string elementId, IEnumerable<ITank> tanks);
|
||||
Task BuildBarChartWinRatesByTankType(string elementId, IEnumerable<ITank> tanks);
|
||||
Task BuildBarChartAvgDmgByTankType(string elementId, IEnumerable<ITank> tanks);
|
||||
Task BuildBarChartBattlesByNation(string elementId, IEnumerable<ITank> tanks);
|
||||
Task BuildBarChartWinRatesByNation(string elementId, IEnumerable<ITank> tanks);
|
||||
Task BuildBarChartAvgDmgByNation(string elementId, IEnumerable<ITank> tanks);
|
||||
Task BuildStackedBarChart(string elementId);
|
||||
}
|
||||
}
|
||||
@@ -129,6 +129,216 @@ eChartsInterop.BuildBarChartByTankType = function (elementId, chartTitle, chartD
|
||||
});
|
||||
};
|
||||
|
||||
eChartsInterop.BuildBarChartByNation = function (elementId, chartTitle, chartData) {
|
||||
var flags = {
|
||||
'china': '/flags/china-round.png',
|
||||
'european': '/flags/eu-round.png',
|
||||
'france': '/flags/france-round.png',
|
||||
'germany': '/flags/germany-round.png',
|
||||
'japan': '/flags/japan-round.png',
|
||||
'other': '/flags/other-round.png',
|
||||
'uk': '/flags/uk-round.png',
|
||||
'usa': '/flags/usa-round.png',
|
||||
'ussr': '/flags/ussr-round.png',
|
||||
};
|
||||
|
||||
var seriesLabel = {
|
||||
show: true
|
||||
}
|
||||
|
||||
// based on prepared DOM, initialize echarts instance
|
||||
var myChart = echarts.init(document.getElementById(elementId), 'dark');
|
||||
|
||||
var chinaData = chartData.find(d => d.country === 'china');
|
||||
var euData = chartData.find(d => d.country === 'european');
|
||||
var franceData = chartData.find(d => d.country === 'france');
|
||||
var germanyData = chartData.find(d => d.country === 'germany');
|
||||
var japanData = chartData.find(d => d.country === 'japan');
|
||||
var otherData = chartData.find(d => d.country === 'other');
|
||||
var ukData = chartData.find(d => d.country === 'uk');
|
||||
var usaData = chartData.find(d => d.country === 'usa');
|
||||
var ussrData = chartData.find(d => d.country === 'ussr');
|
||||
|
||||
// specify chart configuration item and data
|
||||
var option = {
|
||||
title: {
|
||||
text: chartTitle
|
||||
},
|
||||
toolbox: {
|
||||
show: true,
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
name: '',
|
||||
axisLabel: {
|
||||
formatter: '{value}'
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['other', 'usa', 'germany', 'ussr', 'uk', 'japan', 'china', 'france', 'european'],
|
||||
axisTick: {
|
||||
alignWithLabel: true
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: function (value) {
|
||||
return '{' + value + '| }';
|
||||
},
|
||||
rich: {
|
||||
value: {
|
||||
lineHeight: 10,
|
||||
align: 'center'
|
||||
},
|
||||
other: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.other
|
||||
}
|
||||
},
|
||||
usa: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.usa
|
||||
}
|
||||
},
|
||||
germany: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.germany
|
||||
}
|
||||
},
|
||||
ussr: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.ussr
|
||||
}
|
||||
},
|
||||
uk: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.uk
|
||||
}
|
||||
},
|
||||
japan: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.japan
|
||||
}
|
||||
},
|
||||
china: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.china
|
||||
}
|
||||
},
|
||||
france: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.france
|
||||
}
|
||||
},
|
||||
european: {
|
||||
height: 20,
|
||||
width: 20,
|
||||
align: 'center',
|
||||
backgroundColor: {
|
||||
image: flags.european
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: 'bar',
|
||||
label: seriesLabel,
|
||||
barWidth: '30px',
|
||||
data: [
|
||||
{
|
||||
value: otherData.value,
|
||||
itemStyle: {
|
||||
color: otherData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: usaData.value,
|
||||
itemStyle: {
|
||||
color: usaData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: germanyData.value,
|
||||
itemStyle: {
|
||||
color: germanyData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: ussrData.value,
|
||||
itemStyle: {
|
||||
color: ussrData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: ukData.value,
|
||||
itemStyle: {
|
||||
color: ukData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: japanData.value,
|
||||
itemStyle: {
|
||||
color: japanData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: chinaData.value,
|
||||
itemStyle: {
|
||||
color: chinaData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: franceData.value,
|
||||
itemStyle: {
|
||||
color: franceData.color
|
||||
}
|
||||
},
|
||||
{
|
||||
value: euData.value,
|
||||
itemStyle: {
|
||||
color: euData.color
|
||||
}
|
||||
}
|
||||
]
|
||||
}]
|
||||
};
|
||||
|
||||
// use configuration item and data specified to show chart
|
||||
myChart.setOption(option);
|
||||
window.addEventListener('resize',
|
||||
function() {
|
||||
myChart.resize();
|
||||
});
|
||||
};
|
||||
|
||||
eChartsInterop.BuildStackedBarChart = function (elementId) {
|
||||
var tankTypes = {
|
||||
'HeavyTank': '/tank-type/vehicle.class.heavy.small.scale-200.png',
|
||||
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 6.4 KiB |