This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
@page "/admin/client-logs"
|
@page "/admin/client-logs"
|
||||||
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false))
|
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false))
|
||||||
@attribute [Authorize]
|
@attribute [Authorize]
|
||||||
|
@using Microsoft.AspNetCore.Components.Web
|
||||||
@inject HttpClient Http
|
@inject HttpClient Http
|
||||||
|
|
||||||
<PageTitle>클라이언트 로그</PageTitle>
|
<PageTitle>클라이언트 로그</PageTitle>
|
||||||
@@ -31,6 +32,8 @@
|
|||||||
<option value="warning">warning</option>
|
<option value="warning">warning</option>
|
||||||
<option value="info">info</option>
|
<option value="info">info</option>
|
||||||
</select>
|
</select>
|
||||||
|
<input class="mud-input-slot" placeholder="source" @bind="_source" @bind:event="oninput" />
|
||||||
|
<input class="mud-input-slot" placeholder="route" @bind="_route" @bind:event="oninput" />
|
||||||
<input class="mud-input-slot" placeholder="시작 ISO 시각" @bind="_start" @bind:event="oninput" />
|
<input class="mud-input-slot" placeholder="시작 ISO 시각" @bind="_start" @bind:event="oninput" />
|
||||||
<input class="mud-input-slot" placeholder="종료 ISO 시각" @bind="_end" @bind:event="oninput" />
|
<input class="mud-input-slot" placeholder="종료 ISO 시각" @bind="_end" @bind:event="oninput" />
|
||||||
<button type="button" class="mud-button-root" @onclick="LoadAsync">새로고침</button>
|
<button type="button" class="mud-button-root" @onclick="LoadAsync">새로고침</button>
|
||||||
@@ -67,7 +70,7 @@
|
|||||||
<div class="admin-log-group-list">
|
<div class="admin-log-group-list">
|
||||||
@foreach (var group in _groups)
|
@foreach (var group in _groups)
|
||||||
{
|
{
|
||||||
<article class="admin-log-group-item">
|
<article class="admin-log-group-item" role="button" tabindex="0" @onclick="() => ApplyGroupFilter(group)" @onkeydown="e => HandleGroupKeydown(e, group)">
|
||||||
<div class="admin-log-item-header">
|
<div class="admin-log-item-header">
|
||||||
<strong>@group.Count</strong>
|
<strong>@group.Count</strong>
|
||||||
<span>@group.Level</span>
|
<span>@group.Level</span>
|
||||||
@@ -90,6 +93,8 @@
|
|||||||
private bool _loading = true;
|
private bool _loading = true;
|
||||||
private string _query = "";
|
private string _query = "";
|
||||||
private string _level = "";
|
private string _level = "";
|
||||||
|
private string _source = "";
|
||||||
|
private string _route = "";
|
||||||
private string _start = "";
|
private string _start = "";
|
||||||
private string _end = "";
|
private string _end = "";
|
||||||
private ClientLogSummaryDto? _summary;
|
private ClientLogSummaryDto? _summary;
|
||||||
@@ -108,7 +113,7 @@
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
_summary = await Http.GetFromJsonAsync<ClientLogSummaryDto>("/taxbaik/api/client-logs/summary");
|
_summary = await Http.GetFromJsonAsync<ClientLogSummaryDto>("/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<List<ClientLogDto>>(url);
|
var result = await Http.GetFromJsonAsync<List<ClientLogDto>>(url);
|
||||||
var grouped = await Http.GetFromJsonAsync<List<ClientLogGroupDto>>("/taxbaik/api/client-logs/groups");
|
var grouped = await Http.GetFromJsonAsync<List<ClientLogGroupDto>>("/taxbaik/api/client-logs/groups");
|
||||||
if (result is not null)
|
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
|
private sealed class ClientLogDto
|
||||||
{
|
{
|
||||||
public string? Timestamp { get; set; }
|
public string? Timestamp { get; set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user