diff --git a/WotBlitzStatisticsPro.Blazor/Model/TankTreeItem.cs b/WotBlitzStatisticsPro.Blazor/Model/TankTreeItem.cs
new file mode 100644
index 0000000..4676e14
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Model/TankTreeItem.cs
@@ -0,0 +1,37 @@
+using System;
+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; }
+
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor
index 1cac6b4..57d92b8 100644
--- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor
+++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTree.razor
@@ -1,4 +1,5 @@
@using WotBlitzStatisticsPro.Blazor.Helpers
+@using System.Linq
@inherits PlayerInfoTanksTreeBase;
+ }
+ }
}
diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs
index 261291b..cff9180 100644
--- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs
+++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksTreeBase.cs
@@ -41,6 +41,10 @@ namespace WotBlitzStatisticsPro.Blazor.Pages
public int CardWidth { get; } = 200;
public int CardHeigth { get; } = 120;
+ public List TreeItems { get; set; } = new();
+
+ public string SelectedNation { get; set; } = "germany";
+
public string FrameStyle
{
get
@@ -56,8 +60,8 @@ namespace WotBlitzStatisticsPro.Blazor.Pages
// TODO: Move it to the Nation selector handler
try
{
- string nationId = "germany";
- VehiclesLibrary = await GraphQlBackendService.GetVehiclesByNation(nationId);
+ VehiclesLibrary = await GraphQlBackendService.GetVehiclesByNation(SelectedNation);
+ BuildTree();
}
catch (System.Exception e)
{
@@ -71,5 +75,66 @@ namespace WotBlitzStatisticsPro.Blazor.Pages
{
return SvgHelper.CalculateTextBlockSize(text, fontFace, fontSize).Width;
}
+
+ private void BuildTree()
+ {
+ TreeItems.Clear();
+ var vehiclesTree = VehiclesLibrary.Where(v => v.IsPremium == false).ToList();
+ for (int tier = 1; tier < 11; tier++)
+ {
+ var vehiclesByTier = vehiclesTree.Where(v => v.Tier == tier).ToList();
+ int row = 0;
+ foreach (var vehicleFromDictionary in vehiclesByTier)
+ {
+ var treeItem = new TankTreeItem
+ {
+ Tier = 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;
+ }
+
+ TreeItems.Add(treeItem);
+ row++;
+ }
+ }
+ // TODO: build matrix and connections
+
+ // Adding prem tanks
+ foreach (var prem in TanksList.Where(t => t.IsPremium && t.TankNationId == SelectedNation))
+ {
+ int row = TreeItems.Count(i => i.Tier == prem.Tier) + 1;
+ 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
+ });
+ }
+ }
}
}