Filter Layers by Type
This commit is contained in:
@@ -92,20 +92,15 @@ public class DataInboxController : Controller
|
|||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("GetAll")]
|
[Route("GetAll")]
|
||||||
public IActionResult GetAll([FromQuery] int start, [FromQuery] int limit, [FromQuery] string? name, [FromQuery] string? source)
|
public IActionResult GetAll([FromQuery] int start, [FromQuery] int limit, [FromQuery] string? search)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var query = _db.DataInbox.AsQueryable();
|
var query = _db.DataInbox.AsQueryable();
|
||||||
|
|
||||||
if (name != null)
|
if (!string.IsNullOrEmpty(search))
|
||||||
{
|
{
|
||||||
query = query.Where(x => x.Name.Contains(name));
|
query = query.Where(x => x.Name.Contains(search) || x.Source.Contains(search));
|
||||||
}
|
|
||||||
|
|
||||||
if (source != null)
|
|
||||||
{
|
|
||||||
query = query.Where(x => x.Source.Contains(source));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var totalCount = query.Count();
|
var totalCount = query.Count();
|
||||||
@@ -133,8 +128,8 @@ public class DataInboxController : Controller
|
|||||||
PageSize = limit
|
PageSize = limit
|
||||||
};
|
};
|
||||||
|
|
||||||
_logger.LogDebug("GetAll: Retrieved {Count} of {TotalCount} data inbox items (page {Page}) with filter name={Name}, source={Source}",
|
_logger.LogDebug("GetAll: Retrieved {Count} of {TotalCount} data inbox items (page {Page}) with filter search={Search}",
|
||||||
items.Count, totalCount, pagedResult.Page, name, source);
|
items.Count, totalCount, pagedResult.Page, search);
|
||||||
|
|
||||||
return Ok(pagedResult);
|
return Ok(pagedResult);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
|
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
|
||||||
Text="Filters"
|
Text="Filters"
|
||||||
Expanded="true">
|
Expanded="true">
|
||||||
<MudGrid>
|
<MudGrid AlignItems="Center">
|
||||||
<MudItem xs="12" sm="6" md="4">
|
<MudItem xs="12" sm="6" md="4">
|
||||||
<MudTextField @bind-Value="filterRequest.Search"
|
<MudTextField @bind-Value="filterRequest.Search"
|
||||||
Label="Search"
|
Label="Search"
|
||||||
@@ -12,15 +12,17 @@
|
|||||||
DebounceInterval="500"
|
DebounceInterval="500"
|
||||||
OnDebounceIntervalElapsed="SearchDataInbox"
|
OnDebounceIntervalElapsed="SearchDataInbox"
|
||||||
Clearable="true"/>
|
Clearable="true"/>
|
||||||
|
|
||||||
</MudItem>
|
</MudItem>
|
||||||
|
|
||||||
<MudItem xs="12" sm="6" md="4">
|
<MudItem xs="12" sm="6" md="4">
|
||||||
<MudButton Variant="Variant.Outlined"
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem xs="12" sm="12" md="4" Class="d-flex justify-end">
|
||||||
|
<MudIconButton Icon="@Icons.Material.Filled.Clear"
|
||||||
OnClick="ClearFilters"
|
OnClick="ClearFilters"
|
||||||
StartIcon="Icons.Material.Filled.Clear">
|
Color="Color.Default"
|
||||||
Clear filters
|
Size="Size.Medium"
|
||||||
</MudButton>
|
Title="Clear filters"/>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
</MudExpansionPanel>
|
</MudExpansionPanel>
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
@using MudBlazor.Internal
|
@using MudBlazor.Internal
|
||||||
|
@using DiunaBI.Application.DTOModels
|
||||||
<MudExpansionPanels Class="mb-4">
|
<MudExpansionPanels Class="mb-4">
|
||||||
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
|
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
|
||||||
Text="Filters"
|
Text="Filters"
|
||||||
Expanded="true">
|
Expanded="true">
|
||||||
<MudGrid>
|
<MudGrid AlignItems="Center">
|
||||||
<MudItem xs="12" sm="6" md="4">
|
<MudItem xs="12" sm="6" md="4">
|
||||||
<MudTextField @bind-Value="filterRequest.Search"
|
<MudTextField @bind-Value="filterRequest.Search"
|
||||||
Label="Search"
|
Label="Search"
|
||||||
@@ -12,15 +13,29 @@
|
|||||||
DebounceInterval="500"
|
DebounceInterval="500"
|
||||||
OnDebounceIntervalElapsed="SearchLayers"
|
OnDebounceIntervalElapsed="SearchLayers"
|
||||||
Clearable="true"/>
|
Clearable="true"/>
|
||||||
|
|
||||||
</MudItem>
|
</MudItem>
|
||||||
|
|
||||||
<MudItem xs="12" sm="6" md="4">
|
<MudItem xs="12" sm="6" md="4">
|
||||||
<MudButton Variant="Variant.Outlined"
|
<MudSelect T="LayerType?"
|
||||||
|
Value="filterRequest.Type"
|
||||||
|
ValueChanged="OnTypeChanged"
|
||||||
|
Label="Type"
|
||||||
|
Placeholder="All types"
|
||||||
|
Clearable="true"
|
||||||
|
OnClearButtonClick="OnTypeClear">
|
||||||
|
@foreach (LayerType type in Enum.GetValues(typeof(LayerType)))
|
||||||
|
{
|
||||||
|
<MudSelectItem T="LayerType?" Value="@type">@type.ToString()</MudSelectItem>
|
||||||
|
}
|
||||||
|
</MudSelect>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem xs="12" sm="12" md="4" Class="d-flex justify-end">
|
||||||
|
<MudIconButton Icon="@Icons.Material.Filled.Clear"
|
||||||
OnClick="ClearFilters"
|
OnClick="ClearFilters"
|
||||||
StartIcon="Icons.Material.Filled.Clear">
|
Color="Color.Default"
|
||||||
Clear filters
|
Size="Size.Medium"
|
||||||
</MudButton>
|
Title="Clear filters"/>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
</MudExpansionPanel>
|
</MudExpansionPanel>
|
||||||
|
|||||||
@@ -58,6 +58,20 @@ public partial class LayerListComponent : ComponentBase
|
|||||||
await LoadLayers();
|
await LoadLayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task OnTypeClear()
|
||||||
|
{
|
||||||
|
filterRequest.Type = null;
|
||||||
|
filterRequest.Page = 1;
|
||||||
|
await LoadLayers();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnTypeChanged(LayerType? type)
|
||||||
|
{
|
||||||
|
filterRequest.Type = type;
|
||||||
|
filterRequest.Page = 1;
|
||||||
|
await LoadLayers();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnRowClick(LayerDto layer)
|
private void OnRowClick(LayerDto layer)
|
||||||
{
|
{
|
||||||
NavigationManager.NavigateTo($"/layers/{layer.Id}");
|
NavigationManager.NavigateTo($"/layers/{layer.Id}");
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
<AuthGuard>
|
<AuthGuard>
|
||||||
<MudThemeProvider Theme="_theme"/>
|
<MudThemeProvider Theme="_theme"/>
|
||||||
|
<MudPopoverProvider/>
|
||||||
<MudDialogProvider/>
|
<MudDialogProvider/>
|
||||||
<MudSnackbarProvider/>
|
<MudSnackbarProvider/>
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,9 @@ public class DataInboxService
|
|||||||
var query = $"DataInbox/GetAll?start={start}&limit={filterRequest.PageSize}";
|
var query = $"DataInbox/GetAll?start={start}&limit={filterRequest.PageSize}";
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(filterRequest.Search))
|
if (!string.IsNullOrEmpty(filterRequest.Search))
|
||||||
query += $"&name={Uri.EscapeDataString(filterRequest.Search)}";
|
{
|
||||||
|
query += $"&search={Uri.EscapeDataString(filterRequest.Search)}";
|
||||||
|
}
|
||||||
|
|
||||||
var response = await _httpClient.GetAsync(query);
|
var response = await _httpClient.GetAsync(query);
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
|
|||||||
@@ -28,10 +28,8 @@ public class LayerService
|
|||||||
if (!string.IsNullOrEmpty(filterRequest.Search))
|
if (!string.IsNullOrEmpty(filterRequest.Search))
|
||||||
query += $"&name={Uri.EscapeDataString(filterRequest.Search)}";
|
query += $"&name={Uri.EscapeDataString(filterRequest.Search)}";
|
||||||
|
|
||||||
/*
|
if (filterRequest.Type.HasValue)
|
||||||
if (type.HasValue)
|
query += $"&type={(int)filterRequest.Type.Value}";
|
||||||
query += $"&type={type.Value}";
|
|
||||||
*/
|
|
||||||
|
|
||||||
var response = await _httpClient.GetAsync(query);
|
var response = await _httpClient.GetAsync(query);
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
|
|||||||
Reference in New Issue
Block a user