@page "/circles" @using JSMR.Application.Circles.Queries.Search @using JSMR.Application.Common.Search @using JSMR.UI.Blazor.Components @using JSMR.UI.Blazor.Services @inject VoiceWorksClient Client @inject IJSRuntime JS @inject HttpClient Http Circles

Circles

Not Blacklisted Favorite Blacklisted Spam All
@if (searchResults is null) {

Loading…

} else if (searchResults.Items.Length == 0) {

No results.

} else { @if (context.Item.Favorite) { Favorite } else if (context.Item.Blacklisted) { Blacklisted } else if (context.Item.Spam) { Spam } else { Normal } @if (context.Item.Releases > 0) {
}
@context.Item.FirstReleaseDate?.ToString("MMMM d, yyyy") @context.Item.LatestReleaseDate?.ToString("MMMM d, yyyy")
@*
@foreach (var item in searchResults.Items) { @item.Name
@item.Releases
@item.Pending
@if (item.Releases > 0) {
}
@item.Downloads
@item.Downloads.ToString("n0")
@item.FirstReleaseDate?.ToString("MMMM d, yyyy")
@item.LatestReleaseDate?.ToString("MMMM d, yyyy")
}
*@ @* *@ } @code { private string? keywords; public string? Keywords { get { return keywords; } set { keywords = value; _ = UpdateDataAsync(true); } } private string circleStatus = string.Empty; public string SelectedCircleStatus { get { return circleStatus; } set { circleStatus = value; _ = UpdateDataAsync(true); } } private int pageNumber = 1; public int PageNumber { get { return pageNumber; } set { pageNumber = value; _ = UpdateDataAsync(false); } } int pageSize = 100; SearchResult? searchResults; protected override Task OnInitializedAsync() { _ = LoadCirclesAsync(); return Task.CompletedTask; } private async Task LoadCirclesAsync() { SearchCirclesRequest request = new( Options: new() { PageNumber = PageNumber, PageSize = pageSize, Criteria = new() { Name = Keywords, Status = string.IsNullOrWhiteSpace(SelectedCircleStatus) == false ? Enum.Parse(SelectedCircleStatus) : null }, SortOptions = [ new(CircleSortField.Name, Application.Common.Search.SortDirection.Ascending) ] } ); await JS.InvokeVoidAsync("pageHelpers.scrollToTop"); var result = await Client.SearchAsync(request); searchResults = result?.Results ?? new(); await InvokeAsync(StateHasChanged); } private async Task UpdateDataAsync(bool resetPageNumber) { if (resetPageNumber) pageNumber = 1; await LoadCirclesAsync(); } private string GetStarRatingClass(CircleSearchItem item) { double averageDownloads = item.Downloads / item.Releases; if (averageDownloads < 100) { return "circle-star-poor"; } if (averageDownloads < 250) { return "circle-star-below-average"; } if (averageDownloads < 500) { return "circle-star-average"; } if (averageDownloads < 1000) { return "circle-star-above-average"; } if (averageDownloads < 2000) { return "circle-star-popular"; } if (averageDownloads < 4000) { return "circle-star-super-popular"; } if (averageDownloads < 8000) { return "circle-star-ultra-popular"; } return "circle-star-god-tier"; } }