diff --git a/WotBlitzStatisticsPro.Blazor/Messages/OpenTankDialogMessage.cs b/WotBlitzStatisticsPro.Blazor/Messages/OpenTankDialogMessage.cs new file mode 100644 index 0000000..f3f397d --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Messages/OpenTankDialogMessage.cs @@ -0,0 +1,15 @@ +using MediatR; +using WotBlitzStatisticsPro.Blazor.GraphQl; + +namespace WotBlitzStatisticsPro.Blazor.Messages +{ + public class OpenTankDialogMessage: INotification + { + public ITank Tank { get; } + + public OpenTankDialogMessage(ITank tank) + { + Tank = tank; + } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoOverview.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoOverview.razor index a270678..cfbea51 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoOverview.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoOverview.razor @@ -1,5 +1,8 @@ @using WotBlitzStatisticsPro.Blazor.Helpers +@using MediatR +@using WotBlitzStatisticsPro.Blazor.Messages @inject IStringLocalizer Localize; +@inject IMediator Mediator
@@ -51,7 +54,7 @@
-
+
@if (MostRelevantTank != null) { @@ -67,7 +70,7 @@
-
+
@if (MaxXpTank != null) { @@ -83,7 +86,7 @@
-
+
@if (MaxFragsTank != null) { diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksList.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksList.razor index ae1c7ac..33a56f9 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksList.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksList.razor @@ -1,4 +1,5 @@ @using WotBlitzStatisticsPro.Blazor.Helpers +@using WotBlitzStatisticsPro.Blazor.Messages @inherits PlayerInfoTanksListBase;
@@ -84,7 +85,8 @@ diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListBase.cs b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListBase.cs index 9f67789..da31337 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListBase.cs +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListBase.cs @@ -8,7 +8,8 @@ using Radzen.Blazor; using WotBlitzStatisticsPro.Blazor.GraphQl; using WotBlitzStatisticsPro.Blazor.Helpers; using WotBlitzStatisticsPro.Blazor.Model; - +using MediatR; +using WotBlitzStatisticsPro.Blazor.Messages; namespace WotBlitzStatisticsPro.Blazor.Pages { public class PlayerInfoTanksListBase: ComponentBase @@ -22,6 +23,9 @@ namespace WotBlitzStatisticsPro.Blazor.Pages [Inject] public IStringLocalizer Localize { get; set; } + [Inject] + public IMediator Mediator { get; set; } + public RadzenDataGrid TanksGrid { get; set; } public IEnumerable FilteredTankList { get; set; } diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor index 846013a..2695fab 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor @@ -1,4 +1,5 @@ -@inherits PlayerInfoTanksListBase; +@using WotBlitzStatisticsPro.Blazor.Messages +@inherits PlayerInfoTanksListBase; @if (TanksList != null && FilteredTankList.Count() > 0) {
@@ -49,7 +50,9 @@
@foreach (var tank in FilteredTankList) { - +
+ +
}
diff --git a/WotBlitzStatisticsPro.Blazor/Pages/TankInfoDialog.razor b/WotBlitzStatisticsPro.Blazor/Pages/TankInfoDialog.razor new file mode 100644 index 0000000..b420e49 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Pages/TankInfoDialog.razor @@ -0,0 +1,10 @@ +@using WotBlitzStatisticsPro.Blazor.Model + +

+ @Tank.Name +

+ +@code { + [Parameter] + public ITank Tank { get; set; } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Program.cs b/WotBlitzStatisticsPro.Blazor/Program.cs index a815dd6..5dad2e5 100644 --- a/WotBlitzStatisticsPro.Blazor/Program.cs +++ b/WotBlitzStatisticsPro.Blazor/Program.cs @@ -31,6 +31,7 @@ namespace WotBlitzStatisticsPro.Blazor builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); + builder.Services.AddScoped(); builder.Services.AddMediatR(typeof(Program)); diff --git a/WotBlitzStatisticsPro.Blazor/Services/ITankStatisticDialogService.cs b/WotBlitzStatisticsPro.Blazor/Services/ITankStatisticDialogService.cs new file mode 100644 index 0000000..d2ec35d --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Services/ITankStatisticDialogService.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Blazor.GraphQl; + +namespace WotBlitzStatisticsPro.Blazor.Services +{ + public interface ITankStatisticDialogService + { + Task OpenTankStatistics(ITank tank); + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Services/TankStatisticDialogService.cs b/WotBlitzStatisticsPro.Blazor/Services/TankStatisticDialogService.cs new file mode 100644 index 0000000..b4c1f1a --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Services/TankStatisticDialogService.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Blazor.GraphQl; +using MediatR; +using Radzen; +using WotBlitzStatisticsPro.Blazor.Messages; +using WotBlitzStatisticsPro.Blazor.Pages; + +namespace WotBlitzStatisticsPro.Blazor.Services +{ + public class TankStatisticDialogService: ITankStatisticDialogService, INotificationHandler + { + private readonly DialogService _dialogService; + public TankStatisticDialogService(DialogService dialogService) + { + _dialogService = dialogService; + } + + public async Task OpenTankStatistics(ITank tank) + { + await _dialogService.OpenAsync(tank.Name, + new Dictionary() { { "Tank", tank } }, + new DialogOptions() { Width = "300px", Height = "800px" }); + + } + + public Task Handle(OpenTankDialogMessage notification, CancellationToken cancellationToken) + { + return OpenTankStatistics(notification.Tank); + } + } +} \ No newline at end of file