CN.CAICT.IDIS.Client.Web/Components/TemplateSelector.razor

71 lines
2.3 KiB
Plaintext

@using IDIS.Models
@inject Services.IDIS_TemplateService templateService
@using Cysharp.Threading.Tasks
@using BITKit
<div class="d-flex flex-grow-1 gap-4 py-2">
<MudText Class="flex-1 d-flex" Typo="Typo.h6">选择标识模板</MudText>
<MudButton Class="d-flex" Variant="Variant.Outlined" OnClick="() => Refresh().Forget()">刷新</MudButton>
</div>
<MudAlert Severity="severity">@currentMessage</MudAlert>
@if (templates.Length is not 0)
{
<MudStack>
@foreach (var item in templates)
{
<MudButton
Class="pa-2"
Variant="Variant.Outlined"
OnClick="() => OnSelectTemplate.Invoke(item)">
@(item.Prefix)/@(item.Version)
</MudButton>
}
</MudStack>
}
else
{
<MudStack Spacing="4">
@for (var i = 0; i < 5; i++)
{
<MudSkeleton />
}
</MudStack>
}
@code {
[Parameter]
public Reference<TemplateSelector>? Reference { get; set; }
private IDIS_Template[] templates = Array.Empty<IDIS_Template>();
private string currentMessage { get; set; } = "模板为空?试着刷新一下";
private Severity severity { get; set; } = Severity.Normal;
[Parameter]
public Action<IDIS_Template> OnSelectTemplate { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
if (Reference is not null)
Reference.value = this;
}
public async UniTask Refresh()
{
templates = Array.Empty<IDIS_Template>();
await InvokeAsync(StateHasChanged);
currentMessage = "正在刷新模板";
severity = Severity.Info;
try
{
templates = await templateService.ToArrayAsync();
currentMessage = "模板刷新完成";
severity = Severity.Info;
}
catch (Exception e)
{
currentMessage = e.Message;
severity = Severity.Error;
}
await InvokeAsync(StateHasChanged);
}
}