JobList filter fix
This commit is contained in:
@@ -12,25 +12,28 @@
|
||||
Expanded="true">
|
||||
<MudGrid AlignItems="Center">
|
||||
<MudItem xs="12" sm="6" md="3">
|
||||
<MudSelect T="JobStatus?"
|
||||
@bind-Value="selectedStatus"
|
||||
<MudSelect T="JobStatus"
|
||||
SelectedValues="selectedStatuses"
|
||||
Label="Status"
|
||||
Placeholder="All statuses"
|
||||
MultiSelection="true"
|
||||
Clearable="true"
|
||||
SelectedValuesChanged="OnStatusFilterChanged"
|
||||
OnClearButtonClick="OnStatusClear">
|
||||
@foreach (JobStatus status in Enum.GetValues(typeof(JobStatus)))
|
||||
{
|
||||
<MudSelectItem T="JobStatus?" Value="@status">@status.ToString()</MudSelectItem>
|
||||
<MudSelectItem T="JobStatus" Value="@status">@status.ToString()</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="3">
|
||||
<MudSelect T="JobType?"
|
||||
@bind-Value="selectedJobType"
|
||||
Value="selectedJobType"
|
||||
Label="Job Type"
|
||||
Placeholder="All types"
|
||||
Clearable="true"
|
||||
ValueChanged="OnJobTypeFilterChanged"
|
||||
OnClearButtonClick="OnJobTypeClear">
|
||||
@foreach (JobType type in Enum.GetValues(typeof(JobType)))
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@ public partial class Index : ComponentBase, IDisposable
|
||||
private bool isLoading = false;
|
||||
private int currentPage = 1;
|
||||
private int pageSize = 50;
|
||||
private JobStatus? selectedStatus = null;
|
||||
private IEnumerable<JobStatus> selectedStatuses = new HashSet<JobStatus>();
|
||||
private JobType? selectedJobType = null;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
@@ -60,7 +60,8 @@ public partial class Index : ComponentBase, IDisposable
|
||||
|
||||
try
|
||||
{
|
||||
jobs = await JobService.GetJobsAsync(currentPage, pageSize, selectedStatus, selectedJobType);
|
||||
var statusList = selectedStatuses?.ToList();
|
||||
jobs = await JobService.GetJobsAsync(currentPage, pageSize, statusList, selectedJobType);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -81,15 +82,29 @@ public partial class Index : ComponentBase, IDisposable
|
||||
|
||||
private async Task ClearFilters()
|
||||
{
|
||||
selectedStatus = null;
|
||||
selectedStatuses = new HashSet<JobStatus>();
|
||||
selectedJobType = null;
|
||||
currentPage = 1;
|
||||
await LoadJobs();
|
||||
}
|
||||
|
||||
private async Task OnStatusFilterChanged(IEnumerable<JobStatus> values)
|
||||
{
|
||||
selectedStatuses = values;
|
||||
currentPage = 1;
|
||||
await LoadJobs();
|
||||
}
|
||||
|
||||
private async Task OnJobTypeFilterChanged(JobType? value)
|
||||
{
|
||||
selectedJobType = value;
|
||||
currentPage = 1;
|
||||
await LoadJobs();
|
||||
}
|
||||
|
||||
private async Task OnStatusClear()
|
||||
{
|
||||
selectedStatus = null;
|
||||
selectedStatuses = new HashSet<JobStatus>();
|
||||
currentPage = 1;
|
||||
await LoadJobs();
|
||||
}
|
||||
|
||||
@@ -19,13 +19,18 @@ public class JobService
|
||||
PropertyNameCaseInsensitive = true
|
||||
};
|
||||
|
||||
public async Task<PagedResult<QueueJob>> GetJobsAsync(int page = 1, int pageSize = 50, JobStatus? status = null, JobType? jobType = null, Guid? layerId = null)
|
||||
public async Task<PagedResult<QueueJob>> GetJobsAsync(int page = 1, int pageSize = 50, List<JobStatus>? statuses = null, JobType? jobType = null, Guid? layerId = null)
|
||||
{
|
||||
var start = (page - 1) * pageSize;
|
||||
var query = $"Jobs?start={start}&limit={pageSize}";
|
||||
|
||||
if (status.HasValue)
|
||||
query += $"&status={(int)status.Value}";
|
||||
if (statuses != null && statuses.Count > 0)
|
||||
{
|
||||
foreach (var status in statuses)
|
||||
{
|
||||
query += $"&statuses={(int)status}";
|
||||
}
|
||||
}
|
||||
|
||||
if (jobType.HasValue)
|
||||
query += $"&jobType={(int)jobType.Value}";
|
||||
|
||||
Reference in New Issue
Block a user