diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 480bd87..d0decc5 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -16,7 +16,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: '5.0.104' + dotnet-version: '6.0.x' - name: Restore dependencies run: dotnet restore - name: Build diff --git a/Dockerfile b/Dockerfile index eab6ebe..2b9578d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. -FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base +FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 -FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["WotBlitzStatisticsPro.GraphQl/WotBlitzStatisticsPro.GraphQl.csproj", "WotBlitzStatisticsPro.GraphQl/"] COPY ["WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj", "WotBlitzStatisticsPro.Blazor/"] diff --git a/WotBlitzStatisticsPro.Blazor.Tests/Pages/SearchDialogTests.cs b/WotBlitzStatisticsPro.Blazor.Tests/Pages/SearchDialogTests.cs index dd84e9c..3f348c2 100644 --- a/WotBlitzStatisticsPro.Blazor.Tests/Pages/SearchDialogTests.cs +++ b/WotBlitzStatisticsPro.Blazor.Tests/Pages/SearchDialogTests.cs @@ -39,6 +39,9 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Pages TestContext?.Services.AddSingleton(_graphQlBackendMock.Object); TestContext?.Services.AddSingleton(_localStorageServiceMock.Object); + TestContext?.JSInterop.SetupVoid("Radzen.togglePopup", _ => true).SetVoidResult(); + TestContext?.JSInterop.SetupVoid("Radzen.focusElement", _ => true).SetVoidResult(); + TestContext?.JSInterop.SetupVoid("Radzen.selectListItem", _ => true).SetVoidResult(); TestContext?.JSInterop.SetupVoid("Radzen.preventArrows", _ => true).SetVoidResult(); TestContext?.JSInterop.SetupVoid("Radzen.closePopup", _ => true).SetVoidResult(); diff --git a/WotBlitzStatisticsPro.Blazor.Tests/Pages/WgLoginDialogTests.cs b/WotBlitzStatisticsPro.Blazor.Tests/Pages/WgLoginDialogTests.cs index b26ebbd..9f3bde1 100644 --- a/WotBlitzStatisticsPro.Blazor.Tests/Pages/WgLoginDialogTests.cs +++ b/WotBlitzStatisticsPro.Blazor.Tests/Pages/WgLoginDialogTests.cs @@ -30,6 +30,9 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Pages TestContext?.Services.AddSingleton(_localStorageServiceMock.Object); + TestContext?.JSInterop.SetupVoid("Radzen.togglePopup", _ => true).SetVoidResult(); + TestContext?.JSInterop.SetupVoid("Radzen.focusElement", _ => true).SetVoidResult(); + TestContext?.JSInterop.SetupVoid("Radzen.selectListItem", _ => true).SetVoidResult(); TestContext?.JSInterop.SetupVoid("Radzen.preventArrows", _ => true).SetVoidResult(); TestContext?.JSInterop.SetupVoid("Radzen.closePopup", _ => true).SetVoidResult(); diff --git a/WotBlitzStatisticsPro.Blazor.Tests/Services/GraphQlBackendServiceTests.cs b/WotBlitzStatisticsPro.Blazor.Tests/Services/GraphQlBackendServiceTests.cs index 83dac2e..81de8c0 100644 --- a/WotBlitzStatisticsPro.Blazor.Tests/Services/GraphQlBackendServiceTests.cs +++ b/WotBlitzStatisticsPro.Blazor.Tests/Services/GraphQlBackendServiceTests.cs @@ -24,6 +24,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services private Mock _wagamingOpenIdMutation; private Mock _wargamingOpenIdAuthenticationMutationMock; private Mock _wargamingPlayersMutation; + private Mock _dictionaryQuery; private WotBlitzStatisticsProClient _generatedClient; private Mock _notificationServiceMock; @@ -57,6 +58,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services _wagamingOpenIdMutation = new(); _wargamingOpenIdAuthenticationMutationMock = new(); _wargamingPlayersMutation = new(); + _dictionaryQuery = new(); await SetUpFindClans(); await SetUpFindPlayers(); @@ -71,7 +73,8 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services _playerQueryMock.Object, _wargamingOpenIdAuthenticationMutationMock.Object, _wargamingPlayersMutation.Object, - _updatePlayerMutationMock.Object); + _updatePlayerMutationMock.Object, + _dictionaryQuery.Object); _notificationServiceMock = new(); @@ -90,7 +93,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services players.Should().NotBeNull(); players.Should().NotBeEmpty(); _findPlayersQueryMock.Verify(q => q.ExecuteAsync(expectedSearch, expectedRealm, It.IsAny(), It.IsAny()), Times.Once); - _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny()), Times.Never); + _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); } [Test] @@ -105,7 +108,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services players.Should().BeNull(); _findPlayersQueryMock.Verify(q => q.ExecuteAsync(expectedSearch, expectedRealm, It.IsAny(), It.IsAny()), Times.Once); - _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny()), Times.Once); + _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); } @@ -121,7 +124,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services clans.Should().NotBeNull(); clans.Should().NotBeEmpty(); _findClanQueryMock.Verify(q => q.ExecuteAsync(expectedSearch, expectedRealm, It.IsAny(), It.IsAny()), Times.Once); - _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny()), Times.Never); + _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); } @@ -137,7 +140,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services players.Should().BeNull(); _findClanQueryMock.Verify(q => q.ExecuteAsync(expectedSearch, expectedRealm, It.IsAny(), It.IsAny()), Times.Once); - _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny()), Times.Once); + _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); } [Test] @@ -154,7 +157,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services playerInfoResponse.achievementsBySection.Should().NotBeEmpty(); _playerQueryMock.Verify(q => q.ExecuteAsync(CurrentAccountId, expectedRealm, It.IsAny(), It.IsAny()), Times.Once); - _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny()), Times.Never); + _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); } [Test] @@ -170,7 +173,7 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Services playerInfoResponse.achievementsBySection.Should().BeNull(); _playerQueryMock.Verify(q => q.ExecuteAsync(CurrentAccountId, expectedRealm, It.IsAny(), It.IsAny()), Times.Once); - _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny()), Times.Once); + _notificationServiceMock.Verify(n => n.ReportError(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); } private async Task SetUpFindPlayers() diff --git a/WotBlitzStatisticsPro.Blazor.Tests/WotBlitzStatisticsPro.Blazor.Tests.csproj b/WotBlitzStatisticsPro.Blazor.Tests/WotBlitzStatisticsPro.Blazor.Tests.csproj index 4412096..1070c80 100644 --- a/WotBlitzStatisticsPro.Blazor.Tests/WotBlitzStatisticsPro.Blazor.Tests.csproj +++ b/WotBlitzStatisticsPro.Blazor.Tests/WotBlitzStatisticsPro.Blazor.Tests.csproj @@ -1,19 +1,19 @@ - net5.0 + net6.0 false - - - - - - - + + + + + + + diff --git a/WotBlitzStatisticsPro.Blazor/.graphqlrc.json b/WotBlitzStatisticsPro.Blazor/.graphqlrc.json index 650e043..ced4da2 100644 --- a/WotBlitzStatisticsPro.Blazor/.graphqlrc.json +++ b/WotBlitzStatisticsPro.Blazor/.graphqlrc.json @@ -3,28 +3,28 @@ "documents": "**/*.graphql", "extensions": { "strawberryShake": { - "name": "WotBlitzStatisticsProClient", - "namespace": "WotBlitzStatisticsPro.Blazor.GraphQl", - "url": "https://localhost:5001/graphql/", - "dependencyInjection": true, - "strictSchemaValidation": true, - "hashAlgorithm": "md5", - "useSingleFile": false, - "requestStrategy": "Default", - "outputDirectoryName": "Generated", - "noStore": false, - "emitGeneratedCode": true, - "razorComponents": false, - "records": { - "inputs": false, - "entities": false - }, - "transportProfiles": [ - { - "default": "Http", - "subscription": "WebSocket" - } - ] + "name": "WotBlitzStatisticsProClient", + "namespace": "WotBlitzStatisticsPro.Blazor.GraphQl", + "url": "https://localhost:6001/graphql/", + "dependencyInjection": true, + "strictSchemaValidation": true, + "hashAlgorithm": "md5", + "useSingleFile": false, + "requestStrategy": "Default", + "outputDirectoryName": "Generated", + "noStore": false, + "emitGeneratedCode": true, + "razorComponents": false, + "records": { + "inputs": false, + "entities": false + }, + "transportProfiles": [ + { + "default": "Http", + "subscription": "WebSocket" + } + ] } } -} \ No newline at end of file +} diff --git a/WotBlitzStatisticsPro.Blazor/Constants.cs b/WotBlitzStatisticsPro.Blazor/Constants.cs index 2fadd31..6ac887c 100644 --- a/WotBlitzStatisticsPro.Blazor/Constants.cs +++ b/WotBlitzStatisticsPro.Blazor/Constants.cs @@ -1,6 +1,9 @@ -namespace WotBlitzStatisticsPro.Blazor +using System; +using WotBlitzStatisticsPro.Blazor.Model; + +namespace WotBlitzStatisticsPro.Blazor { - public class Constants + public static class Constants { public const string ClanTagColor = "#d4d481"; @@ -41,5 +44,155 @@ public const string LoginInfoLocalStorageKey = "login_info"; + + /* + * Mongo express filter: + * {"NationId": "germany", "IsPremium": false, "Tier": 9} + * Projection: + * {"Tier" : true,"Name": { $slice: 1 }} + */ + [Obsolete("Do this as the dictionary in the DB, to make possibility to change it in the future")] + public static TankTreeRowMap[] TanksTreeHelper = new TankTreeRowMap[] + { + // Germany + new TankTreeRowMap(2065, 2), // First tank in a tree + new TankTreeRowMap(1809, 1), // Hetzer (4) + new TankTreeRowMap(17425, 3), // Pz.Kpfw. IV Ausf. D (4) + + new TankTreeRowMap(17, 3), // Pz.Kpfw. IV Ausf. G (5) + new TankTreeRowMap(5393, 7), // VK 16.02 Leopard (5) + + new TankTreeRowMap(1553, 1), // Jagdpanzer IV (6) + new TankTreeRowMap(2321, 5), // VK 36.01 (H) (6) + new TankTreeRowMap(7185, 3), // VK 30.01 (P) 6) + new TankTreeRowMap(10001, 8), // VK 28.01 (6) + new TankTreeRowMap(11793, 0), // Nashorn (6) + new TankTreeRowMap(14097, 6), // VK 30.01 (D) (6) + + new TankTreeRowMap(1297, 6), // Panther I (7) + new TankTreeRowMap(3857, 1), // Jagdpanther (7) + new TankTreeRowMap(4113, 7), // VK 30.02 (D) 7) + new TankTreeRowMap(11025, 0), // Sturer Emil (7) + + new TankTreeRowMap(5137, 5), // Tiger II (8) + new TankTreeRowMap(7697, 2), // Ferdinand (8) + new TankTreeRowMap(8465, 6), // Panther II (8) + new TankTreeRowMap(10513, 3), // VK 45.02 (P) Ausf. A (8) + new TankTreeRowMap(11537, 1), // Jagdpanther II (8) + new TankTreeRowMap(13841, 7), // Indien-Panzer (8) + new TankTreeRowMap(18449, 8), // Ru 251 (8) + new TankTreeRowMap(20497, 4), // VK 100.01 (P) (8) + + new TankTreeRowMap(7953, 1), // Jagdtiger (9) + new TankTreeRowMap(14865, 7), // Leopard Prototyp A (9) + + // usa + new TankTreeRowMap(1825, 2), // First tank in a tree + + new TankTreeRowMap(10273, 1), // M8A1 (4) + new TankTreeRowMap(5409, 2), // M7 (4) + + new TankTreeRowMap(3361, 2), // T1 Heavy Tank (5) + new TankTreeRowMap(1057, 4), // M4 Sherman (5) + + new TankTreeRowMap(11553, 0), // M18 Hellcat (6) + new TankTreeRowMap(7201, 1), // M36 Jackson (6) + new TankTreeRowMap(1313, 4), // M4A3E8 Sherman 6) + new TankTreeRowMap(16673, 5), // T37 (6) + new TankTreeRowMap(9761, 6), // M24 Chaffee (6) + + new TankTreeRowMap(3873, 2), // T29 (7) + new TankTreeRowMap(23585, 3), // M-VII-Yoh (7) + + new TankTreeRowMap(8225, 1), // T28 (8) + + new TankTreeRowMap(2593, 0), // T30 (9) + new TankTreeRowMap(20001, 6), // T92E1 (9) + new TankTreeRowMap(15393, 5), // T54E1 (9) + + // france + new TankTreeRowMap(15937, 1), // First tank in a tree + + new TankTreeRowMap(9793, 0), // Somua SAu 40 (4) + new TankTreeRowMap(1089, 1), // B1 (4) + + new TankTreeRowMap(6721, 1), // BDR G1 B (5) + new TankTreeRowMap(14145, 2), // AMX ELC bis (5) + + // ussr + new TankTreeRowMap(4609, 2), // First tank in a tree + new TankTreeRowMap(3329, 0), // МС-1 обр. 1 + + new TankTreeRowMap(6913, 1), // СУ-85Б (4) + new TankTreeRowMap(2049, 2), // А-20 (4) + + new TankTreeRowMap(11777, 2), // КВ-1 (5) + new TankTreeRowMap(1, 5), // Т-34 (5) + + new TankTreeRowMap(2817, 2), // КВ-1С (6) + new TankTreeRowMap(10497, 3), // КВ-2 (6) + new TankTreeRowMap(2561, 4), // Т-34-85 6) + new TankTreeRowMap(16641, 6), // МТ-25 (6) + + new TankTreeRowMap(2305, 0), // СУ-152 (7) + new TankTreeRowMap(10241, 1), // СУ-100М1 (7) + new TankTreeRowMap(513, 2), // ИС (7) + new TankTreeRowMap(5889, 3), // КВ-3 (7) + new TankTreeRowMap(18433, 5), // ЛТТБ (7) + new TankTreeRowMap(24065, 6), // ЛТГ (7) + + new TankTreeRowMap(18177, 6), // Т-54 обл. (8) + + new TankTreeRowMap(7937, 5), // Т-54 (9) + new TankTreeRowMap(23809, 6), // Объект 84 (9) + + new TankTreeRowMap(16897, 4), // Объект 140 (10) + new TankTreeRowMap(13825, 5), // Т-62А (10) + + // china + new TankTreeRowMap(2353, 1), // First tank in a tree + + new TankTreeRowMap(7729, 0), // WZ-131G FT (6) + new TankTreeRowMap(5169, 1), // Type 58 (6) + + new TankTreeRowMap(3633, 1), // IS-2 (7) + new TankTreeRowMap(1073, 2), // T-34-1 (7) + + // uk + new TankTreeRowMap(6993, 2), // First tank in a tree + + new TankTreeRowMap(9041, 0), // Alecto (4) + new TankTreeRowMap(849, 3), // Matilda (4) + + new TankTreeRowMap(2129, 2), // Crusader (5) + new TankTreeRowMap(2897, 4), // Churchill I (5) + + new TankTreeRowMap(593, 1), // Sherman Firefly (6) + new TankTreeRowMap(1105, 2), // Cromwell (6) + + new TankTreeRowMap(18257, 1), // Challenger (7) + new TankTreeRowMap(5457, 2), // Comet (7) + + new TankTreeRowMap(5969, 2), // Centurion Mk. I (8) + new TankTreeRowMap(20049, 3), // FV301 (8) + + // japan + new TankTreeRowMap(865, 2), // First tank in a tree + + new TankTreeRowMap(1377, 1), // Type 3 Chi-Nu (5) + new TankTreeRowMap(5473, 2), // Mitsu 108 (5) + + new TankTreeRowMap(5217, 0), // Chi-To SPG (7) + new TankTreeRowMap(1121, 1), // Type 5 Chi-Ri (7) + + // european + new TankTreeRowMap(2689, 1), // First tank in a tree + + new TankTreeRowMap(3713, 0), // Strv 74 (6) + new TankTreeRowMap(8065, 1), // 40TP Habicha (6) + new TankTreeRowMap(1409, 2), // P.43 bis 6) + new TankTreeRowMap(6529, 3), // Škoda T 25 (6) + + }; } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Generated/DependencyInjection/WotBlitzStatisticsProClientServiceCollectionExtensions.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/DependencyInjection/WotBlitzStatisticsProClientServiceCollectionExtensions.WotBlitzStatisticsProClient.StrawberryShake.cs index ec1e896..5bd0cc0 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/DependencyInjection/WotBlitzStatisticsProClientServiceCollectionExtensions.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/DependencyInjection/WotBlitzStatisticsProClientServiceCollectionExtensions.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace Microsoft.Extensions.DependencyInjection { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public static partial class WotBlitzStatisticsProClientServiceCollectionExtensions { public static global::StrawberryShake.IClientBuilder AddWotBlitzStatisticsProClient(this global::Microsoft.Extensions.DependencyInjection.IServiceCollection services, global::StrawberryShake.ExecutionStrategy strategy = global::StrawberryShake.ExecutionStrategy.NetworkOnly) @@ -15,14 +15,15 @@ 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::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp))); return new global::StrawberryShake.ClientBuilder("WotBlitzStatisticsProClient", services, serviceCollection); @@ -50,34 +51,14 @@ namespace Microsoft.Extensions.DependencyInjection global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => new global::StrawberryShake.Serialization.SerializerResolver(global::System.Linq.Enumerable.Concat(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(parentServices), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)))); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.FindPlayersResultFactory>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.FindPlayersBuilder>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdAuthenticationResultFactory>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdAuthenticationBuilder>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdResultFactory>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdBuilder>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.FindClansResultFactory>(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); @@ -85,27 +66,13 @@ namespace Microsoft.Extensions.DependencyInjection global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerResultFactory>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerBuilder>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.UpdatePlayerResultFactory>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.UpdatePlayerBuilder>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingPlayersResultFactory>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingPlayersBuilder>(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); - global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.FindPlayersResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.FindPlayersBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingAuthenticationQueryResultFactory>(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); @@ -113,6 +80,48 @@ namespace Microsoft.Extensions.DependencyInjection global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.PlayerBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdAuthenticationResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingOpenIdAuthenticationBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingPlayersResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.WargamingPlayersBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.UpdatePlayerResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.UpdatePlayerBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.DictionaryResultFactory>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.DictionaryBuilder>(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton>(services, sp => new global::StrawberryShake.OperationExecutor(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), () => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService>(sp), global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp), strategy)); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); + global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services); global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton(services, sp => global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(sp)); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/DictionaryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/DictionaryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..a9e2148 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/DictionaryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,87 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + /// + /// Represents the operation service of the Dictionary GraphQL operation + /// + /// query Dictionary($nationId: String!, $requestLanguage: RequestLanguage!) { + /// vehicles(nationId: $nationId, language: $requestLanguage) { + /// __typename + /// tankId + /// name + /// description + /// isPremium + /// typeId + /// nationId + /// tier + /// previewImage + /// normalImage + /// priceCredit + /// priceGold + /// nexTanksInTree + /// } + /// } + /// + /// + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class DictionaryQuery : global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionaryQuery + { + private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; + private readonly global::StrawberryShake.Serialization.IInputValueFormatter _stringFormatter; + private readonly global::StrawberryShake.Serialization.IInputValueFormatter _requestLanguageFormatter; + public DictionaryQuery(global::StrawberryShake.IOperationExecutor operationExecutor, global::StrawberryShake.Serialization.ISerializerResolver serializerResolver) + { + _operationExecutor = operationExecutor ?? throw new global::System.ArgumentNullException(nameof(operationExecutor)); + _stringFormatter = serializerResolver.GetInputValueFormatter("String"); + _requestLanguageFormatter = serializerResolver.GetInputValueFormatter("RequestLanguage"); + } + + global::System.Type global::StrawberryShake.IOperationRequestFactory.ResultType => typeof(IDictionaryResult); + public async global::System.Threading.Tasks.Task> ExecuteAsync(global::System.String nationId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::System.Threading.CancellationToken cancellationToken = default) + { + var request = CreateRequest(nationId, requestLanguage); + return await _operationExecutor.ExecuteAsync(request, cancellationToken).ConfigureAwait(false); + } + + public global::System.IObservable> Watch(global::System.String nationId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::StrawberryShake.ExecutionStrategy? strategy = null) + { + var request = CreateRequest(nationId, requestLanguage); + return _operationExecutor.Watch(request, strategy); + } + + private global::StrawberryShake.OperationRequest CreateRequest(global::System.String nationId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage) + { + var variables = new global::System.Collections.Generic.Dictionary(); + variables.Add("nationId", FormatNationId(nationId)); + variables.Add("requestLanguage", FormatRequestLanguage(requestLanguage)); + return CreateRequest(variables); + } + + private global::StrawberryShake.OperationRequest CreateRequest(global::System.Collections.Generic.IReadOnlyDictionary? variables) + { + return new global::StrawberryShake.OperationRequest(id: DictionaryQueryDocument.Instance.Hash.Value, name: "Dictionary", document: DictionaryQueryDocument.Instance, strategy: global::StrawberryShake.RequestStrategy.Default, variables: variables); + } + + private global::System.Object? FormatNationId(global::System.String value) + { + if (value is null) + { + throw new global::System.ArgumentNullException(nameof(value)); + } + + return _stringFormatter.Format(value); + } + + private global::System.Object? FormatRequestLanguage(global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage value) + { + return _requestLanguageFormatter.Format(value); + } + + global::StrawberryShake.OperationRequest global::StrawberryShake.IOperationRequestFactory.Create(global::System.Collections.Generic.IReadOnlyDictionary? variables) + { + return CreateRequest(variables!); + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/DictionaryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/DictionaryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..52ecc19 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/DictionaryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,48 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + /// + /// Represents the operation service of the Dictionary GraphQL operation + /// + /// query Dictionary($nationId: String!, $requestLanguage: RequestLanguage!) { + /// vehicles(nationId: $nationId, language: $requestLanguage) { + /// __typename + /// tankId + /// name + /// description + /// isPremium + /// typeId + /// nationId + /// tier + /// previewImage + /// normalImage + /// priceCredit + /// priceGold + /// nexTanksInTree + /// } + /// } + /// + /// + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class DictionaryQueryDocument : global::StrawberryShake.IDocument + { + private DictionaryQueryDocument() + { + } + + public static DictionaryQueryDocument Instance { get; } = new DictionaryQueryDocument(); + public global::StrawberryShake.OperationKind Kind => global::StrawberryShake.OperationKind.Query; + public global::System.ReadOnlySpan Body => new global::System.Byte[]{0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x28, 0x24, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x3a, 0x20, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x21, 0x2c, 0x20, 0x24, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x21, 0x29, 0x20, 0x7b, 0x20, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x28, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x3a, 0x20, 0x24, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x2c, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x24, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x29, 0x20, 0x7b, 0x20, 0x5f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x20, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x20, 0x74, 0x69, 0x65, 0x72, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x54, 0x61, 0x6e, 0x6b, 0x73, 0x49, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x20, 0x7d, 0x20, 0x7d}; + public global::StrawberryShake.DocumentHash Hash { get; } = new global::StrawberryShake.DocumentHash("md5Hash", "e9e782c29b22caae1a2bb926d200b1e4"); + public override global::System.String ToString() + { +#if NETSTANDARD2_0 + return global::System.Text.Encoding.UTF8.GetString(Body.ToArray()); +#else + return global::System.Text.Encoding.UTF8.GetString(Body); +#endif + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/DictionaryResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/DictionaryResult.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..f3817db --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/DictionaryResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,77 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class DictionaryResult : global::System.IEquatable, IDictionaryResult + { + public DictionaryResult(global::System.Collections.Generic.IReadOnlyList vehicles) + { + Vehicles = vehicles; + } + + /// + /// Returns a list of all vehicles of one nation + /// + /// + /// **Returns:** + /// A list of vehicles + /// + public global::System.Collections.Generic.IReadOnlyList Vehicles { get; } + + public virtual global::System.Boolean Equals(DictionaryResult? other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + + if (ReferenceEquals(this, other)) + { + return true; + } + + if (other.GetType() != GetType()) + { + return false; + } + + return (global::StrawberryShake.Helper.ComparisonHelper.SequenceEqual(Vehicles, other.Vehicles)); + } + + public override global::System.Boolean Equals(global::System.Object? obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj.GetType() != GetType()) + { + return false; + } + + return Equals((DictionaryResult)obj); + } + + public override global::System.Int32 GetHashCode() + { + unchecked + { + int hash = 5; + foreach (var Vehicles_elm in Vehicles) + { + hash ^= 397 * Vehicles_elm.GetHashCode(); + } + + return hash; + } + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Dictionary_Vehicles_VehicleResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Dictionary_Vehicles_VehicleResponse.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..6e8d1f7 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/Dictionary_Vehicles_VehicleResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,156 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + /// + /// Response for vehicle dictionary query + /// + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class Dictionary_Vehicles_VehicleResponse : global::System.IEquatable, IDictionary_Vehicles_VehicleResponse + { + public Dictionary_Vehicles_VehicleResponse(global::System.Int64 tankId, global::System.String name, global::System.String description, global::System.Boolean isPremium, global::System.String typeId, global::System.String nationId, global::System.Int32 tier, global::System.String previewImage, global::System.String normalImage, global::System.Decimal priceCredit, global::System.Decimal priceGold, global::System.Collections.Generic.IReadOnlyList? nexTanksInTree) + { + TankId = tankId; + Name = name; + Description = description; + IsPremium = isPremium; + TypeId = typeId; + NationId = nationId; + Tier = tier; + PreviewImage = previewImage; + NormalImage = normalImage; + PriceCredit = priceCredit; + PriceGold = priceGold; + NexTanksInTree = nexTanksInTree; + } + + /// + /// VehicleId + /// + public global::System.Int64 TankId { get; } + + /// + /// Vehicle name + /// + public global::System.String Name { get; } + + /// + /// Vehicle description + /// + public global::System.String Description { get; } + + /// + /// Is vehicle premium + /// + public global::System.Boolean IsPremium { get; } + + /// + /// Vehicle type id + /// + public global::System.String TypeId { get; } + + /// + /// Vehicle nationId + /// + public global::System.String NationId { get; } + + /// + /// Vehicle tier + /// + public global::System.Int32 Tier { get; } + + /// + /// Vehicle preview image + /// + public global::System.String PreviewImage { get; } + + /// + /// Vehicle normal image + /// + public global::System.String NormalImage { get; } + + /// + /// Vehicle price in credits + /// + public global::System.Decimal PriceCredit { get; } + + /// + /// Vehicle price in gold + /// + public global::System.Decimal PriceGold { get; } + + /// + /// Ids of nex tanks and their cost in XP + /// + public global::System.Collections.Generic.IReadOnlyList? NexTanksInTree { get; } + + public virtual global::System.Boolean Equals(Dictionary_Vehicles_VehicleResponse? other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + + if (ReferenceEquals(this, other)) + { + return true; + } + + if (other.GetType() != GetType()) + { + return false; + } + + return (TankId == other.TankId) && Name.Equals(other.Name) && Description.Equals(other.Description) && IsPremium == other.IsPremium && TypeId.Equals(other.TypeId) && NationId.Equals(other.NationId) && Tier == other.Tier && PreviewImage.Equals(other.PreviewImage) && NormalImage.Equals(other.NormalImage) && PriceCredit == other.PriceCredit && PriceGold == other.PriceGold && global::StrawberryShake.Helper.ComparisonHelper.SequenceEqual(NexTanksInTree, other.NexTanksInTree); + } + + public override global::System.Boolean Equals(global::System.Object? obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj.GetType() != GetType()) + { + return false; + } + + return Equals((Dictionary_Vehicles_VehicleResponse)obj); + } + + public override global::System.Int32 GetHashCode() + { + unchecked + { + int hash = 5; + hash ^= 397 * TankId.GetHashCode(); + hash ^= 397 * Name.GetHashCode(); + hash ^= 397 * Description.GetHashCode(); + hash ^= 397 * IsPremium.GetHashCode(); + hash ^= 397 * TypeId.GetHashCode(); + hash ^= 397 * NationId.GetHashCode(); + hash ^= 397 * Tier.GetHashCode(); + hash ^= 397 * PreviewImage.GetHashCode(); + hash ^= 397 * NormalImage.GetHashCode(); + hash ^= 397 * PriceCredit.GetHashCode(); + hash ^= 397 * PriceGold.GetHashCode(); + if (NexTanksInTree != null) + { + foreach (var NexTanksInTree_elm in NexTanksInTree) + { + hash ^= 397 * NexTanksInTree_elm.GetHashCode(); + } + } + + return hash; + } + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index 03cc454..0498c53 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -22,7 +22,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClansQuery : global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindClansQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindClansQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index cbf08f8..dfc2f08 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindClansQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindClansQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -22,7 +22,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClansQueryDocument : global::StrawberryShake.IDocument { private FindClansQueryDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 9c9e6af..c22aa9a 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClansResult : global::System.IEquatable, IFindClansResult { public FindClansResult(global::System.Collections.Generic.IReadOnlyList? clans) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs index c18755a..6a90ad2 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Found clans list item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClans_Clans_ClanSearchResponseItem : global::System.IEquatable, IFindClans_Clans_ClanSearchResponseItem { public FindClans_Clans_ClanSearchResponseItem(global::System.Int64 clanId, global::System.Int32 createdAt, global::System.Int32 membersCount, global::System.String? name, global::System.String? tag) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index eb16f00..6fe520a 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -23,7 +23,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayersQuery : global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index 5b44380..08a1094 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -23,7 +23,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayersQueryDocument : global::StrawberryShake.IDocument { private FindPlayersQueryDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 1c80c2a..0fa69de 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayersResult : global::System.IEquatable, IFindPlayersResult { public FindPlayersResult(global::System.Collections.Generic.IReadOnlyList? players) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs index 47fefcd..c33f415 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/FindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/FindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Account search result item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayers_Players_AccountsSearchResponseItem : global::System.IEquatable, IFindPlayers_Players_AccountsSearchResponseItem { public FindPlayers_Players_AccountsSearchResponseItem(global::System.Int64 accountId, global::System.String? nickname, global::System.String? clanTag, global::System.DateTimeOffset lastBattle, global::System.Int64 battlesCount, global::System.Int32 winRate) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IAccount.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IAccount.WotBlitzStatisticsProClient.StrawberryShake.cs index 53619f2..50d3db8 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IAccount.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IAccount.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IAccount : IStatistics + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IAccount : IStatistics { /// /// Player account identifier diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IClan.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IClan.WotBlitzStatisticsProClient.StrawberryShake.cs index 1f2762b..5e2e75e 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IClan.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IClan.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Clan information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IClan + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IClan { /// /// Clan ID diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IClanShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IClanShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 6598cb4..b0109e3 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IClanShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IClanShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Found clans list item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IClanShortInfo + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IClanShortInfo { /// /// Clan Id diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IDictionaryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IDictionaryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..7510046 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/IDictionaryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,34 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + /// + /// Represents the operation service of the Dictionary GraphQL operation + /// + /// query Dictionary($nationId: String!, $requestLanguage: RequestLanguage!) { + /// vehicles(nationId: $nationId, language: $requestLanguage) { + /// __typename + /// tankId + /// name + /// description + /// isPremium + /// typeId + /// nationId + /// tier + /// previewImage + /// normalImage + /// priceCredit + /// priceGold + /// nexTanksInTree + /// } + /// } + /// + /// + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IDictionaryQuery : global::StrawberryShake.IOperationRequestFactory + { + global::System.Threading.Tasks.Task> ExecuteAsync(global::System.String nationId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::System.Threading.CancellationToken cancellationToken = default); + global::System.IObservable> Watch(global::System.String nationId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::StrawberryShake.ExecutionStrategy? strategy = null); + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IDictionaryResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IDictionaryResult.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..aa76fe7 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/IDictionaryResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,18 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IDictionaryResult + { + /// + /// Returns a list of all vehicles of one nation + /// + /// + /// **Returns:** + /// A list of vehicles + /// + public global::System.Collections.Generic.IReadOnlyList Vehicles { get; } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IDictionary_Vehicles.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IDictionary_Vehicles.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..2c655af --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/IDictionary_Vehicles.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,72 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + /// + /// Response for vehicle dictionary query + /// + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IDictionary_Vehicles + { + /// + /// VehicleId + /// + public global::System.Int64 TankId { get; } + + /// + /// Vehicle name + /// + public global::System.String Name { get; } + + /// + /// Vehicle description + /// + public global::System.String Description { get; } + + /// + /// Is vehicle premium + /// + public global::System.Boolean IsPremium { get; } + + /// + /// Vehicle type id + /// + public global::System.String TypeId { get; } + + /// + /// Vehicle nationId + /// + public global::System.String NationId { get; } + + /// + /// Vehicle tier + /// + public global::System.Int32 Tier { get; } + + /// + /// Vehicle preview image + /// + public global::System.String PreviewImage { get; } + + /// + /// Vehicle normal image + /// + public global::System.String NormalImage { get; } + + /// + /// Vehicle price in credits + /// + public global::System.Decimal PriceCredit { get; } + + /// + /// Vehicle price in gold + /// + public global::System.Decimal PriceGold { get; } + + /// + /// Ids of nex tanks and their cost in XP + /// + public global::System.Collections.Generic.IReadOnlyList? NexTanksInTree { get; } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IDictionary_Vehicles_VehicleResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IDictionary_Vehicles_VehicleResponse.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..3cec14f --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/IDictionary_Vehicles_VehicleResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,13 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl +{ + /// + /// Response for vehicle dictionary query + /// + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IDictionary_Vehicles_VehicleResponse : IDictionary_Vehicles + { + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index 08714c2..9823e7d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindClansQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -22,8 +22,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindClansQuery : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindClansQuery : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.String searchString, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage language, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::System.String searchString, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage language, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 657eecb..3f3bf2f 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindClansResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindClansResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindClansResult { /// /// Finds clans by search string diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans.WotBlitzStatisticsProClient.StrawberryShake.cs index 74cf45f..4d7067d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Found clans list item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindClans_Clans : IClanShortInfo + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindClans_Clans : IClanShortInfo { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs index f39c565..c0e4a85 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindClans_Clans_ClanSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Found clans list item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindClans_Clans_ClanSearchResponseItem : IFindClans_Clans + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindClans_Clans_ClanSearchResponseItem : IFindClans_Clans { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index 55ea95c..c1fc908 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -23,8 +23,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindPlayersQuery : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindPlayersQuery : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.String accountNick, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage language, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::System.String accountNick, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage language, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 872f7d9..a085ff7 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindPlayersResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindPlayersResult { /// /// Finds Wargaming accounts by nick diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players.WotBlitzStatisticsProClient.StrawberryShake.cs index 845c085..d54cc2d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Account search result item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindPlayers_Players : IPlayerShortInfo + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindPlayers_Players : IPlayerShortInfo { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs index e59b13a..cab432a 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IFindPlayers_Players_AccountsSearchResponseItem.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Account search result item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IFindPlayers_Players_AccountsSearchResponseItem : IFindPlayers_Players + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IFindPlayers_Players_AccountsSearchResponseItem : IFindPlayers_Players { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IMedal.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IMedal.WotBlitzStatisticsProClient.StrawberryShake.cs index e56cf2d..77f499b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IMedal.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IMedal.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Player's achievement information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IMedal + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IMedal { /// /// Achievement Id diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index 75f6e59..5155330 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -130,8 +130,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayerQuery : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayerQuery : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.Int64 accountId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::System.Int64 accountId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 399c58c..beb9450 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayerResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayerResult { /// /// Gathers all account information diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayerShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayerShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 73322c4..fff0689 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayerShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayerShortInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Account search result item /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayerShortInfo + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayerShortInfo { /// /// Player accountId diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 9f20a2f..1e94679 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountInfo : IAccount + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountInfo : IAccount { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index 0068695..a078908 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountInfo_AccountInfoResponse : IPlayer_AccountInfo + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountInfo_AccountInfoResponse : IPlayer_AccountInfo { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 25d88e9..23a132d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Clan information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountInfo_ClanInfo : IClan + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountInfo_ClanInfo : IClan { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index 4cbebfb..a7f2b3d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Clan information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountInfo_ClanInfo_ClanInfoResponse : IPlayer_AccountInfo_ClanInfo + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountInfo_ClanInfo_ClanInfoResponse : IPlayer_AccountInfo_ClanInfo { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks.WotBlitzStatisticsProClient.StrawberryShake.cs index 751e3c8..08ddb1b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player's tank /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountInfo_Tanks : ITank + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountInfo_Tanks : ITank { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index fdbe0ee..aa051a6 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player's tank /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountInfo_Tanks_TankInfoResponse : IPlayer_AccountInfo_Tanks + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountInfo_Tanks_TankInfoResponse : IPlayer_AccountInfo_Tanks { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals.WotBlitzStatisticsProClient.StrawberryShake.cs index a8ae1dd..30b2fd8 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents information about player's achievements /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountMedals + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountMedals { /// /// Player Id diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index d227137..14d3652 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents information about player's achievements /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountMedals_AccountAchievementsResponse : IPlayer_AccountMedals + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountMedals_AccountAchievementsResponse : IPlayer_AccountMedals { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections.WotBlitzStatisticsProClient.StrawberryShake.cs index d066b7e..ee1e01c 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents achievement section info and it's achievements list /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountMedals_Sections : ISection + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountMedals_Sections : ISection { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs index d62aaea..e73ae96 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents achievement section info and it's achievements list /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountMedals_Sections_AchievementSection : IPlayer_AccountMedals_Sections + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountMedals_Sections_AchievementSection : IPlayer_AccountMedals_Sections { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals.WotBlitzStatisticsProClient.StrawberryShake.cs index d9fe937..529d8b1 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Player's achievement information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountMedals_Sections_Medals : IMedal + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountMedals_Sections_Medals : IMedal { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs index 2781c77..71b1ae2 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IPlayer_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Player's achievement information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IPlayer_AccountMedals_Sections_Medals_Achievement : IPlayer_AccountMedals_Sections_Medals + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IPlayer_AccountMedals_Sections_Medals_Achievement : IPlayer_AccountMedals_Sections_Medals { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/ISection.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/ISection.WotBlitzStatisticsProClient.StrawberryShake.cs index db634bb..6d61f98 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/ISection.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/ISection.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents achievement section info and it's achievements list /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface ISection + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface ISection { /// /// Section Identifier diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IStatistics.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IStatistics.WotBlitzStatisticsProClient.StrawberryShake.cs index f6d4e81..1083f27 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IStatistics.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IStatistics.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents game's statistics /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IStatistics + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IStatistics { /// /// Last battle time diff --git a/WotBlitzStatisticsPro.Blazor/Generated/ITank.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/ITank.WotBlitzStatisticsProClient.StrawberryShake.cs index 12c0251..f9d7eea 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/ITank.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/ITank.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player's tank /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface ITank : IStatistics + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface ITank : IStatistics { /// /// Tank identifier diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index 7131ec5..0f37adf 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,8 +11,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IUpdatePlayerMutation : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IUpdatePlayerMutation : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.Int64 accountId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::System.Int64 accountId, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::WotBlitzStatisticsPro.Blazor.GraphQl.RequestLanguage requestLanguage, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 485feb3..e0689f1 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IUpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IUpdatePlayerResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IUpdatePlayerResult { /// /// Gathers all account information diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index 4e1ff8a..cc04f9b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,8 +11,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingAuthenticationQueryQuery : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingAuthenticationQueryQuery : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 9180024..af896e7 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingAuthenticationQueryResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingAuthenticationQueryResult { /// /// Returns authentication URL accourding Realm diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index 54c3092..966edb3 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -16,8 +16,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingOpenIdAuthenticationMutation : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingOpenIdAuthenticationMutation : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.String oldToken, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::System.String oldToken, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 8fbb63c..b5637db 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingOpenIdAuthenticationResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingOpenIdAuthenticationResult { /// /// Prolongates Wargaming authentication token diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken.WotBlitzStatisticsProClient.StrawberryShake.cs index 96bf089..8407308 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Prolong Wargaming Auth token response /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingOpenIdAuthentication_ProlongAuthToken + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingOpenIdAuthentication_ProlongAuthToken { /// /// New access token diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index f13ed95..4876694 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,8 +6,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Prolong Wargaming Auth token response /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo : IWargamingOpenIdAuthentication_ProlongAuthToken + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo : IWargamingOpenIdAuthentication_ProlongAuthToken { } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index b36555d..0f8b145 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,8 +11,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingOpenIdMutation : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingOpenIdMutation : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.String token, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::System.String token, global::WotBlitzStatisticsPro.Blazor.GraphQl.RealmType realmType, global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs index a8a2301..8c00581 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingOpenIdResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingOpenIdResult { /// /// Removes player's access token diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index 970dc5b..390bd92 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,8 +11,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingPlayersMutation : global::StrawberryShake.IOperationRequestFactory + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingPlayersMutation : global::StrawberryShake.IOperationRequestFactory { global::System.Threading.Tasks.Task> ExecuteAsync(global::System.Threading.CancellationToken cancellationToken = default); global::System.IObservable> Watch(global::StrawberryShake.ExecutionStrategy? strategy = null); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 4c50944..ff1733d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,8 +3,8 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWargamingPlayersResult + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWargamingPlayersResult { /// /// Removes player's acoount history from database diff --git a/WotBlitzStatisticsPro.Blazor/Generated/IWotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/IWotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs index bc5c15d..d473aef 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/IWotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/IWotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,23 +6,25 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents the WotBlitzStatisticsProClient GraphQL client /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] - public interface IWotBlitzStatisticsProClient + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial interface IWotBlitzStatisticsProClient { + global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery FindClans { get; } + global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery FindPlayers { get; } - global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation WargamingOpenIdAuthentication { get; } + global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery WargamingAuthenticationQuery { get; } global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation WargamingOpenId { get; } - global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery FindClans { get; } - global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player { get; } - global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation UpdatePlayer { get; } + global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation WargamingOpenIdAuthentication { get; } global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation WargamingPlayers { get; } - global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery WargamingAuthenticationQuery { get; } + global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation UpdatePlayer { get; } + + global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionaryQuery Dictionary { get; } } } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/MarkOfMastery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/MarkOfMastery.WotBlitzStatisticsProClient.StrawberryShake.cs index dcd5e2b..38837a5 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/MarkOfMastery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/MarkOfMastery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public enum MarkOfMastery { /// diff --git a/WotBlitzStatisticsPro.Blazor/Generated/PlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/PlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index f2d6e84..bf7b652 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/PlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/PlayerQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -130,7 +130,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class PlayerQuery : global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/PlayerQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/PlayerQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index 43c87c7..26aab2b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/PlayerQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/PlayerQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -130,7 +130,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class PlayerQueryDocument : global::StrawberryShake.IDocument { private PlayerQueryDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/PlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/PlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs index b2f317b..2f7d7b8 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/PlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/PlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class PlayerResult : global::System.IEquatable, IPlayerResult { public PlayerResult(global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayer_AccountInfo accountInfo, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayer_AccountMedals accountMedals) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index a7f49b3..eb20c50 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_AccountInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountInfo_AccountInfoResponse : global::System.IEquatable, IPlayer_AccountInfo_AccountInfoResponse { public Player_AccountInfo_AccountInfoResponse(global::System.Int64 accountId, global::System.DateTimeOffset createdAt, global::System.String? nickname, global::System.Int64 maxFragsTankId, global::System.Int64 maxXpTankId, global::System.Double avgTier, global::System.DateTimeOffset lastBattleTime, global::System.Int64 battles, global::System.Int64 capturePoints, global::System.Int64 damageDealt, global::System.Int64 damageReceived, global::System.Int64 droppedCapturePoints, global::System.Int64 frags, global::System.Int64 frags8P, global::System.Int64 hits, global::System.Int64 losses, global::System.Int64 maxFrags, global::System.Int64 maxXp, global::System.Int64 shots, global::System.Int64 spotted, global::System.Int64 survivedBattles, global::System.Int64 winAndSurvived, global::System.Int64 wins, global::System.Int64 xp, global::System.Double wn7, global::System.Decimal winRate, global::System.Decimal avgDamage, global::System.Decimal avgXp, global::System.Decimal damageCoefficient, global::System.Decimal survivalRate, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayer_AccountInfo_ClanInfo? clanInfo, global::System.Collections.Generic.IReadOnlyList? tanks) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index f0057da..a41de55 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_ClanInfo_ClanInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Clan information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountInfo_ClanInfo_ClanInfoResponse : global::System.IEquatable, IPlayer_AccountInfo_ClanInfo_ClanInfoResponse { public Player_AccountInfo_ClanInfo_ClanInfoResponse(global::System.Int64 clanId, global::System.DateTimeOffset joinedAt, global::System.String? role, global::System.String roleLocalized, global::System.String? name, global::System.DateTimeOffset createdAt, global::System.Int64? creatorId, global::System.String? creatorName, global::System.String? description, global::System.String? descriptionHtml, global::System.Int64? leaderId, global::System.String? leaderName, global::System.Int64? membersCount, global::System.String? motto, global::System.String? tag, global::System.DateTimeOffset? updatedAt) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index 5e2b305..bf4855e 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountInfo_Tanks_TankInfoResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Information about player's tank /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountInfo_Tanks_TankInfoResponse : global::System.IEquatable, IPlayer_AccountInfo_Tanks_TankInfoResponse { public Player_AccountInfo_Tanks_TankInfoResponse(global::System.Int64 tankId, global::System.Int32 battleLifeTimeInSeconds, global::WotBlitzStatisticsPro.Blazor.GraphQl.MarkOfMastery markOfMastery, global::System.Decimal avgBattleLifeTimeInMinutes, global::System.String? name, global::System.String? tankNationId, global::System.String? tankNation, global::System.Int32 tier, global::System.String? tankTypeId, global::System.String? tankType, global::System.Boolean isPremium, global::System.String? previewImage, global::System.String? normalImage, global::System.DateTimeOffset lastBattleTime, global::System.Int64 battles, global::System.Int64 capturePoints, global::System.Int64 damageDealt, global::System.Int64 damageReceived, global::System.Int64 droppedCapturePoints, global::System.Int64 frags, global::System.Int64 frags8P, global::System.Int64 hits, global::System.Int64 losses, global::System.Int64 maxFrags, global::System.Int64 maxXp, global::System.Int64 shots, global::System.Int64 spotted, global::System.Int64 survivedBattles, global::System.Int64 winAndSurvived, global::System.Int64 wins, global::System.Int64 xp, global::System.Double wn7, global::System.Decimal winRate, global::System.Decimal avgDamage, global::System.Decimal avgXp, global::System.Decimal damageCoefficient, global::System.Decimal survivalRate) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs index 9b749fb..11c0481 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_AccountAchievementsResponse.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents information about player's achievements /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountMedals_AccountAchievementsResponse : global::System.IEquatable, IPlayer_AccountMedals_AccountAchievementsResponse { public Player_AccountMedals_AccountAchievementsResponse(global::System.Int64 accountId, global::System.Collections.Generic.IReadOnlyList? sections) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs index 04aea34..6aebe36 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_AchievementSection.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents achievement section info and it's achievements list /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountMedals_Sections_AchievementSection : global::System.IEquatable, IPlayer_AccountMedals_Sections_AchievementSection { public Player_AccountMedals_Sections_AchievementSection(global::System.String sectionId, global::System.Int32 order, global::System.String name, global::System.Collections.Generic.IReadOnlyList? medals) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs index 6ccb105..2534ae1 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Player_AccountMedals_Sections_Medals_Achievement.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Player's achievement information /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountMedals_Sections_Medals_Achievement : global::System.IEquatable, IPlayer_AccountMedals_Sections_Medals_Achievement { public Player_AccountMedals_Sections_Medals_Achievement(global::System.String id, global::System.String? name, global::System.String? medalType, global::System.String? condition, global::System.String? description, global::System.Int32 achievementValue, global::System.Int32? maxSeriesValue, global::System.String? image, global::System.String? imageBig, global::System.Int64? order, global::System.String sectionId) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/RealmType.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/RealmType.WotBlitzStatisticsProClient.StrawberryShake.cs index 82c3aaa..0ad0b2e 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/RealmType.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/RealmType.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public enum RealmType { /// diff --git a/WotBlitzStatisticsPro.Blazor/Generated/RequestLanguage.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/RequestLanguage.WotBlitzStatisticsProClient.StrawberryShake.cs index 36ac4c2..d5ab233 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/RequestLanguage.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/RequestLanguage.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public enum RequestLanguage { /// diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Serialization/MarkOfMasterySerializer.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Serialization/MarkOfMasterySerializer.WotBlitzStatisticsProClient.StrawberryShake.cs index 64aed85..68f7fb1 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Serialization/MarkOfMasterySerializer.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Serialization/MarkOfMasterySerializer.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class MarkOfMasterySerializer : global::StrawberryShake.Serialization.IInputValueFormatter, global::StrawberryShake.Serialization.ILeafValueParser { public global::System.String TypeName => "MarkOfMastery"; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RealmTypeSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RealmTypeSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs index cde294a..392e1ef 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RealmTypeSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RealmTypeSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class RealmTypeSerializer : global::StrawberryShake.Serialization.IInputValueFormatter, global::StrawberryShake.Serialization.ILeafValueParser { public global::System.String TypeName => "RealmType"; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RequestLanguageSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RequestLanguageSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs index 6d9fa5e..cd97561 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RequestLanguageSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/Serialization/RequestLanguageSerializer.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class RequestLanguageSerializer : global::StrawberryShake.Serialization.IInputValueFormatter, global::StrawberryShake.Serialization.ILeafValueParser { public global::System.String TypeName => "RequestLanguage"; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/AccountAchievementsResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/AccountAchievementsResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs index df6c9bc..801f74a 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/AccountAchievementsResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/AccountAchievementsResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Represents information about player's achievements - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class AccountAchievementsResponseData { public AccountAchievementsResponseData(global::System.String __typename, global::System.Int64? accountId = default !, global::System.Collections.Generic.IReadOnlyList? sections = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/AccountInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/AccountInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs index 5efb998..853bc72 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/AccountInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/AccountInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Information about player - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class AccountInfoResponseData : IStatisticsData { public AccountInfoResponseData(global::System.String __typename, global::System.Int64? accountId = default !, global::System.DateTimeOffset? createdAt = default !, global::System.String? nickname = default !, global::System.Int64? maxFragsTankId = default !, global::System.Int64? maxXpTankId = default !, global::System.Double? avgTier = default !, global::System.DateTimeOffset? lastBattleTime = default !, global::System.Int64? battles = default !, global::System.Int64? capturePoints = default !, global::System.Int64? damageDealt = default !, global::System.Int64? damageReceived = default !, global::System.Int64? droppedCapturePoints = default !, global::System.Int64? frags = default !, global::System.Int64? frags8P = default !, global::System.Int64? hits = default !, global::System.Int64? losses = default !, global::System.Int64? maxFrags = default !, global::System.Int64? maxXp = default !, global::System.Int64? shots = default !, global::System.Int64? spotted = default !, global::System.Int64? survivedBattles = default !, global::System.Int64? winAndSurvived = default !, global::System.Int64? wins = default !, global::System.Int64? xp = default !, global::System.Double? wn7 = default !, global::System.Decimal? winRate = default !, global::System.Decimal? avgDamage = default !, global::System.Decimal? avgXp = default !, global::System.Decimal? damageCoefficient = default !, global::System.Decimal? survivalRate = default !, global::WotBlitzStatisticsPro.Blazor.GraphQl.State.ClanInfoResponseData? clanInfo = default !, global::System.Collections.Generic.IReadOnlyList? tanks = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/AccountsSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/AccountsSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs index 9f86518..8d61d47 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/AccountsSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/AccountsSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Account search result item - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class AccountsSearchResponseItemData { public AccountsSearchResponseItemData(global::System.String __typename, global::System.Int64? accountId = default !, global::System.String? nickname = default !, global::System.String? clanTag = default !, global::System.DateTimeOffset? lastBattle = default !, global::System.Int64? battlesCount = default !, global::System.Int32? winRate = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementEntity.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementEntity.WotBlitzStatisticsProClient.StrawberryShake.cs index 5b5600b..88f5738 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementEntity.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementEntity.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Player's achievement information - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class AchievementEntity { public AchievementEntity(global::System.String id = default !, global::System.String? name = default !, global::System.String? medalType = default !, global::System.String? condition = default !, global::System.String? description = default !, global::System.Int32 achievementValue = default !, global::System.Int32? maxSeriesValue = default !, global::System.String? image = default !, global::System.String? imageBig = default !, global::System.Int64? order = default !, global::System.String sectionId = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementSectionData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementSectionData.WotBlitzStatisticsProClient.StrawberryShake.cs index 1f06991..bc9dbbd 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementSectionData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/AchievementSectionData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Represents achievement section info and it's achievements list - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class AchievementSectionData { public AchievementSectionData(global::System.String __typename, global::System.String? sectionId = default !, global::System.Int32? order = default !, global::System.String? name = default !, global::System.Collections.Generic.IReadOnlyList? medals = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/ClanInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/ClanInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs index 7f84f79..e54b569 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/ClanInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/ClanInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Clan information - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class ClanInfoResponseData { public ClanInfoResponseData(global::System.String __typename, global::System.Int64? clanId = default !, global::System.DateTimeOffset? joinedAt = default !, global::System.String? role = default !, global::System.String? roleLocalized = default !, global::System.String? name = default !, global::System.DateTimeOffset? createdAt = default !, global::System.Int64? creatorId = default !, global::System.String? creatorName = default !, global::System.String? description = default !, global::System.String? descriptionHtml = default !, global::System.Int64? leaderId = default !, global::System.String? leaderName = default !, global::System.Int64? membersCount = default !, global::System.String? motto = default !, global::System.String? tag = default !, global::System.DateTimeOffset? updatedAt = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/ClanSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/ClanSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs index 3437001..7f3fa11 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/ClanSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/ClanSearchResponseItemData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Found clans list item - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class ClanSearchResponseItemData { public ClanSearchResponseItemData(global::System.String __typename, global::System.Int64? clanId = default !, global::System.Int32? createdAt = default !, global::System.Int32? membersCount = default !, global::System.String? name = default !, global::System.String? tag = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..f42a590 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,182 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl.State +{ + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class DictionaryBuilder : global::StrawberryShake.IOperationResultBuilder + { + private readonly global::StrawberryShake.IEntityStore _entityStore; + private readonly global::StrawberryShake.IEntityIdSerializer _idSerializer; + private readonly global::StrawberryShake.IOperationResultDataFactory _resultDataFactory; + private readonly global::StrawberryShake.Serialization.ILeafValueParser _requestLanguageParser; + private readonly global::StrawberryShake.Serialization.ILeafValueParser _stringParser; + private readonly global::StrawberryShake.Serialization.ILeafValueParser _longParser; + private readonly global::StrawberryShake.Serialization.ILeafValueParser _booleanParser; + private readonly global::StrawberryShake.Serialization.ILeafValueParser _intParser; + private readonly global::StrawberryShake.Serialization.ILeafValueParser _decimalParser; + public DictionaryBuilder(global::StrawberryShake.IEntityStore entityStore, global::StrawberryShake.IEntityIdSerializer idSerializer, global::StrawberryShake.IOperationResultDataFactory resultDataFactory, global::StrawberryShake.Serialization.ISerializerResolver serializerResolver) + { + _entityStore = entityStore ?? throw new global::System.ArgumentNullException(nameof(entityStore)); + _idSerializer = idSerializer ?? throw new global::System.ArgumentNullException(nameof(idSerializer)); + _resultDataFactory = resultDataFactory ?? throw new global::System.ArgumentNullException(nameof(resultDataFactory)); + _requestLanguageParser = serializerResolver.GetLeafValueParser("RequestLanguage") ?? throw new global::System.ArgumentException("No serializer for type `RequestLanguage` found."); + _stringParser = serializerResolver.GetLeafValueParser("String") ?? throw new global::System.ArgumentException("No serializer for type `String` found."); + _longParser = serializerResolver.GetLeafValueParser("Long") ?? throw new global::System.ArgumentException("No serializer for type `Long` found."); + _booleanParser = serializerResolver.GetLeafValueParser("Boolean") ?? throw new global::System.ArgumentException("No serializer for type `Boolean` found."); + _intParser = serializerResolver.GetLeafValueParser("Int") ?? throw new global::System.ArgumentException("No serializer for type `Int` found."); + _decimalParser = serializerResolver.GetLeafValueParser("Decimal") ?? throw new global::System.ArgumentException("No serializer for type `Decimal` found."); + } + + public global::StrawberryShake.IOperationResult Build(global::StrawberryShake.Response response) + { + (IDictionaryResult Result, DictionaryResultInfo Info)? data = null; + global::System.Collections.Generic.IReadOnlyList? errors = null; + if (response.Exception is null) + { + try + { + if (response.Body != null) + { + if (response.Body.RootElement.TryGetProperty("data", out global::System.Text.Json.JsonElement dataElement) && dataElement.ValueKind == global::System.Text.Json.JsonValueKind.Object) + { + data = BuildData(dataElement); + } + + if (response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + } + } + catch (global::System.Exception ex) + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(ex.Message, exception: ex, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } + } + else + { + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } + } + + return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); + } + + private (IDictionaryResult, DictionaryResultInfo) BuildData(global::System.Text.Json.JsonElement obj) + { + var entityIds = new global::System.Collections.Generic.HashSet(); + global::StrawberryShake.IEntityStoreSnapshot snapshot = default !; + _entityStore.Update(session => + { + snapshot = session.CurrentSnapshot; + }); + var resultInfo = new DictionaryResultInfo(DeserializeNonNullableIDictionary_VehiclesNonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "vehicles")), entityIds, snapshot.Version); + return (_resultDataFactory.Create(resultInfo), resultInfo); + } + + private global::System.Collections.Generic.IReadOnlyList DeserializeNonNullableIDictionary_VehiclesNonNullableArray(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + var vehicleResponses = new global::System.Collections.Generic.List(); + foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray()) + { + vehicleResponses.Add(DeserializeNonNullableIDictionary_Vehicles(child)); + } + + return vehicleResponses; + } + + private global::WotBlitzStatisticsPro.Blazor.GraphQl.State.VehicleResponseData DeserializeNonNullableIDictionary_Vehicles(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + var typename = obj.Value.GetProperty("__typename").GetString(); + if (typename?.Equals("VehicleResponse", global::System.StringComparison.Ordinal) ?? false) + { + return new global::WotBlitzStatisticsPro.Blazor.GraphQl.State.VehicleResponseData(typename, tankId: DeserializeNonNullableInt64(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "tankId")), name: DeserializeNonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "name")), description: DeserializeNonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "description")), isPremium: DeserializeNonNullableBoolean(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "isPremium")), typeId: DeserializeNonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "typeId")), nationId: DeserializeNonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "nationId")), tier: DeserializeNonNullableInt32(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "tier")), previewImage: DeserializeNonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "previewImage")), normalImage: DeserializeNonNullableString(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "normalImage")), priceCredit: DeserializeNonNullableDecimal(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "priceCredit")), priceGold: DeserializeNonNullableDecimal(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "priceGold")), nexTanksInTree: DeserializeInt64NonNullableArray(global::StrawberryShake.Json.JsonElementExtensions.GetPropertyOrNull(obj, "nexTanksInTree"))); + } + + throw new global::System.NotSupportedException(); + } + + private global::System.Int64 DeserializeNonNullableInt64(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + return _longParser.Parse(obj.Value.GetInt64()!); + } + + private global::System.String DeserializeNonNullableString(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + return _stringParser.Parse(obj.Value.GetString()!); + } + + private global::System.Boolean DeserializeNonNullableBoolean(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + return _booleanParser.Parse(obj.Value.GetBoolean()!); + } + + private global::System.Int32 DeserializeNonNullableInt32(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + return _intParser.Parse(obj.Value.GetInt32()!); + } + + private global::System.Decimal DeserializeNonNullableDecimal(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + throw new global::System.ArgumentNullException(); + } + + return _decimalParser.Parse(obj.Value.GetDecimal()!); + } + + private global::System.Collections.Generic.IReadOnlyList? DeserializeInt64NonNullableArray(global::System.Text.Json.JsonElement? obj) + { + if (!obj.HasValue) + { + return null; + } + + var @longs = new global::System.Collections.Generic.List(); + foreach (global::System.Text.Json.JsonElement child in obj.Value.EnumerateArray()) + { + @longs.Add(DeserializeNonNullableInt64(child)); + } + + return @longs; + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..cd04995 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,67 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl.State +{ + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class DictionaryResultFactory : global::StrawberryShake.IOperationResultDataFactory + { + private readonly global::StrawberryShake.IEntityStore _entityStore; + public DictionaryResultFactory(global::StrawberryShake.IEntityStore entityStore) + { + _entityStore = entityStore ?? throw new global::System.ArgumentNullException(nameof(entityStore)); + } + + global::System.Type global::StrawberryShake.IOperationResultDataFactory.ResultType => typeof(global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionaryResult); + public DictionaryResult Create(global::StrawberryShake.IOperationResultDataInfo dataInfo, global::StrawberryShake.IEntityStoreSnapshot? snapshot = null) + { + if (snapshot is null) + { + snapshot = _entityStore.CurrentSnapshot; + } + + if (dataInfo is DictionaryResultInfo info) + { + return new DictionaryResult(MapNonNullableIDictionary_VehiclesNonNullableArray(info.Vehicles, snapshot)); + } + + throw new global::System.ArgumentException("DictionaryResultInfo expected."); + } + + private global::System.Collections.Generic.IReadOnlyList MapNonNullableIDictionary_VehiclesNonNullableArray(global::System.Collections.Generic.IReadOnlyList? list, global::StrawberryShake.IEntityStoreSnapshot snapshot) + { + if (list is null) + { + throw new global::System.ArgumentNullException(); + } + + var vehicleResponses = new global::System.Collections.Generic.List(); + foreach (global::WotBlitzStatisticsPro.Blazor.GraphQl.State.VehicleResponseData child in list) + { + vehicleResponses.Add(MapNonNullableIDictionary_Vehicles(child, snapshot)); + } + + return vehicleResponses; + } + + private global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionary_Vehicles MapNonNullableIDictionary_Vehicles(global::WotBlitzStatisticsPro.Blazor.GraphQl.State.VehicleResponseData data, global::StrawberryShake.IEntityStoreSnapshot snapshot) + { + IDictionary_Vehicles returnValue = default !; + if (data.__typename.Equals("VehicleResponse", global::System.StringComparison.Ordinal)) + { + returnValue = new Dictionary_Vehicles_VehicleResponse(data.TankId ?? throw new global::System.ArgumentNullException(), data.Name ?? throw new global::System.ArgumentNullException(), data.Description ?? throw new global::System.ArgumentNullException(), data.IsPremium ?? throw new global::System.ArgumentNullException(), data.TypeId ?? throw new global::System.ArgumentNullException(), data.NationId ?? throw new global::System.ArgumentNullException(), data.Tier ?? throw new global::System.ArgumentNullException(), data.PreviewImage ?? throw new global::System.ArgumentNullException(), data.NormalImage ?? throw new global::System.ArgumentNullException(), data.PriceCredit ?? throw new global::System.ArgumentNullException(), data.PriceGold ?? throw new global::System.ArgumentNullException(), data.NexTanksInTree); + } + else + { + throw new global::System.NotSupportedException(); + } + + return returnValue; + } + + global::System.Object global::StrawberryShake.IOperationResultDataFactory.Create(global::StrawberryShake.IOperationResultDataInfo dataInfo, global::StrawberryShake.IEntityStoreSnapshot? snapshot) + { + return Create(dataInfo, snapshot); + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..7220afd --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/DictionaryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,34 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl.State +{ + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class DictionaryResultInfo : global::StrawberryShake.IOperationResultDataInfo + { + private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; + private readonly global::System.UInt64 _version; + public DictionaryResultInfo(global::System.Collections.Generic.IReadOnlyList vehicles, global::System.Collections.Generic.IReadOnlyCollection entityIds, global::System.UInt64 version) + { + Vehicles = vehicles; + _entityIds = entityIds ?? throw new global::System.ArgumentNullException(nameof(entityIds)); + _version = version; + } + + /// + /// Returns a list of all vehicles of one nation + /// + /// + /// **Returns:** + /// A list of vehicles + /// + public global::System.Collections.Generic.IReadOnlyList Vehicles { get; } + + public global::System.Collections.Generic.IReadOnlyCollection EntityIds => _entityIds; + public global::System.UInt64 Version => _version; + public global::StrawberryShake.IOperationResultDataInfo WithVersion(global::System.UInt64 version) + { + return new DictionaryResultInfo(Vehicles, _entityIds, version); + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index bfcef7a..00f6ef5 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClansBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -54,7 +54,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index 8851806..f686552 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClansResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index bf39736..ca9cd72 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/FindClansResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindClansResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index 2ec6ddd..dd74661 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayersBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -56,7 +56,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index bb0e909..8fd24cf 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayersResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 073e923..4d20405 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/FindPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class FindPlayersResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/IStatisticsData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/IStatisticsData.WotBlitzStatisticsProClient.StrawberryShake.cs index aef4596..b761e0e 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/IStatisticsData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/IStatisticsData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Information about player - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial interface IStatisticsData { global::System.String __typename { get; } diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index 82cd5d1..eada3ed 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class PlayerBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -64,7 +64,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index 114afe7..c37bc1a 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class PlayerResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 7f8f14d..e188c6f 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/PlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class PlayerResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/Player_AccountMedals_Sections_Medals_AchievementFromAchievementEntityMapper.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/Player_AccountMedals_Sections_Medals_AchievementFromAchievementEntityMapper.WotBlitzStatisticsProClient.StrawberryShake.cs index 8b6bb9d..e31c39e 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/Player_AccountMedals_Sections_Medals_AchievementFromAchievementEntityMapper.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/Player_AccountMedals_Sections_Medals_AchievementFromAchievementEntityMapper.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class Player_AccountMedals_Sections_Medals_AchievementFromAchievementEntityMapper : global::StrawberryShake.IEntityMapper { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/TankInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/TankInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs index 40fb5e1..ed6738c 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/TankInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/TankInfoResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Information about player's tank - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class TankInfoResponseData : IStatisticsData { public TankInfoResponseData(global::System.String __typename, global::System.Int64? tankId = default !, global::System.Int32? battleLifeTimeInSeconds = default !, global::WotBlitzStatisticsPro.Blazor.GraphQl.MarkOfMastery? markOfMastery = default !, global::System.Decimal? avgBattleLifeTimeInMinutes = default !, global::System.String? name = default !, global::System.String? tankNationId = default !, global::System.String? tankNation = default !, global::System.Int32? tier = default !, global::System.String? tankTypeId = default !, global::System.String? tankType = default !, global::System.Boolean? isPremium = default !, global::System.String? previewImage = default !, global::System.String? normalImage = default !, global::System.DateTimeOffset? lastBattleTime = default !, global::System.Int64? battles = default !, global::System.Int64? capturePoints = default !, global::System.Int64? damageDealt = default !, global::System.Int64? damageReceived = default !, global::System.Int64? droppedCapturePoints = default !, global::System.Int64? frags = default !, global::System.Int64? frags8P = default !, global::System.Int64? hits = default !, global::System.Int64? losses = default !, global::System.Int64? maxFrags = default !, global::System.Int64? maxXp = default !, global::System.Int64? shots = default !, global::System.Int64? spotted = default !, global::System.Int64? survivedBattles = default !, global::System.Int64? winAndSurvived = default !, global::System.Int64? wins = default !, global::System.Int64? xp = default !, global::System.Double? wn7 = default !, global::System.Decimal? winRate = default !, global::System.Decimal? avgDamage = default !, global::System.Decimal? avgXp = default !, global::System.Decimal? damageCoefficient = default !, global::System.Decimal? survivalRate = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index 6bb5a73..cfac57b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class UpdatePlayerBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -52,7 +52,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index ab56a52..87353ca 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class UpdatePlayerResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index e2f6126..9a0a20c 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/UpdatePlayerResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class UpdatePlayerResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/VehicleResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/VehicleResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs new file mode 100644 index 0000000..2d1c61d --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/VehicleResponseData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -0,0 +1,65 @@ +// +#nullable enable + +namespace WotBlitzStatisticsPro.Blazor.GraphQl.State +{ + ///Response for vehicle dictionary query + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] + public partial class VehicleResponseData + { + public VehicleResponseData(global::System.String __typename, global::System.Int64? tankId = default !, global::System.String? name = default !, global::System.String? description = default !, global::System.Boolean? isPremium = default !, global::System.String? typeId = default !, global::System.String? nationId = default !, global::System.Int32? tier = default !, global::System.String? previewImage = default !, global::System.String? normalImage = default !, global::System.Decimal? priceCredit = default !, global::System.Decimal? priceGold = default !, global::System.Collections.Generic.IReadOnlyList? nexTanksInTree = default !) + { + this.__typename = __typename ?? throw new global::System.ArgumentNullException(nameof(__typename)); + TankId = tankId; + Name = name; + Description = description; + IsPremium = isPremium; + TypeId = typeId; + NationId = nationId; + Tier = tier; + PreviewImage = previewImage; + NormalImage = normalImage; + PriceCredit = priceCredit; + PriceGold = priceGold; + NexTanksInTree = nexTanksInTree; + } + + public global::System.String __typename { get; } + + ///VehicleId + public global::System.Int64? TankId { get; } + + ///Vehicle name + public global::System.String? Name { get; } + + ///Vehicle description + public global::System.String? Description { get; } + + ///Is vehicle premium + public global::System.Boolean? IsPremium { get; } + + ///Vehicle type id + public global::System.String? TypeId { get; } + + ///Vehicle nationId + public global::System.String? NationId { get; } + + ///Vehicle tier + public global::System.Int32? Tier { get; } + + ///Vehicle preview image + public global::System.String? PreviewImage { get; } + + ///Vehicle normal image + public global::System.String? NormalImage { get; } + + ///Vehicle price in credits + public global::System.Decimal? PriceCredit { get; } + + ///Vehicle price in gold + public global::System.Decimal? PriceGold { get; } + + ///Ids of nex tanks and their cost in XP + public global::System.Collections.Generic.IReadOnlyList? NexTanksInTree { get; } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index d66a6fc..0e3574b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingAuthenticationQueryBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -48,7 +48,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index decb370..fb2f847 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingAuthenticationQueryResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 1ae3b89..9e8d578 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingAuthenticationQueryResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingAuthenticationQueryResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index 16fd7bc..d550eee 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthenticationBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -52,7 +52,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index 5131c22..65651af 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthenticationResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 03fb7ec..9731fec 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdAuthenticationResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthenticationResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index 6b4e122..bc3edf1 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -48,7 +48,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index ffc25cf..b83e353 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 95eb0d9..7a5e85b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingOpenIdResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs index 1e6a349..7fbaac7 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersBuilder.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingPlayersBuilder : global::StrawberryShake.IOperationResultBuilder { private readonly global::StrawberryShake.IEntityStore _entityStore; @@ -46,7 +46,14 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State } else { - errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + if (response.Body != null && response.Body.RootElement.TryGetProperty("errors", out global::System.Text.Json.JsonElement errorsElement)) + { + errors = global::StrawberryShake.Json.JsonErrorParser.ParseErrors(errorsElement); + } + else + { + errors = new global::StrawberryShake.IClientError[]{new global::StrawberryShake.ClientError(response.Exception.Message, exception: response.Exception, extensions: new global::System.Collections.Generic.Dictionary{{"body", response.Body?.RootElement.ToString()}})}; + } } return new global::StrawberryShake.OperationResult(data?.Result, data?.Info, _resultDataFactory, errors); diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index 73c692d..1f37798 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingPlayersResultFactory : global::StrawberryShake.IOperationResultDataFactory { private readonly global::StrawberryShake.IEntityStore _entityStore; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index 8f09c96..e1b1256 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingPlayersResultInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingPlayersResultInfo : global::StrawberryShake.IOperationResultDataInfo { private readonly global::System.Collections.Generic.IReadOnlyCollection _entityIds; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingProlongInfoData.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingProlongInfoData.WotBlitzStatisticsProClient.StrawberryShake.cs index c683385..4f035fb 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingProlongInfoData.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WargamingProlongInfoData.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -4,7 +4,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { ///Prolong Wargaming Auth token response - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingProlongInfoData { public WargamingProlongInfoData(global::System.String __typename, global::System.String? accessToken = default !, global::System.Int64? accountId = default !, global::System.Int32? expirationTimeStamp = default !) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientEntityIdFactory.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientEntityIdFactory.WotBlitzStatisticsProClient.StrawberryShake.cs index 2b0c883..620687f 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientEntityIdFactory.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientEntityIdFactory.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WotBlitzStatisticsProClientEntityIdFactory : global::StrawberryShake.IEntityIdSerializer { private static readonly global::System.Text.Json.JsonWriterOptions _options = new global::System.Text.Json.JsonWriterOptions() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientStoreAccessor.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientStoreAccessor.WotBlitzStatisticsProClient.StrawberryShake.cs index 88f3c81..f8a982f 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientStoreAccessor.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/State/WotBlitzStatisticsProClientStoreAccessor.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl.State { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WotBlitzStatisticsProClientStoreAccessor : global::StrawberryShake.StoreAccessor { public WotBlitzStatisticsProClientStoreAccessor(global::StrawberryShake.IOperationStore operationStore, global::StrawberryShake.IEntityStore entityStore, global::StrawberryShake.IEntityIdSerializer entityIdSerializer, global::System.Collections.Generic.IEnumerable requestFactories, global::System.Collections.Generic.IEnumerable resultDataFactories) : base(operationStore, entityStore, entityIdSerializer, requestFactories, resultDataFactories) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index 9708820..294bf86 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class UpdatePlayerMutation : global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index a6b9679..8a03454 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class UpdatePlayerMutationDocument : global::StrawberryShake.IDocument { private UpdatePlayerMutationDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 1009a09..90515ee 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/UpdatePlayerResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class UpdatePlayerResult : global::System.IEquatable, IUpdatePlayerResult { public UpdatePlayerResult(global::System.DateTimeOffset gatherAccountInformation) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs index 00bbe94..bed36d8 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQuery.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingAuthenticationQueryQuery : global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index 53d08db..4daddab 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryQueryDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingAuthenticationQueryQueryDocument : global::StrawberryShake.IDocument { private WargamingAuthenticationQueryQueryDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs index a1952b5..2bf5150 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingAuthenticationQueryResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingAuthenticationQueryResult : global::System.IEquatable, IWargamingAuthenticationQueryResult { public WargamingAuthenticationQueryResult(global::System.String loginUrl) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index f9189af..e00b2a1 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -16,7 +16,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthenticationMutation : global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index c466887..feaee4b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -16,7 +16,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthenticationMutationDocument : global::StrawberryShake.IDocument { private WargamingOpenIdAuthenticationMutationDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 80c82c0..70bf6c0 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthenticationResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthenticationResult : global::System.IEquatable, IWargamingOpenIdAuthenticationResult { public WargamingOpenIdAuthenticationResult(global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthentication_ProlongAuthToken prolongAuthToken) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs index e86dd18..1b7f29d 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,7 +6,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Prolong Wargaming Auth token response /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo : global::System.IEquatable, IWargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo { public WargamingOpenIdAuthentication_ProlongAuthToken_WargamingProlongInfo(global::System.String accessToken, global::System.Int64 accountId, global::System.Int32 expirationTimeStamp) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index 24cf7da..0774a9c 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdMutation : global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index af91cc8..e2efbda 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdMutationDocument : global::StrawberryShake.IDocument { private WargamingOpenIdMutationDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 099b94b..7703258 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingOpenIdResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingOpenIdResult : global::System.IEquatable, IWargamingOpenIdResult { public WargamingOpenIdResult(global::System.String logout) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs index 79b98e6..86182a8 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutation.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingPlayersMutation : global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation { private readonly global::StrawberryShake.IOperationExecutor _operationExecutor; diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs index 5096210..e3dbe9a 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersMutationDocument.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -11,7 +11,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// } /// /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingPlayersMutationDocument : global::StrawberryShake.IDocument { private WargamingPlayersMutationDocument() diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs index 7410309..fb73040 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WargamingPlayersResult.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -3,7 +3,7 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl { - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WargamingPlayersResult : global::System.IEquatable, IWargamingPlayersResult { public WargamingPlayersResult(global::System.String removePlayerHistory) diff --git a/WotBlitzStatisticsPro.Blazor/Generated/WotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs b/WotBlitzStatisticsPro.Blazor/Generated/WotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs index 6f7a5eb..608973b 100644 --- a/WotBlitzStatisticsPro.Blazor/Generated/WotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs +++ b/WotBlitzStatisticsPro.Blazor/Generated/WotBlitzStatisticsProClient.WotBlitzStatisticsProClient.StrawberryShake.cs @@ -6,37 +6,40 @@ namespace WotBlitzStatisticsPro.Blazor.GraphQl /// /// Represents the WotBlitzStatisticsProClient GraphQL client /// - [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "11.2.2.0")] + [global::System.CodeDom.Compiler.GeneratedCode("StrawberryShake", "12.12.1.0")] public partial class WotBlitzStatisticsProClient : global::WotBlitzStatisticsPro.Blazor.GraphQl.IWotBlitzStatisticsProClient { - private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery _findPlayers; - private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation _wargamingOpenIdAuthentication; - private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation _wargamingOpenId; private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery _findClans; - private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery _player; - private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation _updatePlayer; - private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation _wargamingPlayers; + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery _findPlayers; private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery _wargamingAuthenticationQuery; - public WotBlitzStatisticsProClient(global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery findPlayers, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation wargamingOpenIdAuthentication, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation wargamingOpenId, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery findClans, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery player, global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation updatePlayer, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation wargamingPlayers, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery wargamingAuthenticationQuery) + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation _wargamingOpenId; + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery _player; + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation _wargamingOpenIdAuthentication; + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation _wargamingPlayers; + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation _updatePlayer; + private readonly global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionaryQuery _dictionary; + public WotBlitzStatisticsProClient(global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery findClans, global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery findPlayers, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery wargamingAuthenticationQuery, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation wargamingOpenId, global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery player, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation wargamingOpenIdAuthentication, global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation wargamingPlayers, global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation updatePlayer, global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionaryQuery dictionary) { - _findPlayers = findPlayers ?? throw new global::System.ArgumentNullException(nameof(findPlayers)); - _wargamingOpenIdAuthentication = wargamingOpenIdAuthentication ?? throw new global::System.ArgumentNullException(nameof(wargamingOpenIdAuthentication)); - _wargamingOpenId = wargamingOpenId ?? throw new global::System.ArgumentNullException(nameof(wargamingOpenId)); _findClans = findClans ?? throw new global::System.ArgumentNullException(nameof(findClans)); - _player = player ?? throw new global::System.ArgumentNullException(nameof(player)); - _updatePlayer = updatePlayer ?? throw new global::System.ArgumentNullException(nameof(updatePlayer)); - _wargamingPlayers = wargamingPlayers ?? throw new global::System.ArgumentNullException(nameof(wargamingPlayers)); + _findPlayers = findPlayers ?? throw new global::System.ArgumentNullException(nameof(findPlayers)); _wargamingAuthenticationQuery = wargamingAuthenticationQuery ?? throw new global::System.ArgumentNullException(nameof(wargamingAuthenticationQuery)); + _wargamingOpenId = wargamingOpenId ?? throw new global::System.ArgumentNullException(nameof(wargamingOpenId)); + _player = player ?? throw new global::System.ArgumentNullException(nameof(player)); + _wargamingOpenIdAuthentication = wargamingOpenIdAuthentication ?? throw new global::System.ArgumentNullException(nameof(wargamingOpenIdAuthentication)); + _wargamingPlayers = wargamingPlayers ?? throw new global::System.ArgumentNullException(nameof(wargamingPlayers)); + _updatePlayer = updatePlayer ?? throw new global::System.ArgumentNullException(nameof(updatePlayer)); + _dictionary = dictionary ?? throw new global::System.ArgumentNullException(nameof(dictionary)); } public static global::System.String ClientName => "WotBlitzStatisticsProClient"; - public global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery FindPlayers => _findPlayers; - public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation WargamingOpenIdAuthentication => _wargamingOpenIdAuthentication; - public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation WargamingOpenId => _wargamingOpenId; public global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindClansQuery FindClans => _findClans; - public global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player => _player; - public global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation UpdatePlayer => _updatePlayer; - public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation WargamingPlayers => _wargamingPlayers; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IFindPlayersQuery FindPlayers => _findPlayers; public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingAuthenticationQueryQuery WargamingAuthenticationQuery => _wargamingAuthenticationQuery; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdMutation WargamingOpenId => _wargamingOpenId; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IPlayerQuery Player => _player; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingOpenIdAuthenticationMutation WargamingOpenIdAuthentication => _wargamingOpenIdAuthentication; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IWargamingPlayersMutation WargamingPlayers => _wargamingPlayers; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IUpdatePlayerMutation UpdatePlayer => _updatePlayer; + public global::WotBlitzStatisticsPro.Blazor.GraphQl.IDictionaryQuery Dictionary => _dictionary; } } diff --git a/WotBlitzStatisticsPro.Blazor/Helpers/JTokenHelper.cs b/WotBlitzStatisticsPro.Blazor/Helpers/JTokenHelper.cs new file mode 100644 index 0000000..5aabfcf --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Helpers/JTokenHelper.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json.Linq; + +namespace WotBlitzStatisticsPro.Blazor.Helpers +{ + public static class JTokenHelper + { + public static bool IsNullOrEmpty(this JToken token) + { + return (token == null) || + (token.Type == JTokenType.Array && !token.HasValues) || + (token.Type == JTokenType.Object && !token.HasValues) || + (token.Type == JTokenType.String && token.ToString() == string.Empty) || + (token.Type == JTokenType.Null); + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Model/ElementDimensions.cs b/WotBlitzStatisticsPro.Blazor/Model/ElementDimensions.cs new file mode 100644 index 0000000..d626ee2 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Model/ElementDimensions.cs @@ -0,0 +1,8 @@ +namespace WotBlitzStatisticsPro.Blazor.Model +{ + public class ElementDimensions + { + public int Width { get; set; } + public int Height { get; set; } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Model/TankTreeItem.cs b/WotBlitzStatisticsPro.Blazor/Model/TankTreeItem.cs new file mode 100644 index 0000000..30e548e --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Model/TankTreeItem.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using WotBlitzStatisticsPro.Blazor.GraphQl; + +namespace WotBlitzStatisticsPro.Blazor.Model +{ + public class TankTreeItem + { + public long TankId { get; set; } + + public int Tier { get; set; } + + public int Row { get; set; } + + public string TankTypeId { get; set; } + + public bool IsPremium { get; set; } + + public bool IsResearched { get; set; } + + public string PreviewImage { get; set; } + + public string Name { get; set; } + + public MarkOfMastery? MarkOfMastery { get; set; } + + public decimal? WinRate { get; set; } + + public decimal? AvgDamage { get; set; } + + public long? Battles { get; set; } + + public DateTimeOffset? LastBattleTime { get; set; } + + public Decimal PriceCredit { get; set; } + + public List? NextRows { get; set; } + + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Model/TankTreeRowMap.cs b/WotBlitzStatisticsPro.Blazor/Model/TankTreeRowMap.cs new file mode 100644 index 0000000..8a6a477 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Model/TankTreeRowMap.cs @@ -0,0 +1,4 @@ +namespace WotBlitzStatisticsPro.Blazor.Model +{ + public record TankTreeRowMap(long TankId, int Row); +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoAchievements.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoAchievements.razor index e0c52d8..f8c3662 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoAchievements.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoAchievements.razor @@ -6,7 +6,7 @@ @foreach (var section in AchievementsBySection.OrderBy(s => s.Order)) { - +
@foreach (var medal in section.Medals.OrderBy(m => m.Order)) { diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor index 7eec4c8..5506eeb 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor @@ -49,6 +49,16 @@ + + @if (SmallScreen) + { + + } + else + { + + } + } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs index 9fe4ff3..4fa15ef 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs @@ -57,7 +57,7 @@ namespace WotBlitzStatisticsPro.Blazor.Pages } catch (System.Exception e) { - Notifications.ReportError("Can not get data from backend", e.Message); + Notifications.ReportError("Can not get data from backend", e.Message, e.StackTrace); } } } diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor new file mode 100644 index 0000000..316f797 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor @@ -0,0 +1,116 @@ +@using WotBlitzStatisticsPro.Blazor.Helpers +@using System.Linq +@inherits PlayerInfoTanksTreeBase; +
+
+ @foreach (var nationForFilter in NationsFilter) + { + + } +
+
+ + + @for (int i = 0; i < 10; i++) + { + + + } + + + + @foreach (var pathConnection in Connections) + { + + } + + @if (TreeItems != null) + { + @for (int tier = 1; tier < 11; tier++) + { + @foreach (var tank in TreeItems.Where(t => t.Tier == tier).OrderBy(t => t.Row).ToList()) + { + + + + + + + + + + + + @tank.Tier.RomanNumber() + + + + + + @tank.Name + + + + @if (tank.IsResearched && tank.MarkOfMastery.HasValue && tank.WinRate.HasValue && tank.AvgDamage.HasValue && tank.Battles.HasValue && tank.LastBattleTime.HasValue) + { + + + + + + + @(tank.WinRate.Value.ToString("N0"))% + + + + + + @tank.AvgDamage.Value.ToString("N0") + + + + + @tank.Battles.Value.ToString("N0") + + + + + @tank.LastBattleTime.Value.ToString("d") + + + } + + @if (!tank.IsResearched) + { + + + + + @((tank.PriceCredit / 1000).ToString("N0")) K + + + } + + + } + } + } + +
+
\ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor.css b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor.css new file mode 100644 index 0000000..f48a517 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor.css @@ -0,0 +1,13 @@ + +.nation-filter-flag { + width: 70px; + height: 46px; + border-radius: 4px; + margin-right: 10px; +} + +.filter-selected { + border-width: 1px; + border-color: #f5aa3b; + border-style: solid; +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs new file mode 100644 index 0000000..56a4307 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs @@ -0,0 +1,293 @@ +using MediatR; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.Extensions.Localization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Blazor.GraphQl; +using WotBlitzStatisticsPro.Blazor.Helpers; +using WotBlitzStatisticsPro.Blazor.Model; +using WotBlitzStatisticsPro.Blazor.Services; + +namespace WotBlitzStatisticsPro.Blazor.Pages +{ + public class PlayerInfoTanksTreeBase: ComponentBase + { + [Parameter] + public IEnumerable TanksList { get; set; } + + [Inject] + public IStringLocalizer Localize { get; set; } + + [Inject] + public IMediator Mediator { get; set; } + + [Inject] + public IMediaQueriesService MediaQueriesService { get; set; } + + [Inject] + public ISvgHelper SvgHelper { get; set; } + + [Inject] + public IGraphQlBackendService GraphQlBackendService { get; set; } + + [Inject] + public INotificationsService Notifications { get; set; } + + public IReadOnlyList VehiclesLibrary { get; set; } + + public int FrameHeigth { get; set; } + + public int CardWidth { get; } = 200; + public int CardHeigth { get; } = 120; + + public int LeftMargin { get; } = 30; + + public List TreeItems { get; set; } = new(); + + public string SelectedNation { get; set; } + + public List Connections { get; set; } = new List(); + + public List ConnectionsInVerticalView { get; set; } = new List(); + + public List> NationsFilter { get; set; } = new(); + + public string FrameStyle + { + get + { + return $"min-height: {FrameHeigth}px; overflow-y: auto; overflow-x: auto;"; + } + } + + protected async override Task OnInitializedAsync() + { + FillNationsFilter(); + var screenHeight = await MediaQueriesService.WindowHeight(); + + await LoadTree(); + } + + public int GetTextWidth(string text, string fontFace, int fontSize) + { + return SvgHelper.CalculateTextBlockSize(text, fontFace, fontSize).Width; + } + + private void BuildTree() + { + TreeItems.Clear(); + Connections.Clear(); + ConnectionsInVerticalView.Clear(); + var vehiclesTree = VehiclesLibrary?.Where(v => v != null && v.IsPremium == false).ToList(); + for (int tier = 1; tier < 11; tier++) + { + var vehiclesByTier = vehiclesTree.Where(v => v.Tier == tier).ToList(); + foreach (var vehicleFromDictionary in vehiclesByTier) + { + int currentRow = 0; + if (tier == 1) + { + var rowMap = Constants.TanksTreeHelper.FirstOrDefault(v => v.TankId == vehicleFromDictionary.TankId); + if(rowMap != null) + { + currentRow = rowMap.Row; + } + } + else + { + currentRow = FindRowFromPreviousTierMapping(vehicleFromDictionary); + } + + var treeItem = BuildNonPremTreeItem(vehicleFromDictionary, currentRow); + + // Map next tier tanks by rows + treeItem.NextRows = BuildNextTanksRowMapping(vehicleFromDictionary, currentRow); + if(treeItem.NextRows != null) + { + foreach (var nextRow in treeItem.NextRows) + { + Connections.Add(SvgHelper.TankTreeConnectionPath(treeItem.Row, nextRow.Row, tier, CardWidth, CardHeigth)); + ConnectionsInVerticalView.Add(SvgHelper.TankTreeConnectionVerticalPath(treeItem.Row, nextRow.Row, tier, CardWidth, CardHeigth, LeftMargin)); + } + } + + TreeItems.Add(treeItem); + } + } + + int maxNonPremTreeRow = GetMaxRowNumber(TreeItems); + + // TODO: build matrix and connections + + // Adding prem tanks + var premTanks = TanksList.Where(t => t.IsPremium && t.TankNationId == SelectedNation).ToList(); + int maxPremsCount = maxNonPremTreeRow; + foreach (var premTier in premTanks.Select(b => b.Tier).Distinct()) + { + int row = maxNonPremTreeRow + 1; + foreach (var prem in premTanks.Where(t => t.Tier == premTier)) + { + TreeItems.Add(new TankTreeItem + { + Tier = prem.Tier, + TankId = prem.TankId, + Name = prem.Name, + PreviewImage = prem.PreviewImage, + TankTypeId = prem.TankTypeId, + IsPremium = true, + MarkOfMastery = prem.MarkOfMastery, + WinRate = prem.WinRate, + AvgDamage = prem.AvgDamage, + Battles = prem.Battles, + LastBattleTime = prem.LastBattleTime, + IsResearched = true, + Row = row + }); + row++; + if (row > maxPremsCount) + { + maxPremsCount = row; + } + } + } + + FrameHeigth = maxPremsCount * (CardHeigth + 20) + 20; + } + + private List? BuildNextTanksRowMapping(IDictionary_Vehicles vehicleFromDictionary, int currentRow) + { + List? nextRowsMap = null; + + if (vehicleFromDictionary.NexTanksInTree != null && vehicleFromDictionary.NexTanksInTree.Count > 0) + { + nextRowsMap = new List(); + foreach (var nextTankInTree in vehicleFromDictionary.NexTanksInTree) + { + var rowMap = Constants.TanksTreeHelper.FirstOrDefault(v => v.TankId == nextTankInTree); + if (rowMap != null) + { + nextRowsMap.Add(rowMap); + } + else + { + nextRowsMap.Add(new TankTreeRowMap(vehicleFromDictionary.NexTanksInTree[0], currentRow)); + } + } + } + + return nextRowsMap; + } + + private int FindRowFromPreviousTierMapping(IDictionary_Vehicles vehicleFromDictionary) + { + int currentRow = 0; + var previousTierTanks = TreeItems.Where(t => t.Tier == vehicleFromDictionary.Tier - 1).ToList(); + foreach (var previousTierTank in previousTierTanks) + { + if (previousTierTank.NextRows != null) + { + var rowMap = + previousTierTank.NextRows.FirstOrDefault(p => p.TankId == vehicleFromDictionary.TankId); + if (rowMap != null) + { + currentRow = rowMap.Row; + break; + } + } + } + + return currentRow; + } + + private TankTreeItem BuildNonPremTreeItem(IDictionary_Vehicles vehicleFromDictionary, int row) + { + var treeItem = new TankTreeItem + { + Tier = vehicleFromDictionary.Tier, + TankId = vehicleFromDictionary.TankId, + Name = vehicleFromDictionary.Name, + PriceCredit = vehicleFromDictionary.PriceCredit, + PreviewImage = vehicleFromDictionary.PreviewImage, + TankTypeId = vehicleFromDictionary.TypeId, + IsPremium = false, + Row = row + }; + var researched = TanksList.FirstOrDefault(t => t.TankId == treeItem.TankId); + treeItem.IsResearched = researched != null; + if (researched != null) + { + treeItem.MarkOfMastery = researched.MarkOfMastery; + treeItem.WinRate = researched.WinRate; + treeItem.AvgDamage = researched.AvgDamage; + treeItem.Battles = researched.Battles; + treeItem.LastBattleTime = researched.LastBattleTime; + } + + return treeItem; + } + + private int GetMaxRowNumber(List branch) + { + int maxRowsCount = 0; + foreach (var tier in branch.Select(b => b.Tier).Distinct()) + { + int tierTanksCount = branch.Count(t => t.Tier == tier); + if (tierTanksCount > maxRowsCount) + { + maxRowsCount = tierTanksCount; + } + } + + return maxRowsCount; + } + + private void FillNationsFilter() + { + // ToDo: Should get values from Dictionary here instead of hard code + NationsFilter.Add(new FilterItem(Constants.CountryUsa, Constants.CountryUsa.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryFrance, Constants.CountryFrance.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryUssr, Constants.CountryUssr.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryChina, Constants.CountryChina.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryUk, Constants.CountryUk.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryJapan, Constants.CountryJapan.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryGermany, Constants.CountryGermany.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryOther, Constants.CountryOther.NationAsset())); + NationsFilter.Add(new FilterItem(Constants.CountryEuropean, Constants.CountryEuropean.NationAsset())); + + SelectedNation = NationsFilter[0].ItemId; + } + + public string NationFilterStyle(string nation) + { + string basic = "nation-filter-flag"; + if (SelectedNation == nation) + { + return $"{basic} filter-selected"; + } + return basic; + } + + public async Task ApplyNationFilter(MouseEventArgs e, string nationToApply) + { + SelectedNation = nationToApply; + await LoadTree(); + } + + private async Task LoadTree() + { + try + { + VehiclesLibrary = await GraphQlBackendService.GetVehiclesByNation(SelectedNation); + BuildTree(); + } + catch (System.Exception e) + { + Notifications.ReportError("Can not get data from backend", e.Message, e.StackTrace); + } + + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeSmall.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeSmall.razor new file mode 100644 index 0000000..826076c --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeSmall.razor @@ -0,0 +1,121 @@ +@using WotBlitzStatisticsPro.Blazor.Helpers +@using System.Linq +@inherits PlayerInfoTanksTreeBase; +
+
+ @foreach (var nationForFilter in NationsFilter) + { + + } +
+
+ + + + @for (int i = 0; i < 10; i++) + { + + + + + + @((10 - i).RomanNumber()) + + + } + + + + @foreach (var pathConnection in ConnectionsInVerticalView) + { + + } + + + @if (TreeItems != null) + { + @for (int tier = 1; tier < 11; tier++) + { + @foreach (var tank in TreeItems.Where(t => t.Tier == tier).OrderBy(t => t.Row).ToList()) + { + + + + + + + + + + + + + + @tank.Name + + + + @if (tank.IsResearched && tank.MarkOfMastery.HasValue && tank.WinRate.HasValue && tank.AvgDamage.HasValue && tank.Battles.HasValue && tank.LastBattleTime.HasValue) + { + + + + + + + @(tank.WinRate.Value.ToString("N0"))% + + + + + + @tank.AvgDamage.Value.ToString("N0") + + + + + @tank.Battles.Value.ToString("N0") + + + + + @tank.LastBattleTime.Value.ToString("d") + + + } + + @if (!tank.IsResearched) + { + + + + + @((tank.PriceCredit / 1000).ToString("N0")) K + + + } + + + + } + } + } + +
+
diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeSmall.razor.css b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeSmall.razor.css new file mode 100644 index 0000000..b78f99b --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeSmall.razor.css @@ -0,0 +1,12 @@ +.nation-filter-flag { + width: 35px; + height: 23px; + border-radius: 4px; + margin-right: 5px; +} + +.filter-selected { + border-width: 1px; + border-color: #f5aa3b; + border-style: solid; +} diff --git a/WotBlitzStatisticsPro.Blazor/Program.cs b/WotBlitzStatisticsPro.Blazor/Program.cs index b6f36ef..2f134b5 100644 --- a/WotBlitzStatisticsPro.Blazor/Program.cs +++ b/WotBlitzStatisticsPro.Blazor/Program.cs @@ -33,6 +33,7 @@ namespace WotBlitzStatisticsPro.Blazor builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); + builder.Services.AddScoped(); builder.Services.AddMediatR(typeof(Program)); @@ -54,11 +55,11 @@ namespace WotBlitzStatisticsPro.Blazor //var useMock = Environment.GetEnvironmentVariable("USE_GRAPH_QL_MOCK"); //if (useMock != null && useMock == "true") //{ - // builder.Services.AddTransient(); + //builder.Services.AddTransient(); //} //else //{ - builder.Services.AddTransient(); + builder.Services.AddTransient(); //} var host = builder.Build(); diff --git a/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs b/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs index a010b6a..6270a51 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs @@ -88,6 +88,13 @@ namespace WotBlitzStatisticsPro.Blazor.Services CheckErrors(result.Errors); } + public async Task> GetVehiclesByNation(string nationId) + { + var result = await _client.Dictionary.ExecuteAsync(nationId, GetLanguage()); + CheckErrors(result.Errors); + return result.Data?.Vehicles; + } + private RequestLanguage GetLanguage() { var culture = CultureInfo.CurrentCulture; @@ -125,6 +132,10 @@ namespace WotBlitzStatisticsPro.Blazor.Services { messages.Add(message.ToString()); } + else + { + messages.Add(realError); + } } } } @@ -133,7 +144,7 @@ namespace WotBlitzStatisticsPro.Blazor.Services if (messages.Count > 0) { - _notificationsService.ReportError("Backend error",string.Join(";", messages)); + _notificationsService.ReportError("Backend error",string.Join(";", messages), null); } } } diff --git a/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs b/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs index 880a320..897c530 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs @@ -33,5 +33,7 @@ namespace WotBlitzStatisticsPro.Blazor.Services Task Logout( string token, RealmType realmType); + + Task> GetVehiclesByNation(string nationId); } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Services/IMediaQueriesService.cs b/WotBlitzStatisticsPro.Blazor/Services/IMediaQueriesService.cs index 58c4dd2..62fc67c 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/IMediaQueriesService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/IMediaQueriesService.cs @@ -5,5 +5,9 @@ namespace WotBlitzStatisticsPro.Blazor.Services public interface IMediaQueriesService { ValueTask IsScreenWidthLessThen(long widthInPx); + + ValueTask WindowWidth(); + + ValueTask WindowHeight(); } } diff --git a/WotBlitzStatisticsPro.Blazor/Services/INotificationsService.cs b/WotBlitzStatisticsPro.Blazor/Services/INotificationsService.cs index 54cfceb..773249d 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/INotificationsService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/INotificationsService.cs @@ -14,6 +14,6 @@ namespace WotBlitzStatisticsPro.Blazor.Services void ReportInfo(string summary, string message); void ReportWarning(string summary, string message); - void ReportError(string summary, string message); + void ReportError(string summary, string message, string? stacktrace); } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Services/ISvgHelper.cs b/WotBlitzStatisticsPro.Blazor/Services/ISvgHelper.cs new file mode 100644 index 0000000..00e89b5 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Services/ISvgHelper.cs @@ -0,0 +1,14 @@ +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Blazor.Model; + +namespace WotBlitzStatisticsPro.Blazor.Services +{ + public interface ISvgHelper + { + ElementDimensions CalculateTextBlockSize(string text, string fontFace, int fontSize); + + string TankTreeConnectionPath(int rowStart, int rowEnd, int tierStart, int cardWidth, int cardHeight); + + string TankTreeConnectionVerticalPath(int rowStart, int rowEnd, int tierStart, int cardWidth, int cardHeight, int leftMargin); + } +} diff --git a/WotBlitzStatisticsPro.Blazor/Services/MediaQueriesService.cs b/WotBlitzStatisticsPro.Blazor/Services/MediaQueriesService.cs index 47eb2d9..468573c 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/MediaQueriesService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/MediaQueriesService.cs @@ -16,5 +16,15 @@ namespace WotBlitzStatisticsPro.Blazor.Services { return _jsRuntime.InvokeAsync("mediaQueries.IsScreenWidthLessThen", widthInPx); } + + public ValueTask WindowHeight() + { + return _jsRuntime.InvokeAsync("mediaQueries.ScreenHeight"); + } + + public ValueTask WindowWidth() + { + return _jsRuntime.InvokeAsync("mediaQueries.ScreenWidth"); + } } } diff --git a/WotBlitzStatisticsPro.Blazor/Services/Mock/GraphQlBackendMockService.cs b/WotBlitzStatisticsPro.Blazor/Services/Mock/GraphQlBackendMockService.cs index 80eacd2..e9b3531 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/Mock/GraphQlBackendMockService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/Mock/GraphQlBackendMockService.cs @@ -6,6 +6,9 @@ using Bogus; using Bogus.Extensions; using WotBlitzStatisticsPro.Blazor.GraphQl; using WotBlitzStatisticsPro.Blazor.Model; +using Newtonsoft.Json.Linq; +using System.Collections.ObjectModel; +using WotBlitzStatisticsPro.Blazor.Helpers; namespace WotBlitzStatisticsPro.Blazor.Services.Mock { @@ -78,7 +81,6 @@ namespace WotBlitzStatisticsPro.Blazor.Services.Mock public async Task<(IAccount accountInfo, IReadOnlyList achievementsBySection)> GetPlayerInfo(long accountId, RealmType realmType) { var faker = new Faker(FakerLanguage(GetLanguage())); - var tanksCount = faker.Random.Number(10, 280); var isClanInfo = faker.Random.Bool(); IPlayer_AccountInfo_ClanInfo clanInfo = null; @@ -106,51 +108,95 @@ namespace WotBlitzStatisticsPro.Blazor.Services.Mock ); } + var jObject = JObject.Parse(VehiclesMockData.TanksList); + var tankTokens = jObject["tanks"]; var tanks = new List(); - for (int i = 0; i < tanksCount; i++) + foreach (var tankToken in tankTokens) { - var nation = GetRandomNation(faker, GetLanguage()); - var vehicleType = GetRandomVehicleType(faker, GetLanguage()); tanks.Add(new Player_AccountInfo_Tanks_TankInfoResponse( - faker.Random.Long(100000, 999999), - faker.Random.Number(500), - faker.PickRandom(), - faker.Random.Decimal(0M, 7M), - faker.Name.LastName(), - nation.nation, - nation.nationName, - faker.Random.Number(1, 10), - vehicleType.vehicleType, - vehicleType.vehicleTypeName, - faker.Random.Bool(), - GetRandomPreviewImage(faker), - GetRandomLargeImage(faker), - faker.Date.Past(), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Long(1, 9999), - faker.Random.Double(500D, 2000D), - faker.Random.Decimal(20M, 95M), - faker.Random.Decimal(300M, 4000M), - faker.Random.Decimal(100M, 2000M), - faker.Random.Decimal(0M, 3M), - faker.Random.Decimal(5M, 95M) + tankToken["TankId"].Value(), + tankToken["BattleLifeTimeInSeconds"].IsNullOrEmpty() ? 0 : tankToken["BattleLifeTimeInSeconds"].Value(), + tankToken["MarkOfMastery"].IsNullOrEmpty() ? MarkOfMastery.None : (MarkOfMastery)tankToken["MarkOfMastery"].Value(), + tankToken["AvgBattleLifeTimeInMinutes"].IsNullOrEmpty() ? 0M : tankToken["AvgBattleLifeTimeInMinutes"].Value(), + tankToken["Name"].IsNullOrEmpty() ? string.Empty : tankToken["Name"].Value(), + tankToken["TankNationId"].IsNullOrEmpty() ? string.Empty : tankToken["TankNationId"].Value(), + tankToken["TankNation"].IsNullOrEmpty() ? string.Empty : tankToken["TankNation"].Value(), + tankToken["Tier"].IsNullOrEmpty() ? 0 : tankToken["Tier"].Value(), + tankToken["TankTypeId"].IsNullOrEmpty() ? string.Empty : tankToken["TankTypeId"].Value(), + tankToken["TankType"].IsNullOrEmpty() ? string.Empty : tankToken["TankType"].Value(), + tankToken["IsPremium"].IsNullOrEmpty() ? false : tankToken["IsPremium"].Value(), + tankToken["PreviewImage"].IsNullOrEmpty() ? string.Empty : tankToken["PreviewImage"].Value(), + tankToken["NormalImage"].IsNullOrEmpty() ? string.Empty : tankToken["NormalImage"].Value(), + tankToken["LastBattleTime"].IsNullOrEmpty() ? DateTime.MinValue : tankToken["LastBattleTime"].Value(), + tankToken["Battles"].IsNullOrEmpty() ? 0 : tankToken["Battles"].Value(), + tankToken["CapturePoints"].IsNullOrEmpty() ? 0 : tankToken["CapturePoints"].Value(), + tankToken["DamageDealt"].IsNullOrEmpty() ? 0 : tankToken["DamageDealt"].Value(), + tankToken["DamageReceived"].IsNullOrEmpty() ? 0 : tankToken["DamageReceived"].Value(), + tankToken["DroppedCapturePoints"].IsNullOrEmpty() ? 0 : tankToken["DroppedCapturePoints"].Value(), + tankToken["Frags"].IsNullOrEmpty() ? 0 : tankToken["Frags"].Value(), + tankToken["Frags8P"].IsNullOrEmpty() ? 0 : tankToken["Frags8P"].Value(), + tankToken["Hits"].IsNullOrEmpty() ? 0 : tankToken["Hits"].Value(), + tankToken["Losses"].IsNullOrEmpty() ? 0 : tankToken["Losses"].Value(), + tankToken["MaxFrags"].IsNullOrEmpty() ? 0 : tankToken["MaxFrags"].Value(), + tankToken["MaxXp"].IsNullOrEmpty() ? 0 : tankToken["MaxXp"].Value(), + tankToken["Shots"].IsNullOrEmpty() ? 0 : tankToken["Shots"].Value(), + tankToken["Spotted"].IsNullOrEmpty() ? 0 : tankToken["Spotted"].Value(), + tankToken["SurvivedBattles"].IsNullOrEmpty() ? 0 : tankToken["SurvivedBattles"].Value(), + tankToken["WinAndSurvived"].IsNullOrEmpty() ? 0 : tankToken["WinAndSurvived"].Value(), + tankToken["Wins"].IsNullOrEmpty() ? 0 : tankToken["Wins"].Value(), + tankToken["Xp"].IsNullOrEmpty() ? 0 : tankToken["Xp"].Value(), + tankToken["Wn7"].IsNullOrEmpty() ? 0 : tankToken["Wn7"].Value(), + tankToken["WinRate"].IsNullOrEmpty() ? 0M : tankToken["WinRate"].Value(), + tankToken["AvgDamage"].IsNullOrEmpty() ? 0M : tankToken["AvgDamage"].Value(), + tankToken["AvgXp"].IsNullOrEmpty() ? 0M : tankToken["AvgXp"].Value(), + tankToken["DamageCoefficient"].IsNullOrEmpty() ? 0M : tankToken["DamageCoefficient"].Value(), + tankToken["SurvivalRate"].IsNullOrEmpty() ? 0M : tankToken["SurvivalRate"].Value() )); } + // for (int i = 0; i < tanksCount; i++) + // { + // var nation = GetRandomNation(faker, GetLanguage()); + // var vehicleType = GetRandomVehicleType(faker, GetLanguage()); + // tanks.Add(new Player_AccountInfo_Tanks_TankInfoResponse( + // faker.Random.Long(100000, 999999), + // faker.Random.Number(500), + // faker.PickRandom(), + // faker.Random.Decimal(0M, 7M), + // faker.Name.LastName(), + // nation.nation, + // nation.nationName, + // faker.Random.Number(1, 10), + // vehicleType.vehicleType, + // vehicleType.vehicleTypeName, + // faker.Random.Bool(), + // GetRandomPreviewImage(faker), + // GetRandomLargeImage(faker), + // faker.Date.Past(), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Long(1, 9999), + // faker.Random.Double(500D, 2000D), + // faker.Random.Decimal(20M, 95M), + // faker.Random.Decimal(300M, 4000M), + // faker.Random.Decimal(100M, 2000M), + // faker.Random.Decimal(0M, 3M), + // faker.Random.Decimal(5M, 95M) + // )); + // } if (_needToWait) { @@ -408,5 +454,34 @@ namespace WotBlitzStatisticsPro.Blazor.Services.Mock { return Task.FromResult("Fake logout"); } + public Task> GetVehiclesByNation(string nationId) + { + var jObject = JObject.Parse(VehiclesMockData.VehiclesDictionary); + var vehicleTokens = jObject["vehicles"]; + var result = new List(); + foreach (var vehicleObject in vehicleTokens) + { + var nextTanks = new List(); + foreach (var next in vehicleObject["NexTanksInTree"]) + { + nextTanks.Add(next.Value()); + } + result.Add(new Dictionary_Vehicles_VehicleResponse( + vehicleObject["TankId"].Value(), + vehicleObject["Name"].Value(), + vehicleObject["Description"].Value(), + vehicleObject["IsPremium"].Value(), + vehicleObject["TypeId"].Value(), + vehicleObject["NationId"].Value(), + vehicleObject["Tier"].Value(), + vehicleObject["PreviewImage"].Value(), + vehicleObject["NormalImage"].Value(), + vehicleObject["PriceCredit"].Value(), + vehicleObject["PriceGold"].Value(), + nextTanks.AsReadOnly() + )); + } + return Task.FromResult((IReadOnlyList)result.AsReadOnly()); + } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Services/Mock/VehiclesMockData.cs b/WotBlitzStatisticsPro.Blazor/Services/Mock/VehiclesMockData.cs new file mode 100644 index 0000000..39bfcf2 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Services/Mock/VehiclesMockData.cs @@ -0,0 +1,9 @@ +namespace WotBlitzStatisticsPro.Blazor.Services.Mock +{ + public static class VehiclesMockData + { + public static string VehiclesDictionary = @"{""vehicles"": [{""TankId"":16401,""Name"":""Waffentr\u00E4ger auf Pz. IV"",""Description"":""Tank destroyer developed in February 1944 on the basis of the PzIV tank. Development was discontinued in favor of a similar vehicle on the basis of the Krupp Waffentrager 12.8 cm PaK 44 of Czech origin. Existed only in blueprints."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Waffentrager_IV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Waffentrager_IV.png"",""PriceCredit"":3400000,""PriceGold"":0,""NexTanksInTree"":[19217]},{""TankId"":1297,""Name"":""Panther I"",""Description"":""This famous tank was produced from January 1943 through April 1945, with a total of 5,796 vehicles built plus eight vehicles built on the F series chassis."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzV.png"",""PriceCredit"":1380000,""PriceGold"":0,""NexTanksInTree"":[5137,8465]},{""TankId"":52497,""Name"":""Pz.Kpfw. 38H 735 (f)"",""Description"":""In May 1940 the French Army had more than 800 vehicles of this type, most of which were captured by the German forces. They were widely used by the Wehrmacht to supplement existing armor."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":2,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/H39_captured.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/H39_captured.png"",""PriceCredit"":0,""PriceGold"":750,""NexTanksInTree"":[]},{""TankId"":18961,""Name"":""Sp\u00E4hpanzer SP I C"",""Description"":""The reconnaissance tank destroyer was being developed by Hotchkiss and Kl\u00F6ckner-Humboldt-Deutz companies from 1956 through 1962 in order to increase the anti-tank capability of recon tank battalions. A 90-mm anti-tank gun was planned to be mounted on the new vehicle. The project was eventually declined. The number of prototypes built is unknown."",""IsPremium"":false,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G113_SP_I_C.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G113_SP_I_C.png"",""PriceCredit"":1360000,""PriceGold"":0,""NexTanksInTree"":[13841,18449]},{""TankId"":52241,""Name"":""Pz.Kpfw. B2 740 (f)"",""Description"":""During the European campaign, German troops captured 161 heavy B1 bis tanks that later received the Pz.Kpfw. B2 740 (f) designation. All vehicles were upgraded and received German radio equipment and twofold hatches on commander\u0027s cupolas. Some vehicles with dismantled armament were used for training purposes, and 16 vehicles were transformed into self-propelled howitzers. Most vehicles were converted into flame throwing tanks."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":4,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/B-1bis_captured.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/B-1bis_captured.png"",""PriceCredit"":0,""PriceGold"":1500,""NexTanksInTree"":[]},{""TankId"":7185,""Name"":""VK 30.01 (P)"",""Description"":""The Porsche company developed the concept of a new vehicle in 1939. On March 5, 1941, after numerous approvals, the company prepared blueprints and, in July 1941, produced the hull from mild steel. The hull and chassis (with detachable equipment for trenching) passed performance trials. One wooden prototype of the turret and one wooden prototype of the hull were manufactured. In 1942, the project was discontinued in favor of new heavy tanks."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3001P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3001P.png"",""PriceCredit"":920000,""PriceGold"":0,""NexTanksInTree"":[10769]},{""TankId"":19985,""Name"":""Skorpion G"",""Description"":""Development of the second series of self-propelled guns on the basis of the Panther tank was started by the Rheinmetall company in January 1943. The design plans for the 12,8 cm Skorpion were completed on April 2, 1943. Existed only in blueprints."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G114_Rheinmetall_Scorpion.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G114_Rheinmetall_Scorpion.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":4369,""Name"":""Pz.Kpfw. III"",""Description"":""Production of the J variant started in March 1941. In addition to the enhanced armor, the vehicle received the new 50-mm KwK 38 gun, which was deemed extremely successful; 1,067 other vehicles featured the KwK 39 gun, the improved version with better penetration rate. An attempt to mount a 75-mm gun (the N variant) was recognized as a failure, and the most large-scale vehicles were the J, L, and M variants (with 50-mm guns that had an impeccable track record). A total of 5,691 vehicles were produced, among which 1,969 were equipped with long-barrel guns and 2,391 with short-barrel 50-mm guns."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIII.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIII.png"",""PriceCredit"":6000,""PriceGold"":0,""NexTanksInTree"":[17425,1809]},{""TankId"":21009,""Name"":""Panzer 58"",""Description"":""Developed in 1953 in Switzerland, the first prototype of this tank featured a 90 mm gun. A second prototype with a British 20-pounder gun was built later. In the end, a series of 10 vehicles, featuring 105 mm guns, were produced and remained in service until 1964. After this, the vehicles were used as a basis for the Panzer 61. The only Panzer 58 that survives today features a 20-pounder gun and is currently located in the tank museum in Thun, Bern."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G119_Pz58_Mutz.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G119_Pz58_Mutz.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":54289,""Name"":""L\u00F6we"",""Description"":""Development of this 70-ton super-heavy tank started on November 1, 1941. In February 1942, the Krupp company suggested the VK 70.01 avant project, later designated the L\u00F6we (\u0022Lion\u0022). Several designs varying in configuration, armament, and armor, were drafted. However, the project was canceled after the F\u00FChrer made the decision to develop even heavier tanks. No prototypes were ever built."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Lowe.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Lowe.png"",""PriceCredit"":0,""PriceGold"":7500,""NexTanksInTree"":[]},{""TankId"":22033,""Name"":""Agent"",""Description"":""A spy modernization of the VK 28.01 light tank made specially for Operation Off the Grid. The visual model of the tank received a laser reticle mounted on the turret and also animated camouflage with shining green lines. "",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK2801_BP.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK2801_BP.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":55313,""Name"":""8,8 cm Pak 43 Jagdtiger"",""Description"":""In 1945, the production order for the Jagdtiger was increased, and the supply of compatible guns became insufficient. As a result, approximately 20 vehicles were equipped with the 8,8 cm PaK 43 L/71 gun."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdTiger_SdKfz_185.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdTiger_SdKfz_185.png"",""PriceCredit"":0,""PriceGold"":7400,""NexTanksInTree"":[]},{""TankId"":6417,""Name"":""Pz.Kpfw. III/IV"",""Description"":""A project for the new vehicle with sloped armor plates and components of the Pz.Kpfw. III and Pz.Kpfw. IV was approved on January 4, 1944. In March 1944, a contract for three prototypes was signed, but the program was discontinued on July 12. Only a tank destroyer on a similar base saw mass production."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIII_IV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIII_IV.png"",""PriceCredit"":0,""PriceGold"":250,""NexTanksInTree"":[]},{""TankId"":23057,""Name"":""Kunze Panzer"",""Description"":""A project for a medium tank with a forward-tilted turret axis and a turret placement of all crew members. Developed in 1964, existed only in blueprints."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G147_mPanzer_64.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G147_mPanzer_64.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":57361,""Name"":""Pz.Kpfw. IV Schmalturm"",""Description"":""On 25 May 1944, Jurgen Lukash, an engineer from the Krupp company, presented an experimental tank model based on the Pz. Kpfw. IV Schmalturm. The Starchaser was not approved by top management. But Stephen Pilberg, the famous philanthropist, invested $11 million in this project, which allowed a pilot version to be released on 25 May 1947. According to intelligence data, the tank was manufactured from metals mined at meteorite impact sites. The source of information that allowed the young engineer to create this unusual tank, remained a secret. The creator of the tank disappeared under mysterious circumstances together with all his blueprints. He was last seen on the lawn in front of his house, not far from Ludwigsburg: the engineer was musing on the starry sky\u2026"",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIV_schmalturm.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIV_schmalturm.png"",""PriceCredit"":0,""PriceGold"":3500,""NexTanksInTree"":[]},{""TankId"":16657,""Name"":""Rhm.-Borsig Waffentr\u00E4ger"",""Description"":""Developed by the Rheinmetall-Borsig company and designed as a special artillery carrier. The vehicle was designed to carry an artillery system as well as to fire from the chassis. The vehicle utilized the suspension of the Hetzer tank destroyer. Development continued from the end of 1942 through to the middle of 1944. However, the project was discontinued in favor of the Ardelt project because of a complicated design, high cost, and excessive weight."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/RhB_Waffentrager.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/RhB_Waffentrager.png"",""PriceCredit"":2400000,""PriceGold"":0,""NexTanksInTree"":[16401]},{""TankId"":25105,""Name"":""Barkhan"",""Description"":""This is the perfect tank for desert battles. Its strong armor lets you feel comfortable in face-to-face encounters with the enemy, while its powerful gun leaves them with no chance of surviving the battle."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G_VK3502_BP.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G_VK3502_BP.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":9489,""Name"":""E 100"",""Description"":""In June 1943, the Adlerwerke company received an order for development of the E 100. However, in 1944, heavy tank development was discontinued. By the end of the war, only the chassis was completed, which was later captured by the British Army."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E-100.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E-100.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":10513,""Name"":""VK 45.02 (P) Ausf. A"",""Description"":""Development of this vehicle started in April 1942. The Krupp company received an order for construction of turrets. However, the prototype was never manufactured. The turrets were mounted on the first Tiger IIs."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK4502A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK4502A.png"",""PriceCredit"":2435000,""PriceGold"":0,""NexTanksInTree"":[7441]},{""TankId"":11537,""Name"":""Jagdpanther II"",""Description"":""Developed on the basis of the Panther II. The vehicle was to be equipped with a 128 mm gun and the fighting compartment to be located in the rear. Existed only in blueprints."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdPantherII.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdPantherII.png"",""PriceCredit"":2570000,""PriceGold"":0,""NexTanksInTree"":[7953]},{""TankId"":64529,""Name"":""E 25"",""Description"":""The development of the E 25 was part of the \u0022E\u0022 program, supervised by the Waffenpr\u00FCfamt 6 committee. The E 25 was developed by the Argus company (Karlsruhe, Germany) under the supervision of Dr. Herman Klaue. No prototypes were manufactured."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E-25.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E-25.png"",""PriceCredit"":0,""PriceGold"":7300,""NexTanksInTree"":[]},{""TankId"":14609,""Name"":""Leopard 1"",""Description"":""Main battle tank of the Federal Republic of Germany. Development was started in 1956. The first prototypes were built in 1965 at the Krauss-Maffei factory. The Leopard 1 saw service in the armies of more than 10 countries."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Leopard1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Leopard1.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":17,""Name"":""Pz.Kpfw. IV Ausf. G"",""Description"":""Produced in greater numbers than any other tank of the Panzerwaffe. Manufactured from October 1937 through March 1945, with a total production of 8,519 tanks plus command vehicles. Beginning in May 1942 this tank was equipped with a long-barreled gun."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIV.png"",""PriceCredit"":400000,""PriceGold"":0,""NexTanksInTree"":[2321,7185]},{""TankId"":51729,""Name"":""Pz.Kpfw. II Ausf. J"",""Description"":""Reconnaissance tank with reinforced armor. The vehicle was a further development of the Pz.Kpfw II. In October 1939, a preproduction batch was ordered, and the first prototype was built in July 1940. From 1943 through 1944, seven vehicles were used by the 12th Panzer Division on the Eastern Front. A total of 22 tanks were manufactured."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzII_J.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzII_J.png"",""PriceCredit"":0,""PriceGold"":1000,""NexTanksInTree"":[]},{""TankId"":1041,""Name"":""StuG III Ausf. G"",""Description"":""Originally designed as an assault vehicle, this self-propelled gun was converted into a tank destroyer beginning with the F series. A total of 9,265 vehicles of this series and 1,211 of the Stu.H. 42 were produced."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/StuGIII.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/StuGIII.png"",""PriceCredit"":400000,""PriceGold"":0,""NexTanksInTree"":[11793,1553]},{""TankId"":2065,""Name"":""Pz.Kpfw. II"",""Description"":""The last modification of the light Pz. II tank. The vehicle featured enhanced armor, the 2 cm KwK 38 gun and improved observation devices. A total of 524 vehicles were built from March 1941 through December 1942."",""IsPremium"":false,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":1,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzII.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzII.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[785]},{""TankId"":8465,""Name"":""Panther II"",""Description"":""The vehicle was conceived in 1943. Two prototypes with the existing Panther I turrets were ordered in 1944. By 1945 only one of them had been built by the MAN company."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Panther_II.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Panther_II.png"",""PriceCredit"":2390000,""PriceGold"":0,""NexTanksInTree"":[10257]},{""TankId"":51985,""Name"":""Pz.Kpfw. S35 739 (f)"",""Description"":""Some of 400 of these French tanks were captured by the German Army. They were later used for training purposes and on secondary fronts."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/S35_captured.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/S35_captured.png"",""PriceCredit"":0,""PriceGold"":1200,""NexTanksInTree"":[]},{""TankId"":6929,""Name"":""Maus"",""Description"":""Developed from June 1942 through July 1944, with two prototypes produced, only one of which received a turret and armament."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Maus.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Maus.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":19729,""Name"":""Tiger 131"",""Description"":""This vehicle is the only Pz. Kpfw. VI Tiger in full working order. The vehicle was captured by the British 48th Royal Tank Regiment in Tunisia on April 21, 1943, and repaired later. It was shipped to the United Kingdom the same year. The British performed a full examination of the tank, and made it an exhibit item at the Bovington Tank Museum in 1951."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G136_Tiger_131.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G136_Tiger_131.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":4113,""Name"":""VK 30.02 (D)"",""Description"":""Developed as a response to, and influenced by, the Soviet T-34. The initial order for the production of 200 vehicles was canceled in favor of the Panther."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3002DB.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3002DB.png"",""PriceCredit"":1369000,""PriceGold"":0,""NexTanksInTree"":[13841]},{""TankId"":20753,""Name"":""M\u00E4uschen"",""Description"":""In summer 1942, the Porsche company received an order for the development of an assault tank with as much protection as possible and a powerful gun. One of the results of the superheavy Maus tank\u0027s development was the Typ 205 M\u00E4uschen, a design project with the same interior. Existed only in blueprints."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G110_Mauschen.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G110_Mauschen.png"",""PriceCredit"":3200000,""PriceGold"":0,""NexTanksInTree"":[6929]},{""TankId"":5137,""Name"":""Tiger II"",""Description"":""The most heavily armored tank carrying the most powerful anti-tank gun. The vehicle\u0027s drawbacks included an overloaded suspension and engine-transmission group, as well as excessive general mass. When engaging enemy vehicles at long range, the Tiger II had an upper hand over any other vehicle in terms of the gun and armor protection. However, due to the excessive mass of the vehicle, relatively low durability of the engine and transmission, and small total number of vehicles built, the Tiger II did not have any significant impact on the course of war."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVIB_Tiger_II.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVIB_Tiger_II.png"",""PriceCredit"":2450000,""PriceGold"":0,""NexTanksInTree"":[9745]},{""TankId"":21777,""Name"":""VK 90.01 (P)"",""Description"":""Esteemed professionals argue that the VK 90.01 (P) project is one of the suggestions for the development of heavy tanks with its rear turret placement and that it was never built and definitely never mass-produced. In fact, the VK 90.01 (P) was created in the Holiday Shop by Chris Dev, inventor extraordinaire and holiday enthusiast."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G_VK9001P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G_VK9001P.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":55057,""Name"":""Pz.Kpfw. IV hydrostat."",""Description"":""This experimental version of the Pz.Kpfw. IV Ausf. G, incorporating hydrostatic drive, began development in 1944. Trials were discontinued due to the unreliability of the transmission and the lack of spare parts."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIV_Hydro.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIV_Hydro.png"",""PriceCredit"":0,""PriceGold"":2400,""NexTanksInTree"":[]},{""TankId"":6161,""Name"":""Pz.Kpfw. II Luchs"",""Description"":""As compared to the Pz.Kpfw. II Ausf. C, the vehicle featured a new hull and turret, as well as a chassis with a staggered arrangement of roadwheels. The reconnaissance tank had strong characteristics, but only 131 vehicles of the L modification were built, after manufacture proved to be too expensive."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":4,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzII_Luchs.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzII_Luchs.png"",""PriceCredit"":0,""PriceGold"":100,""NexTanksInTree"":[]},{""TankId"":22801,""Name"":""Icebreaker"",""Description"":""A Tiger I from the icy world of Eternal Winter. Powered by a cryogenic engine, it pushes forward into battle. Its parts give off a cold glow, its armor is tempered by the harsh frost, and its commander\u0027s heart won\u0027t be melted by the hottest battles in history!"",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVI_AusfBP.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVI_AusfBP.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":23825,""Name"":""Krupp-Steyr Waffentr\u00E4ger"",""Description"":""A vehicle project by Steyr as a special artillery transporter that would be able not only to transport the gun but also to fire it from the chassis. To keep costs down and reduce complexity, the design used many components of the Raupenschlepper Ost, a tracked artillery mover. The turret and gun were supplied by Krupp. One wooden model and one prototype were manufactured by September 2, 1944."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G109_Steyr_WT.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G109_Steyr_WT.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":8209,""Name"":""Pz.Kpfw. 38 (t) n.A."",""Description"":""Developed by the BMM company as a new light reconnaissance tank on the chassis of the Pz.Kpfw. 38 (t) from July 1940. The vehicle used welding technology instead of rivets. The new engine and improved transmission allowed for a top speed of 64 km/h. Development was discontinued in favor of the VK 1303. Five prototypes were manufactured."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":4,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz38_NA.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz38_NA.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":785,""Name"":""Pz.Kpfw. 35 (t)"",""Description"":""Developed by \u0160koda in 1935, the vehicle saw service in the Czechoslovakian army under the designation LT vz. 35. During the occupation of Czechoslovakia, the captured tanks were redesignated as Pz.Kpfw. 35 (t) and deployed with the Wehrmacht. The vehicles were actively used by the 1st Light Division (the 6th Panzer Division after reorganization) until the late 1941. A total of 434 tanks were manufactured."",""IsPremium"":false,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":2,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz35t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz35t.png"",""PriceCredit"":1200,""PriceGold"":0,""NexTanksInTree"":[4369]},{""TankId"":10257,""Name"":""E 50"",""Description"":""In 1945 the E 50 was conceived as a standard medium tank of the Panzerwaffe to replace the Panther and Panther II. It existed only in blueprints."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E-50.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E-50.png"",""PriceCredit"":3450000,""PriceGold"":0,""NexTanksInTree"":[12305]},{""TankId"":60177,""Name"":""Panther mit 8,8 cm L/71"",""Description"":""Development of a modification of the Panther started in the spring of 1944. The new variant was to incorporate a newly designed Schmalturm turret. The new vehicle was designated the Panther Ausf. F. On January 23, 1945, it was reported that the 88-mm gun of the Tiger was mounted on the upgraded version of the new turret. A large number of hulls for the vehicle were manufactured, but the turret never saw production and existed only as a wooden model."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G106_PzKpfwPanther_AusfF.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G106_PzKpfwPanther_AusfF.png"",""PriceCredit"":0,""PriceGold"":7300,""NexTanksInTree"":[]},{""TankId"":5393,""Name"":""VK 16.02 Leopard"",""Description"":""The design of the VK 16.02, known as the Leopard, was based on the Panzer II Ausf. J (VK 16.01) and Panzer II Ausf. M (VK 13.01) that had been developed earlier. A dummy vehicle was ready in May\u2013June 1942, and the first prototype was built by September 1, 1942. According to \u0022Panzerprogramm 41\u0022, that provided for the manufacturing of 339 vehicles (105 by December 1943 and 150 by the middle of 1944), mass production was to be launched in April 1943 but never started. Later, the Leopard turret was mounted on the Sd.Kfz.234/2 designated as Puma."",""IsPremium"":false,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK1602.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK1602.png"",""PriceCredit"":400000,""PriceGold"":0,""NexTanksInTree"":[14097,10001]},{""TankId"":11281,""Name"":""Kampfpanzer 70"",""Description"":""An American-German collaboration from the 1960s, also known as the MBT-70. The vehicle never entered mass production because of disagreements between the parties. Later, the project split into two national programs. The KpfPz 70 was available during the Missile Exercise game event."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G_KpfPz_70.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G_KpfPz_70.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":12305,""Name"":""E 50 Ausf. M"",""Description"":""The German Army demanded that the E-series tanks had transmissions positioned in the rear. However, the E 50 and E 75 tanks used the Tiger II engine-transmission compartment, which made rear placement of the transmission impossible. The E 50 Ausf. M tank was a redesign of the E 50 project with the transmission placed in the rear."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E50_Ausf_M.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E50_Ausf_M.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":13329,""Name"":""Durchbruchswagen 2"",""Description"":""Prototype of a heavy tank, developed by the Henschel und Sohn company. The prototype was built in 1938. In September 1939 the VK 30.01 project was preferred, and the DW program was canceled. However, the DW I and DW II prototypes were used for various trials until 1941."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":4,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/DW_II.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/DW_II.png"",""PriceCredit"":0,""PriceGold"":100,""NexTanksInTree"":[]},{""TankId"":64273,""Name"":""Snowstorm Jagdtiger 8.8"",""Description"":""In 1945, the production order for the Jagdtiger was increased, and the supply of compatible guns became insufficient. As a result, approximately 20 vehicles were equipped with the 8,8 cm PaK 43 L/71 gun. The Snowstorm Jagdtiger 8,8 is a holiday event version of the traditional Jagdtiger 8,8. It was available in the Store only from 17 December 2014 through 5 January 2015."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdTiger_SdKfz_185_Snowstorm.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdTiger_SdKfz_185_Snowstorm.png"",""PriceCredit"":0,""PriceGold"":7400,""NexTanksInTree"":[]},{""TankId"":19473,""Name"":""Krupp-38(D)"",""Description"":""In 1944, German engineers were looking into the idea of installing a 75 mm gun KwK40 L/43 onto the hull of the Hetzer tank destroyer. However the stage of blueprints showed the existing hull and turret need significant improvements. The initial plan was abandoned in favor of further experiments. In the game, the Krupp-38(D) is created according to blueprints but with a more powerful gun. "",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Krupp-38D.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Krupp-38D.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":58641,""Name"":""VK 72.01 (K)"",""Description"":""A superheavy tank with rear placement of the turret. Developed by the Krupp company. A new vehicle was to have stronger armament and enhanced armor compared to the VK 70.01. Existed only in blueprints."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK7201.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK7201.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":17425,""Name"":""Pz.Kpfw. IV Ausf. D"",""Description"":""This modification of the Pz IV was developed in October 1939. The vehicle had enhanced armor and an improved, external gun mantlet. The tank was mass-produced until May 1940, with a total of 229 vehicles manufactured."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":4,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz_IV_AusfD.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz_IV_AusfD.png"",""PriceCredit"":85000,""PriceGold"":0,""NexTanksInTree"":[5393,17]},{""TankId"":1809,""Name"":""Hetzer"",""Description"":""In 1943, the Wehrmacht were experiencing a dire shortage of StuG III tank destroyers because the joint U.S.A.-U.K. air raids caused considerable damage to the Alkett company\u0027s factory that produced these vehicles. December 1943, a decision was made to utilize the working capacities of the BMM company in Prague to start production of tank destroyers. Components of the Pz.Kpfw. 38(t) tank were widely used in the new vehicle. The first prototypes were produced in March 1944. More than 2,800 vehicles were built by May 1945."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":4,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Hetzer.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Hetzer.png"",""PriceCredit"":85000,""PriceGold"":0,""NexTanksInTree"":[1041]},{""TankId"":18449,""Name"":""Ru 251"",""Description"":""The vehicle was developed on the basis of the Kanonenjagdpanzer 4-5 tank destroyer by the Henschel company in 1964. The tank was planned to replace the obsolete M41 Walker Bulldog vehicles used by the reconnaissance battalions of the armored divisions in the German Army. The tank never saw mass production, but some technical innovations were applied later in the development of other vehicles. The total number of prototypes built is unknown."",""IsPremium"":false,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G103_RU_251.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G103_RU_251.png"",""PriceCredit"":2440000,""PriceGold"":0,""NexTanksInTree"":[14865]},{""TankId"":529,""Name"":""Tiger I"",""Description"":""Development of the Tiger I was started in 1937 by the Henschel company. Mass production began in 1942, with an eventual total of 1,354 vehicles manufactured. The tank first saw combat in the fighting for Leningrad, and Tigers were at the forefront of battles from Tunisia to Kursk. Although production was discontinued in the summer of 1944, the Tiger I continued to see action until the end of the war."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVI.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVI.png"",""PriceCredit"":1390000,""PriceGold"":0,""NexTanksInTree"":[5137]},{""TankId"":20497,""Name"":""VK 100.01 (P)"",""Description"":""A version of the Maus from June 4, 1942. The 120-ton predecessor of the superheavy tank existed only in blueprints and never saw service. This vehicle was only an intermittent stage in the development of the Maus."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G115_VK10001P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G115_VK10001P.png"",""PriceCredit"":2450000,""PriceGold"":0,""NexTanksInTree"":[20753]},{""TankId"":4881,""Name"":""Pz.Kpfw. III Ausf. A"",""Description"":""An order for designing a 15-ton tracked vehicle with a gun armament was placed in 1935. Despite the weight of the Pz. Kpfw. III Ausf. E, the first large-scale vehicle, reached 19.5 tons, its configuration was deemed successful, and the number of vehicles eventually grew to 96. Further modifications became even more popular, and the Pz. Kpfw. III became the most mass-produced vehicle of the Wehrmacht."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIII_A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIII_A.png"",""PriceCredit"":0,""PriceGold"":50,""NexTanksInTree"":[]},{""TankId"":21521,""Name"":""E 75 TS"",""Description"":""One of the projects for further developing and modernizing the E 75 tank. There were plans to mount a gas-turbine engine and a shielded cast turret. It existed only in blueprints."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G_E-75TS.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G_E-75TS.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":22545,""Name"":""Kanonenjagdpanzer 105"",""Description"":""The first prototypes of the Kanonenjagdpanzer were produced in 1960 by the Hanomag and Henschel companies for the FRG. Mass production continued until 1967. A total of 770 vehicles for the Bundeswehr and 80 for the Belgian Armed Forces were built. In 1983, the vehicle was deemed outdated. According to engineers, some of them could be equipped with 105 mm guns, but the vehicles were eventually converted into artillery observation vehicles or anti-tank guided missile carriers. The Kanonenjagdpanzer (also known as Jagdpanzer Kanone 90mm) remained in service in citizen military forces until 1990."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G112_JagdPanzer_105.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G112_JagdPanzer_105.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":23569,""Name"":""Pz. IV Gargoyle"",""Description"":""A special variant of the Pz. IV G straight from the Shooting Gallery event. This sharp-toothed vehicle never misses a chance to test the strength of enemy armor! Its gun deals tremendous damage with every shot, and the quick turret won\u0027t let enemies escape your sight. "",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz_IV_AusfBT.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz_IV_AusfBT.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":7953,""Name"":""Jagdtiger"",""Description"":""Developed from 1942 through 1944, the heavy tank destroyer, with the chassis of the Tiger II heavy tank, became the heaviest mass-produced armored vehicle ever. According to various sources, 70\u201379 tank destroyers were manufactured from 1944 through 1945. The vehicles saw service in the 653rd and 512th Heavy Panzerj\u00E4ger Battalions."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdTiger.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdTiger.png"",""PriceCredit"":3450000,""PriceGold"":0,""NexTanksInTree"":[12049]},{""TankId"":24593,""Name"":""Keiler"",""Description"":""One of the projects for further developing and modernizing the E 75 tank. There were plans to mount a gas-turbine engine and a shielded cast turret. It existed only in blueprints."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G_E-75RT.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G_E-75RT.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":3345,""Name"":""Pz.Kpfw. 38 (t)"",""Description"":""Developed by the \u010CKD company for the Czechoslovakian Army in 1938. During the German occupation, the vehicle saw service in the Wehrmacht and was used in the Polish and French Campaigns, as well as on the Eastern Front. The tank saw combat on the front line until the middle of 1942. Approximately 1,400 vehicles in eight modifications (Ausf. A/B/C/D/E/F/S/G) were manufactured."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz38t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz38t.png"",""PriceCredit"":0,""PriceGold"":50,""NexTanksInTree"":[]},{""TankId"":10001,""Name"":""VK 28.01"",""Description"":""The vehicle was intended as a standard light tank of the Panzerwaffe and a basis for antiaircraft tanks and vehicles able to ride on any terrain and railroad tracks. Existed only in blueprints."",""IsPremium"":false,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK2801.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK2801.png"",""PriceCredit"":945000,""PriceGold"":0,""NexTanksInTree"":[18961]},{""TankId"":11025,""Name"":""Sturer Emil"",""Description"":""Experimental tank destroyer developed on the basis of the VK 30.01(H) heavy tank. Only two vehicles were manufactured. They fought on the Eastern Front. The tank destroyer was designated as \u201CSturer Emil\u201D (German for \u201CStubborn Emil\u201D) due to frequent breakdowns."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Sturer_Emil.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Sturer_Emil.png"",""PriceCredit"":1300000,""PriceGold"":0,""NexTanksInTree"":[16657]},{""TankId"":64017,""Name"":""Tankenstein"",""Description"":""Tankenstein is a unique vehicle created for Halloween 2015. The tank consists of modules from other vehicles and features special camouflage and a unique appearance. According to some secret dispatches, a surreptitious community of German scientists was involved in the creation of Tankenstein."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/S01_Frankentank.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/S01_Frankentank.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":12049,""Name"":""Jagdpanzer E 100"",""Description"":""The E 100 was conceived as the basis for a self-propelled gun, an antiaircraft vehicle, and a tank destroyer. However, development was never started."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdPz_E100.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdPz_E100.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":13073,""Name"":""Pz.Kpfw. II Ausf. G"",""Description"":""The German WWII light reconnaissance tank was a modification of the Pz. II tank. The vehicle featured an improved hull and suspension, a more powerful engine, and observation devices for the radio operator and driver, which increased the view range."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz_II_AusfG.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz_II_AusfG.png"",""PriceCredit"":0,""PriceGold"":50,""NexTanksInTree"":[]},{""TankId"":62993,""Name"":""VK 45.03"",""Description"":""Heavy tank developed at the end of WWII. The project was designated the Tiger III (VK 45.03) on October 12, 1942. Existed only in blueprints."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G118_VK4503.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G118_VK4503.png"",""PriceCredit"":0,""PriceGold"":5000,""NexTanksInTree"":[]},{""TankId"":14097,""Name"":""VK 30.01 (D)"",""Description"":""In the winter of 1941\u20131942 the WaPr\u00FCf 6 issued technical requirements for a new 30-ton tank. The orders for development were placed with MAN and Daimler-Benz. The prototypes were to be ready by May 1942. However, on May 13th, 1942 only comparative characteristics of the projects were submitted. The MAN\u0027s project was preferred, and the Daimler-Benz\u0027s project was canceled."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3002DB_V1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3002DB_V1.png"",""PriceCredit"":910000,""PriceGold"":0,""NexTanksInTree"":[4113,1297]},{""TankId"":16145,""Name"":""Pz.Sfl. IVc"",""Description"":""Proposed antiaircraft vehicle mounting the 88-mm antiaircraft gun. Development started in Germany in 1941. The vehicle was based on the Pz.Sfl.IVc chassis. The operational requirements for the vehicle were constantly changed, and the FlaK 41 gun was mounted on the chassis only in 1944. The vehicle was to be the basis of variants with other armament alternatives. However, the plan was never implemented. Only three prototypes were manufactured."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz_Sfl_IVc.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz_Sfl_IVc.png"",""PriceCredit"":0,""PriceGold"":250,""NexTanksInTree"":[]},{""TankId"":24081,""Name"":""U-Panzer"",""Description"":""A tank that was raised from the depths of the sea at an incredibly long distance from the coast. How did it get there? Judging by the special tube, cylinders, and winch, it arrived under its own power! Although its diving equipment doesn\u0027t work anymore, the tank retained the name U-Panzer in memory of its underwater trip."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3002DB_BP.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3002DB_BP.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":17169,""Name"":""Pz.Kpfw. IV Ausf. A"",""Description"":""Development of the vehicle started in 1935. It was nicknamed Pz Kpfw IV in April 1936. Mass production began in the fall of 1937, and the first vehicles saw service starting in 1938. A total of 35 vehicles were manufactured and were in service until 1941."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz_IV_AusfA.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz_IV_AusfA.png"",""PriceCredit"":0,""PriceGold"":50,""NexTanksInTree"":[]},{""TankId"":1553,""Name"":""Jagdpanzer IV"",""Description"":""The Pz. IV medium tank served as the basis for many vehicles, including tank destroyers. At the end of 1944, a version of the 75-mm PaK 42 L/70 gun was prepared for this basis. The new variant of the vehicle was designated the JagdPzIV/70. From August 1944 through March 1945, the Nibelungenwerke company produced 278 vehicles of this type."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdPzIV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdPzIV.png"",""PriceCredit"":910500,""PriceGold"":0,""NexTanksInTree"":[3857]},{""TankId"":51473,""Name"":""Pz.Kpfw. V/IV"",""Description"":""This vehicle was produced by the Maintenance and Recovery Company of the 653rd Heavy Panzerj\u00E4ger Battalion on the basis of the Bergepanther ARV and the Pz. IV turret."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzV_PzIV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzV_PzIV.png"",""PriceCredit"":0,""PriceGold"":2400,""NexTanksInTree"":[]},{""TankId"":2577,""Name"":""VK 30.01 (H)"",""Description"":""An order for developing the vehicle was placed on September 9, 1939. Over the course of its development, Henschel engineers actively used elements of the D.W. II project. The first two prototypes were ready in March 1942; another two were built by October the same year. Hulls of the prototypes underwent trials at the plant proving ground. After the trials, two prototypes were converted into heavy tank destoyers. Six turrets manufactured by the Krupp company were placed at the Atlantic Wall."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3001H.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3001H.png"",""PriceCredit"":0,""PriceGold"":250,""NexTanksInTree"":[]},{""TankId"":19217,""Name"":""Grille 15"",""Description"":""In the summer of 1942, Waffenamt (the German Army Weapon Agency) concluded an agreement with the Krupp and Rheinmetall companies for designing a tank destroyer on the chassis of the Panther tank. It was planned to mount either the 128-mm K 43 gun or the 150-mm sFH 43 howitzer. The projects were designated Grille 12 and Grille 15, featured rear placement of the fighting compartment, and differed only in the artillery system type. Later, the Grille 15 received a 150-mm gun with a length of 63 calibers, which could penetrate 200 mm of armor at 4,000 meters. However, development was slow, and the Grille 15 remained only in blueprints."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":10,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G121_Grille_15_L63.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G121_Grille_15_L63.png"",""PriceCredit"":6100000,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":2321,""Name"":""VK 36.01 (H)"",""Description"":""An experimental German WWII heavy tank developed by Henschel. The vehicle was a further development of the VK 30.01 (H) project and a stage in the design process for the Tiger. A total of eight chassis and one prototype were built in 1942. During the development, various technical solutions were trialed. Some of them later served as a basis for German heavy tank designs during the WWII. The chassis was also used in armored recovery vehicles."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3601H.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3601H.png"",""PriceCredit"":935000,""PriceGold"":0,""NexTanksInTree"":[529]},{""TankId"":3601,""Name"":""Panzerj\u00E4ger I"",""Description"":""Development of the Panzerj\u00E4ger I, the German tank destroyer, started in 1939 based on the Panzerkampfwagen I Ausf. B. Initially, the 37-mm Pak 36 gun was mounted on the chassis of the Panzerkampfwagen I Ausf. B. However, during the invasion of Poland, it was revealed that the gun was not effective against new vehicles. After Germany captured Czechoslovakia in 1940, the 47-mm Pak 36(t) L/43.4 (\u0160koda 47-mm A-5 KP \u00DAV vz. 38 Model A5) gun was mounted on the tank destroyer. A total of 202 vehicles were manufactured and saw action until 1943."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":2,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PanzerJager_I.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PanzerJager_I.png"",""PriceCredit"":0,""PriceGold"":25,""NexTanksInTree"":[]},{""TankId"":62737,""Name"":""leKpz M 41 90 mm"",""Description"":""The German modification of the M41A1 Walker Bulldog U.S. light tank. Major changes were introduced to the 76 mm gun M32, which was reamed out to 90 mm and shortened by 425 mm."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G120_M41_90.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G120_M41_90.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":21265,""Name"":""VK 168.01 (P)"",""Description"":""In the summer of 1942, Porsche received an order for a breakthrough vehicle with the most powerful armament and thickest armor possible for such a class. VK 168.01 was a further development of the M\u00E4uschen project. The main difference was in the frontal placement of the turret. Existed only in blueprints."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G138_VK16801P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G138_VK16801P.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":54545,""Name"":""T-25"",""Description"":""The vehicle was developed by the \u0160koda company under the Panzer Development Program initiated by the Heer (German Army land forces). The T-25 existed only in blueprints."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":5,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-25.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-25.png"",""PriceCredit"":0,""PriceGold"":2100,""NexTanksInTree"":[]},{""TankId"":6673,""Name"":""Marder II"",""Description"":""Light tank destroyer developed in early 1942 based on the chassis of the outdated, but massively produced, Pz.Kpfw. II, and fitted with a powerful gun. The vehicle saw wide use on the Eastern Front; from 1944, it also fought in Italy and on the Western Front. The tank destroyer was in service until the end of the war."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G20_Marder_II.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G20_Marder_II.png"",""PriceCredit"":0,""PriceGold"":50,""NexTanksInTree"":[]},{""TankId"":7697,""Name"":""Ferdinand"",""Description"":""Developed on the basis of the Porsche Tiger, with a total of 90 vehicles produced in April and May 1943. They first saw combat in the Battle of Kursk (Operation Citadel)."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ferdinand.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ferdinand.png"",""PriceCredit"":2570000,""PriceGold"":0,""NexTanksInTree"":[7953]},{""TankId"":24337,""Name"":""M48A2 R\u00E4umpanzer"",""Description"":""The predecessor of engineering vehicles, developed on the basis of the American M48 post-war medium tank. Equipped with the M8A1 dozer blade, these vehicles entered service in Bundeswehr engineering units and were used until the late 1990s in territorial forces, but with demounted guns. A total of 53 vehicles saw service in Bundeswehr."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G142_M48RPz.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G142_M48RPz.png"",""PriceCredit"":0,""PriceGold"":0,""NexTanksInTree"":[]},{""TankId"":57617,""Name"":""Panther/M10"",""Description"":""During the preparation of Otto Skorzeny\u0027s Panzerbrigade 150 for the Ardennes offensive, four Panther tanks were disguised as M10 tank destroyers. The tank brigade was to carry out diversions deep behind the allied lines. All vehicles were lost during the battle with the 120th U.S. Infantry Regiment on February 21, 1945."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Panther_M10.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Panther_M10.png"",""PriceCredit"":0,""PriceGold"":4750,""NexTanksInTree"":[]},{""TankId"":3857,""Name"":""Jagdpanther"",""Description"":""Development of this tank destroyer, based on the chassis of the new VK 30.02 (MAN) tank, began in 1942. In October 1943, the prototype trials were started. A total of 392 vehicles were manufactured."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdPanther.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdPanther.png"",""PriceCredit"":1345000,""PriceGold"":0,""NexTanksInTree"":[7697,11537]},{""TankId"":57105,""Name"":""Dicker Max"",""Description"":""The Dicker Max (\u0022Fat Max\u0022) was initially intended to destroy bunkers. Two prototypes were built in the spring of 1941. Later the vehicle was redesignated a heavy tank destroyer. The design was never put into mass production, but the prototypes fought on the Eastern Front."",""IsPremium"":true,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/DickerMax.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/DickerMax.png"",""PriceCredit"":0,""PriceGold"":2900,""NexTanksInTree"":[]},{""TankId"":9745,""Name"":""E 75"",""Description"":""In 1945 the E 75 was conceived as a standard heavy tank of the Panzerwaffe to replace the Tiger II. It existed only in blueprints."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E-75.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E-75.png"",""PriceCredit"":3480000,""PriceGold"":0,""NexTanksInTree"":[9489]},{""TankId"":7441,""Name"":""VK 45.02 (P) Ausf. B"",""Description"":""Two designs of this vehicle (one with the forward-mounted turret and the other with the rear-mounted turret) were drawn up by Ferdinand Porsche. The tank never saw mass production."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK4502P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK4502P.png"",""PriceCredit"":3598000,""PriceGold"":0,""NexTanksInTree"":[58641]},{""TankId"":59665,""Name"":""Gro\u00DFtraktor - Krupp"",""Description"":""An experimental medium tank, developed by the Krupp company. By 1929, two prototypes were manufactured from non-armored steel and underwent trials in the Soviet Union until 1933. The trials revealed multiple faults, and the vehicle never saw service. However, the results of vehicle development were later used by German engineers."",""IsPremium"":true,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G100_Gtraktor_Krupp.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G100_Gtraktor_Krupp.png"",""PriceCredit"":0,""PriceGold"":1200,""NexTanksInTree"":[]},{""TankId"":10769,""Name"":""Tiger (P)"",""Description"":""On May 26, 1941, Adolf Hitler ordered Ferdinand Porsche and the Henschel company to develop prototypes of a new heavy tank. The prototypes were shown to the F\u00FChrer on April 20, 1942. Manufacturing began, but the production run was cut short due to the complexity of the tank\u0027s drive and control systems, and a shortage of the required copper. Later, 90 produced hulls were converted into Ferdinand tank destroyers."",""IsPremium"":false,""TypeId"":""heavyTank"",""NationId"":""germany"",""Tier"":7,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVI_Tiger_P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVI_Tiger_P.png"",""PriceCredit"":1395000,""PriceGold"":0,""NexTanksInTree"":[10513,20497,7697]},{""TankId"":11793,""Name"":""Nashorn"",""Description"":""The official designation of the Nashorn (\u0022Rhinoceros\u0022) tank destroyer was 8.8 cm PaK 43/1 auf Gesch\u00FCtzwagen III/IV (Sf). The vehicle was designated the Hornisse (\u0022Hornet\u0022) until 1944. Produced on the same chassis as the Hummel heavy SPG. The vehicle first saw combat on the Eastern Front in the summer of 1943. A total of 494 vehicles were manufactured."",""IsPremium"":false,""TypeId"":""AT-SPG"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Nashorn.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Nashorn.png"",""PriceCredit"":905000,""PriceGold"":0,""NexTanksInTree"":[11025,3857]},{""TankId"":13841,""Name"":""Indien-Panzer"",""Description"":""The project was developed as a medium tank for the Indian Army. The work on the project was carried out by Porsche, Daimler-Benz, and Zahnradfabrik AG of Friedrichshafen. However, the vehicle was deemed to be too complicated for production in India, and the project was canceled."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":8,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Indien_Panzer.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Indien_Panzer.png"",""PriceCredit"":2420000,""PriceGold"":0,""NexTanksInTree"":[14865]},{""TankId"":54801,""Name"":""T-15"",""Description"":""This experimental light tank was developed at the \u0160koda factory in 1941\u20131943, with a total of five prototypes manufactured. The vehicle was never mass-produced, nor saw service."",""IsPremium"":true,""TypeId"":""lightTank"",""NationId"":""germany"",""Tier"":3,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-15.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-15.png"",""PriceCredit"":0,""PriceGold"":950,""NexTanksInTree"":[]},{""TankId"":14865,""Name"":""Leopard Prototyp A"",""Description"":""Prototype developed from 1960 through 1961 as a medium tank for the Bundeswehr, with a total of 26 prototypes manufactured. The prototypes were tested up to 1963. The vehicle was the predecessor of the Leopard medium tank."",""IsPremium"":false,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":9,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pro_Ag_A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pro_Ag_A.png"",""PriceCredit"":3450000,""PriceGold"":0,""NexTanksInTree"":[14609]},{""TankId"":15889,""Name"":""VK 30.02 (M)"",""Description"":""A medium tank, developed by the MAN company and designed as a 30-ton tank. Simultaneously, the Daimler-Benz company developed a competing project. On May 13, 1942, the two projects were submitted to the Ministry of Armaments and War Production. The MAN design was preferred, and the tank eventually entered service as the Pz.Kpfw. V Panther."",""IsPremium"":true,""TypeId"":""mediumTank"",""NationId"":""germany"",""Tier"":6,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3002M.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3002M.png"",""PriceCredit"":0,""PriceGold"":500,""NexTanksInTree"":[]}]}"; + + public static string TanksList = @"{""tanks"": [{""TankId"":9297,""BattleLifeTimeInSeconds"":1022,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.4333333333333333333333333333,""Name"":""FV215b (183)"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":10,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB48_FV215b_183.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB48_FV215b_183.png"",""LastBattleTime"":""2022-06-21T16:08:18+02:00"",""Battles"":7,""CapturePoints"":0,""DamageDealt"":9646,""DamageReceived"":11413,""DroppedCapturePoints"":0,""Frags"":4,""Frags8P"":4,""Hits"":14,""Losses"":3,""MaxFrags"":4,""MaxXp"":1173,""Shots"":20,""Spotted"":8,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":4,""Xp"":9844,""Wn7"":897.7777739964606,""WinRate"":57.142857142857142857142857143,""AvgDamage"":1378,""AvgXp"":1406.2857142857142857142857143,""DamageCoefficient"":0.8451765530535354420397791992,""SurvivalRate"":14.285714285714285714285714286},{""TankId"":9217,""BattleLifeTimeInSeconds"":79623,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.8416488222698072805139186296,""Name"":""IS-6"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Object252.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Object252.png"",""LastBattleTime"":""2021-06-21T10:18:11+02:00"",""Battles"":467,""CapturePoints"":176,""DamageDealt"":696508,""DamageReceived"":569047,""DroppedCapturePoints"":104,""Frags"":379,""Frags8P"":277,""Hits"":2313,""Losses"":203,""MaxFrags"":5,""MaxXp"":1780,""Shots"":2621,""Spotted"":583,""SurvivedBattles"":174,""WinAndSurvived"":172,""Wins"":261,""Xp"":355474,""Wn7"":1261.8411211530142,""WinRate"":55.888650963597430406852248394,""AvgDamage"":1491.4518201284796573875802998,""AvgXp"":761.18629550321199143468950749,""DamageCoefficient"":1.2239902855124444905253871824,""SurvivalRate"":37.259100642398286937901498929},{""TankId"":59905,""BattleLifeTimeInSeconds"":134227,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6695902943516308671439936356,""Name"":""T-54 first prototype"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":8,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/R112_T54_45.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/R112_T54_45.png"",""LastBattleTime"":""2021-06-21T09:50:12+02:00"",""Battles"":838,""CapturePoints"":38,""DamageDealt"":1153940,""DamageReceived"":1061637,""DroppedCapturePoints"":204,""Frags"":714,""Frags8P"":515,""Hits"":5425,""Losses"":355,""MaxFrags"":6,""MaxXp"":1977,""Shots"":6170,""Spotted"":1405,""SurvivedBattles"":270,""WinAndSurvived"":263,""Wins"":481,""Xp"":642071,""Wn7"":1310.7587952965653,""WinRate"":57.398568019093078758949880668,""AvgDamage"":1377.0167064439140811455847255,""AvgXp"":766.19451073985680190930787589,""DamageCoefficient"":1.0869440307751142810584032018,""SurvivalRate"":32.2195704057279236276849642},{""TankId"":13345,""BattleLifeTimeInSeconds"":112711,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.5419711321605773567884528642,""Name"":""T26E4 SuperPershing"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":8,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T26_E4_SuperPershing.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T26_E4_SuperPershing.png"",""LastBattleTime"":""2021-06-21T09:49:37+02:00"",""Battles"":739,""CapturePoints"":34,""DamageDealt"":981562,""DamageReceived"":958400,""DroppedCapturePoints"":108,""Frags"":554,""Frags8P"":425,""Hits"":5356,""Losses"":329,""MaxFrags"":5,""MaxXp"":1888,""Shots"":6302,""Spotted"":1193,""SurvivedBattles"":231,""WinAndSurvived"":229,""Wins"":408,""Xp"":582116,""Wn7"":1199.8674820185884,""WinRate"":55.209742895805142083897158322,""AvgDamage"":1328.2300405953991880920162382,""AvgXp"":787.70771312584573748308525034,""DamageCoefficient"":1.0241673622704507512520868114,""SurvivalRate"":31.258457374830852503382949932},{""TankId"":23569,""BattleLifeTimeInSeconds"":93,""MarkOfMastery"":0,""AvgBattleLifeTimeInMinutes"":1.55,""Name"":""Pz. IV Gargoyle"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz_IV_AusfBT.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz_IV_AusfBT.png"",""LastBattleTime"":""2021-06-20T22:23:09+02:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":539,""DamageReceived"":680,""DroppedCapturePoints"":0,""Frags"":0,""Frags8P"":0,""Hits"":3,""Losses"":0,""MaxFrags"":0,""MaxXp"":514,""Shots"":4,""Spotted"":5,""SurvivedBattles"":0,""WinAndSurvived"":0,""Wins"":1,""Xp"":514,""Wn7"":1274.8020610514295,""WinRate"":100,""AvgDamage"":539,""AvgXp"":514,""DamageCoefficient"":0.7926470588235294117647058824,""SurvivalRate"":0},{""TankId"":15953,""BattleLifeTimeInSeconds"":8400,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.3728813559322033898305084746,""Name"":""FV201 (A45)"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":7,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB52_FV201_A45.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB52_FV201_A45.png"",""LastBattleTime"":""2021-06-20T22:09:55+02:00"",""Battles"":59,""CapturePoints"":0,""DamageDealt"":69966,""DamageReceived"":74005,""DroppedCapturePoints"":0,""Frags"":52,""Frags8P"":3,""Hits"":560,""Losses"":32,""MaxFrags"":6,""MaxXp"":1807,""Shots"":651,""Spotted"":64,""SurvivedBattles"":21,""WinAndSurvived"":19,""Wins"":27,""Xp"":41473,""Wn7"":1087.6304155102132,""WinRate"":45.762711864406779661016949153,""AvgDamage"":1185.8644067796610169491525424,""AvgXp"":702.93220338983050847457627119,""DamageCoefficient"":0.9454226065806364434835484089,""SurvivalRate"":35.593220338983050847457627119},{""TankId"":59649,""BattleLifeTimeInSeconds"":27832,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.3427609427609427609427609428,""Name"":""ISU-122S"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":7,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/R116_ISU122C_Berlin.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/R116_ISU122C_Berlin.png"",""LastBattleTime"":""2021-06-20T22:05:58+02:00"",""Battles"":198,""CapturePoints"":0,""DamageDealt"":257747,""DamageReceived"":182669,""DroppedCapturePoints"":107,""Frags"":161,""Frags8P"":22,""Hits"":871,""Losses"":85,""MaxFrags"":4,""MaxXp"":1756,""Shots"":1067,""Spotted"":203,""SurvivedBattles"":49,""WinAndSurvived"":49,""Wins"":113,""Xp"":127380,""Wn7"":1327.738302029869,""WinRate"":57.070707070707070707070707071,""AvgDamage"":1301.7525252525252525252525253,""AvgXp"":643.33333333333333333333333333,""DamageCoefficient"":1.4110056988323141857677000476,""SurvivalRate"":24.747474747474747474747474747},{""TankId"":55297,""BattleLifeTimeInSeconds"":7997,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.1156084656084656084656084656,""Name"":""SU-122-44"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":7,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/SU122_44.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/SU122_44.png"",""LastBattleTime"":""2021-06-20T15:59:13+02:00"",""Battles"":63,""CapturePoints"":5,""DamageDealt"":72077,""DamageReceived"":55188,""DroppedCapturePoints"":0,""Frags"":54,""Frags8P"":10,""Hits"":244,""Losses"":33,""MaxFrags"":4,""MaxXp"":1483,""Shots"":305,""Spotted"":49,""SurvivedBattles"":14,""WinAndSurvived"":14,""Wins"":30,""Xp"":34755,""Wn7"":1048.2805686224062,""WinRate"":47.619047619047619047619047619,""AvgDamage"":1144.0793650793650793650793651,""AvgXp"":551.66666666666666666666666667,""DamageCoefficient"":1.306026672465028629412191056,""SurvivalRate"":22.222222222222222222222222222},{""TankId"":64001,""BattleLifeTimeInSeconds"":7409,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.9916666666666666666666666667,""Name"":""T-34-85 Rudy"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-34-85_Rudy.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-34-85_Rudy.png"",""LastBattleTime"":""2021-06-20T15:55:54+02:00"",""Battles"":62,""CapturePoints"":0,""DamageDealt"":65766,""DamageReceived"":65916,""DroppedCapturePoints"":0,""Frags"":38,""Frags8P"":7,""Hits"":402,""Losses"":25,""MaxFrags"":3,""MaxXp"":1423,""Shots"":476,""Spotted"":125,""SurvivedBattles"":13,""WinAndSurvived"":13,""Wins"":36,""Xp"":42490,""Wn7"":1201.4387515111002,""WinRate"":58.064516129032258064516129032,""AvgDamage"":1060.7419354838709677419354839,""AvgXp"":685.32258064516129032258064516,""DamageCoefficient"":0.9977243764791552885490624431,""SurvivalRate"":20.967741935483870967741935484},{""TankId"":62993,""BattleLifeTimeInSeconds"":71894,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.8665869218500797448165869219,""Name"":""VK 45.03"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":7,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G118_VK4503.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G118_VK4503.png"",""LastBattleTime"":""2021-06-20T15:52:55+02:00"",""Battles"":418,""CapturePoints"":237,""DamageDealt"":612287,""DamageReceived"":483394,""DroppedCapturePoints"":139,""Frags"":473,""Frags8P"":83,""Hits"":3430,""Losses"":164,""MaxFrags"":6,""MaxXp"":1978,""Shots"":4040,""Spotted"":517,""SurvivedBattles"":186,""WinAndSurvived"":183,""Wins"":252,""Xp"":313189,""Wn7"":1592.2428710690733,""WinRate"":60.28708133971291866028708134,""AvgDamage"":1464.8014354066985645933014354,""AvgXp"":749.25598086124401913875598086,""DamageCoefficient"":1.2666417042826348692784767705,""SurvivalRate"":44.497607655502392344497607656},{""TankId"":58881,""BattleLifeTimeInSeconds"":67070,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.7397875816993464052287581699,""Name"":""IS-5 (Object 730)"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/R113_Object_730.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/R113_Object_730.png"",""LastBattleTime"":""2021-06-20T15:50:06+02:00"",""Battles"":408,""CapturePoints"":55,""DamageDealt"":593421,""DamageReceived"":531977,""DroppedCapturePoints"":79,""Frags"":319,""Frags8P"":240,""Hits"":1961,""Losses"":174,""MaxFrags"":6,""MaxXp"":1695,""Shots"":2251,""Spotted"":571,""SurvivedBattles"":135,""WinAndSurvived"":133,""Wins"":231,""Xp"":286534,""Wn7"":1258.935260509711,""WinRate"":56.617647058823529411764705882,""AvgDamage"":1454.4632352941176470588235294,""AvgXp"":702.28921568627450980392156863,""DamageCoefficient"":1.1155012340759092968305020706,""SurvivalRate"":33.088235294117647058823529412},{""TankId"":15905,""BattleLifeTimeInSeconds"":21527,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.3918888888888888888888888889,""Name"":""M60"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":10,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M60.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M60.png"",""LastBattleTime"":""2021-06-20T15:48:27+02:00"",""Battles"":150,""CapturePoints"":0,""DamageDealt"":243938,""DamageReceived"":250212,""DroppedCapturePoints"":0,""Frags"":78,""Frags8P"":78,""Hits"":908,""Losses"":82,""MaxFrags"":4,""MaxXp"":2010,""Shots"":1054,""Spotted"":306,""SurvivedBattles"":40,""WinAndSurvived"":40,""Wins"":67,""Xp"":113100,""Wn7"":858.6304070563554,""WinRate"":44.666666666666666666666666667,""AvgDamage"":1626.2533333333333333333333333,""AvgXp"":754,""DamageCoefficient"":0.9749252633766565952072642399,""SurvivalRate"":26.666666666666666666666666667},{""TankId"":12049,""BattleLifeTimeInSeconds"":35629,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.0767702936096718480138169257,""Name"":""Jagdpanzer E 100"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":10,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdPz_E100.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdPz_E100.png"",""LastBattleTime"":""2021-06-13T17:40:19+02:00"",""Battles"":193,""CapturePoints"":28,""DamageDealt"":378913,""DamageReceived"":310718,""DroppedCapturePoints"":8,""Frags"":155,""Frags8P"":155,""Hits"":587,""Losses"":83,""MaxFrags"":4,""MaxXp"":1930,""Shots"":703,""Spotted"":121,""SurvivedBattles"":69,""WinAndSurvived"":68,""Wins"":109,""Xp"":146460,""Wn7"":1080.8610938349705,""WinRate"":56.47668393782383419689119171,""AvgDamage"":1963.2797927461139896373056995,""AvgXp"":758.86010362694300518134715026,""DamageCoefficient"":1.2194755373039218841521894451,""SurvivalRate"":35.751295336787564766839378238},{""TankId"":16641,""BattleLifeTimeInSeconds"":3091,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.6618279569892473118279569892,""Name"":""MT-25"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":6,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/MT25.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/MT25.png"",""LastBattleTime"":""2021-05-27T20:34:55+02:00"",""Battles"":31,""CapturePoints"":0,""DamageDealt"":20781,""DamageReceived"":27147,""DroppedCapturePoints"":0,""Frags"":10,""Frags8P"":0,""Hits"":273,""Losses"":18,""MaxFrags"":2,""MaxXp"":1089,""Shots"":300,""Spotted"":68,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":12,""Xp"":26742,""Wn7"":697.9793219849313,""WinRate"":38.709677419354838709677419355,""AvgDamage"":670.35483870967741935483870968,""AvgXp"":862.6451612903225806451612903,""DamageCoefficient"":0.7654989501602387004088849597,""SurvivalRate"":6.4516129032258064516129032258},{""TankId"":8465,""BattleLifeTimeInSeconds"":15792,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.2689655172413793103448275862,""Name"":""Panther II"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":8,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Panther_II.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Panther_II.png"",""LastBattleTime"":""2021-05-26T17:26:16+02:00"",""Battles"":116,""CapturePoints"":0,""DamageDealt"":155852,""DamageReceived"":159555,""DroppedCapturePoints"":42,""Frags"":76,""Frags8P"":60,""Hits"":809,""Losses"":56,""MaxFrags"":3,""MaxXp"":1729,""Shots"":930,""Spotted"":206,""SurvivedBattles"":30,""WinAndSurvived"":30,""Wins"":60,""Xp"":86005,""Wn7"":1153.0786862521031,""WinRate"":51.724137931034482758620689655,""AvgDamage"":1343.5517241379310344827586207,""AvgXp"":741.42241379310344827586206897,""DamageCoefficient"":0.9767917019209676913916831187,""SurvivalRate"":25.862068965517241379310344828},{""TankId"":52561,""BattleLifeTimeInSeconds"":5754,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6638888888888888888888888889,""Name"":""Tortoise"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":9,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB32_Tortoise.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB32_Tortoise.png"",""LastBattleTime"":""2021-05-25T10:01:19+02:00"",""Battles"":36,""CapturePoints"":0,""DamageDealt"":54417,""DamageReceived"":54247,""DroppedCapturePoints"":0,""Frags"":31,""Frags8P"":31,""Hits"":182,""Losses"":12,""MaxFrags"":5,""MaxXp"":2259,""Shots"":219,""Spotted"":30,""SurvivedBattles"":13,""WinAndSurvived"":13,""Wins"":23,""Xp"":42275,""Wn7"":1179.9439087988221,""WinRate"":63.888888888888888888888888889,""AvgDamage"":1511.5833333333333333333333333,""AvgXp"":1174.3055555555555555555555556,""DamageCoefficient"":1.0031338138514572234409276089,""SurvivalRate"":36.111111111111111111111111111},{""TankId"":10785,""BattleLifeTimeInSeconds"":12789,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":3.33046875,""Name"":""T110E5"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":10,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T110.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T110.png"",""LastBattleTime"":""2021-05-23T12:39:04+02:00"",""Battles"":64,""CapturePoints"":0,""DamageDealt"":119955,""DamageReceived"":110808,""DroppedCapturePoints"":0,""Frags"":42,""Frags8P"":42,""Hits"":370,""Losses"":27,""MaxFrags"":4,""MaxXp"":2142,""Shots"":422,""Spotted"":78,""SurvivedBattles"":25,""WinAndSurvived"":25,""Wins"":37,""Xp"":56040,""Wn7"":1076.2119050249664,""WinRate"":57.8125,""AvgDamage"":1874.296875,""AvgXp"":875.625,""DamageCoefficient"":1.0825481914663201212908815248,""SurvivalRate"":39.0625},{""TankId"":16897,""BattleLifeTimeInSeconds"":9799,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.9163690476190476190476190476,""Name"":""Object 140"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":10,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Object_140.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Object_140.png"",""LastBattleTime"":""2021-05-23T12:30:44+02:00"",""Battles"":56,""CapturePoints"":0,""DamageDealt"":105480,""DamageReceived"":97245,""DroppedCapturePoints"":80,""Frags"":39,""Frags8P"":39,""Hits"":405,""Losses"":21,""MaxFrags"":4,""MaxXp"":2284,""Shots"":451,""Spotted"":106,""SurvivedBattles"":15,""WinAndSurvived"":15,""Wins"":35,""Xp"":48780,""Wn7"":1367.4155459348212,""WinRate"":62.5,""AvgDamage"":1883.5714285714285714285714286,""AvgXp"":871.0714285714285714285714286,""DamageCoefficient"":1.0846830171217029153169828783,""SurvivalRate"":26.785714285714285714285714286},{""TankId"":6145,""BattleLifeTimeInSeconds"":16628,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.5991341991341991341991341991,""Name"":""IS-4"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":10,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/IS-4.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/IS-4.png"",""LastBattleTime"":""2021-05-23T12:21:14+02:00"",""Battles"":77,""CapturePoints"":0,""DamageDealt"":153706,""DamageReceived"":154533,""DroppedCapturePoints"":46,""Frags"":65,""Frags8P"":65,""Hits"":461,""Losses"":37,""MaxFrags"":4,""MaxXp"":1942,""Shots"":517,""Spotted"":109,""SurvivedBattles"":23,""WinAndSurvived"":23,""Wins"":40,""Xp"":62968,""Wn7"":1198.9618686358924,""WinRate"":51.948051948051948051948051948,""AvgDamage"":1996.1818181818181818181818182,""AvgXp"":817.7662337662337662337662338,""DamageCoefficient"":0.9946483922527874305164592676,""SurvivalRate"":29.87012987012987012987012987},{""TankId"":9489,""BattleLifeTimeInSeconds"":1690,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.8166666666666666666666666667,""Name"":""E 100"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":10,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E-100.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E-100.png"",""LastBattleTime"":""2021-05-23T11:59:35+02:00"",""Battles"":10,""CapturePoints"":3,""DamageDealt"":23643,""DamageReceived"":21165,""DroppedCapturePoints"":14,""Frags"":10,""Frags8P"":10,""Hits"":46,""Losses"":2,""MaxFrags"":3,""MaxXp"":1698,""Shots"":54,""Spotted"":10,""SurvivedBattles"":5,""WinAndSurvived"":5,""Wins"":8,""Xp"":9130,""Wn7"":1568.2639698715168,""WinRate"":80,""AvgDamage"":2364.3,""AvgXp"":913,""DamageCoefficient"":1.1170800850460666194188518781,""SurvivalRate"":50},{""TankId"":14881,""BattleLifeTimeInSeconds"":5368,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.418018018018018018018018018,""Name"":""T57 Heavy Tank"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":10,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T57_58.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T57_58.png"",""LastBattleTime"":""2021-05-23T11:47:44+02:00"",""Battles"":37,""CapturePoints"":0,""DamageDealt"":61492,""DamageReceived"":71287,""DroppedCapturePoints"":0,""Frags"":20,""Frags8P"":20,""Hits"":186,""Losses"":16,""MaxFrags"":3,""MaxXp"":1609,""Shots"":203,""Spotted"":39,""SurvivedBattles"":11,""WinAndSurvived"":11,""Wins"":21,""Xp"":28499,""Wn7"":937.4675043580017,""WinRate"":56.756756756756756756756756757,""AvgDamage"":1661.9459459459459459459459459,""AvgXp"":770.24324324324324324324324324,""DamageCoefficient"":0.8625976685791238234180145047,""SurvivalRate"":29.72972972972972972972972973},{""TankId"":5169,""BattleLifeTimeInSeconds"":581,""MarkOfMastery"":0,""AvgBattleLifeTimeInMinutes"":1.6138888888888888888888888889,""Name"":""Type 58"",""TankNationId"":""china"",""TankNation"":""China"",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch20_Type58.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch20_Type58.png"",""LastBattleTime"":""2020-11-19T09:02:34+01:00"",""Battles"":6,""CapturePoints"":0,""DamageDealt"":3339,""DamageReceived"":6234,""DroppedCapturePoints"":57,""Frags"":1,""Frags8P"":0,""Hits"":26,""Losses"":5,""MaxFrags"":1,""MaxXp"":672,""Shots"":30,""Spotted"":17,""SurvivedBattles"":0,""WinAndSurvived"":0,""Wins"":1,""Xp"":3212,""Wn7"":758.9942434149425,""WinRate"":16.666666666666666666666666667,""AvgDamage"":556.5,""AvgXp"":535.33333333333333333333333333,""DamageCoefficient"":0.5356111645813282001924927815,""SurvivalRate"":0},{""TankId"":3681,""BattleLifeTimeInSeconds"":4873,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.195045045045045045045045045,""Name"":""STB-1"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":10,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/ST_B1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/ST_B1.png"",""LastBattleTime"":""2020-11-02T08:00:11+01:00"",""Battles"":37,""CapturePoints"":22,""DamageDealt"":60763,""DamageReceived"":67596,""DroppedCapturePoints"":0,""Frags"":24,""Frags8P"":24,""Hits"":216,""Losses"":17,""MaxFrags"":3,""MaxXp"":1855,""Shots"":246,""Spotted"":88,""SurvivedBattles"":9,""WinAndSurvived"":9,""Wins"":20,""Xp"":24262,""Wn7"":1112.9851722028402,""WinRate"":54.054054054054054054054054054,""AvgDamage"":1642.2432432432432432432432432,""AvgXp"":655.72972972972972972972972973,""DamageCoefficient"":0.8989141369311793597254275401,""SurvivalRate"":24.324324324324324324324324324},{""TankId"":3649,""BattleLifeTimeInSeconds"":14418,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1845454545454545454545454545,""Name"":""Bat.-Ch\u00E2tillon 25 t"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":10,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Bat_Chatillon25t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Bat_Chatillon25t.png"",""LastBattleTime"":""2020-11-01T20:47:58+01:00"",""Battles"":110,""CapturePoints"":0,""DamageDealt"":159021,""DamageReceived"":192322,""DroppedCapturePoints"":8,""Frags"":65,""Frags8P"":65,""Hits"":628,""Losses"":57,""MaxFrags"":5,""MaxXp"":2194,""Shots"":715,""Spotted"":234,""SurvivedBattles"":25,""WinAndSurvived"":24,""Wins"":53,""Xp"":75751,""Wn7"":922.0054321617267,""WinRate"":48.181818181818181818181818182,""AvgDamage"":1445.6454545454545454545454545,""AvgXp"":688.64545454545454545454545455,""DamageCoefficient"":0.8268476825324195879826540905,""SurvivalRate"":22.727272727272727272727272727},{""TankId"":18001,""BattleLifeTimeInSeconds"":3177,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.4068181818181818181818181818,""Name"":""FV4005"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":10,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB83_4005.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB83_4005.png"",""LastBattleTime"":""2020-11-01T20:45:26+01:00"",""Battles"":22,""CapturePoints"":0,""DamageDealt"":39553,""DamageReceived"":31759,""DroppedCapturePoints"":0,""Frags"":20,""Frags8P"":20,""Hits"":107,""Losses"":9,""MaxFrags"":3,""MaxXp"":1842,""Shots"":124,""Spotted"":15,""SurvivedBattles"":8,""WinAndSurvived"":7,""Wins"":12,""Xp"":15636,""Wn7"":1067.042711435935,""WinRate"":54.545454545454545454545454545,""AvgDamage"":1797.8636363636363636363636364,""AvgXp"":710.72727272727272727272727273,""DamageCoefficient"":1.245410749708743978084952297,""SurvivalRate"":36.363636363636363636363636364},{""TankId"":13825,""BattleLifeTimeInSeconds"":4146,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.764,""Name"":""T-62A"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":10,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T62A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T62A.png"",""LastBattleTime"":""2020-11-01T20:36:43+01:00"",""Battles"":25,""CapturePoints"":0,""DamageDealt"":42908,""DamageReceived"":43418,""DroppedCapturePoints"":0,""Frags"":20,""Frags8P"":20,""Hits"":171,""Losses"":9,""MaxFrags"":5,""MaxXp"":1825,""Shots"":190,""Spotted"":53,""SurvivedBattles"":7,""WinAndSurvived"":7,""Wins"":16,""Xp"":22925,""Wn7"":1270.2540457387897,""WinRate"":64,""AvgDamage"":1716.32,""AvgXp"":917,""DamageCoefficient"":0.988253719655442443226311668,""SurvivalRate"":28},{""TankId"":1857,""BattleLifeTimeInSeconds"":24819,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.2359459459459459459459459459,""Name"":""Bat.-Ch\u00E2tillon 25 t AP"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":9,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/F75_Char_de_25t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/F75_Char_de_25t.png"",""LastBattleTime"":""2020-06-23T13:56:51+02:00"",""Battles"":185,""CapturePoints"":100,""DamageDealt"":276173,""DamageReceived"":291269,""DroppedCapturePoints"":27,""Frags"":116,""Frags8P"":115,""Hits"":1112,""Losses"":98,""MaxFrags"":5,""MaxXp"":2010,""Shots"":1256,""Spotted"":356,""SurvivedBattles"":39,""WinAndSurvived"":38,""Wins"":87,""Xp"":115635,""Wn7"":1005.3754293748211,""WinRate"":47.027027027027027027027027027,""AvgDamage"":1492.827027027027027027027027,""AvgXp"":625.05405405405405405405405405,""DamageCoefficient"":0.948171621422121818662473521,""SurvivalRate"":21.081081081081081081081081081},{""TankId"":10497,""BattleLifeTimeInSeconds"":9569,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.4919270833333333333333333333,""Name"":""KV-2"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":6,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/KV2.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/KV2.png"",""LastBattleTime"":""2020-05-15T17:10:55+02:00"",""Battles"":64,""CapturePoints"":36,""DamageDealt"":61183,""DamageReceived"":49295,""DroppedCapturePoints"":85,""Frags"":56,""Frags8P"":0,""Hits"":143,""Losses"":32,""MaxFrags"":6,""MaxXp"":1785,""Shots"":188,""Spotted"":65,""SurvivedBattles"":21,""WinAndSurvived"":21,""Wins"":32,""Xp"":32347,""Wn7"":1274.1854297690063,""WinRate"":50,""AvgDamage"":955.984375,""AvgXp"":505.421875,""DamageCoefficient"":1.2411603610913885789633837103,""SurvivalRate"":32.8125},{""TankId"":15393,""BattleLifeTimeInSeconds"":16173,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.24625,""Name"":""T54E1"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":9,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T54E1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T54E1.png"",""LastBattleTime"":""2020-05-15T11:00:18+02:00"",""Battles"":120,""CapturePoints"":0,""DamageDealt"":202507,""DamageReceived"":186615,""DroppedCapturePoints"":136,""Frags"":92,""Frags8P"":92,""Hits"":791,""Losses"":60,""MaxFrags"":5,""MaxXp"":2031,""Shots"":895,""Spotted"":186,""SurvivedBattles"":31,""WinAndSurvived"":31,""Wins"":59,""Xp"":104250,""Wn7"":1217.0795630888801,""WinRate"":49.166666666666666666666666667,""AvgDamage"":1687.5583333333333333333333333,""AvgXp"":868.75,""DamageCoefficient"":1.0851592851592851592851592852,""SurvivalRate"":25.833333333333333333333333333},{""TankId"":9745,""BattleLifeTimeInSeconds"":24395,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.6063034188034188034188034188,""Name"":""E 75"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":9,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/E-75.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/E-75.png"",""LastBattleTime"":""2020-05-04T21:31:43+02:00"",""Battles"":156,""CapturePoints"":0,""DamageDealt"":235769,""DamageReceived"":255330,""DroppedCapturePoints"":7,""Frags"":104,""Frags8P"":104,""Hits"":661,""Losses"":74,""MaxFrags"":4,""MaxXp"":1711,""Shots"":775,""Spotted"":189,""SurvivedBattles"":49,""WinAndSurvived"":47,""Wins"":81,""Xp"":112192,""Wn7"":1009.3457985148023,""WinRate"":51.923076923076923076923076923,""AvgDamage"":1511.3397435897435897435897436,""AvgXp"":719.17948717948717948717948718,""DamageCoefficient"":0.9233893392864136607527513414,""SurvivalRate"":31.41025641025641025641025641},{""TankId"":64257,""BattleLifeTimeInSeconds"":31446,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.2886462882096069868995633188,""Name"":""T-34-85 Victory"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-34-85_Victory.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-34-85_Victory.png"",""LastBattleTime"":""2020-05-02T16:15:32+02:00"",""Battles"":229,""CapturePoints"":9,""DamageDealt"":249361,""DamageReceived"":191239,""DroppedCapturePoints"":117,""Frags"":213,""Frags8P"":0,""Hits"":1618,""Losses"":97,""MaxFrags"":5,""MaxXp"":1834,""Shots"":1870,""Spotted"":403,""SurvivedBattles"":75,""WinAndSurvived"":75,""Wins"":131,""Xp"":144277,""Wn7"":1491.62450402143,""WinRate"":57.205240174672489082969432314,""AvgDamage"":1088.9126637554585152838427948,""AvgXp"":630.03056768558951965065502183,""DamageCoefficient"":1.3039233629123766595725767234,""SurvivalRate"":32.751091703056768558951965066},{""TankId"":3425,""BattleLifeTimeInSeconds"":26965,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1606570512820512820512820513,""Name"":""Type 61"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":9,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Type_61.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Type_61.png"",""LastBattleTime"":""2020-05-01T16:48:17+02:00"",""Battles"":208,""CapturePoints"":6,""DamageDealt"":351351,""DamageReceived"":326043,""DroppedCapturePoints"":10,""Frags"":161,""Frags8P"":161,""Hits"":1260,""Losses"":91,""MaxFrags"":4,""MaxXp"":2626,""Shots"":1409,""Spotted"":464,""SurvivedBattles"":46,""WinAndSurvived"":46,""Wins"":114,""Xp"":192102,""Wn7"":1283.6383001846264,""WinRate"":54.807692307692307692307692308,""AvgDamage"":1689.1875,""AvgXp"":923.5673076923076923076923077,""DamageCoefficient"":1.0776216634002263505120490242,""SurvivalRate"":22.115384615384615384615384615},{""TankId"":17233,""BattleLifeTimeInSeconds"":24858,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6388535031847133757961783439,""Name"":""FV4004 Conway"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":9,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB81_FV4004.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB81_FV4004.png"",""LastBattleTime"":""2020-04-22T21:10:52+02:00"",""Battles"":157,""CapturePoints"":0,""DamageDealt"":330642,""DamageReceived"":253347,""DroppedCapturePoints"":94,""Frags"":170,""Frags8P"":170,""Hits"":691,""Losses"":61,""MaxFrags"":4,""MaxXp"":1983,""Shots"":809,""Spotted"":137,""SurvivedBattles"":48,""WinAndSurvived"":48,""Wins"":96,""Xp"":161268,""Wn7"":1510.1747229808889,""WinRate"":61.146496815286624203821656051,""AvgDamage"":2106,""AvgXp"":1027.1847133757961783439490446,""DamageCoefficient"":1.305095383012232234839962581,""SurvivalRate"":30.573248407643312101910828025},{""TankId"":64337,""BattleLifeTimeInSeconds"":2182,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.7317460317460317460317460317,""Name"":""AC IV Sentinel"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB35_Sentinel_AC_IV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB35_Sentinel_AC_IV.png"",""LastBattleTime"":""2020-04-17T09:26:16+02:00"",""Battles"":21,""CapturePoints"":0,""DamageDealt"":19167,""DamageReceived"":18950,""DroppedCapturePoints"":0,""Frags"":13,""Frags8P"":0,""Hits"":137,""Losses"":8,""MaxFrags"":3,""MaxXp"":1122,""Shots"":154,""Spotted"":39,""SurvivedBattles"":3,""WinAndSurvived"":3,""Wins"":13,""Xp"":12957,""Wn7"":1250.6438069206604,""WinRate"":61.904761904761904761904761905,""AvgDamage"":912.7142857142857142857142857,""AvgXp"":617,""DamageCoefficient"":1.0114511873350923482849604222,""SurvivalRate"":14.285714285714285714285714286},{""TankId"":7953,""BattleLifeTimeInSeconds"":17011,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":11.340666666666666666666666667,""Name"":""Jagdtiger"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":9,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/JagdTiger.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/JagdTiger.png"",""LastBattleTime"":""2020-04-16T09:26:40+02:00"",""Battles"":25,""CapturePoints"":0,""DamageDealt"":41598,""DamageReceived"":36659,""DroppedCapturePoints"":5,""Frags"":30,""Frags8P"":30,""Hits"":127,""Losses"":10,""MaxFrags"":5,""MaxXp"":1861,""Shots"":155,""Spotted"":9,""SurvivedBattles"":11,""WinAndSurvived"":11,""Wins"":15,""Xp"":20433,""Wn7"":1314.7730049681973,""WinRate"":60,""AvgDamage"":1663.92,""AvgXp"":817.32,""DamageCoefficient"":1.1347281704356365421860934559,""SurvivalRate"":44},{""TankId"":18209,""BattleLifeTimeInSeconds"":17681,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.1048809523809523809523809524,""Name"":""T49"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":8,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/A100_T49.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/A100_T49.png"",""LastBattleTime"":""2020-03-26T11:16:59+01:00"",""Battles"":140,""CapturePoints"":18,""DamageDealt"":153487,""DamageReceived"":160164,""DroppedCapturePoints"":0,""Frags"":86,""Frags8P"":65,""Hits"":364,""Losses"":71,""MaxFrags"":4,""MaxXp"":1552,""Shots"":429,""Spotted"":244,""SurvivedBattles"":28,""WinAndSurvived"":28,""Wins"":68,""Xp"":81704,""Wn7"":948.4522121955272,""WinRate"":48.571428571428571428571428571,""AvgDamage"":1096.3357142857142857142857143,""AvgXp"":583.6,""DamageCoefficient"":0.9583114807322494443195724383,""SurvivalRate"":20},{""TankId"":10753,""BattleLifeTimeInSeconds"":49195,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.0033577533577533577533577534,""Name"":""ST-I"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":9,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/ST_I.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/ST_I.png"",""LastBattleTime"":""2020-03-25T09:51:54+01:00"",""Battles"":273,""CapturePoints"":38,""DamageDealt"":441378,""DamageReceived"":410558,""DroppedCapturePoints"":118,""Frags"":194,""Frags8P"":194,""Hits"":1393,""Losses"":124,""MaxFrags"":4,""MaxXp"":1887,""Shots"":1608,""Spotted"":262,""SurvivedBattles"":105,""WinAndSurvived"":104,""Wins"":148,""Xp"":185110,""Wn7"":1103.2339298114691,""WinRate"":54.212454212454212454212454212,""AvgDamage"":1616.7692307692307692307692308,""AvgXp"":678.05860805860805860805860806,""DamageCoefficient"":1.0750685652209919183160479153,""SurvivalRate"":38.461538461538461538461538462},{""TankId"":6001,""BattleLifeTimeInSeconds"":2036,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.1208333333333333333333333333,""Name"":""Y5 ELC bis"",""TankNationId"":""other"",""TankNation"":""Hybrid nation"",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Oth19_BDT-5C.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Oth19_BDT-5C.png"",""LastBattleTime"":""2020-03-23T18:14:11+01:00"",""Battles"":16,""CapturePoints"":0,""DamageDealt"":14768,""DamageReceived"":16934,""DroppedCapturePoints"":0,""Frags"":16,""Frags8P"":6,""Hits"":119,""Losses"":7,""MaxFrags"":4,""MaxXp"":1326,""Shots"":141,""Spotted"":33,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":9,""Xp"":10404,""Wn7"":1300.6036193639854,""WinRate"":56.25,""AvgDamage"":923,""AvgXp"":650.25,""DamageCoefficient"":0.8720916499350419274831699539,""SurvivalRate"":25},{""TankId"":5745,""BattleLifeTimeInSeconds"":406,""MarkOfMastery"":1,""AvgBattleLifeTimeInMinutes"":1.6916666666666666666666666667,""Name"":""Y5 Firefly"",""TankNationId"":""other"",""TankNation"":""Hybrid nation"",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Oth18_BDT-5B.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Oth18_BDT-5B.png"",""LastBattleTime"":""2020-03-21T20:02:45+01:00"",""Battles"":4,""CapturePoints"":0,""DamageDealt"":3175,""DamageReceived"":3224,""DroppedCapturePoints"":0,""Frags"":0,""Frags8P"":0,""Hits"":21,""Losses"":1,""MaxFrags"":0,""MaxXp"":1006,""Shots"":27,""Spotted"":2,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":3,""Xp"":2348,""Wn7"":778.0523004594405,""WinRate"":75,""AvgDamage"":793.75,""AvgXp"":587,""DamageCoefficient"":0.9848014888337468982630272953,""SurvivalRate"":25},{""TankId"":9505,""BattleLifeTimeInSeconds"":32694,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.0612359550561797752808988764,""Name"":""M103"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":9,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M103.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M103.png"",""LastBattleTime"":""2020-03-05T19:08:21+01:00"",""Battles"":178,""CapturePoints"":0,""DamageDealt"":261294,""DamageReceived"":281420,""DroppedCapturePoints"":58,""Frags"":128,""Frags8P"":128,""Hits"":878,""Losses"":89,""MaxFrags"":4,""MaxXp"":1825,""Shots"":1022,""Spotted"":204,""SurvivedBattles"":46,""WinAndSurvived"":45,""Wins"":89,""Xp"":131958,""Wn7"":1009.8287456459881,""WinRate"":50,""AvgDamage"":1467.9438202247191011235955056,""AvgXp"":741.33707865168539325842696629,""DamageCoefficient"":0.9284841162675005330111577002,""SurvivalRate"":25.84269662921348314606741573},{""TankId"":7937,""BattleLifeTimeInSeconds"":42168,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.109734513274336283185840708,""Name"":""T-54"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":9,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-54.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-54.png"",""LastBattleTime"":""2020-02-12T13:56:46+01:00"",""Battles"":226,""CapturePoints"":13,""DamageDealt"":329867,""DamageReceived"":343068,""DroppedCapturePoints"":194,""Frags"":157,""Frags8P"":157,""Hits"":1421,""Losses"":106,""MaxFrags"":5,""MaxXp"":1882,""Shots"":1631,""Spotted"":462,""SurvivedBattles"":56,""WinAndSurvived"":55,""Wins"":120,""Xp"":164003,""Wn7"":1209.6688133094535,""WinRate"":53.09734513274336283185840708,""AvgDamage"":1459.5884955752212389380530973,""AvgXp"":725.67699115044247787610619469,""DamageCoefficient"":0.9615207480732682733452260193,""SurvivalRate"":24.778761061946902654867256637},{""TankId"":8961,""BattleLifeTimeInSeconds"":19859,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6692204301075268817204301075,""Name"":""KV-13"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/KV-13.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/KV-13.png"",""LastBattleTime"":""2020-02-12T05:21:25+01:00"",""Battles"":124,""CapturePoints"":0,""DamageDealt"":151799,""DamageReceived"":118789,""DroppedCapturePoints"":70,""Frags"":131,""Frags8P"":19,""Hits"":1019,""Losses"":52,""MaxFrags"":5,""MaxXp"":1471,""Shots"":1156,""Spotted"":225,""SurvivedBattles"":51,""WinAndSurvived"":51,""Wins"":72,""Xp"":81277,""Wn7"":1516.3811912752203,""WinRate"":58.064516129032258064516129032,""AvgDamage"":1224.185483870967741935483871,""AvgXp"":655.45967741935483870967741935,""DamageCoefficient"":1.277887683202990175858033993,""SurvivalRate"":41.129032258064516129032258065},{""TankId"":2689,""BattleLifeTimeInSeconds"":174,""MarkOfMastery"":1,""AvgBattleLifeTimeInMinutes"":2.9,""Name"":""Vickers Mk. F"",""TankNationId"":""european"",""TankNation"":""European Nation"",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/F01_Vickers_MkF.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/F01_Vickers_MkF.png"",""LastBattleTime"":""2019-10-09T16:22:10+02:00"",""Battles"":1,""CapturePoints"":40,""DamageDealt"":280,""DamageReceived"":219,""DroppedCapturePoints"":43,""Frags"":1,""Frags8P"":0,""Hits"":8,""Losses"":0,""MaxFrags"":1,""MaxXp"":314,""Shots"":10,""Spotted"":1,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":314,""Wn7"":1042.4784518494214,""WinRate"":100,""AvgDamage"":280,""AvgXp"":314,""DamageCoefficient"":1.2785388127853881278538812785,""SurvivalRate"":100},{""TankId"":9793,""BattleLifeTimeInSeconds"":1722,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.6090909090909090909090909091,""Name"":""Somua SAu 40"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":4,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Somua_Sau_40.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Somua_Sau_40.png"",""LastBattleTime"":""2019-09-14T20:11:59+02:00"",""Battles"":11,""CapturePoints"":0,""DamageDealt"":5852,""DamageReceived"":3855,""DroppedCapturePoints"":0,""Frags"":8,""Frags8P"":0,""Hits"":56,""Losses"":4,""MaxFrags"":2,""MaxXp"":724,""Shots"":63,""Spotted"":3,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":7,""Xp"":4749,""Wn7"":1004.3658941438154,""WinRate"":63.636363636363636363636363636,""AvgDamage"":532,""AvgXp"":431.72727272727272727272727273,""DamageCoefficient"":1.518028534370946822308690013,""SurvivalRate"":36.363636363636363636363636364},{""TankId"":1297,""BattleLifeTimeInSeconds"":6041,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.0975694444444444444444444444,""Name"":""Panther I"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzV.png"",""LastBattleTime"":""2019-08-28T08:45:22+02:00"",""Battles"":48,""CapturePoints"":0,""DamageDealt"":57231,""DamageReceived"":59226,""DroppedCapturePoints"":0,""Frags"":34,""Frags8P"":5,""Hits"":391,""Losses"":19,""MaxFrags"":4,""MaxXp"":1579,""Shots"":460,""Spotted"":103,""SurvivedBattles"":11,""WinAndSurvived"":11,""Wins"":29,""Xp"":38516,""Wn7"":1347.7977548360338,""WinRate"":60.416666666666666666666666667,""AvgDamage"":1192.3125,""AvgXp"":802.4166666666666666666666667,""DamageCoefficient"":0.9663154695572890284672272313,""SurvivalRate"":22.916666666666666666666666667},{""TankId"":11297,""BattleLifeTimeInSeconds"":26375,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":6.3707729468599033816425120773,""Name"":""T28 Prototype"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":8,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T28_Prototype.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T28_Prototype.png"",""LastBattleTime"":""2019-07-31T17:56:26+02:00"",""Battles"":69,""CapturePoints"":63,""DamageDealt"":92001,""DamageReceived"":65342,""DroppedCapturePoints"":0,""Frags"":68,""Frags8P"":54,""Hits"":307,""Losses"":30,""MaxFrags"":5,""MaxXp"":1965,""Shots"":376,""Spotted"":41,""SurvivedBattles"":26,""WinAndSurvived"":26,""Wins"":39,""Xp"":54984,""Wn7"":1186.048238016261,""WinRate"":56.521739130434782608695652174,""AvgDamage"":1333.3478260869565217391304348,""AvgXp"":796.869565217391304347826087,""DamageCoefficient"":1.4079917970065195433258853417,""SurvivalRate"":37.681159420289855072463768116},{""TankId"":17489,""BattleLifeTimeInSeconds"":9938,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":5.7114942528735632183908045977,""Name"":""Charioteer"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":8,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB80_Charioteer.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB80_Charioteer.png"",""LastBattleTime"":""2019-07-24T13:49:40+02:00"",""Battles"":29,""CapturePoints"":0,""DamageDealt"":44220,""DamageReceived"":28569,""DroppedCapturePoints"":0,""Frags"":22,""Frags8P"":14,""Hits"":137,""Losses"":11,""MaxFrags"":4,""MaxXp"":1969,""Shots"":156,""Spotted"":28,""SurvivedBattles"":9,""WinAndSurvived"":9,""Wins"":18,""Xp"":26073,""Wn7"":1255.248473475162,""WinRate"":62.068965517241379310344827586,""AvgDamage"":1524.827586206896551724137931,""AvgXp"":899.0689655172413793103448276,""DamageCoefficient"":1.5478315656830830620602751234,""SurvivalRate"":31.034482758620689655172413793},{""TankId"":18257,""BattleLifeTimeInSeconds"":15572,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":1.9811704834605597964376590331,""Name"":""Challenger"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":7,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB41_Challenger.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB41_Challenger.png"",""LastBattleTime"":""2019-06-20T22:01:23+02:00"",""Battles"":131,""CapturePoints"":0,""DamageDealt"":131008,""DamageReceived"":129964,""DroppedCapturePoints"":108,""Frags"":75,""Frags8P"":22,""Hits"":629,""Losses"":77,""MaxFrags"":4,""MaxXp"":1602,""Shots"":786,""Spotted"":150,""SurvivedBattles"":22,""WinAndSurvived"":22,""Wins"":54,""Xp"":73151,""Wn7"":878.806856116294,""WinRate"":41.221374045801526717557251908,""AvgDamage"":1000.0610687022900763358778626,""AvgXp"":558.40458015267175572519083969,""DamageCoefficient"":1.0080329937521159705764673294,""SurvivalRate"":16.79389312977099236641221374},{""TankId"":593,""BattleLifeTimeInSeconds"":17380,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":1.8932461873638344226579520697,""Name"":""Sherman Firefly"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB19_Sherman_Firefly.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB19_Sherman_Firefly.png"",""LastBattleTime"":""2019-06-20T13:44:57+02:00"",""Battles"":153,""CapturePoints"":19,""DamageDealt"":132586,""DamageReceived"":132455,""DroppedCapturePoints"":0,""Frags"":85,""Frags8P"":0,""Hits"":968,""Losses"":70,""MaxFrags"":4,""MaxXp"":1422,""Shots"":1118,""Spotted"":273,""SurvivedBattles"":33,""WinAndSurvived"":33,""Wins"":83,""Xp"":88340,""Wn7"":1101.5063354553454,""WinRate"":54.248366013071895424836601307,""AvgDamage"":866.5751633986928104575163399,""AvgXp"":577.3856209150326797385620915,""DamageCoefficient"":1.0009890151372164131214374693,""SurvivalRate"":21.568627450980392156862745098},{""TankId"":5489,""BattleLifeTimeInSeconds"":87,""MarkOfMastery"":0,""AvgBattleLifeTimeInMinutes"":1.45,""Name"":""Y5 T-34"",""TankNationId"":""other"",""TankNation"":""Hybrid nation"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Oth17_BDT-5A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Oth17_BDT-5A.png"",""LastBattleTime"":""2019-06-19T13:57:05+02:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":681,""DamageReceived"":700,""DroppedCapturePoints"":0,""Frags"":1,""Frags8P"":0,""Hits"":5,""Losses"":0,""MaxFrags"":1,""MaxXp"":567,""Shots"":5,""Spotted"":1,""SurvivedBattles"":0,""WinAndSurvived"":0,""Wins"":1,""Xp"":567,""Wn7"":1317.6468539993684,""WinRate"":100,""AvgDamage"":681,""AvgXp"":567,""DamageCoefficient"":0.9728571428571428571428571429,""SurvivalRate"":0},{""TankId"":4881,""BattleLifeTimeInSeconds"":1807,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.0077777777777777777777777778,""Name"":""Pz.Kpfw. III Ausf. A"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":3,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIII_A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIII_A.png"",""LastBattleTime"":""2019-06-19T10:02:14+02:00"",""Battles"":15,""CapturePoints"":0,""DamageDealt"":7302,""DamageReceived"":5335,""DroppedCapturePoints"":0,""Frags"":12,""Frags8P"":0,""Hits"":125,""Losses"":7,""MaxFrags"":4,""MaxXp"":957,""Shots"":143,""Spotted"":28,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":8,""Xp"":6399,""Wn7"":1135.8867033920535,""WinRate"":53.333333333333333333333333333,""AvgDamage"":486.8,""AvgXp"":426.6,""DamageCoefficient"":1.3686972820993439550140581068,""SurvivalRate"":26.666666666666666666666666667},{""TankId"":2129,""BattleLifeTimeInSeconds"":2406,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":1.8227272727272727272727272727,""Name"":""Crusader"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":5,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB20_Crusader.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB20_Crusader.png"",""LastBattleTime"":""2019-06-01T20:50:36+02:00"",""Battles"":22,""CapturePoints"":0,""DamageDealt"":13747,""DamageReceived"":12602,""DroppedCapturePoints"":26,""Frags"":21,""Frags8P"":0,""Hits"":181,""Losses"":9,""MaxFrags"":4,""MaxXp"":1401,""Shots"":210,""Spotted"":54,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":13,""Xp"":12296,""Wn7"":1465.330462277206,""WinRate"":59.090909090909090909090909091,""AvgDamage"":624.86363636363636363636363636,""AvgXp"":558.90909090909090909090909091,""DamageCoefficient"":1.0908585938739882558324075544,""SurvivalRate"":18.181818181818181818181818182},{""TankId"":849,""BattleLifeTimeInSeconds"":2041,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.0924242424242424242424242424,""Name"":""Matilda"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":4,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB07_Matilda.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB07_Matilda.png"",""LastBattleTime"":""2019-05-31T08:05:24+02:00"",""Battles"":11,""CapturePoints"":0,""DamageDealt"":6551,""DamageReceived"":4313,""DroppedCapturePoints"":88,""Frags"":14,""Frags8P"":0,""Hits"":190,""Losses"":5,""MaxFrags"":3,""MaxXp"":1137,""Shots"":215,""Spotted"":8,""SurvivedBattles"":5,""WinAndSurvived"":5,""Wins"":6,""Xp"":6308,""Wn7"":1468.9673254204247,""WinRate"":54.545454545454545454545454545,""AvgDamage"":595.54545454545454545454545455,""AvgXp"":573.45454545454545454545454545,""DamageCoefficient"":1.5188963598423371203338743334,""SurvivalRate"":45.454545454545454545454545455},{""TankId"":7505,""BattleLifeTimeInSeconds"":541,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":3.0055555555555555555555555556,""Name"":""Cruiser Mk. IV"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":3,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB59_Cruiser_Mk_IV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB59_Cruiser_Mk_IV.png"",""LastBattleTime"":""2019-05-30T19:15:42+02:00"",""Battles"":3,""CapturePoints"":0,""DamageDealt"":1370,""DamageReceived"":1091,""DroppedCapturePoints"":0,""Frags"":8,""Frags8P"":0,""Hits"":47,""Losses"":1,""MaxFrags"":4,""MaxXp"":813,""Shots"":55,""Spotted"":5,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":2,""Xp"":2095,""Wn7"":1899.1056440852926,""WinRate"":66.666666666666666666666666667,""AvgDamage"":456.66666666666666666666666667,""AvgXp"":698.33333333333333333333333333,""DamageCoefficient"":1.2557286892758936755270394134,""SurvivalRate"":33.333333333333333333333333333},{""TankId"":7761,""BattleLifeTimeInSeconds"":420,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":3.5,""Name"":""Cruiser Mk. III"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":2,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB58_Cruiser_Mk_III.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB58_Cruiser_Mk_III.png"",""LastBattleTime"":""2019-05-30T18:58:53+02:00"",""Battles"":2,""CapturePoints"":0,""DamageDealt"":1034,""DamageReceived"":382,""DroppedCapturePoints"":0,""Frags"":4,""Frags8P"":0,""Hits"":33,""Losses"":1,""MaxFrags"":2,""MaxXp"":711,""Shots"":37,""Spotted"":6,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":1045,""Wn7"":1545.7334054266648,""WinRate"":50,""AvgDamage"":517,""AvgXp"":522.5,""DamageCoefficient"":2.7068062827225130890052356021,""SurvivalRate"":50},{""TankId"":4977,""BattleLifeTimeInSeconds"":2728,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.1650793650793650793650793651,""Name"":""Scavenger"",""TankNationId"":""other"",""TankNation"":""Hybrid nation"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Oth15_RustCrab.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Oth15_RustCrab.png"",""LastBattleTime"":""2019-05-05T17:44:06+02:00"",""Battles"":21,""CapturePoints"":0,""DamageDealt"":14394,""DamageReceived"":13952,""DroppedCapturePoints"":0,""Frags"":15,""Frags8P"":0,""Hits"":117,""Losses"":10,""MaxFrags"":2,""MaxXp"":1062,""Shots"":138,""Spotted"":26,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":11,""Xp"":8852,""Wn7"":1046.6142954932998,""WinRate"":52.380952380952380952380952381,""AvgDamage"":685.42857142857142857142857143,""AvgXp"":421.52380952380952380952380952,""DamageCoefficient"":1.0316800458715596330275229358,""SurvivalRate"":9.523809523809523809523809524},{""TankId"":4929,""BattleLifeTimeInSeconds"":17169,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.1794444444444444444444444444,""Name"":""AMX 13 90"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":8,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX_13_90.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX_13_90.png"",""LastBattleTime"":""2019-03-24T08:48:55+01:00"",""Battles"":90,""CapturePoints"":33,""DamageDealt"":107918,""DamageReceived"":107779,""DroppedCapturePoints"":0,""Frags"":54,""Frags8P"":40,""Hits"":620,""Losses"":47,""MaxFrags"":4,""MaxXp"":1067,""Shots"":714,""Spotted"":183,""SurvivedBattles"":17,""WinAndSurvived"":17,""Wins"":43,""Xp"":45016,""Wn7"":1004.4241650480767,""WinRate"":47.777777777777777777777777778,""AvgDamage"":1199.0888888888888888888888889,""AvgXp"":500.17777777777777777777777778,""DamageCoefficient"":1.0012896760964566381205986324,""SurvivalRate"":18.888888888888888888888888889},{""TankId"":8529,""BattleLifeTimeInSeconds"":23101,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.7113849765258215962441314554,""Name"":""AT 15"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":8,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB72_AT15.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB72_AT15.png"",""LastBattleTime"":""2019-02-28T18:59:50+01:00"",""Battles"":142,""CapturePoints"":188,""DamageDealt"":186184,""DamageReceived"":174106,""DroppedCapturePoints"":141,""Frags"":93,""Frags8P"":71,""Hits"":1170,""Losses"":57,""MaxFrags"":4,""MaxXp"":1785,""Shots"":1435,""Spotted"":90,""SurvivedBattles"":52,""WinAndSurvived"":52,""Wins"":84,""Xp"":92850,""Wn7"":1157.4219188313475,""WinRate"":59.154929577464788732394366197,""AvgDamage"":1311.1549295774647887323943662,""AvgXp"":653.87323943661971830985915493,""DamageCoefficient"":1.069371532284929870308892284,""SurvivalRate"":36.619718309859154929577464789},{""TankId"":2657,""BattleLifeTimeInSeconds"":18512,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.098866213151927437641723356,""Name"":""STA-1"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":8,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/STA_1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/STA_1.png"",""LastBattleTime"":""2019-02-23T08:11:19+01:00"",""Battles"":147,""CapturePoints"":0,""DamageDealt"":165242,""DamageReceived"":202736,""DroppedCapturePoints"":23,""Frags"":74,""Frags8P"":49,""Hits"":920,""Losses"":72,""MaxFrags"":4,""MaxXp"":1417,""Shots"":1085,""Spotted"":264,""SurvivedBattles"":30,""WinAndSurvived"":30,""Wins"":75,""Xp"":89101,""Wn7"":969.4622600055894,""WinRate"":51.020408163265306122448979592,""AvgDamage"":1124.0952380952380952380952381,""AvgXp"":606.12925170068027210884353741,""DamageCoefficient"":0.8150599794807039696945781706,""SurvivalRate"":20.408163265306122448979591837},{""TankId"":10513,""BattleLifeTimeInSeconds"":22383,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.722992700729927007299270073,""Name"":""VK 45.02 (P) Ausf. A"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK4502A.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK4502A.png"",""LastBattleTime"":""2019-02-23T08:08:47+01:00"",""Battles"":137,""CapturePoints"":0,""DamageDealt"":174958,""DamageReceived"":187986,""DroppedCapturePoints"":154,""Frags"":102,""Frags8P"":75,""Hits"":792,""Losses"":59,""MaxFrags"":5,""MaxXp"":1786,""Shots"":930,""Spotted"":219,""SurvivedBattles"":33,""WinAndSurvived"":33,""Wins"":76,""Xp"":97718,""Wn7"":1277.2081368337144,""WinRate"":55.474452554744525547445255474,""AvgDamage"":1277.0656934306569343065693431,""AvgXp"":713.27007299270072992700729927,""DamageCoefficient"":0.9306969667953996574212973307,""SurvivalRate"":24.087591240875912408759124088},{""TankId"":20497,""BattleLifeTimeInSeconds"":26625,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.8629032258064516129032258065,""Name"":""VK 100.01 (P)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/G115_VK10001P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/G115_VK10001P.png"",""LastBattleTime"":""2019-02-23T08:02:02+01:00"",""Battles"":155,""CapturePoints"":76,""DamageDealt"":235885,""DamageReceived"":192749,""DroppedCapturePoints"":138,""Frags"":118,""Frags8P"":95,""Hits"":721,""Losses"":74,""MaxFrags"":4,""MaxXp"":1548,""Shots"":827,""Spotted"":156,""SurvivedBattles"":55,""WinAndSurvived"":52,""Wins"":79,""Xp"":99873,""Wn7"":1215.3944224935524,""WinRate"":50.967741935483870967741935484,""AvgDamage"":1521.8387096774193548387096774,""AvgXp"":644.34193548387096774193548387,""DamageCoefficient"":1.2237936383586944679349828015,""SurvivalRate"":35.483870967741935483870967742},{""TankId"":5137,""BattleLifeTimeInSeconds"":21280,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6271604938271604938271604938,""Name"":""Tiger II"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVIB_Tiger_II.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVIB_Tiger_II.png"",""LastBattleTime"":""2019-02-22T17:04:26+01:00"",""Battles"":135,""CapturePoints"":17,""DamageDealt"":200104,""DamageReceived"":197638,""DroppedCapturePoints"":17,""Frags"":111,""Frags8P"":88,""Hits"":785,""Losses"":59,""MaxFrags"":5,""MaxXp"":1777,""Shots"":897,""Spotted"":162,""SurvivedBattles"":42,""WinAndSurvived"":42,""Wins"":76,""Xp"":97378,""Wn7"":1252.6741565078019,""WinRate"":56.296296296296296296296296296,""AvgDamage"":1482.2518518518518518518518519,""AvgXp"":721.31851851851851851851851852,""DamageCoefficient"":1.0124773575931754014916159848,""SurvivalRate"":31.111111111111111111111111111},{""TankId"":13841,""BattleLifeTimeInSeconds"":17927,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.1495203836930455635491606715,""Name"":""Indien-Panzer"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":8,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Indien_Panzer.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Indien_Panzer.png"",""LastBattleTime"":""2019-02-22T16:16:07+01:00"",""Battles"":139,""CapturePoints"":0,""DamageDealt"":171458,""DamageReceived"":163408,""DroppedCapturePoints"":9,""Frags"":73,""Frags8P"":49,""Hits"":944,""Losses"":65,""MaxFrags"":3,""MaxXp"":1383,""Shots"":1076,""Spotted"":234,""SurvivedBattles"":34,""WinAndSurvived"":34,""Wins"":74,""Xp"":88192,""Wn7"":1032.1631239860985,""WinRate"":53.237410071942446043165467626,""AvgDamage"":1233.5107913669064748201438849,""AvgXp"":634.47482014388489208633093525,""DamageCoefficient"":1.0492631939684715558601782042,""SurvivalRate"":24.460431654676258992805755396},{""TankId"":7697,""BattleLifeTimeInSeconds"":25935,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.5729166666666666666666666667,""Name"":""Ferdinand"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":8,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ferdinand.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ferdinand.png"",""LastBattleTime"":""2019-02-22T16:12:29+01:00"",""Battles"":168,""CapturePoints"":0,""DamageDealt"":246109,""DamageReceived"":180554,""DroppedCapturePoints"":14,""Frags"":116,""Frags8P"":86,""Hits"":778,""Losses"":86,""MaxFrags"":4,""MaxXp"":1869,""Shots"":943,""Spotted"":94,""SurvivedBattles"":44,""WinAndSurvived"":43,""Wins"":82,""Xp"":98415,""Wn7"":989.2304327797194,""WinRate"":48.80952380952380952380952381,""AvgDamage"":1464.9345238095238095238095238,""AvgXp"":585.80357142857142857142857143,""DamageCoefficient"":1.3630769742016238909135217165,""SurvivalRate"":26.19047619047619047619047619},{""TankId"":5185,""BattleLifeTimeInSeconds"":13142,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.9912121212121212121212121212,""Name"":""AMX 13 75"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":7,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX_13_75.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX_13_75.png"",""LastBattleTime"":""2019-02-22T16:08:03+01:00"",""Battles"":110,""CapturePoints"":66,""DamageDealt"":98706,""DamageReceived"":108298,""DroppedCapturePoints"":44,""Frags"":70,""Frags8P"":12,""Hits"":775,""Losses"":61,""MaxFrags"":5,""MaxXp"":1377,""Shots"":883,""Spotted"":199,""SurvivedBattles"":19,""WinAndSurvived"":18,""Wins"":49,""Xp"":56238,""Wn7"":948.2892221793652,""WinRate"":44.545454545454545454545454545,""AvgDamage"":897.3272727272727272727272727,""AvgXp"":511.25454545454545454545454545,""DamageCoefficient"":0.9114295739533509390755138599,""SurvivalRate"":17.272727272727272727272727273},{""TankId"":11041,""BattleLifeTimeInSeconds"":13961,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1347094801223241590214067278,""Name"":""T25/2"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":7,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T25_2.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T25_2.png"",""LastBattleTime"":""2019-02-22T16:06:48+01:00"",""Battles"":109,""CapturePoints"":0,""DamageDealt"":111511,""DamageReceived"":108355,""DroppedCapturePoints"":75,""Frags"":75,""Frags8P"":16,""Hits"":649,""Losses"":65,""MaxFrags"":4,""MaxXp"":1894,""Shots"":773,""Spotted"":93,""SurvivedBattles"":21,""WinAndSurvived"":21,""Wins"":44,""Xp"":53709,""Wn7"":882.2562386217286,""WinRate"":40.366972477064220183486238532,""AvgDamage"":1023.0366972477064220183486239,""AvgXp"":492.74311926605504587155963303,""DamageCoefficient"":1.0291264823958285266023718333,""SurvivalRate"":19.266055045871559633027522936},{""TankId"":3585,""BattleLifeTimeInSeconds"":16112,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.4412121212121212121212121212,""Name"":""SU-100"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":6,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/SU-100.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/SU-100.png"",""LastBattleTime"":""2019-02-22T16:02:56+01:00"",""Battles"":110,""CapturePoints"":150,""DamageDealt"":135292,""DamageReceived"":79648,""DroppedCapturePoints"":172,""Frags"":107,""Frags8P"":0,""Hits"":436,""Losses"":51,""MaxFrags"":5,""MaxXp"":1291,""Shots"":531,""Spotted"":111,""SurvivedBattles"":38,""WinAndSurvived"":38,""Wins"":59,""Xp"":54759,""Wn7"":1558.5824990730082,""WinRate"":53.636363636363636363636363636,""AvgDamage"":1229.9272727272727272727272727,""AvgXp"":497.80909090909090909090909091,""DamageCoefficient"":1.6986239453595821615106468461,""SurvivalRate"":34.545454545454545454545454545},{""TankId"":11553,""BattleLifeTimeInSeconds"":8142,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.0253731343283582089552238806,""Name"":""M18 Hellcat"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":6,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M18_Hellcat.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M18_Hellcat.png"",""LastBattleTime"":""2019-01-14T06:43:26+01:00"",""Battles"":67,""CapturePoints"":0,""DamageDealt"":56047,""DamageReceived"":47364,""DroppedCapturePoints"":86,""Frags"":37,""Frags8P"":0,""Hits"":341,""Losses"":34,""MaxFrags"":3,""MaxXp"":1101,""Shots"":403,""Spotted"":54,""SurvivedBattles"":13,""WinAndSurvived"":13,""Wins"":32,""Xp"":34873,""Wn7"":987.0807227836181,""WinRate"":47.761194029850746268656716418,""AvgDamage"":836.5223880597014925373134328,""AvgXp"":520.49253731343283582089552239,""DamageCoefficient"":1.1833248881006671733806266363,""SurvivalRate"":19.402985074626865671641791045},{""TankId"":6465,""BattleLifeTimeInSeconds"":2870,""MarkOfMastery"":1,""AvgBattleLifeTimeInMinutes"":2.2777777777777777777777777778,""Name"":""AMX 12 t"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":6,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX_12t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX_12t.png"",""LastBattleTime"":""2019-01-13T08:00:55+01:00"",""Battles"":21,""CapturePoints"":0,""DamageDealt"":23530,""DamageReceived"":16884,""DroppedCapturePoints"":0,""Frags"":17,""Frags8P"":0,""Hits"":173,""Losses"":8,""MaxFrags"":4,""MaxXp"":1066,""Shots"":200,""Spotted"":33,""SurvivedBattles"":7,""WinAndSurvived"":7,""Wins"":13,""Xp"":14350,""Wn7"":1424.9188222257458,""WinRate"":61.904761904761904761904761905,""AvgDamage"":1120.4761904761904761904761905,""AvgXp"":683.33333333333333333333333333,""DamageCoefficient"":1.3936271025823264629234778489,""SurvivalRate"":33.333333333333333333333333333},{""TankId"":14145,""BattleLifeTimeInSeconds"":2338,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.9483333333333333333333333333,""Name"":""AMX ELC bis"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":5,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/ELC_AMX.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/ELC_AMX.png"",""LastBattleTime"":""2019-01-06T18:14:39+01:00"",""Battles"":20,""CapturePoints"":0,""DamageDealt"":14194,""DamageReceived"":11343,""DroppedCapturePoints"":0,""Frags"":13,""Frags8P"":0,""Hits"":109,""Losses"":10,""MaxFrags"":2,""MaxXp"":1027,""Shots"":120,""Spotted"":42,""SurvivedBattles"":5,""WinAndSurvived"":5,""Wins"":10,""Xp"":9650,""Wn7"":1105.8618439262068,""WinRate"":50,""AvgDamage"":709.7,""AvgXp"":482.5,""DamageCoefficient"":1.2513444415057744864674248435,""SurvivalRate"":25},{""TankId"":1089,""BattleLifeTimeInSeconds"":2774,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.7196078431372549019607843137,""Name"":""B1"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":4,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/B1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/B1.png"",""LastBattleTime"":""2019-01-04T18:28:25+01:00"",""Battles"":17,""CapturePoints"":0,""DamageDealt"":8032,""DamageReceived"":7097,""DroppedCapturePoints"":36,""Frags"":14,""Frags8P"":0,""Hits"":235,""Losses"":5,""MaxFrags"":5,""MaxXp"":1326,""Shots"":265,""Spotted"":15,""SurvivedBattles"":8,""WinAndSurvived"":8,""Wins"":12,""Xp"":9100,""Wn7"":1312.001892159415,""WinRate"":70.588235294117647058823529412,""AvgDamage"":472.47058823529411764705882353,""AvgXp"":535.29411764705882352941176471,""DamageCoefficient"":1.131745808087924475130336762,""SurvivalRate"":47.058823529411764705882352941},{""TankId"":321,""BattleLifeTimeInSeconds"":1548,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":3.6857142857142857142857142857,""Name"":""D2"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":3,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/D2.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/D2.png"",""LastBattleTime"":""2018-12-29T20:46:35+01:00"",""Battles"":7,""CapturePoints"":85,""DamageDealt"":4863,""DamageReceived"":1967,""DroppedCapturePoints"":74,""Frags"":7,""Frags8P"":0,""Hits"":111,""Losses"":2,""MaxFrags"":3,""MaxXp"":883,""Shots"":125,""Spotted"":8,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":4,""Xp"":4108,""Wn7"":1607.1555347425415,""WinRate"":57.142857142857142857142857143,""AvgDamage"":694.71428571428571428571428571,""AvgXp"":586.85714285714285714285714286,""DamageCoefficient"":2.4722928317234367056431113371,""SurvivalRate"":57.142857142857142857142857143},{""TankId"":5953,""BattleLifeTimeInSeconds"":178,""MarkOfMastery"":1,""AvgBattleLifeTimeInMinutes"":2.9666666666666666666666666667,""Name"":""AMX 38"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":2,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/AMX38.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/AMX38.png"",""LastBattleTime"":""2018-12-29T09:30:41+01:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":529,""DamageReceived"":180,""DroppedCapturePoints"":0,""Frags"":1,""Frags8P"":0,""Hits"":11,""Losses"":0,""MaxFrags"":1,""MaxXp"":580,""Shots"":12,""Spotted"":2,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":580,""Wn7"":1380.9112220313257,""WinRate"":100,""AvgDamage"":529,""AvgXp"":580,""DamageCoefficient"":2.9388888888888888888888888889,""SurvivalRate"":100},{""TankId"":15937,""BattleLifeTimeInSeconds"":392,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":6.5333333333333333333333333333,""Name"":""Renault R35"",""TankNationId"":""france"",""TankNation"":""France"",""Tier"":1,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/RenaultR35.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/RenaultR35.png"",""LastBattleTime"":""2018-12-29T09:21:20+01:00"",""Battles"":1,""CapturePoints"":66,""DamageDealt"":467,""DamageReceived"":252,""DroppedCapturePoints"":0,""Frags"":0,""Frags8P"":0,""Hits"":23,""Losses"":0,""MaxFrags"":0,""MaxXp"":658,""Shots"":27,""Spotted"":1,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":658,""Wn7"":894.826127316076,""WinRate"":100,""AvgDamage"":467,""AvgXp"":658,""DamageCoefficient"":1.8531746031746031746031746032,""SurvivalRate"":100},{""TankId"":6945,""BattleLifeTimeInSeconds"":8338,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":1.9572769953051643192488262911,""Name"":""M10 Wolverine"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":5,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M10_Wolverine.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M10_Wolverine.png"",""LastBattleTime"":""2018-12-27T19:57:11+01:00"",""Battles"":71,""CapturePoints"":10,""DamageDealt"":46126,""DamageReceived"":35031,""DroppedCapturePoints"":13,""Frags"":29,""Frags8P"":0,""Hits"":348,""Losses"":33,""MaxFrags"":2,""MaxXp"":1176,""Shots"":433,""Spotted"":45,""SurvivedBattles"":17,""WinAndSurvived"":17,""Wins"":38,""Xp"":28152,""Wn7"":845.7886007343805,""WinRate"":53.521126760563380281690140845,""AvgDamage"":649.66197183098591549295774648,""AvgXp"":396.50704225352112676056338028,""DamageCoefficient"":1.316719477034626473694727527,""SurvivalRate"":23.943661971830985915492957746},{""TankId"":53537,""BattleLifeTimeInSeconds"":201,""MarkOfMastery"":1,""AvgBattleLifeTimeInMinutes"":3.35,""Name"":""T1E6"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":2,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T1_E6.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T1_E6.png"",""LastBattleTime"":""2018-12-21T11:46:30+01:00"",""Battles"":1,""CapturePoints"":14,""DamageDealt"":338,""DamageReceived"":316,""DroppedCapturePoints"":0,""Frags"":1,""Frags8P"":0,""Hits"":14,""Losses"":0,""MaxFrags"":1,""MaxXp"":535,""Shots"":16,""Spotted"":1,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":535,""Wn7"":1060.7037142817728,""WinRate"":100,""AvgDamage"":338,""AvgXp"":535,""DamageCoefficient"":1.0696202531645569620253164557,""SurvivalRate"":100},{""TankId"":10273,""BattleLifeTimeInSeconds"":1679,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.5439393939393939393939393939,""Name"":""M8A1"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":4,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M8A1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M8A1.png"",""LastBattleTime"":""2018-12-06T06:44:36+01:00"",""Battles"":11,""CapturePoints"":6,""DamageDealt"":5996,""DamageReceived"":4523,""DroppedCapturePoints"":15,""Frags"":6,""Frags8P"":0,""Hits"":57,""Losses"":7,""MaxFrags"":2,""MaxXp"":1048,""Shots"":68,""Spotted"":8,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":4,""Xp"":4089,""Wn7"":782.4885811698267,""WinRate"":36.363636363636363636363636364,""AvgDamage"":545.09090909090909090909090909,""AvgXp"":371.72727272727272727272727273,""DamageCoefficient"":1.3256688038912226398408136193,""SurvivalRate"":18.181818181818181818181818182},{""TankId"":4385,""BattleLifeTimeInSeconds"":14549,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.7554924242424242424242424242,""Name"":""T32"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T32.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T32.png"",""LastBattleTime"":""2018-12-05T21:16:51+01:00"",""Battles"":88,""CapturePoints"":33,""DamageDealt"":127071,""DamageReceived"":123211,""DroppedCapturePoints"":109,""Frags"":66,""Frags8P"":47,""Hits"":558,""Losses"":44,""MaxFrags"":3,""MaxXp"":1540,""Shots"":639,""Spotted"":109,""SurvivedBattles"":25,""WinAndSurvived"":24,""Wins"":44,""Xp"":55588,""Wn7"":1228.6991443589827,""WinRate"":50,""AvgDamage"":1443.9886363636363636363636364,""AvgXp"":631.68181818181818181818181818,""DamageCoefficient"":1.0313283716551281947228737694,""SurvivalRate"":28.409090909090909090909090909},{""TankId"":6657,""BattleLifeTimeInSeconds"":15839,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.4218654434250764525993883792,""Name"":""T-43"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-43.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-43.png"",""LastBattleTime"":""2018-11-14T19:17:12+01:00"",""Battles"":109,""CapturePoints"":0,""DamageDealt"":123333,""DamageReceived"":110820,""DroppedCapturePoints"":4,""Frags"":85,""Frags8P"":11,""Hits"":803,""Losses"":49,""MaxFrags"":5,""MaxXp"":2013,""Shots"":927,""Spotted"":189,""SurvivedBattles"":26,""WinAndSurvived"":26,""Wins"":60,""Xp"":60572,""Wn7"":1244.1993896991833,""WinRate"":55.045871559633027522935779817,""AvgDamage"":1131.495412844036697247706422,""AvgXp"":555.70642201834862385321100917,""DamageCoefficient"":1.1129128316188413643746616134,""SurvivalRate"":23.853211009174311926605504587},{""TankId"":4353,""BattleLifeTimeInSeconds"":22605,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.4150641025641025641025641026,""Name"":""T-44"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":8,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-44.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-44.png"",""LastBattleTime"":""2018-11-13T17:42:02+01:00"",""Battles"":156,""CapturePoints"":4,""DamageDealt"":213422,""DamageReceived"":203599,""DroppedCapturePoints"":83,""Frags"":101,""Frags8P"":75,""Hits"":998,""Losses"":78,""MaxFrags"":3,""MaxXp"":1828,""Shots"":1161,""Spotted"":299,""SurvivedBattles"":43,""WinAndSurvived"":43,""Wins"":78,""Xp"":109766,""Wn7"":1166.0799765409593,""WinRate"":50,""AvgDamage"":1368.0897435897435897435897436,""AvgXp"":703.62820512820512820512820513,""DamageCoefficient"":1.0482467988546112701928791399,""SurvivalRate"":27.564102564102564102564102564},{""TankId"":10769,""BattleLifeTimeInSeconds"":32509,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.8820035460992907801418439716,""Name"":""Tiger (P)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":7,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVI_Tiger_P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVI_Tiger_P.png"",""LastBattleTime"":""2018-11-13T17:29:33+01:00"",""Battles"":188,""CapturePoints"":104,""DamageDealt"":243421,""DamageReceived"":205863,""DroppedCapturePoints"":65,""Frags"":177,""Frags8P"":42,""Hits"":1408,""Losses"":79,""MaxFrags"":5,""MaxXp"":1633,""Shots"":1676,""Spotted"":207,""SurvivedBattles"":80,""WinAndSurvived"":79,""Wins"":109,""Xp"":121209,""Wn7"":1384.442298007205,""WinRate"":57.978723404255319148936170213,""AvgDamage"":1294.7925531914893617021276596,""AvgXp"":644.72872340425531914893617021,""DamageCoefficient"":1.1824417209503407606029252464,""SurvivalRate"":42.553191489361702127659574468},{""TankId"":11265,""BattleLifeTimeInSeconds"":7077,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.6211111111111111111111111111,""Name"":""T-150"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":6,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T150.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T150.png"",""LastBattleTime"":""2018-11-13T08:30:35+01:00"",""Battles"":45,""CapturePoints"":0,""DamageDealt"":49987,""DamageReceived"":34933,""DroppedCapturePoints"":0,""Frags"":53,""Frags8P"":0,""Hits"":204,""Losses"":17,""MaxFrags"":4,""MaxXp"":1315,""Shots"":247,""Spotted"":64,""SurvivedBattles"":17,""WinAndSurvived"":17,""Wins"":28,""Xp"":29099,""Wn7"":1574.22483793006,""WinRate"":62.222222222222222222222222222,""AvgDamage"":1110.8222222222222222222222222,""AvgXp"":646.64444444444444444444444444,""DamageCoefficient"":1.4309392265193370165745856354,""SurvivalRate"":37.777777777777777777777777778},{""TankId"":6417,""BattleLifeTimeInSeconds"":3705,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.287037037037037037037037037,""Name"":""Pz.Kpfw. III/IV"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIII_IV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIII_IV.png"",""LastBattleTime"":""2018-11-13T06:55:42+01:00"",""Battles"":27,""CapturePoints"":0,""DamageDealt"":25940,""DamageReceived"":15603,""DroppedCapturePoints"":0,""Frags"":27,""Frags8P"":0,""Hits"":191,""Losses"":11,""MaxFrags"":4,""MaxXp"":1177,""Shots"":228,""Spotted"":53,""SurvivedBattles"":9,""WinAndSurvived"":9,""Wins"":15,""Xp"":13138,""Wn7"":1505.2077950872686,""WinRate"":55.555555555555555555555555556,""AvgDamage"":960.7407407407407407407407407,""AvgXp"":486.59259259259259259259259259,""DamageCoefficient"":1.6625008011279882073960135871,""SurvivalRate"":33.333333333333333333333333333},{""TankId"":17,""BattleLifeTimeInSeconds"":9978,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.2173333333333333333333333333,""Name"":""Pz.Kpfw. IV Ausf. G"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIV.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIV.png"",""LastBattleTime"":""2018-11-13T06:50:56+01:00"",""Battles"":75,""CapturePoints"":37,""DamageDealt"":60786,""DamageReceived"":44173,""DroppedCapturePoints"":7,""Frags"":68,""Frags8P"":0,""Hits"":465,""Losses"":29,""MaxFrags"":6,""MaxXp"":1128,""Shots"":556,""Spotted"":109,""SurvivedBattles"":25,""WinAndSurvived"":25,""Wins"":46,""Xp"":37289,""Wn7"":1363.4733935233214,""WinRate"":61.333333333333333333333333333,""AvgDamage"":810.48,""AvgXp"":497.18666666666666666666666667,""DamageCoefficient"":1.3760894664161365540035768456,""SurvivalRate"":33.333333333333333333333333333},{""TankId"":17953,""BattleLifeTimeInSeconds"":13391,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.0289393939393939393939393939,""Name"":""M41 Walker Bulldog"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":7,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M41_Bulldog.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M41_Bulldog.png"",""LastBattleTime"":""2018-09-27T07:35:15+02:00"",""Battles"":110,""CapturePoints"":0,""DamageDealt"":103965,""DamageReceived"":100705,""DroppedCapturePoints"":51,""Frags"":76,""Frags8P"":8,""Hits"":824,""Losses"":53,""MaxFrags"":4,""MaxXp"":1315,""Shots"":947,""Spotted"":219,""SurvivedBattles"":24,""WinAndSurvived"":23,""Wins"":57,""Xp"":52897,""Wn7"":1142.4153064730904,""WinRate"":51.818181818181818181818181818,""AvgDamage"":945.1363636363636363636363636,""AvgXp"":480.88181818181818181818181818,""DamageCoefficient"":1.0323717789583436770766099002,""SurvivalRate"":21.818181818181818181818181818},{""TankId"":10065,""BattleLifeTimeInSeconds"":10104,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.7161290322580645161290322581,""Name"":""AT 7"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":7,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB75_AT7.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB75_AT7.png"",""LastBattleTime"":""2018-09-27T07:30:50+02:00"",""Battles"":62,""CapturePoints"":81,""DamageDealt"":71022,""DamageReceived"":59779,""DroppedCapturePoints"":7,""Frags"":48,""Frags8P"":11,""Hits"":457,""Losses"":24,""MaxFrags"":3,""MaxXp"":1383,""Shots"":576,""Spotted"":34,""SurvivedBattles"":28,""WinAndSurvived"":28,""Wins"":38,""Xp"":41969,""Wn7"":1175.3476543263926,""WinRate"":61.290322580645161290322580645,""AvgDamage"":1145.5161290322580645161290323,""AvgXp"":676.91935483870967741935483871,""DamageCoefficient"":1.1880760802288429046989745563,""SurvivalRate"":45.161290322580645161290322581},{""TankId"":1121,""BattleLifeTimeInSeconds"":13640,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.2287581699346405228758169935,""Name"":""Type 5 Chi-Ri"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Chi_Ri.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Chi_Ri.png"",""LastBattleTime"":""2018-09-27T07:23:19+02:00"",""Battles"":102,""CapturePoints"":21,""DamageDealt"":113851,""DamageReceived"":109709,""DroppedCapturePoints"":0,""Frags"":66,""Frags8P"":11,""Hits"":891,""Losses"":43,""MaxFrags"":4,""MaxXp"":1623,""Shots"":1031,""Spotted"":152,""SurvivedBattles"":30,""WinAndSurvived"":30,""Wins"":59,""Xp"":61155,""Wn7"":1175.4343466877506,""WinRate"":57.84313725490196078431372549,""AvgDamage"":1116.186274509803921568627451,""AvgXp"":599.55882352941176470588235294,""DamageCoefficient"":1.0377544230646528543692860203,""SurvivalRate"":29.411764705882352941176470588},{""TankId"":52993,""BattleLifeTimeInSeconds"":1904,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.441025641025641025641025641,""Name"":""A-32"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":4,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/A-32.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/A-32.png"",""LastBattleTime"":""2018-09-15T19:59:36+02:00"",""Battles"":13,""CapturePoints"":0,""DamageDealt"":9110,""DamageReceived"":6293,""DroppedCapturePoints"":0,""Frags"":14,""Frags8P"":0,""Hits"":77,""Losses"":6,""MaxFrags"":5,""MaxXp"":804,""Shots"":83,""Spotted"":29,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":7,""Xp"":4517,""Wn7"":1437.837249456205,""WinRate"":53.846153846153846153846153846,""AvgDamage"":700.76923076923076923076923077,""AvgXp"":347.46153846153846153846153846,""DamageCoefficient"":1.4476402351819481964087080884,""SurvivalRate"":30.769230769230769230769230769},{""TankId"":4113,""BattleLifeTimeInSeconds"":10204,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.2675555555555555555555555556,""Name"":""VK 30.02 (D)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":7,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3002DB.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3002DB.png"",""LastBattleTime"":""2018-08-14T21:20:36+02:00"",""Battles"":75,""CapturePoints"":0,""DamageDealt"":82581,""DamageReceived"":78883,""DroppedCapturePoints"":21,""Frags"":60,""Frags8P"":9,""Hits"":545,""Losses"":29,""MaxFrags"":4,""MaxXp"":1729,""Shots"":626,""Spotted"":128,""SurvivedBattles"":27,""WinAndSurvived"":27,""Wins"":46,""Xp"":52021,""Wn7"":1328.112679681927,""WinRate"":61.333333333333333333333333333,""AvgDamage"":1101.08,""AvgXp"":693.61333333333333333333333333,""DamageCoefficient"":1.0468795557978271617458768049,""SurvivalRate"":36},{""TankId"":1,""BattleLifeTimeInSeconds"":9955,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1547619047619047619047619048,""Name"":""T-34"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-34.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-34.png"",""LastBattleTime"":""2018-08-14T20:33:04+02:00"",""Battles"":77,""CapturePoints"":11,""DamageDealt"":62683,""DamageReceived"":46350,""DroppedCapturePoints"":252,""Frags"":55,""Frags8P"":0,""Hits"":678,""Losses"":35,""MaxFrags"":5,""MaxXp"":1129,""Shots"":775,""Spotted"":158,""SurvivedBattles"":25,""WinAndSurvived"":25,""Wins"":42,""Xp"":33239,""Wn7"":1491.797733604619,""WinRate"":54.545454545454545454545454545,""AvgDamage"":814.0649350649350649350649351,""AvgXp"":431.67532467532467532467532468,""DamageCoefficient"":1.3523840345199568500539374326,""SurvivalRate"":32.467532467532467532467532468},{""TankId"":257,""BattleLifeTimeInSeconds"":3298,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.6174603174603174603174603175,""Name"":""SU-85"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":5,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/SU-85.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/SU-85.png"",""LastBattleTime"":""2018-08-02T17:46:47+02:00"",""Battles"":21,""CapturePoints"":0,""DamageDealt"":22728,""DamageReceived"":12009,""DroppedCapturePoints"":132,""Frags"":37,""Frags8P"":0,""Hits"":140,""Losses"":9,""MaxFrags"":4,""MaxXp"":1053,""Shots"":166,""Spotted"":13,""SurvivedBattles"":8,""WinAndSurvived"":8,""Wins"":12,""Xp"":10928,""Wn7"":1999.9879192982216,""WinRate"":57.142857142857142857142857143,""AvgDamage"":1082.2857142857142857142857143,""AvgXp"":520.38095238095238095238095238,""DamageCoefficient"":1.8925805645765675743192605546,""SurvivalRate"":38.095238095238095238095238095},{""TankId"":9761,""BattleLifeTimeInSeconds"":8459,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":1.9581018518518518518518518519,""Name"":""M24 Chaffee"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":6,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M24_Chaffee.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M24_Chaffee.png"",""LastBattleTime"":""2018-08-02T06:47:59+02:00"",""Battles"":72,""CapturePoints"":1,""DamageDealt"":54213,""DamageReceived"":42959,""DroppedCapturePoints"":34,""Frags"":54,""Frags8P"":0,""Hits"":414,""Losses"":40,""MaxFrags"":4,""MaxXp"":1395,""Shots"":455,""Spotted"":127,""SurvivedBattles"":16,""WinAndSurvived"":16,""Wins"":32,""Xp"":35990,""Wn7"":1015.629318167,""WinRate"":44.444444444444444444444444444,""AvgDamage"":752.95833333333333333333333333,""AvgXp"":499.86111111111111111111111111,""DamageCoefficient"":1.2619707162643450732093391373,""SurvivalRate"":22.222222222222222222222222222},{""TankId"":289,""BattleLifeTimeInSeconds"":11720,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.2980392156862745098039215686,""Name"":""M3 Stuart"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":2,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M3_Stuart.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M3_Stuart.png"",""LastBattleTime"":""2018-08-02T06:43:08+02:00"",""Battles"":85,""CapturePoints"":32,""DamageDealt"":39662,""DamageReceived"":28222,""DroppedCapturePoints"":174,""Frags"":60,""Frags8P"":0,""Hits"":1170,""Losses"":44,""MaxFrags"":4,""MaxXp"":1158,""Shots"":1327,""Spotted"":186,""SurvivedBattles"":21,""WinAndSurvived"":21,""Wins"":40,""Xp"":36476,""Wn7"":1168.126044334418,""WinRate"":47.058823529411764705882352941,""AvgDamage"":466.61176470588235294117647059,""AvgXp"":429.12941176470588235294117647,""DamageCoefficient"":1.405357522500177166749344483,""SurvivalRate"":24.705882352941176470588235294},{""TankId"":16673,""BattleLifeTimeInSeconds"":8188,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.0368159203980099502487562189,""Name"":""T37"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":6,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/A94_T37.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/A94_T37.png"",""LastBattleTime"":""2018-07-25T17:48:58+02:00"",""Battles"":67,""CapturePoints"":0,""DamageDealt"":58819,""DamageReceived"":54177,""DroppedCapturePoints"":21,""Frags"":46,""Frags8P"":0,""Hits"":452,""Losses"":31,""MaxFrags"":3,""MaxXp"":1689,""Shots"":526,""Spotted"":131,""SurvivedBattles"":20,""WinAndSurvived"":20,""Wins"":36,""Xp"":33434,""Wn7"":1214.39328808345,""WinRate"":53.73134328358208955223880597,""AvgDamage"":877.8955223880597014925373134,""AvgXp"":499.01492537313432835820895522,""DamageCoefficient"":1.0856821160270963693080089337,""SurvivalRate"":29.850746268656716417910447761},{""TankId"":2049,""BattleLifeTimeInSeconds"":1697,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1756410256410256410256410256,""Name"":""A-20"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":4,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/A-20.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/A-20.png"",""LastBattleTime"":""2018-07-18T22:54:39+02:00"",""Battles"":13,""CapturePoints"":23,""DamageDealt"":10670,""DamageReceived"":4980,""DroppedCapturePoints"":67,""Frags"":22,""Frags8P"":0,""Hits"":332,""Losses"":3,""MaxFrags"":4,""MaxXp"":1348,""Shots"":414,""Spotted"":26,""SurvivedBattles"":7,""WinAndSurvived"":7,""Wins"":10,""Xp"":8984,""Wn7"":2132.8825322513744,""WinRate"":76.923076923076923076923076923,""AvgDamage"":820.7692307692307692307692308,""AvgXp"":691.07692307692307692307692308,""DamageCoefficient"":2.1425702811244979919678714859,""SurvivalRate"":53.846153846153846153846153846},{""TankId"":769,""BattleLifeTimeInSeconds"":1121,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.3354166666666666666666666667,""Name"":""BT-7"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":3,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/BT-7.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/BT-7.png"",""LastBattleTime"":""2018-07-18T00:00:56+02:00"",""Battles"":8,""CapturePoints"":0,""DamageDealt"":4524,""DamageReceived"":2796,""DroppedCapturePoints"":14,""Frags"":9,""Frags8P"":0,""Hits"":96,""Losses"":3,""MaxFrags"":3,""MaxXp"":1176,""Shots"":120,""Spotted"":18,""SurvivedBattles"":3,""WinAndSurvived"":3,""Wins"":5,""Xp"":3352,""Wn7"":1662.9357454759515,""WinRate"":62.5,""AvgDamage"":565.5,""AvgXp"":419,""DamageCoefficient"":1.6180257510729613733905579399,""SurvivalRate"":37.5},{""TankId"":1025,""BattleLifeTimeInSeconds"":466,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.9416666666666666666666666667,""Name"":""BT-2"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":2,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/BT-2.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/BT-2.png"",""LastBattleTime"":""2018-07-17T23:20:40+02:00"",""Battles"":4,""CapturePoints"":0,""DamageDealt"":1700,""DamageReceived"":1048,""DroppedCapturePoints"":120,""Frags"":5,""Frags8P"":0,""Hits"":40,""Losses"":2,""MaxFrags"":2,""MaxXp"":774,""Shots"":51,""Spotted"":12,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":2,""Xp"":1924,""Wn7"":1417.8079875838525,""WinRate"":50,""AvgDamage"":425,""AvgXp"":481,""DamageCoefficient"":1.6221374045801526717557251908,""SurvivalRate"":25},{""TankId"":3873,""BattleLifeTimeInSeconds"":17051,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.4928362573099415204678362573,""Name"":""T29"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":7,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T29.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T29.png"",""LastBattleTime"":""2018-07-04T07:26:21+02:00"",""Battles"":114,""CapturePoints"":59,""DamageDealt"":127504,""DamageReceived"":111279,""DroppedCapturePoints"":81,""Frags"":80,""Frags8P"":13,""Hits"":559,""Losses"":54,""MaxFrags"":4,""MaxXp"":1519,""Shots"":654,""Spotted"":125,""SurvivedBattles"":39,""WinAndSurvived"":39,""Wins"":60,""Xp"":67780,""Wn7"":1154.9878342777663,""WinRate"":52.631578947368421052631578947,""AvgDamage"":1118.4561403508771929824561404,""AvgXp"":594.56140350877192982456140351,""DamageCoefficient"":1.1458046891147476163516925925,""SurvivalRate"":34.210526315789473684210526316},{""TankId"":529,""BattleLifeTimeInSeconds"":14148,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.6494382022471910112359550562,""Name"":""Tiger I"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":7,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzVI.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzVI.png"",""LastBattleTime"":""2018-07-04T07:21:52+02:00"",""Battles"":89,""CapturePoints"":100,""DamageDealt"":118658,""DamageReceived"":110889,""DroppedCapturePoints"":0,""Frags"":86,""Frags8P"":11,""Hits"":680,""Losses"":40,""MaxFrags"":4,""MaxXp"":1342,""Shots"":792,""Spotted"":101,""SurvivedBattles"":26,""WinAndSurvived"":26,""Wins"":48,""Xp"":54296,""Wn7"":1332.6290440421033,""WinRate"":53.932584269662921348314606742,""AvgDamage"":1333.2359550561797752808988764,""AvgXp"":610.06741573033707865168539326,""DamageCoefficient"":1.070061052043034025016006998,""SurvivalRate"":29.213483146067415730337078652},{""TankId"":14097,""BattleLifeTimeInSeconds"":9418,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.0653508771929824561403508772,""Name"":""VK 30.01 (D)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3002DB_V1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3002DB_V1.png"",""LastBattleTime"":""2018-06-30T18:07:43+02:00"",""Battles"":76,""CapturePoints"":0,""DamageDealt"":68782,""DamageReceived"":62661,""DroppedCapturePoints"":5,""Frags"":60,""Frags8P"":0,""Hits"":508,""Losses"":31,""MaxFrags"":5,""MaxXp"":1423,""Shots"":592,""Spotted"":106,""SurvivedBattles"":23,""WinAndSurvived"":23,""Wins"":45,""Xp"":48076,""Wn7"":1250.2664668573152,""WinRate"":59.210526315789473684210526316,""AvgDamage"":905.0263157894736842105263158,""AvgXp"":632.57894736842105263157894737,""DamageCoefficient"":1.0976843650755653436746939883,""SurvivalRate"":30.263157894736842105263157895},{""TankId"":11009,""BattleLifeTimeInSeconds"":24462,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.7924657534246575342465753425,""Name"":""KV-4"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":8,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/KV4.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/KV4.png"",""LastBattleTime"":""2018-06-27T21:26:54+02:00"",""Battles"":146,""CapturePoints"":0,""DamageDealt"":177384,""DamageReceived"":186582,""DroppedCapturePoints"":75,""Frags"":96,""Frags8P"":67,""Hits"":726,""Losses"":64,""MaxFrags"":4,""MaxXp"":1777,""Shots"":855,""Spotted"":118,""SurvivedBattles"":53,""WinAndSurvived"":51,""Wins"":81,""Xp"":96028,""Wn7"":1053.2457970674163,""WinRate"":55.479452054794520547945205479,""AvgDamage"":1214.958904109589041095890411,""AvgXp"":657.72602739726027397260273973,""DamageCoefficient"":0.9507026401260571759333697784,""SurvivalRate"":36.301369863013698630136986301},{""TankId"":1889,""BattleLifeTimeInSeconds"":13094,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1823333333333333333333333333,""Name"":""Type 4 Chi-To"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Chi_To.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Chi_To.png"",""LastBattleTime"":""2018-05-28T22:35:30+02:00"",""Battles"":100,""CapturePoints"":0,""DamageDealt"":89882,""DamageReceived"":80766,""DroppedCapturePoints"":56,""Frags"":69,""Frags8P"":0,""Hits"":663,""Losses"":50,""MaxFrags"":4,""MaxXp"":1504,""Shots"":796,""Spotted"":134,""SurvivedBattles"":31,""WinAndSurvived"":31,""Wins"":50,""Xp"":56883,""Wn7"":1118.5146185127944,""WinRate"":50,""AvgDamage"":898.82,""AvgXp"":568.83,""DamageCoefficient"":1.1128692766758289379194215388,""SurvivalRate"":31},{""TankId"":5153,""BattleLifeTimeInSeconds"":2913,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.4275,""Name"":""M5 Stuart"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":3,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M5_Stuart.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M5_Stuart.png"",""LastBattleTime"":""2018-05-23T19:37:30+02:00"",""Battles"":20,""CapturePoints"":10,""DamageDealt"":10394,""DamageReceived"":9633,""DroppedCapturePoints"":95,""Frags"":18,""Frags8P"":0,""Hits"":379,""Losses"":6,""MaxFrags"":4,""MaxXp"":1216,""Shots"":419,""Spotted"":42,""SurvivedBattles"":6,""WinAndSurvived"":6,""Wins"":14,""Xp"":12008,""Wn7"":1595.4680570309572,""WinRate"":70,""AvgDamage"":519.7,""AvgXp"":600.4,""DamageCoefficient"":1.0789992733312571369251531195,""SurvivalRate"":30},{""TankId"":1825,""BattleLifeTimeInSeconds"":516,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.8666666666666666666666666667,""Name"":""M2 Light Tank"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M2_lt.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M2_lt.png"",""LastBattleTime"":""2018-05-16T07:24:03+02:00"",""Battles"":3,""CapturePoints"":0,""DamageDealt"":1741,""DamageReceived"":520,""DroppedCapturePoints"":2,""Frags"":7,""Frags8P"":0,""Hits"":51,""Losses"":1,""MaxFrags"":4,""MaxXp"":1081,""Shots"":61,""Spotted"":10,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":2,""Xp"":2164,""Wn7"":1652.7726392416841,""WinRate"":66.666666666666666666666666667,""AvgDamage"":580.33333333333333333333333333,""AvgXp"":721.33333333333333333333333333,""DamageCoefficient"":3.3480769230769230769230769231,""SurvivalRate"":66.666666666666666666666666667},{""TankId"":9553,""BattleLifeTimeInSeconds"":15725,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6743197278911564625850340136,""Name"":""AT 8"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":6,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB74_AT8.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB74_AT8.png"",""LastBattleTime"":""2018-05-08T05:20:39+02:00"",""Battles"":98,""CapturePoints"":239,""DamageDealt"":78755,""DamageReceived"":70049,""DroppedCapturePoints"":47,""Frags"":88,""Frags8P"":0,""Hits"":659,""Losses"":37,""MaxFrags"":6,""MaxXp"":1465,""Shots"":800,""Spotted"":67,""SurvivedBattles"":42,""WinAndSurvived"":40,""Wins"":60,""Xp"":51165,""Wn7"":1212.2988591299277,""WinRate"":61.22448979591836734693877551,""AvgDamage"":803.6224489795918367346938776,""AvgXp"":522.09183673469387755102040816,""DamageCoefficient"":1.1242844294707990121200873674,""SurvivalRate"":42.857142857142857142857142857},{""TankId"":4369,""BattleLifeTimeInSeconds"":3829,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6590277777777777777777777778,""Name"":""Pz.Kpfw. III"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":3,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzIII.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzIII.png"",""LastBattleTime"":""2018-04-24T14:23:43+02:00"",""Battles"":24,""CapturePoints"":0,""DamageDealt"":18053,""DamageReceived"":10498,""DroppedCapturePoints"":95,""Frags"":27,""Frags8P"":0,""Hits"":220,""Losses"":9,""MaxFrags"":5,""MaxXp"":958,""Shots"":254,""Spotted"":59,""SurvivedBattles"":11,""WinAndSurvived"":11,""Wins"":14,""Xp"":10262,""Wn7"":1890.9917562026255,""WinRate"":58.333333333333333333333333333,""AvgDamage"":752.20833333333333333333333333,""AvgXp"":427.58333333333333333333333333,""DamageCoefficient"":1.7196608877881501238331110688,""SurvivalRate"":45.833333333333333333333333333},{""TankId"":1377,""BattleLifeTimeInSeconds"":6597,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6178571428571428571428571429,""Name"":""Type 3 Chi-Nu"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Chi_Nu.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Chi_Nu.png"",""LastBattleTime"":""2018-04-21T16:18:26+02:00"",""Battles"":42,""CapturePoints"":0,""DamageDealt"":39374,""DamageReceived"":24371,""DroppedCapturePoints"":130,""Frags"":51,""Frags8P"":0,""Hits"":296,""Losses"":16,""MaxFrags"":4,""MaxXp"":1345,""Shots"":342,""Spotted"":77,""SurvivedBattles"":18,""WinAndSurvived"":18,""Wins"":26,""Xp"":23663,""Wn7"":1852.80911431545,""WinRate"":61.904761904761904761904761905,""AvgDamage"":937.4761904761904761904761905,""AvgXp"":563.4047619047619047619047619,""DamageCoefficient"":1.6156087152763530425505724016,""SurvivalRate"":42.857142857142857142857142857},{""TankId"":2065,""BattleLifeTimeInSeconds"":2605,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.7135416666666666666666666667,""Name"":""Pz.Kpfw. II"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/PzII.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/PzII.png"",""LastBattleTime"":""2018-04-14T14:44:09+02:00"",""Battles"":16,""CapturePoints"":0,""DamageDealt"":7077,""DamageReceived"":3799,""DroppedCapturePoints"":43,""Frags"":18,""Frags8P"":0,""Hits"":779,""Losses"":7,""MaxFrags"":5,""MaxXp"":1144,""Shots"":1020,""Spotted"":34,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":8,""Xp"":9136,""Wn7"":1135.3736190805585,""WinRate"":50,""AvgDamage"":442.3125,""AvgXp"":571,""DamageCoefficient"":1.8628586470123716767570413267,""SurvivalRate"":25},{""TankId"":801,""BattleLifeTimeInSeconds"":13750,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.2916666666666666666666666667,""Name"":""M6"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":6,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M6.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M6.png"",""LastBattleTime"":""2018-04-14T11:54:56+02:00"",""Battles"":100,""CapturePoints"":0,""DamageDealt"":91819,""DamageReceived"":88492,""DroppedCapturePoints"":113,""Frags"":67,""Frags8P"":0,""Hits"":580,""Losses"":48,""MaxFrags"":4,""MaxXp"":1506,""Shots"":680,""Spotted"":105,""SurvivedBattles"":31,""WinAndSurvived"":31,""Wins"":52,""Xp"":48134,""Wn7"":1172.9504100521904,""WinRate"":52,""AvgDamage"":918.19,""AvgXp"":481.34,""DamageCoefficient"":1.0375966189034036975093793789,""SurvivalRate"":31},{""TankId"":5889,""BattleLifeTimeInSeconds"":13814,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.6463601532567049808429118774,""Name"":""KV-3"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":7,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/KV-3.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/KV-3.png"",""LastBattleTime"":""2018-04-08T13:37:05+02:00"",""Battles"":87,""CapturePoints"":34,""DamageDealt"":109855,""DamageReceived"":100683,""DroppedCapturePoints"":13,""Frags"":69,""Frags8P"":12,""Hits"":390,""Losses"":33,""MaxFrags"":4,""MaxXp"":1243,""Shots"":459,""Spotted"":82,""SurvivedBattles"":34,""WinAndSurvived"":34,""Wins"":54,""Xp"":50259,""Wn7"":1298.8529536360982,""WinRate"":62.068965517241379310344827586,""AvgDamage"":1262.7011494252873563218390805,""AvgXp"":577.68965517241379310344827586,""DamageCoefficient"":1.0910978020122562895424252356,""SurvivalRate"":39.080459770114942528735632184},{""TankId"":2913,""BattleLifeTimeInSeconds"":3095,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.7149122807017543859649122807,""Name"":""Type 5 Ke-Ho"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":4,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ke_Ho.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ke_Ho.png"",""LastBattleTime"":""2018-03-30T20:36:50+02:00"",""Battles"":19,""CapturePoints"":3,""DamageDealt"":14196,""DamageReceived"":7262,""DroppedCapturePoints"":68,""Frags"":23,""Frags8P"":0,""Hits"":207,""Losses"":3,""MaxFrags"":4,""MaxXp"":943,""Shots"":235,""Spotted"":41,""SurvivedBattles"":11,""WinAndSurvived"":11,""Wins"":16,""Xp"":10436,""Wn7"":1896.7320935992527,""WinRate"":84.21052631578947368421052632,""AvgDamage"":747.15789473684210526315789474,""AvgXp"":549.26315789473684210526315789,""DamageCoefficient"":1.9548333792343706967777471771,""SurvivalRate"":57.894736842105263157894736842},{""TankId"":2401,""BattleLifeTimeInSeconds"":1127,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.6833333333333333333333333333,""Name"":""Type 98 Ke-Ni"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":3,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ke_Ni.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ke_Ni.png"",""LastBattleTime"":""2018-03-22T20:34:57+01:00"",""Battles"":7,""CapturePoints"":0,""DamageDealt"":5148,""DamageReceived"":2102,""DroppedCapturePoints"":0,""Frags"":9,""Frags8P"":0,""Hits"":149,""Losses"":3,""MaxFrags"":3,""MaxXp"":735,""Shots"":158,""Spotted"":17,""SurvivedBattles"":3,""WinAndSurvived"":3,""Wins"":4,""Xp"":3248,""Wn7"":1696.4799356656483,""WinRate"":57.142857142857142857142857143,""AvgDamage"":735.42857142857142857142857143,""AvgXp"":464,""DamageCoefficient"":2.4490960989533777354900095147,""SurvivalRate"":42.857142857142857142857142857},{""TankId"":865,""BattleLifeTimeInSeconds"":921,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.5583333333333333333333333333,""Name"":""Type 95 Ha-Go"",""TankNationId"":""japan"",""TankNation"":""Japan"",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ha_Go.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ha_Go.png"",""LastBattleTime"":""2018-03-21T06:51:31+01:00"",""Battles"":6,""CapturePoints"":0,""DamageDealt"":3650,""DamageReceived"":1538,""DroppedCapturePoints"":62,""Frags"":12,""Frags8P"":0,""Hits"":52,""Losses"":3,""MaxFrags"":6,""MaxXp"":680,""Shots"":61,""Spotted"":8,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":3,""Xp"":2030,""Wn7"":1519.1811319384096,""WinRate"":50,""AvgDamage"":608.33333333333333333333333333,""AvgXp"":338.33333333333333333333333333,""DamageCoefficient"":2.3732119635890767230169050715,""SurvivalRate"":33.333333333333333333333333333},{""TankId"":609,""BattleLifeTimeInSeconds"":455,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":3.7916666666666666666666666667,""Name"":""[Vehicle is not provided in the dictionary]"",""TankNationId"":""-"",""TankNation"":""-"",""Tier"":0,""TankTypeId"":""-"",""TankType"":""-"",""IsPremium"":false,""PreviewImage"":"""",""NormalImage"":"""",""LastBattleTime"":""2018-03-20T20:08:52+01:00"",""Battles"":2,""CapturePoints"":73,""DamageDealt"":1423,""DamageReceived"":345,""DroppedCapturePoints"":100,""Frags"":8,""Frags8P"":0,""Hits"":42,""Losses"":0,""MaxFrags"":5,""MaxXp"":781,""Shots"":49,""Spotted"":6,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":2,""Xp"":1325,""Wn7"":0,""WinRate"":100,""AvgDamage"":711.5,""AvgXp"":662.5,""DamageCoefficient"":4.1246376811594202898550724638,""SurvivalRate"":100},{""TankId"":3361,""BattleLifeTimeInSeconds"":9549,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.3753731343283582089552238806,""Name"":""T1 Heavy Tank"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":5,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T1_hvy.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T1_hvy.png"",""LastBattleTime"":""2018-03-12T18:48:05+01:00"",""Battles"":67,""CapturePoints"":102,""DamageDealt"":55574,""DamageReceived"":44554,""DroppedCapturePoints"":84,""Frags"":64,""Frags8P"":0,""Hits"":448,""Losses"":32,""MaxFrags"":3,""MaxXp"":1048,""Shots"":547,""Spotted"":107,""SurvivedBattles"":18,""WinAndSurvived"":18,""Wins"":35,""Xp"":30355,""Wn7"":1424.0387175116105,""WinRate"":52.238805970149253731343283582,""AvgDamage"":829.4626865671641791044776119,""AvgXp"":453.0597014925373134328358209,""DamageCoefficient"":1.2473403061453517080396821834,""SurvivalRate"":26.865671641791044776119402985},{""TankId"":7185,""BattleLifeTimeInSeconds"":10798,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.3372294372294372294372294372,""Name"":""VK 30.01 (P)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":6,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/VK3001P.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/VK3001P.png"",""LastBattleTime"":""2018-03-10T09:40:25+01:00"",""Battles"":77,""CapturePoints"":0,""DamageDealt"":79463,""DamageReceived"":62643,""DroppedCapturePoints"":82,""Frags"":80,""Frags8P"":0,""Hits"":499,""Losses"":31,""MaxFrags"":5,""MaxXp"":1581,""Shots"":591,""Spotted"":117,""SurvivedBattles"":22,""WinAndSurvived"":21,""Wins"":46,""Xp"":49200,""Wn7"":1561.1144410879274,""WinRate"":59.74025974025974025974025974,""AvgDamage"":1031.987012987012987012987013,""AvgXp"":638.96103896103896103896103896,""DamageCoefficient"":1.2685056590520888207780597992,""SurvivalRate"":28.571428571428571428571428571},{""TankId"":3105,""BattleLifeTimeInSeconds"":6771,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.1701923076923076923076923077,""Name"":""M3 Lee"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":4,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M3_Grant.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M3_Grant.png"",""LastBattleTime"":""2018-03-03T21:34:21+01:00"",""Battles"":52,""CapturePoints"":63,""DamageDealt"":30013,""DamageReceived"":21075,""DroppedCapturePoints"":147,""Frags"":46,""Frags8P"":0,""Hits"":245,""Losses"":23,""MaxFrags"":4,""MaxXp"":1066,""Shots"":310,""Spotted"":63,""SurvivedBattles"":17,""WinAndSurvived"":17,""Wins"":26,""Xp"":21818,""Wn7"":1284.1379765563963,""WinRate"":50,""AvgDamage"":577.17307692307692307692307692,""AvgXp"":419.57692307692307692307692308,""DamageCoefficient"":1.4241043890865954922894424674,""SurvivalRate"":32.692307692307692307692307692},{""TankId"":2817,""BattleLifeTimeInSeconds"":11658,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.42875,""Name"":""KV-1S"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":6,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/KV-1s.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/KV-1s.png"",""LastBattleTime"":""2018-02-26T06:50:55+01:00"",""Battles"":80,""CapturePoints"":0,""DamageDealt"":78886,""DamageReceived"":59738,""DroppedCapturePoints"":62,""Frags"":52,""Frags8P"":0,""Hits"":324,""Losses"":36,""MaxFrags"":3,""MaxXp"":1219,""Shots"":396,""Spotted"":100,""SurvivedBattles"":34,""WinAndSurvived"":33,""Wins"":44,""Xp"":42198,""Wn7"":1236.2871076682861,""WinRate"":55,""AvgDamage"":986.075,""AvgXp"":527.475,""DamageCoefficient"":1.3205329940741236733737319629,""SurvivalRate"":42.5},{""TankId"":4897,""BattleLifeTimeInSeconds"":924,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":1.7111111111111111111111111111,""Name"":""M2 Medium Tank"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":3,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/M2_med.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/M2_med.png"",""LastBattleTime"":""2018-02-24T20:56:43+01:00"",""Battles"":9,""CapturePoints"":0,""DamageDealt"":2935,""DamageReceived"":3797,""DroppedCapturePoints"":26,""Frags"":3,""Frags8P"":0,""Hits"":68,""Losses"":4,""MaxFrags"":2,""MaxXp"":861,""Shots"":82,""Spotted"":30,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":5,""Xp"":3383,""Wn7"":1229.105307041762,""WinRate"":55.555555555555555555555555556,""AvgDamage"":326.11111111111111111111111111,""AvgXp"":375.88888888888888888888888889,""DamageCoefficient"":0.7729786673689755069791941006,""SurvivalRate"":11.111111111111111111111111111},{""TankId"":5665,""BattleLifeTimeInSeconds"":161,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.6833333333333333333333333333,""Name"":""T2 Medium Tank"",""TankNationId"":""usa"",""TankNation"":""U.S.A."",""Tier"":2,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T2_med.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T2_med.png"",""LastBattleTime"":""2018-02-24T19:35:33+01:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":534,""DamageReceived"":340,""DroppedCapturePoints"":16,""Frags"":2,""Frags8P"":0,""Hits"":15,""Losses"":0,""MaxFrags"":2,""MaxXp"":754,""Shots"":19,""Spotted"":6,""SurvivedBattles"":0,""WinAndSurvived"":0,""Wins"":1,""Xp"":754,""Wn7"":2252.196599650989,""WinRate"":100,""AvgDamage"":534,""AvgXp"":754,""DamageCoefficient"":1.5705882352941176470588235294,""SurvivalRate"":0},{""TankId"":545,""BattleLifeTimeInSeconds"":161,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.6833333333333333333333333333,""Name"":""[Vehicle is not provided in the dictionary]"",""TankNationId"":""-"",""TankNation"":""-"",""Tier"":0,""TankTypeId"":""-"",""TankType"":""-"",""IsPremium"":false,""PreviewImage"":"""",""NormalImage"":"""",""LastBattleTime"":""2018-02-24T16:10:11+01:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":397,""DamageReceived"":40,""DroppedCapturePoints"":0,""Frags"":0,""Frags8P"":0,""Hits"":50,""Losses"":0,""MaxFrags"":0,""MaxXp"":607,""Shots"":72,""Spotted"":1,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":607,""Wn7"":0,""WinRate"":100,""AvgDamage"":397,""AvgXp"":607,""DamageCoefficient"":9.925,""SurvivalRate"":100},{""TankId"":4657,""BattleLifeTimeInSeconds"":5814,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.4846153846153846153846153846,""Name"":""Type T-34"",""TankNationId"":""china"",""TankNation"":""China"",""Tier"":5,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch21_T34.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch21_T34.png"",""LastBattleTime"":""2018-02-23T22:25:27+01:00"",""Battles"":39,""CapturePoints"":39,""DamageDealt"":29141,""DamageReceived"":21955,""DroppedCapturePoints"":94,""Frags"":35,""Frags8P"":0,""Hits"":414,""Losses"":15,""MaxFrags"":3,""MaxXp"":1123,""Shots"":498,""Spotted"":46,""SurvivedBattles"":15,""WinAndSurvived"":15,""Wins"":24,""Xp"":18191,""Wn7"":1492.2461576763326,""WinRate"":61.538461538461538461538461538,""AvgDamage"":747.20512820512820512820512821,""AvgXp"":466.43589743589743589743589744,""DamageCoefficient"":1.327305852880892735140059212,""SurvivalRate"":38.461538461538461538461538462},{""TankId"":8785,""BattleLifeTimeInSeconds"":6056,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.0585858585858585858585858586,""Name"":""AT 2"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":5,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB73_AT2.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB73_AT2.png"",""LastBattleTime"":""2018-02-23T22:18:06+01:00"",""Battles"":33,""CapturePoints"":32,""DamageDealt"":26460,""DamageReceived"":10851,""DroppedCapturePoints"":1,""Frags"":35,""Frags8P"":0,""Hits"":395,""Losses"":9,""MaxFrags"":3,""MaxXp"":1429,""Shots"":473,""Spotted"":17,""SurvivedBattles"":23,""WinAndSurvived"":23,""Wins"":24,""Xp"":18328,""Wn7"":1356.016976472669,""WinRate"":72.727272727272727272727272727,""AvgDamage"":801.8181818181818181818181818,""AvgXp"":555.39393939393939393939393939,""DamageCoefficient"":2.4384849322643074371025711916,""SurvivalRate"":69.696969696969696969696969697},{""TankId"":11777,""BattleLifeTimeInSeconds"":12127,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.6248917748917748917748917749,""Name"":""KV-1"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":5,""TankTypeId"":""heavyTank"",""TankType"":""Heavy Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/KV1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/KV1.png"",""LastBattleTime"":""2018-02-15T18:11:16+01:00"",""Battles"":77,""CapturePoints"":91,""DamageDealt"":70967,""DamageReceived"":44856,""DroppedCapturePoints"":170,""Frags"":80,""Frags8P"":0,""Hits"":558,""Losses"":33,""MaxFrags"":5,""MaxXp"":1486,""Shots"":655,""Spotted"":81,""SurvivedBattles"":33,""WinAndSurvived"":33,""Wins"":44,""Xp"":37504,""Wn7"":1620.1797266069084,""WinRate"":57.142857142857142857142857143,""AvgDamage"":921.6493506493506493506493506,""AvgXp"":487.06493506493506493506493506,""DamageCoefficient"":1.5821071874442660959514892099,""SurvivalRate"":42.857142857142857142857142857},{""TankId"":9041,""BattleLifeTimeInSeconds"":6936,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.5688888888888888888888888889,""Name"":""Alecto"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":4,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB57_Alecto.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB57_Alecto.png"",""LastBattleTime"":""2018-02-10T13:49:03+01:00"",""Battles"":45,""CapturePoints"":48,""DamageDealt"":27802,""DamageReceived"":15572,""DroppedCapturePoints"":9,""Frags"":37,""Frags8P"":0,""Hits"":180,""Losses"":19,""MaxFrags"":3,""MaxXp"":761,""Shots"":247,""Spotted"":36,""SurvivedBattles"":19,""WinAndSurvived"":19,""Wins"":25,""Xp"":14416,""Wn7"":1124.9595024249925,""WinRate"":55.555555555555555555555555556,""AvgDamage"":617.82222222222222222222222222,""AvgXp"":320.35555555555555555555555556,""DamageCoefficient"":1.7853840226046750577960441819,""SurvivalRate"":42.222222222222222222222222222},{""TankId"":3121,""BattleLifeTimeInSeconds"":2999,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.6307017543859649122807017544,""Name"":""M5A1 Stuart"",""TankNationId"":""china"",""TankNation"":""China"",""Tier"":4,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch09_M5.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch09_M5.png"",""LastBattleTime"":""2018-02-06T17:15:16+01:00"",""Battles"":19,""CapturePoints"":10,""DamageDealt"":13455,""DamageReceived"":8894,""DroppedCapturePoints"":39,""Frags"":19,""Frags8P"":0,""Hits"":274,""Losses"":5,""MaxFrags"":4,""MaxXp"":726,""Shots"":311,""Spotted"":33,""SurvivedBattles"":8,""WinAndSurvived"":8,""Wins"":14,""Xp"":9030,""Wn7"":1697.1519035537644,""WinRate"":73.684210526315789473684210526,""AvgDamage"":708.15789473684210526315789474,""AvgXp"":475.26315789473684210526315789,""DamageCoefficient"":1.5128176298628288733977962671,""SurvivalRate"":42.105263157894736842105263158},{""TankId"":8209,""BattleLifeTimeInSeconds"":3700,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.4666666666666666666666666667,""Name"":""Pz.Kpfw. 38 (t) n.A."",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":4,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz38_NA.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz38_NA.png"",""LastBattleTime"":""2018-02-06T05:43:18+01:00"",""Battles"":25,""CapturePoints"":0,""DamageDealt"":14329,""DamageReceived"":10565,""DroppedCapturePoints"":11,""Frags"":19,""Frags8P"":0,""Hits"":280,""Losses"":9,""MaxFrags"":4,""MaxXp"":1101,""Shots"":348,""Spotted"":48,""SurvivedBattles"":12,""WinAndSurvived"":12,""Wins"":16,""Xp"":11090,""Wn7"":1305.6275333742453,""WinRate"":64,""AvgDamage"":573.16,""AvgXp"":443.6,""DamageCoefficient"":1.3562707051585423568386180786,""SurvivalRate"":48},{""TankId"":4401,""BattleLifeTimeInSeconds"":954,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":3.18,""Name"":""Type 2597 Chi-Ha"",""TankNationId"":""china"",""TankNation"":""China"",""Tier"":3,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch08_Type97_Chi_Ha.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch08_Type97_Chi_Ha.png"",""LastBattleTime"":""2018-02-01T19:10:30+01:00"",""Battles"":5,""CapturePoints"":0,""DamageDealt"":3911,""DamageReceived"":1790,""DroppedCapturePoints"":62,""Frags"":12,""Frags8P"":0,""Hits"":77,""Losses"":0,""MaxFrags"":5,""MaxXp"":1182,""Shots"":100,""Spotted"":10,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":5,""Xp"":4359,""Wn7"":2438.9648845842185,""WinRate"":100,""AvgDamage"":782.2,""AvgXp"":871.8,""DamageCoefficient"":2.1849162011173184357541899441,""SurvivalRate"":80},{""TankId"":1537,""BattleLifeTimeInSeconds"":3583,""MarkOfMastery"":4,""AvgBattleLifeTimeInMinutes"":2.1327380952380952380952380952,""Name"":""T-28 mod. 1940"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":4,""TankTypeId"":""mediumTank"",""TankType"":""Medium Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-28.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-28.png"",""LastBattleTime"":""2018-02-01T05:32:39+01:00"",""Battles"":28,""CapturePoints"":0,""DamageDealt"":18237,""DamageReceived"":14209,""DroppedCapturePoints"":41,""Frags"":30,""Frags8P"":0,""Hits"":249,""Losses"":14,""MaxFrags"":6,""MaxXp"":1326,""Shots"":298,""Spotted"":48,""SurvivedBattles"":6,""WinAndSurvived"":6,""Wins"":14,""Xp"":14583,""Wn7"":1415.2073670664631,""WinRate"":50,""AvgDamage"":651.32142857142857142857142857,""AvgXp"":520.82142857142857142857142857,""DamageCoefficient"":1.2834822999507354493630797382,""SurvivalRate"":21.428571428571428571428571429},{""TankId"":2353,""BattleLifeTimeInSeconds"":321,""MarkOfMastery"":1,""AvgBattleLifeTimeInMinutes"":2.675,""Name"":""Vickers Mk. E Type B"",""TankNationId"":""china"",""TankNation"":""China"",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Ch07_Vickers_MkE_Type_BT26.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Ch07_Vickers_MkE_Type_BT26.png"",""LastBattleTime"":""2018-01-31T17:19:51+01:00"",""Battles"":2,""CapturePoints"":100,""DamageDealt"":677,""DamageReceived"":340,""DroppedCapturePoints"":0,""Frags"":0,""Frags8P"":0,""Hits"":18,""Losses"":0,""MaxFrags"":0,""MaxXp"":637,""Shots"":27,""Spotted"":6,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":2,""Xp"":1090,""Wn7"":791.0114485534414,""WinRate"":100,""AvgDamage"":338.5,""AvgXp"":545,""DamageCoefficient"":1.9911764705882352941176470588,""SurvivalRate"":100},{""TankId"":1329,""BattleLifeTimeInSeconds"":303,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":5.05,""Name"":""[Vehicle is not provided in the dictionary]"",""TankNationId"":""-"",""TankNation"":""-"",""Tier"":0,""TankTypeId"":""-"",""TankType"":""-"",""IsPremium"":false,""PreviewImage"":"""",""NormalImage"":"""",""LastBattleTime"":""2018-01-31T06:37:51+01:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":354,""DamageReceived"":240,""DroppedCapturePoints"":0,""Frags"":1,""Frags8P"":0,""Hits"":13,""Losses"":0,""MaxFrags"":1,""MaxXp"":493,""Shots"":20,""Spotted"":1,""SurvivedBattles"":0,""WinAndSurvived"":0,""Wins"":1,""Xp"":493,""Wn7"":0,""WinRate"":100,""AvgDamage"":354,""AvgXp"":493,""DamageCoefficient"":1.475,""SurvivalRate"":0},{""TankId"":3345,""BattleLifeTimeInSeconds"":737,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.4566666666666666666666666667,""Name"":""Pz.Kpfw. 38 (t)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":3,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz38t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz38t.png"",""LastBattleTime"":""2018-01-29T18:22:37+01:00"",""Battles"":5,""CapturePoints"":49,""DamageDealt"":2331,""DamageReceived"":905,""DroppedCapturePoints"":0,""Frags"":5,""Frags8P"":0,""Hits"":50,""Losses"":0,""MaxFrags"":2,""MaxXp"":774,""Shots"":64,""Spotted"":6,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":5,""Xp"":3005,""Wn7"":1269.2338033472427,""WinRate"":100,""AvgDamage"":466.2,""AvgXp"":601,""DamageCoefficient"":2.5756906077348066298342541436,""SurvivalRate"":80},{""TankId"":8017,""BattleLifeTimeInSeconds"":2609,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.7177083333333333333333333333,""Name"":""Valentine AT"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":3,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB42_Valentine_AT.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB42_Valentine_AT.png"",""LastBattleTime"":""2018-01-28T09:47:39+01:00"",""Battles"":16,""CapturePoints"":52,""DamageDealt"":8216,""DamageReceived"":3441,""DroppedCapturePoints"":15,""Frags"":19,""Frags8P"":0,""Hits"":85,""Losses"":7,""MaxFrags"":4,""MaxXp"":612,""Shots"":118,""Spotted"":8,""SurvivedBattles"":8,""WinAndSurvived"":7,""Wins"":9,""Xp"":4606,""Wn7"":1270.1803062944284,""WinRate"":56.25,""AvgDamage"":513.5,""AvgXp"":287.875,""DamageCoefficient"":2.3876780005812263876780005812,""SurvivalRate"":50},{""TankId"":3073,""BattleLifeTimeInSeconds"":1127,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.3479166666666666666666666667,""Name"":""T-46"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":3,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-46.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-46.png"",""LastBattleTime"":""2018-01-27T20:30:17+01:00"",""Battles"":8,""CapturePoints"":0,""DamageDealt"":4831,""DamageReceived"":2567,""DroppedCapturePoints"":6,""Frags"":10,""Frags8P"":0,""Hits"":113,""Losses"":3,""MaxFrags"":3,""MaxXp"":667,""Shots"":153,""Spotted"":17,""SurvivedBattles"":4,""WinAndSurvived"":4,""Wins"":5,""Xp"":2994,""Wn7"":1633.7800093984933,""WinRate"":62.5,""AvgDamage"":603.875,""AvgXp"":374.25,""DamageCoefficient"":1.8819633813790416828983248929,""SurvivalRate"":50},{""TankId"":8273,""BattleLifeTimeInSeconds"":1231,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.5645833333333333333333333333,""Name"":""Universal Carrier 2-pdr"",""TankNationId"":""uk"",""TankNation"":""U.K."",""Tier"":2,""TankTypeId"":""AT-SPG"",""TankType"":""Tank Destroyer"",""IsPremium"":true,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/GB39_Universal_CarrierQF2.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/GB39_Universal_CarrierQF2.png"",""LastBattleTime"":""2018-01-22T17:23:25+01:00"",""Battles"":8,""CapturePoints"":0,""DamageDealt"":2814,""DamageReceived"":1960,""DroppedCapturePoints"":51,""Frags"":6,""Frags8P"":0,""Hits"":39,""Losses"":4,""MaxFrags"":2,""MaxXp"":594,""Shots"":58,""Spotted"":8,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":4,""Xp"":2502,""Wn7"":1004.3914117430518,""WinRate"":50,""AvgDamage"":351.75,""AvgXp"":312.75,""DamageCoefficient"":1.4357142857142857142857142857,""SurvivalRate"":12.5},{""TankId"":4609,""BattleLifeTimeInSeconds"":792,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.64,""Name"":""T-26"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/T-26.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/T-26.png"",""LastBattleTime"":""2018-01-22T06:33:10+01:00"",""Battles"":5,""CapturePoints"":0,""DamageDealt"":2247,""DamageReceived"":1019,""DroppedCapturePoints"":0,""Frags"":6,""Frags8P"":0,""Hits"":73,""Losses"":2,""MaxFrags"":3,""MaxXp"":939,""Shots"":97,""Spotted"":6,""SurvivedBattles"":3,""WinAndSurvived"":3,""Wins"":3,""Xp"":2598,""Wn7"":1034.2259767940054,""WinRate"":60,""AvgDamage"":449.4,""AvgXp"":519.6,""DamageCoefficient"":2.2051030421982335623159960746,""SurvivalRate"":60},{""TankId"":785,""BattleLifeTimeInSeconds"":765,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.55,""Name"":""Pz.Kpfw. 35 (t)"",""TankNationId"":""germany"",""TankNation"":""Germany"",""Tier"":2,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/Pz35t.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/Pz35t.png"",""LastBattleTime"":""2018-01-20T22:27:55+01:00"",""Battles"":5,""CapturePoints"":23,""DamageDealt"":1938,""DamageReceived"":1160,""DroppedCapturePoints"":105,""Frags"":6,""Frags8P"":0,""Hits"":166,""Losses"":2,""MaxFrags"":3,""MaxXp"":1018,""Shots"":206,""Spotted"":10,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":3,""Xp"":3015,""Wn7"":1404.5682434888054,""WinRate"":60,""AvgDamage"":387.6,""AvgXp"":603,""DamageCoefficient"":1.6706896551724137931034482759,""SurvivalRate"":40},{""TankId"":81,""BattleLifeTimeInSeconds"":1329,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":2.76875,""Name"":""[Vehicle is not provided in the dictionary]"",""TankNationId"":""-"",""TankNation"":""-"",""Tier"":0,""TankTypeId"":""-"",""TankType"":""-"",""IsPremium"":false,""PreviewImage"":"""",""NormalImage"":"""",""LastBattleTime"":""2018-01-20T21:40:39+01:00"",""Battles"":8,""CapturePoints"":41,""DamageDealt"":2867,""DamageReceived"":1787,""DroppedCapturePoints"":100,""Frags"":10,""Frags8P"":0,""Hits"":165,""Losses"":4,""MaxFrags"":3,""MaxXp"":772,""Shots"":231,""Spotted"":7,""SurvivedBattles"":2,""WinAndSurvived"":2,""Wins"":4,""Xp"":3463,""Wn7"":0,""WinRate"":50,""AvgDamage"":358.375,""AvgXp"":432.875,""DamageCoefficient"":1.6043648573027420257414661444,""SurvivalRate"":25},{""TankId"":3089,""BattleLifeTimeInSeconds"":649,""MarkOfMastery"":2,""AvgBattleLifeTimeInMinutes"":2.7041666666666666666666666667,""Name"":""[Vehicle is not provided in the dictionary]"",""TankNationId"":""-"",""TankNation"":""-"",""Tier"":0,""TankTypeId"":""-"",""TankType"":""-"",""IsPremium"":false,""PreviewImage"":"""",""NormalImage"":"""",""LastBattleTime"":""2018-01-20T20:39:29+01:00"",""Battles"":4,""CapturePoints"":0,""DamageDealt"":1260,""DamageReceived"":829,""DroppedCapturePoints"":0,""Frags"":3,""Frags8P"":0,""Hits"":126,""Losses"":1,""MaxFrags"":2,""MaxXp"":820,""Shots"":179,""Spotted"":4,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":2,""Xp"":1796,""Wn7"":0,""WinRate"":50,""AvgDamage"":315,""AvgXp"":449,""DamageCoefficient"":1.5199034981905910735826296743,""SurvivalRate"":25},{""TankId"":3329,""BattleLifeTimeInSeconds"":239,""MarkOfMastery"":3,""AvgBattleLifeTimeInMinutes"":3.9833333333333333333333333333,""Name"":""MS-1 mod. 1"",""TankNationId"":""ussr"",""TankNation"":""U.S.S.R."",""Tier"":1,""TankTypeId"":""lightTank"",""TankType"":""Light Tank"",""IsPremium"":false,""PreviewImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd_thumbnail/MS-1.png"",""NormalImage"":""http://glossary-eu-static.gcdn.co/icons/wotb/current/uploaded/vehicles/hd/MS-1.png"",""LastBattleTime"":""2018-01-20T20:19:14+01:00"",""Battles"":1,""CapturePoints"":0,""DamageDealt"":436,""DamageReceived"":201,""DroppedCapturePoints"":13,""Frags"":4,""Frags8P"":0,""Hits"":51,""Losses"":0,""MaxFrags"":4,""MaxXp"":1006,""Shots"":69,""Spotted"":3,""SurvivedBattles"":1,""WinAndSurvived"":1,""Wins"":1,""Xp"":1006,""Wn7"":1953.0109155185735,""WinRate"":100,""AvgDamage"":436,""AvgXp"":1006,""DamageCoefficient"":2.1691542288557213930348258706,""SurvivalRate"":100}]}"; + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Services/NotificationsService.cs b/WotBlitzStatisticsPro.Blazor/Services/NotificationsService.cs index 0bbfae5..0dfde7e 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/NotificationsService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/NotificationsService.cs @@ -39,13 +39,14 @@ namespace WotBlitzStatisticsPro.Blazor.Services _jsRuntime.InvokeVoidAsync("console.warn", summary, message); } - public void ReportError(string summary, string message) + public void ReportError(string summary, string message, string? stacktrace) { Type = NotificationType.Error; Message = message; Summary = summary; MessageArrived?.Invoke(); - _jsRuntime.InvokeVoidAsync("console.error", summary, message); + Console.WriteLine(message); + _jsRuntime.InvokeVoidAsync("console.error", summary, string.IsNullOrEmpty(stacktrace) ? message : $"{message}; {stacktrace}"); } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Services/SvgHelper.cs b/WotBlitzStatisticsPro.Blazor/Services/SvgHelper.cs new file mode 100644 index 0000000..9d6ae40 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Services/SvgHelper.cs @@ -0,0 +1,128 @@ +using Microsoft.JSInterop; +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Blazor.Model; +using System.Text.Json; +using System.Text; +using System; + +namespace WotBlitzStatisticsPro.Blazor.Services +{ + public class SvgHelper : ISvgHelper + { + // Tank Tree dimensions + const int CardMargin = 20; + + private readonly int _halfMargin; + private readonly int _quarterMargin; + + // Tank Tree path corners + private readonly string _leftDown; + private readonly string _rightDown; + private readonly string _leftUp; + private readonly string _rightUp; + private readonly string _upRight; + private readonly string _upLeft; + + private readonly IJSRuntime _jsRuntime; + + public SvgHelper(IJSRuntime jsRuntime) + { + _jsRuntime = jsRuntime; + + _halfMargin = CardMargin / 2; + _quarterMargin = CardMargin / 4; + + _leftDown = $"c {_quarterMargin} 0, {_halfMargin} {_quarterMargin}, {_halfMargin} {_halfMargin}"; + _rightDown = $"c 0 {_quarterMargin}, {_quarterMargin} {_halfMargin}, {_halfMargin} {_halfMargin}"; + _leftUp = $"c {_quarterMargin} 0, {_halfMargin} -{_quarterMargin}, {_halfMargin} -{_halfMargin}"; + _rightUp = $"c 0 -{_quarterMargin}, {_quarterMargin} -{_halfMargin}, {_halfMargin} -{_halfMargin}"; + _upRight = $"c 0 -{_quarterMargin}, -{_quarterMargin} -{_halfMargin}, -{_halfMargin} -{_halfMargin}"; + _upLeft = $"c -{_quarterMargin} 0, -{_halfMargin} -{_quarterMargin}, -{_halfMargin} -{_halfMargin}"; + } + + public ElementDimensions CalculateTextBlockSize(string text, string fontFace, int fontSize) + { + var jsInProcess = (IJSInProcessRuntime)_jsRuntime; + return jsInProcess.Invoke("svgHelper.CalculateTextBlockDimensions", new + { + Text = text, + Font = fontFace, + Size = fontSize + }); + } + + public string TankTreeConnectionPath(int rowStart, int rowEnd, int tierStart, int cardWidth, int cardHeight) + { + int horizontalMargin = 2 * CardMargin; + + int startXPoint = (tierStart - 1) * (cardWidth + horizontalMargin) + cardWidth + CardMargin; + int startYpoint = rowStart * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin; + + var path = new StringBuilder($"M {startXPoint} {startYpoint}"); + if(rowStart == rowEnd) + { + path.AppendLine($"h {horizontalMargin}"); + return path.ToString(); + } + + int stopYPoint = rowEnd * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin; + int verticalLineHeight = Math.Abs(stopYPoint - startYpoint) - CardMargin; + + if(rowStart < rowEnd) + { + path.AppendLine($"h {_halfMargin}"); + path.AppendLine(_leftDown); + path.AppendLine($"v {verticalLineHeight}"); + path.AppendLine(_rightDown); + path.AppendLine($"h {_halfMargin}"); + } + else + { + path.AppendLine($"h {_halfMargin}"); + path.AppendLine(_leftUp); + path.AppendLine($"v -{verticalLineHeight}"); + path.AppendLine(_rightUp); + path.AppendLine($"h {_halfMargin}"); + } + + return path.ToString(); + } + + public string TankTreeConnectionVerticalPath(int rowStart, int rowEnd, int tierStart, int cardWidth, int cardHeight, int leftMargin) + { + int verticalMargin = 2 * CardMargin; + + int startYPoint = (10 - tierStart) * (cardWidth + verticalMargin) + CardMargin; + int startXPoint = rowStart * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin + leftMargin; + + var path = new StringBuilder($"M {startXPoint} {startYPoint}"); + if (rowStart == rowEnd) + { + path.AppendLine($"v -{verticalMargin}"); + return path.ToString(); + } + + int stopXPoint = rowEnd * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin + leftMargin; + int horizontalWidth = Math.Abs(stopXPoint - startXPoint) - CardMargin; + + if (rowStart < rowEnd) + { + path.AppendLine($"v -{_halfMargin}"); + path.AppendLine(_rightUp); + path.AppendLine($"h {horizontalWidth}"); + path.AppendLine(_leftUp); + path.AppendLine($"v -{_halfMargin}"); + } + else + { + path.AppendLine($"v -{_halfMargin}"); + path.AppendLine(_upRight); + path.AppendLine($"h -{horizontalWidth}"); + path.AppendLine(_upLeft); + path.AppendLine($"v -{_halfMargin}"); + } + + return path.ToString(); + } + } +} diff --git a/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj b/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj index 83bd5ad..e5b3e35 100644 --- a/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj +++ b/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj @@ -1,10 +1,10 @@  - net5.0 + net6.0 service-worker-assets.js true - 1.0.0.3 + 1.0.1.0 @@ -12,20 +12,20 @@ - - - - - + + + + + - - - + + + - - - - + + + + diff --git a/WotBlitzStatisticsPro.Blazor/graphql/VehiclesDictionary.graphql b/WotBlitzStatisticsPro.Blazor/graphql/VehiclesDictionary.graphql new file mode 100644 index 0000000..c933cd1 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/graphql/VehiclesDictionary.graphql @@ -0,0 +1,16 @@ +query dictionary($nationId: String!, $requestLanguage: RequestLanguage!) { + vehicles(nationId: $nationId, language: $requestLanguage) { + tankId + name + description + isPremium + typeId + nationId + tier + previewImage + normalImage + priceCredit + priceGold + nexTanksInTree + } +} diff --git a/WotBlitzStatisticsPro.Blazor/graphql/schema.graphql b/WotBlitzStatisticsPro.Blazor/graphql/schema.graphql index 0d0070b..d293b65 100644 --- a/WotBlitzStatisticsPro.Blazor/graphql/schema.graphql +++ b/WotBlitzStatisticsPro.Blazor/graphql/schema.graphql @@ -20,6 +20,8 @@ type Query { tankMedals("AccountId" accountId: Long! "Account tank Id" tankId: Long! "Account region" realmType: RealmType "Request language" requestLanguage: RequestLanguage): AccountAchievementsResponse! "Returns authentication URL accourding Realm" loginUrl("Wargaming Realm." realmType: RealmType!): String! + "Returns a list of all vehicles of one nation\n\n\n**Returns:**\nA list of vehicles" + vehicles("Nation" nationId: String! "Request language" language: RequestLanguage): [VehicleResponse!]! } type Mutation { @@ -377,6 +379,34 @@ type UpdateDictionariesResponseItem { description: String } +"Response for vehicle dictionary query" +type VehicleResponse { + "VehicleId" + tankId: Long! + "Vehicle name" + name: String! + "Vehicle description" + description: String! + "Is vehicle premium" + isPremium: Boolean! + "Vehicle type id" + typeId: String! + "Vehicle nationId" + nationId: String! + "Vehicle tier" + tier: Int! + "Vehicle preview image" + previewImage: String! + "Vehicle normal image" + normalImage: String! + "Vehicle price in credits" + priceCredit: Decimal! + "Vehicle price in gold" + priceGold: Decimal! + "Ids of nex tanks and their cost in XP" + nexTanksInTree: [Long!] +} + "Represents information about player's achievements" type AccountAchievementsResponse { "Player Id" diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/icons/encyclopedia.vehicle.credits.scale-200.png b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/encyclopedia.vehicle.credits.scale-200.png new file mode 100644 index 0000000..87f4bb2 Binary files /dev/null and b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/encyclopedia.vehicle.credits.scale-200.png differ diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/index.html b/WotBlitzStatisticsPro.Blazor/wwwroot/index.html index d70d6e4..4bb8474 100644 --- a/WotBlitzStatisticsPro.Blazor/wwwroot/index.html +++ b/WotBlitzStatisticsPro.Blazor/wwwroot/index.html @@ -27,6 +27,7 @@ + diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/media-queries.js b/WotBlitzStatisticsPro.Blazor/wwwroot/media-queries.js index 77458b7..25a0a66 100644 --- a/WotBlitzStatisticsPro.Blazor/wwwroot/media-queries.js +++ b/WotBlitzStatisticsPro.Blazor/wwwroot/media-queries.js @@ -3,4 +3,12 @@ mediaQueries.IsScreenWidthLessThen = function (width) { let mql = window.matchMedia(`(max-width: ${width}px)`); return mql.matches; -}; \ No newline at end of file +}; + +mediaQueries.ScreenWidth = function () { + return window.innerWidth; +} + +mediaQueries.ScreenHeight = function () { + return window.innerHeight; +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/svg-helper.js b/WotBlitzStatisticsPro.Blazor/wwwroot/svg-helper.js new file mode 100644 index 0000000..70f13e0 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/wwwroot/svg-helper.js @@ -0,0 +1,23 @@ +var svgHelper = svgHelper || {}; + +svgHelper.CalculateTextBlockDimensions = function (textParams) { + const svg = ` + + + ${textParams.Text} + + `; + const el = document.createElement("div"); + el.innerHTML = svg; + document.body.appendChild(el); + const svgText = el.querySelector('text').getBBox(); + el.remove(); + const result = { Height: Math.round(svgText.height), Width: Math.round(svgText.width) }; + return result; +}; \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Model/VehicleResponse.cs b/WotBlitzStatisticsPro.Common/Model/VehicleResponse.cs new file mode 100644 index 0000000..85c4a48 --- /dev/null +++ b/WotBlitzStatisticsPro.Common/Model/VehicleResponse.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; + +namespace WotBlitzStatisticsPro.Common.Model +{ + /// + /// Response for vehicle dictionary query + /// + public class VehicleResponse + { + /// + /// VehicleId + /// + public long TankId { get; set; } + + /// + /// Vehicle name + /// + public string Name { get; set; } = string.Empty; + + /// + /// Vehicle description + /// + public string Description { get; set; } = string.Empty; + + /// + /// Is vehicle premium + /// + public bool IsPremium { get; set; } + + /// + /// Vehicle type id + /// + public string TypeId { get; set; } = string.Empty; + + /// + /// Vehicle nationId + /// + public string NationId { get; set; } = string.Empty; + + /// + /// Vehicle tier + /// + public int Tier { get; set; } + + /// + /// Vehicle preview image + /// + public string PreviewImage { get; set; } = string.Empty; + + /// + /// Vehicle normal image + /// + public string NormalImage { get; set; } = string.Empty; + + /// + /// Vehicle price in credits + /// + public decimal PriceCredit { get; set; } + + /// + /// Vehicle price in gold + /// + public decimal PriceGold { get; set; } + + /// + /// Ids of nex tanks and their cost in XP + /// + public List? NexTanksInTree { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/WotBlitzStatisticsPro.Common.csproj b/WotBlitzStatisticsPro.Common/WotBlitzStatisticsPro.Common.csproj index 4afb8a0..0ef608f 100644 --- a/WotBlitzStatisticsPro.Common/WotBlitzStatisticsPro.Common.csproj +++ b/WotBlitzStatisticsPro.Common/WotBlitzStatisticsPro.Common.csproj @@ -1,7 +1,7 @@  - net5.0 + net6.0 true enable diff --git a/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs b/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs index 7bb9703..9a747eb 100644 --- a/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs +++ b/WotBlitzStatisticsPro.DataAccess/DictionariesDataAccessor.cs @@ -169,5 +169,13 @@ namespace WotBlitzStatisticsPro.DataAccess return collection.ToDictionary(a => a.AchievementId, a => a); } + + public async Task> GetVehiclesByNation(string nationId) + { + var collection = await _database.GetCollection(VehiclesCollectionName) + .Find(Builders.Filter.Eq(v => v.NationId, nationId)) + .ToListAsync(); + return collection.Cast().ToList(); + } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs b/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs index c4dd52d..d1f81f2 100644 --- a/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs +++ b/WotBlitzStatisticsPro.DataAccess/IDictionariesDataAccessor.cs @@ -37,5 +37,8 @@ namespace WotBlitzStatisticsPro.DataAccess Task> GetAchievementSections(); Task> GetAchievements(string[] achievementIds); + + Task> GetVehiclesByNation(string nationId); + } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.DataAccess/WotBlitzStatisticsPro.DataAccess.csproj b/WotBlitzStatisticsPro.DataAccess/WotBlitzStatisticsPro.DataAccess.csproj index faf43c8..44f85d0 100644 --- a/WotBlitzStatisticsPro.DataAccess/WotBlitzStatisticsPro.DataAccess.csproj +++ b/WotBlitzStatisticsPro.DataAccess/WotBlitzStatisticsPro.DataAccess.csproj @@ -1,13 +1,13 @@  - net5.0 + net6.0 enable - - + + diff --git a/WotBlitzStatisticsPro.GraphQl/Properties/launchSettings.json b/WotBlitzStatisticsPro.GraphQl/Properties/launchSettings.json index 5c7c5d2..615c20e 100644 --- a/WotBlitzStatisticsPro.GraphQl/Properties/launchSettings.json +++ b/WotBlitzStatisticsPro.GraphQl/Properties/launchSettings.json @@ -23,7 +23,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "https://localhost:5001;http://localhost:5000", + "applicationUrl": "https://localhost:6001;http://localhost:6000", "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" }, "WotBlitzStatistics.Mock": { @@ -33,7 +33,7 @@ "ASPNETCORE_ENVIRONMENT": "Development", "USE_GRAPH_QL_MOCK": "true" }, - "applicationUrl": "https://localhost:5001;http://localhost:5000", + "applicationUrl": "https://localhost:6001;http://localhost:6000", "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" } } diff --git a/WotBlitzStatisticsPro.GraphQl/Query/VehiclesQuery.cs b/WotBlitzStatisticsPro.GraphQl/Query/VehiclesQuery.cs new file mode 100644 index 0000000..0d0511a --- /dev/null +++ b/WotBlitzStatisticsPro.GraphQl/Query/VehiclesQuery.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using HotChocolate.Types; +using WotBlitzStatisticsPro.Common.Model; +using WotBlitzStatisticsPro.Logic; +using WotBlitzStatisticsPro.DataAccess; + +namespace WotBlitzStatisticsPro.GraphQl.Query +{ + [ExtendObjectType(Name = "Query")] + public class VehiclesQuery + { + private readonly IWargamingDictionaries _dictionaries; + + public VehiclesQuery(IWargamingDictionaries dictionariesDataAccessor) + { + _dictionaries = dictionariesDataAccessor; + } + + /// + /// Returns a list of all vehicles of one nation + /// + /// Nation + /// Request language + /// A list of vehicles + public Task?> GetVehicles(string nationId, RequestLanguage? language) + { + return _dictionaries.GetVehiclesByNation(nationId, language); + } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.GraphQl/Startup.cs b/WotBlitzStatisticsPro.GraphQl/Startup.cs index 5f207d2..016e12e 100644 --- a/WotBlitzStatisticsPro.GraphQl/Startup.cs +++ b/WotBlitzStatisticsPro.GraphQl/Startup.cs @@ -91,6 +91,7 @@ namespace WotBlitzStatisticsPro.GraphQl .AddType() .AddType() .AddType() + .AddType() .AddMutationType(d => d.Name("Mutation")) .AddType() .AddType() diff --git a/WotBlitzStatisticsPro.GraphQl/WotBlitzStatisticsPro.GraphQl.csproj b/WotBlitzStatisticsPro.GraphQl/WotBlitzStatisticsPro.GraphQl.csproj index 07c333a..4aa423a 100644 --- a/WotBlitzStatisticsPro.GraphQl/WotBlitzStatisticsPro.GraphQl.csproj +++ b/WotBlitzStatisticsPro.GraphQl/WotBlitzStatisticsPro.GraphQl.csproj @@ -1,7 +1,7 @@  - net5.0 + net6.0 true $(NoWarn);1591 enable @@ -9,16 +9,16 @@ - - - - - - - + + + + + + + - - + + diff --git a/WotBlitzStatisticsPro.Logic/IWargamingDictionaries.cs b/WotBlitzStatisticsPro.Logic/IWargamingDictionaries.cs index 881b316..1cea97c 100644 --- a/WotBlitzStatisticsPro.Logic/IWargamingDictionaries.cs +++ b/WotBlitzStatisticsPro.Logic/IWargamingDictionaries.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; using WotBlitzStatisticsPro.Common.Model; namespace WotBlitzStatisticsPro.Logic @@ -7,5 +8,7 @@ namespace WotBlitzStatisticsPro.Logic { Task UpdateDictionaries( UpdateDictionariesRequest updateDictionariesRequest); + + Task?> GetVehiclesByNation(string nationId, RequestLanguage? language); } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs b/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs index 49be930..90b9b61 100644 --- a/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs +++ b/WotBlitzStatisticsPro.Logic/Mappers/VehicleDictionaryProfile.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.Linq; using AutoMapper; using WotBlitzStatisticsPro.Common.Dictionaries; +using WotBlitzStatisticsPro.Common.Model; using WotBlitzStatisticsPro.DataAccess.Model; using WotBlitzStatisticsPro.WgApiClient.Model; @@ -36,6 +38,18 @@ namespace WotBlitzStatisticsPro.Logic.Mappers .ForMember(d => d.PriceXp, o => o.MapFrom(s => s.PricesXp)); + + CreateMap() + .ForMember(v => v.Name, + o => o.MapFrom((src, dest, destMember, context) => + src.Name.FirstOrDefault(l => l.Language == (RequestLanguage) context.Items["language"])?.Value ?? string.Empty)) + .ForMember(v => v.Description, + o => o.MapFrom((src, dest, destMember, context) => + src.Description.FirstOrDefault(l => l.Language == (RequestLanguage) context.Items["language"])?.Value ?? string.Empty)) + .ForMember(v => v.NexTanksInTree, + o => o.MapFrom(src => src.NexTanksInTree.Select(t => t.TankId).ToList())) + ; + } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs b/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs index 585a6c9..0231adf 100644 --- a/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs +++ b/WotBlitzStatisticsPro.Logic/WargamingDictionaries.cs @@ -1,8 +1,11 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using AutoMapper; using Microsoft.Extensions.Logging; +using WotBlitzStatisticsPro.Common.Dictionaries; using WotBlitzStatisticsPro.Common.Model; +using WotBlitzStatisticsPro.DataAccess; using WotBlitzStatisticsPro.Logic.Dictionaries; namespace WotBlitzStatisticsPro.Logic @@ -10,14 +13,32 @@ namespace WotBlitzStatisticsPro.Logic public class WargamingDictionaries: IWargamingDictionaries { private readonly DictionariesUpdaterResolver _dictionaryUpdaterFactoryMethod; + private readonly IDictionariesDataAccessor _dictionariesDataAccessor; + private readonly IMapper _mapper; private readonly ILogger _logger; - public WargamingDictionaries(DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod, ILogger logger) + public WargamingDictionaries( + DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod, + IDictionariesDataAccessor dictionariesDataAccessor, + ILogger logger, + IMapper mapper) { _dictionaryUpdaterFactoryMethod = dictionaryUpdaterFactoryMethod; + _dictionariesDataAccessor = dictionariesDataAccessor; _logger = logger; + _mapper = mapper; } - + + public async Task?> GetVehiclesByNation(string nationId, RequestLanguage? language) + { + language = language ?? RequestLanguage.En; + var vehicles = await _dictionariesDataAccessor.GetVehiclesByNation(nationId); + return _mapper.Map, List>(vehicles, opts => + { + opts.Items["language"] = language; + }); + } + public async Task UpdateDictionaries(UpdateDictionariesRequest updateDictionariesRequest) { var response = new List(); diff --git a/WotBlitzStatisticsPro.Logic/WargamingSearch.cs b/WotBlitzStatisticsPro.Logic/WargamingSearch.cs index ab129e4..284d180 100644 --- a/WotBlitzStatisticsPro.Logic/WargamingSearch.cs +++ b/WotBlitzStatisticsPro.Logic/WargamingSearch.cs @@ -54,7 +54,7 @@ namespace WotBlitzStatisticsPro.Logic for (int i = 0; i < accounts.Count; i++) { var accountResponse = accounts.ToArray()[i]; - var shortAccountInfo = shortAccountInfos?.FirstOrDefault(a => a.AccountId == accountResponse.AccountId); + var shortAccountInfo = shortAccountInfos?.FirstOrDefault(a => a != null && a.AccountId == accountResponse.AccountId); if (shortAccountInfo != null) { _mapper.Map(shortAccountInfo, accountResponse); diff --git a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs index fed0a66..9f0be86 100644 --- a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs +++ b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs @@ -80,7 +80,7 @@ namespace WotBlitzStatisticsPro.Logic services.AddTransient(); services.AddTransient(); - services.AddTransient(serviceProvider => + services.AddSingleton(serviceProvider => new ServiceProviderOperationFactory(serviceProvider)); } } diff --git a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsPro.Logic.csproj b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsPro.Logic.csproj index 09027a5..25fecfa 100644 --- a/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsPro.Logic.csproj +++ b/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsPro.Logic.csproj @@ -1,15 +1,15 @@  - net5.0 + net6.0 enable - - - - + + + + diff --git a/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs b/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs index 03d02d8..760ab30 100644 --- a/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs +++ b/WotBlitzStatisticsPro.Tests/DictionariesTests/DictionariesServiceTests.cs @@ -6,7 +6,8 @@ using NUnit.Framework; using WotBlitzStatisticsPro.Common.Model; using WotBlitzStatisticsPro.Logic; using WotBlitzStatisticsPro.Logic.Dictionaries; - +using AutoMapper; +using WotBlitzStatisticsPro.DataAccess; namespace WotBlitzStatisticsPro.Tests.DictionariesTests { [TestFixture] @@ -42,7 +43,9 @@ namespace WotBlitzStatisticsPro.Tests.DictionariesTests var services = serviceProvider.BuildServiceProvider(); _wargamingDictionaries = new WargamingDictionaries(services.GetService(), - (new Mock>()).Object); + (new Mock()).Object, + (new Mock>()).Object, + (new Mock()).Object); } [Test] diff --git a/WotBlitzStatisticsPro.Tests/WotBlitzStatisticsPro.Tests.csproj b/WotBlitzStatisticsPro.Tests/WotBlitzStatisticsPro.Tests.csproj index a112ff4..e73e664 100644 --- a/WotBlitzStatisticsPro.Tests/WotBlitzStatisticsPro.Tests.csproj +++ b/WotBlitzStatisticsPro.Tests/WotBlitzStatisticsPro.Tests.csproj @@ -1,21 +1,21 @@  - net5.0 + net6.0 false - - - - - - - - - + + + + + + + + + diff --git a/WotBlitzStatisticsPro.WgApiClient/WotBlitzStatisticsPro.WgApiClient.csproj b/WotBlitzStatisticsPro.WgApiClient/WotBlitzStatisticsPro.WgApiClient.csproj index 9bfd599..6f31ede 100644 --- a/WotBlitzStatisticsPro.WgApiClient/WotBlitzStatisticsPro.WgApiClient.csproj +++ b/WotBlitzStatisticsPro.WgApiClient/WotBlitzStatisticsPro.WgApiClient.csproj @@ -1,13 +1,13 @@  - net5.0 + net6.0 enable - - + + diff --git a/WotBlitzStatisticsPro.sln b/WotBlitzStatisticsPro.sln index 340412c..3922652 100644 --- a/WotBlitzStatisticsPro.sln +++ b/WotBlitzStatisticsPro.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29728.190 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32602.215 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WotBlitzStatisticsPro.Common", "WotBlitzStatisticsPro.Common\WotBlitzStatisticsPro.Common.csproj", "{2802CC24-35D6-48CE-9BC4-7080F9335C88}" EndProject