diff --git a/WotBlitzStatisticsPro.Blazor/Messages/OpenSearchDialogMessage.cs b/WotBlitzStatisticsPro.Blazor/Messages/OpenSearchDialogMessage.cs
new file mode 100644
index 0000000..1ee79d6
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Messages/OpenSearchDialogMessage.cs
@@ -0,0 +1,15 @@
+using MediatR;
+using WotBlitzStatisticsPro.Blazor.Model;
+
+namespace WotBlitzStatisticsPro.Blazor.Messages
+{
+ public class OpenSearchDialogMessage: INotification
+ {
+ public DialogType Type { get; }
+
+ public OpenSearchDialogMessage(DialogType type)
+ {
+ Type = type;
+ }
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Model/DialogType.cs b/WotBlitzStatisticsPro.Blazor/Model/DialogType.cs
new file mode 100644
index 0000000..e60c6c0
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Model/DialogType.cs
@@ -0,0 +1,8 @@
+namespace WotBlitzStatisticsPro.Blazor.Model
+{
+ public enum DialogType
+ {
+ FindPlayer,
+ FindClan
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Pages/Counter.razor b/WotBlitzStatisticsPro.Blazor/Pages/Counter.razor
deleted file mode 100644
index 8641f78..0000000
--- a/WotBlitzStatisticsPro.Blazor/Pages/Counter.razor
+++ /dev/null
@@ -1,16 +0,0 @@
-@page "/counter"
-
-
Counter
-
-Current count: @currentCount
-
-
-
-@code {
- private int currentCount = 0;
-
- private void IncrementCount()
- {
- currentCount++;
- }
-}
diff --git a/WotBlitzStatisticsPro.Blazor/Pages/SearchDialog.razor b/WotBlitzStatisticsPro.Blazor/Pages/SearchDialog.razor
new file mode 100644
index 0000000..5e72c89
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Pages/SearchDialog.razor
@@ -0,0 +1,8 @@
+@using WotBlitzStatisticsPro.Blazor.Model
+SearchDialog
+@DialogType
+
+@code {
+ [Parameter]
+ public DialogType DialogType { get; set; }
+}
diff --git a/WotBlitzStatisticsPro.Blazor/Program.cs b/WotBlitzStatisticsPro.Blazor/Program.cs
index b13e694..a911bb2 100644
--- a/WotBlitzStatisticsPro.Blazor/Program.cs
+++ b/WotBlitzStatisticsPro.Blazor/Program.cs
@@ -3,7 +3,9 @@ using Microsoft.Extensions.DependencyInjection;
using System;
using System.Net.Http;
using System.Threading.Tasks;
+using MediatR;
using Radzen;
+using WotBlitzStatisticsPro.Blazor.Services;
namespace WotBlitzStatisticsPro.Blazor
{
@@ -17,6 +19,9 @@ namespace WotBlitzStatisticsPro.Blazor
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddScoped();
+ builder.Services.AddScoped();
+
+ builder.Services.AddMediatR(typeof(Program));
await builder.Build().RunAsync();
}
diff --git a/WotBlitzStatisticsPro.Blazor/Services/ISearchDialogService.cs b/WotBlitzStatisticsPro.Blazor/Services/ISearchDialogService.cs
new file mode 100644
index 0000000..2aa0abf
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Services/ISearchDialogService.cs
@@ -0,0 +1,10 @@
+using System.Threading.Tasks;
+using WotBlitzStatisticsPro.Blazor.Model;
+
+namespace WotBlitzStatisticsPro.Blazor.Services
+{
+ public interface ISearchDialogService
+ {
+ Task OpenSearchDialog(DialogType type);
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Services/SearchDialogService.cs b/WotBlitzStatisticsPro.Blazor/Services/SearchDialogService.cs
new file mode 100644
index 0000000..9019411
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Services/SearchDialogService.cs
@@ -0,0 +1,35 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using MediatR;
+using Radzen;
+using WotBlitzStatisticsPro.Blazor.Messages;
+using WotBlitzStatisticsPro.Blazor.Model;
+using WotBlitzStatisticsPro.Blazor.Pages;
+
+namespace WotBlitzStatisticsPro.Blazor.Services
+{
+ public class SearchDialogService: ISearchDialogService, INotificationHandler
+ {
+
+ private readonly DialogService _dialogService;
+
+ public SearchDialogService(DialogService dialogService)
+ {
+ _dialogService = dialogService;
+ }
+
+
+ public async Task OpenSearchDialog(DialogType type)
+ {
+ await _dialogService.OpenAsync($"Search",
+ new Dictionary() { { "DialogType", type } },
+ new DialogOptions() { Width = "300px", Height = "530px" });
+ }
+
+ public Task Handle(OpenSearchDialogMessage notification, CancellationToken cancellationToken)
+ {
+ return OpenSearchDialog(notification.Type);
+ }
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Shared/MainLayout.razor b/WotBlitzStatisticsPro.Blazor/Shared/MainLayout.razor
index 7fd95f2..181e6ea 100644
--- a/WotBlitzStatisticsPro.Blazor/Shared/MainLayout.razor
+++ b/WotBlitzStatisticsPro.Blazor/Shared/MainLayout.razor
@@ -1,12 +1,12 @@
-@inherits LayoutComponentBase
+@inherits MainLayoutBase
-
+
-
+
@@ -15,7 +15,7 @@
-
+
@Body
@@ -23,41 +23,15 @@
-
+
-
+
-
+
-
-@code {
- RadzenSidebar sidebar0;
- RadzenBody body0;
- bool sidebarExpanded = false;
- bool bodyExpanded = true;
-
- protected override void OnInitialized()
- {
- @*if (httpContextAccessor != null && httpContextAccessor.HttpContext != null &&
- httpContextAccessor.HttpContext.Request != null && httpContextAccessor.HttpContext.Request.Headers.ContainsKey("User-Agent"))
- {
- var userAgent = httpContextAccessor.HttpContext.Request.Headers["User-Agent"].FirstOrDefault();
- if (!string.IsNullOrEmpty(userAgent))
- {
- if (userAgent.Contains("iPhone") || userAgent.Contains("Android") || userAgent.Contains("Googlebot"))
- {
- sidebarExpanded = false;
- bodyExpanded = true;
- }
- }
- }*@
-
- System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
- }
-}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Shared/MainLayoutBase.cs b/WotBlitzStatisticsPro.Blazor/Shared/MainLayoutBase.cs
new file mode 100644
index 0000000..ae8ccc9
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Shared/MainLayoutBase.cs
@@ -0,0 +1,44 @@
+using System.Threading;
+using Microsoft.AspNetCore.Components;
+using Radzen;
+using Radzen.Blazor;
+
+namespace WotBlitzStatisticsPro.Blazor.Shared
+{
+ public class MainLayoutBase: LayoutComponentBase
+ {
+ [Inject]
+ private DialogService DialogService { get; set; }
+
+ public RadzenSidebar Sidebar0;
+ public RadzenBody Body0;
+ public bool SidebarExpanded { get; set; } = false;
+ public bool BodyExpanded { get; set; } = true;
+
+ protected override void OnInitialized()
+ {
+ //if (httpContextAccessor != null && httpContextAccessor.HttpContext != null &&
+ // httpContextAccessor.HttpContext.Request != null && httpContextAccessor.HttpContext.Request.Headers.ContainsKey("User-Agent"))
+ //{
+ // var userAgent = httpContextAccessor.HttpContext.Request.Headers["User-Agent"].FirstOrDefault();
+ // if (!string.IsNullOrEmpty(userAgent))
+ // {
+ // if (userAgent.Contains("iPhone") || userAgent.Contains("Android") || userAgent.Contains("Googlebot"))
+ // {
+ // SidebarExpanded = false;
+ // BodyExpanded = true;
+ // }
+ // }
+ //}
+
+
+ Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
+ }
+
+ public void InvertSideBar()
+ {
+ SidebarExpanded = !SidebarExpanded;
+ BodyExpanded = !BodyExpanded;
+ }
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/Shared/NavMenu.razor b/WotBlitzStatisticsPro.Blazor/Shared/NavMenu.razor
index 14739c5..938a908 100644
--- a/WotBlitzStatisticsPro.Blazor/Shared/NavMenu.razor
+++ b/WotBlitzStatisticsPro.Blazor/Shared/NavMenu.razor
@@ -1,6 +1,8 @@
-
-
-
-
+@inherits NavMenuBase
+
+
+
+
+
diff --git a/WotBlitzStatisticsPro.Blazor/Shared/NavMenuBase.cs b/WotBlitzStatisticsPro.Blazor/Shared/NavMenuBase.cs
new file mode 100644
index 0000000..feed43d
--- /dev/null
+++ b/WotBlitzStatisticsPro.Blazor/Shared/NavMenuBase.cs
@@ -0,0 +1,43 @@
+using System.Threading.Tasks;
+using MediatR;
+using Microsoft.AspNetCore.Components;
+using Radzen;
+using WotBlitzStatisticsPro.Blazor.Messages;
+using WotBlitzStatisticsPro.Blazor.Model;
+using WotBlitzStatisticsPro.Blazor.Services;
+
+namespace WotBlitzStatisticsPro.Blazor.Shared
+{
+ public class NavMenuBase: ComponentBase
+ {
+ [Inject]
+ public NavigationManager NavManager { get; set; }
+
+ [Inject]
+ public IMediator Mediator { get; set; }
+
+ [Inject]
+ public ISearchDialogService SearchDialogService { get; set; }
+
+ [Parameter]
+ public EventCallback CloseSideBar { get; set; }
+
+ public async Task MenuClicked(MenuItemEventArgs menuItem)
+ {
+ await CloseSideBar.InvokeAsync();
+ switch (menuItem.Text)
+ {
+ case "Home":
+ NavManager.NavigateTo("/");
+ break;
+ case "Search player":
+ await Mediator.Publish(new OpenSearchDialogMessage(DialogType.FindPlayer));
+ //await SearchDialogService.OpenSearchDialog(DialogType.FindPlayer);
+ break;
+ case "Search clan":
+ await Mediator.Publish(new OpenSearchDialogMessage(DialogType.FindClan));
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj b/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj
index 3abf995..95fc42f 100644
--- a/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj
+++ b/WotBlitzStatisticsPro.Blazor/WotBlitzStatisticsPro.Blazor.csproj
@@ -6,6 +6,8 @@
+
+
@@ -16,4 +18,8 @@
+
+
+
+
diff --git a/WotBlitzStatisticsPro.sln b/WotBlitzStatisticsPro.sln
index 686b8fc..8dc30d6 100644
--- a/WotBlitzStatisticsPro.sln
+++ b/WotBlitzStatisticsPro.sln
@@ -17,7 +17,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WotBlitzStatisticsPro.DataA
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WotBlitzStatisticsPro.Tests", "WotBlitzStatisticsPro.Tests\WotBlitzStatisticsPro.Tests.csproj", "{551C3088-C6EA-45E1-A665-7C924C8407EB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WotBlitzStatisticsPro.Blazor", "WotBlitzStatisticsPro.Blazor\WotBlitzStatisticsPro.Blazor.csproj", "{3A27736F-B5DD-4310-A013-2BB65C975104}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WotBlitzStatisticsPro.Blazor", "WotBlitzStatisticsPro.Blazor\WotBlitzStatisticsPro.Blazor.csproj", "{3A27736F-B5DD-4310-A013-2BB65C975104}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution