diff --git a/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor b/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor index 610d676..0c7ccb2 100644 --- a/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor +++ b/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor @@ -2,6 +2,7 @@ @page "/admin/client-logs" @rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false)) @attribute [Authorize] +@using Microsoft.AspNetCore.Components.Web @inject HttpClient Http 클라이언트 로그 @@ -31,6 +32,8 @@ + + @@ -67,7 +70,7 @@
@foreach (var group in _groups) { -
+
@group.Count @group.Level @@ -90,6 +93,8 @@ private bool _loading = true; private string _query = ""; private string _level = ""; + private string _source = ""; + private string _route = ""; private string _start = ""; private string _end = ""; private ClientLogSummaryDto? _summary; @@ -108,7 +113,7 @@ try { _summary = await Http.GetFromJsonAsync("/taxbaik/api/client-logs/summary"); - var url = $"/taxbaik/api/client-logs/recent?q={Uri.EscapeDataString(_query ?? string.Empty)}&level={Uri.EscapeDataString(_level ?? string.Empty)}&start={Uri.EscapeDataString(_start ?? string.Empty)}&end={Uri.EscapeDataString(_end ?? string.Empty)}"; + var url = $"/taxbaik/api/client-logs/recent?q={Uri.EscapeDataString(_query ?? string.Empty)}&level={Uri.EscapeDataString(_level ?? string.Empty)}&source={Uri.EscapeDataString(_source ?? string.Empty)}&route={Uri.EscapeDataString(_route ?? string.Empty)}&start={Uri.EscapeDataString(_start ?? string.Empty)}&end={Uri.EscapeDataString(_end ?? string.Empty)}"; var result = await Http.GetFromJsonAsync>(url); var grouped = await Http.GetFromJsonAsync>("/taxbaik/api/client-logs/groups"); if (result is not null) @@ -130,6 +135,23 @@ } } + private async Task ApplyGroupFilter(ClientLogGroupDto group) + { + _query = group.Message ?? string.Empty; + _level = group.Level ?? string.Empty; + _source = group.Source ?? string.Empty; + _route = group.Route ?? string.Empty; + await LoadAsync(); + } + + private async Task HandleGroupKeydown(KeyboardEventArgs e, ClientLogGroupDto group) + { + if (e.Key is "Enter" or " ") + { + await ApplyGroupFilter(group); + } + } + private sealed class ClientLogDto { public string? Timestamp { get; set; }