Updated search logic. More UI updates.
This commit is contained in:
@@ -18,67 +18,6 @@
|
||||
</MudTabPanel>
|
||||
</MudTabs>
|
||||
|
||||
<style>
|
||||
.j-product-items-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.j-voice-work-card {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
background-image: linear-gradient(0deg, rgb(30, 53, 69), rgb(39, 59, 73));
|
||||
border-color: rgb(63, 78, 88);
|
||||
background-image: linear-gradient(0deg, rgb(30, 53, 69), rgb(57, 79, 94));
|
||||
}
|
||||
|
||||
.j-voice-work-image-container {
|
||||
width: 240px;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.j-voice-work-card > .j-voice-work-image-container {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.j-voice-work-image {
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.j-voice-work-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: .5rem;
|
||||
}
|
||||
|
||||
.j-voice-work-card > .j-voice-work-content {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.j-product-title {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
font-family: "Poppins", "M+ 1p";
|
||||
color: #d2dce6;
|
||||
text-shadow: 1px 1px 2px black;
|
||||
}
|
||||
|
||||
.j-product-description {
|
||||
/* color: #7C8099; */
|
||||
font-size: 1rem;
|
||||
font-family: "Poppins", "M+ 1p";
|
||||
}
|
||||
|
||||
.j-voice-work-info {
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
.j-voice-work-card > .j-voice-work-info {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@code {
|
||||
VoiceWorkSearchResult[]? availableVoiceWorks;
|
||||
VoiceWorkSearchResult[]? upcomingVoiceWorks;
|
||||
|
||||
@@ -14,6 +14,39 @@
|
||||
<div class="search-filter-control-span-4">
|
||||
<MudTextField T="string" Value="Keywords" ValueChanged="OnKeywordsChanged" Immediate="true" DebounceInterval="500" Label="Filter" Variant="Variant.Text" Adornment="@Adornment.Start" AdornmentIcon="@Icons.Material.Outlined.Search" />
|
||||
</div>
|
||||
<div class="search-filter-control-span-1">
|
||||
<MudSelect T="string" Value="SelectedSaleStatus" ValueChanged="OnSaleStatusChanged" Label="Sale Status" Variant="Variant.Text">
|
||||
<MudSelectItem Value="@SaleStatus.Available.ToString()">Available</MudSelectItem>
|
||||
<MudSelectItem Value="@SaleStatus.Upcoming.ToString()">Upcoming</MudSelectItem>
|
||||
<MudSelectItem Value="@String.Empty">All</MudSelectItem>
|
||||
</MudSelect>
|
||||
</div>
|
||||
<div class="search-filter-control-span-1">
|
||||
<MudSelect T="string" Value="SelectedCircleStatus" ValueChanged="OnCircleStatusChanged" Label="Circle Status" Variant="Variant.Text">
|
||||
<MudSelectItem Value="@CircleStatus.NotBlacklisted.ToString()">Not Blacklisted</MudSelectItem>
|
||||
<MudSelectItem Value="@CircleStatus.Favorited.ToString()">Favorite</MudSelectItem>
|
||||
<MudSelectItem Value="@CircleStatus.Blacklisted.ToString()">Blacklisted</MudSelectItem>
|
||||
<MudSelectItem Value="@String.Empty">All</MudSelectItem>
|
||||
</MudSelect>
|
||||
</div>
|
||||
<div class="search-filter-control-span-1">
|
||||
<MudSelect T="string" Value="SelectedTagStatus" ValueChanged="OnTagStatusChanged" Label="Tag Status" Dense="true" Variant="Variant.Outlined" Margin="Margin.Dense" Adornment="@Adornment.Start" AdornmentIcon="@Icons.Material.Outlined.Search">
|
||||
<MudSelectItem Value="@TagStatus.NotBlacklisted.ToString()">Not Blacklisted</MudSelectItem>
|
||||
<MudSelectItem Value="@TagStatus.FavoriteExcludeBlacklist.ToString()">Favorite (Exclude Blacklisted)</MudSelectItem>
|
||||
<MudSelectItem Value="@TagStatus.FavoriteIncludeBlacklist.ToString()">Favorite (Include Blacklisted)</MudSelectItem>
|
||||
<MudSelectItem Value="@TagStatus.Blacklisted.ToString()">Blacklisted</MudSelectItem>
|
||||
<MudSelectItem Value="@String.Empty">All</MudSelectItem>
|
||||
</MudSelect>
|
||||
</div>
|
||||
<div class="search-filter-control-span-1">
|
||||
<MudSelect T="string" Value="SelectedCreatorStatus" ValueChanged="OnCreatorStatusChanged" Label="Creator Status" Dense="true" Variant="Variant.Outlined" Margin="Margin.Dense" Adornment="@Adornment.Start" AdornmentIcon="@Icons.Material.Outlined.Search">
|
||||
<MudSelectItem Value="@CreatorStatus.NotBlacklisted.ToString()">Not Blacklisted</MudSelectItem>
|
||||
<MudSelectItem Value="@CreatorStatus.FavoriteExcludeBlacklist.ToString()">Favorite (Exclude Blacklisted)</MudSelectItem>
|
||||
<MudSelectItem Value="@CreatorStatus.FavoriteIncludeBlacklist.ToString()">Favorite (Include Blacklisted)</MudSelectItem>
|
||||
<MudSelectItem Value="@CreatorStatus.Blacklisted.ToString()">Blacklisted</MudSelectItem>
|
||||
<MudSelectItem Value="@String.Empty">All</MudSelectItem>
|
||||
</MudSelect>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<JProductCollection Products="searchResults?.Items"></JProductCollection>
|
||||
@@ -25,6 +58,10 @@
|
||||
|
||||
@code {
|
||||
public string? Keywords { get; set; }
|
||||
public string? SelectedSaleStatus { get; set; } = string.Empty;
|
||||
public string? SelectedCircleStatus { get; set; } = string.Empty;
|
||||
public string? SelectedTagStatus { get; set; } = string.Empty;
|
||||
public string? SelectedCreatorStatus { get; set; } = string.Empty;
|
||||
public int PageNumber { get; set; } = 1;
|
||||
public int PageSize { get; set; } = 100;
|
||||
|
||||
@@ -48,11 +85,15 @@
|
||||
Criteria = new()
|
||||
{
|
||||
Keywords = Keywords,
|
||||
SupportedLanguages = [Domain.Enums.Language.English]
|
||||
SaleStatus = string.IsNullOrWhiteSpace(SelectedSaleStatus) == false ? Enum.Parse<SaleStatus>(SelectedSaleStatus) : null,
|
||||
CircleStatus = string.IsNullOrWhiteSpace(SelectedCircleStatus) == false ? Enum.Parse<CircleStatus>(SelectedCircleStatus) : null,
|
||||
TagStatus = string.IsNullOrWhiteSpace(SelectedTagStatus) == false ? Enum.Parse<TagStatus>(SelectedTagStatus) : null,
|
||||
CreatorStatus = string.IsNullOrWhiteSpace(SelectedCreatorStatus) == false ? Enum.Parse<CreatorStatus>(SelectedCreatorStatus) : null,
|
||||
//SupportedLanguages = [Domain.Enums.Language.English]
|
||||
},
|
||||
SortOptions =
|
||||
[
|
||||
new(VoiceWorkSortField.ReleaseDate, Application.Common.Search.SortDirection.Descending)
|
||||
new(GetSortField(), Application.Common.Search.SortDirection.Descending)
|
||||
],
|
||||
PageNumber = PageNumber,
|
||||
PageSize = PageSize
|
||||
@@ -70,6 +111,30 @@
|
||||
await UpdateDataAsync(true);
|
||||
}
|
||||
|
||||
public async Task OnSaleStatusChanged(string? saleStatus)
|
||||
{
|
||||
SelectedSaleStatus = saleStatus;
|
||||
await UpdateDataAsync(true);
|
||||
}
|
||||
|
||||
public async Task OnCircleStatusChanged(string? circleStatus)
|
||||
{
|
||||
SelectedCircleStatus = circleStatus;
|
||||
await UpdateDataAsync(true);
|
||||
}
|
||||
|
||||
public async Task OnTagStatusChanged(string? tagStatus)
|
||||
{
|
||||
SelectedTagStatus = tagStatus;
|
||||
await UpdateDataAsync(true);
|
||||
}
|
||||
|
||||
public async Task OnCreatorStatusChanged(string? creatorStatus)
|
||||
{
|
||||
SelectedCreatorStatus = creatorStatus;
|
||||
await UpdateDataAsync(true);
|
||||
}
|
||||
|
||||
public async Task OnPageNumberChanged(int newPageNumber)
|
||||
{
|
||||
PageNumber = newPageNumber;
|
||||
@@ -81,4 +146,19 @@
|
||||
PageSize = newPageSize;
|
||||
await UpdateDataAsync(true);
|
||||
}
|
||||
|
||||
private VoiceWorkSortField GetSortField()
|
||||
{
|
||||
SaleStatus? saleStatus = string.IsNullOrWhiteSpace(SelectedSaleStatus) == false ? Enum.Parse<SaleStatus>(SelectedSaleStatus) : null;
|
||||
|
||||
switch (saleStatus)
|
||||
{
|
||||
case SaleStatus.Available:
|
||||
return VoiceWorkSortField.ReleaseDate;
|
||||
case SaleStatus.Upcoming:
|
||||
return VoiceWorkSortField.ExpectedReleaseDate;
|
||||
default:
|
||||
return VoiceWorkSortField.AnyReleaseDate;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user