CN.CAICT.IDIS.Client.Web/Components/Pages/QueryRegistration.razor

92 lines
3.1 KiB
Plaintext

@using IDIS.Services
@using IDIS.Models
@using IDIS.Services.Models
@using Microsoft.EntityFrameworkCore
@using IDIS_Server_SIM.Data
@using Cysharp.Threading.Tasks
@inject IDIS_Service_MySQLBased service
@inject QueryService queryService
@inject IDIS_Statistics_MySQLBased statistics
@page "/query/registration"
<MudText Typo="Typo.h3" GutterBottom="true">最新的标识动态</MudText>
<MudGrid>
<MudItem xs="3">
<MudAlert>数据图表</MudAlert>
<div>
<MudChart ChartSeries="@series" ChartType="ChartType.Line"></MudChart>
</div>
</MudItem>
<MudItem xs="9">
<MudAlert>搜索条件</MudAlert>
<DynamicTags OnSelectedChipsChanged="OnSelectedChipsChanged"></DynamicTags>
</MudItem>
</MudGrid>
<MudGrid>
<MudItem xs="6">
<MudAlert>最新注册的标识</MudAlert>
@foreach (var item in data)
{
<MudStack Row="true" Class="align-center">
<MudAlert Severity="Severity.Info">@item.Handle</MudAlert>
<MudText>@item.RegistrationTime</MudText>
</MudStack>
}
</MudItem>
<MudItem xs="6">
<MudAlert>最新解析的标识</MudAlert>
@foreach (var item in queryRecords)
{
<MudStack Row="true" Class="align-center">
<MudAlert Severity="Severity.Info">@item.Handle</MudAlert>
<MudText>@item.QueryTime</MudText>
</MudStack>
}
</MudItem>
</MudGrid>
@code {
private IDIS_SQL_Handle[] data { get; set; } = Array.Empty<IDIS_SQL_Handle>();
private IDIS_QueryRecord[] queryRecords { get; set; } = Array.Empty<IDIS_QueryRecord>();
private string[] handles { get; set; } = Array.Empty<string>();
private string[] tags { get; set; } = Array.Empty<string>();
public List<ChartSeries> series { get; set; }= new List<ChartSeries>()
{
new ChartSeries() { Name = "注册数量", Data = new double[] { 90, 79, 72, 69, 62, 62, 55, 65, 70 } },
new ChartSeries() { Name = "解析数量", Data = new double[] { 90, 79, 72, 69, 62, 62, 55, 65, 70 } },
};
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender) return;
await Rebuild();
await InvokeAsync(StateHasChanged);
}
private async void OnSelectedChipsChanged(MudChip[] obj)
{
tags = obj.Select(x => x.Text).ToArray();
handles = await queryService.QueryByTag(false, tags);
await Rebuild();
await InvokeAsync(StateHasChanged);
}
private async UniTask Rebuild()
{
data = (await service.handles.ToArrayAsync())
.Where(x=>handles.Length is 0 || handles.Contains(x.Handle))
.OrderBy(x=>x.RegistrationTime).Reverse().ToArray();
queryRecords = (await queryService.QueryRecordsByTag(false, tags));
series[0].Data = data
.GroupBy(x => x.RegistrationTime.Date.Day)
.Select(x => (double)x.Count()).ToArray();
series[1].Data = queryRecords
.GroupBy(x => x.QueryTime.Date.Day)
.Select(x => (double)x.Count()).ToArray();
}
}