Files
DiunaBI/DiunaBI.UI.Shared/Components/LayerListComponent.razor

89 lines
3.9 KiB
Plaintext
Raw Normal View History

2025-11-06 10:20:00 +01:00
@using MudBlazor.Internal
2025-12-01 13:21:45 +01:00
@using DiunaBI.Application.DTOModels
2025-11-06 10:20:00 +01:00
<MudExpansionPanels Class="mb-4">
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
2025-11-20 21:03:19 +01:00
Text="Filters"
2025-11-06 10:20:00 +01:00
Expanded="true">
2025-12-01 13:21:45 +01:00
<MudGrid AlignItems="Center">
2025-11-06 10:20:00 +01:00
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Search"
2025-11-20 21:03:19 +01:00
Label="Search"
Placeholder="Name, number..."
2025-11-06 10:20:00 +01:00
Immediate="true"
DebounceInterval="500"
2025-11-19 18:51:09 +01:00
OnDebounceIntervalElapsed="SearchLayers"
2025-11-06 10:20:00 +01:00
Clearable="true"/>
</MudItem>
2025-11-20 21:03:19 +01:00
2025-11-06 10:20:00 +01:00
<MudItem xs="12" sm="6" md="4">
2025-12-01 13:21:45 +01:00
<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"
Color="Color.Default"
Size="Size.Medium"
Title="Clear filters"/>
2025-11-06 10:20:00 +01:00
</MudItem>
</MudGrid>
</MudExpansionPanel>
</MudExpansionPanels>
<MudDivider Class="my-4"></MudDivider>
<MudTable Items="layers.Items"
Dense="true"
Hover="true"
Loading="isLoading"
2025-12-02 13:43:01 +01:00
LoadingProgressColor="Color.Primary"
2025-11-20 21:03:19 +01:00
OnRowClick="@((TableRowClickEventArgs<LayerDto> args) => OnRowClick(args.Item))"
T="LayerDto"
Style="cursor: pointer;">
2025-11-06 10:20:00 +01:00
<HeaderContent>
2025-11-19 18:51:09 +01:00
<MudTh>Name</MudTh>
<MudTh>Type</MudTh>
2025-11-06 10:20:00 +01:00
</HeaderContent>
2025-12-02 13:43:01 +01:00
<RowTemplate Context="row">
<MudTd DataLabel="Name"><div @oncontextmenu="@(async (e) => await OnRowRightClick(e, row))" @oncontextmenu:preventDefault="true">@row.Name</div></MudTd>
<MudTd DataLabel="Type"><div @oncontextmenu="@(async (e) => await OnRowRightClick(e, row))" @oncontextmenu:preventDefault="true">@row.Type</div></MudTd>
2025-11-06 10:20:00 +01:00
</RowTemplate>
<NoRecordsContent>
2025-11-19 18:51:09 +01:00
<MudText>No layers to display</MudText>
2025-11-06 10:20:00 +01:00
</NoRecordsContent>
<LoadingContent>
2025-11-20 21:03:19 +01:00
Loading...
2025-11-06 10:20:00 +01:00
</LoadingContent>
</MudTable>
@if (layers.TotalCount > 0)
{
<MudGrid Class="mt-4" AlignItems="Center.Center">
<MudItem xs="12" sm="6">
<MudText Typo="Typo.body2">
2025-11-20 21:03:19 +01:00
Results @((layers.Page - 1) * layers.PageSize + 1) - @Math.Min(layers.Page * layers.PageSize, layers.TotalCount)
of @layers.TotalCount
2025-11-06 10:20:00 +01:00
</MudText>
</MudItem>
<MudItem xs="12" sm="6" Class="d-flex justify-end">
<MudPagination Count="layers.TotalPages"
Selected="layers.Page"
SelectedChanged="OnPageChanged"
ShowFirstButton="true"
2025-12-01 12:35:22 +01:00
ShowLastButton="true"
Variant="Variant.Outlined"
/>
2025-11-06 10:20:00 +01:00
</MudItem>
</MudGrid>
2025-12-01 12:35:22 +01:00
}