add MudDatePicker in to Filtering Invoice List
This commit is contained in:
@@ -1,58 +1,100 @@
|
||||
@using MudBlazor.Internal
|
||||
@using System.Data
|
||||
<MudText Typo="Typo.h4" Class="mb-4">Lista Faktur</MudText>
|
||||
|
||||
<MudExpansionPanels Class="mb-4">
|
||||
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
|
||||
Text="Filtry"
|
||||
Expanded="true">
|
||||
<MudGrid>
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.Search"
|
||||
Label="Szukaj"
|
||||
Placeholder="Numer dokumentu, klient..."
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true"/>
|
||||
</MudItem>
|
||||
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
|
||||
Text="Filtry"
|
||||
Expanded="true">
|
||||
<MudGrid>
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.Search"
|
||||
Label="Szukaj"
|
||||
Placeholder="Numer dokumentu, klient..."
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.DocumentNo"
|
||||
Label="Numer dokumentu"
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true"/>
|
||||
</MudItem>
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.DocumentNo"
|
||||
Label="Numer dokumentu"
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.ClientName"
|
||||
Label="Nazwa klienta"
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true"/>
|
||||
</MudItem>
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.Type"
|
||||
Label="Typ dokumentu"
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.Type"
|
||||
Label="Typ dokumentu"
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true"/>
|
||||
</MudItem>
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudTextField @bind-Value="filterRequest.ClientName"
|
||||
Label="Nazwa klienta"
|
||||
Immediate="true"
|
||||
DebounceInterval="500"
|
||||
OnDebounceIntervalElapsed="SearchInvoices"
|
||||
Clearable="true" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudDatePicker @bind-Date="filterRequest.RegisterDateFrom"
|
||||
Label="Data rejestracji od"
|
||||
DateFormat="dd.MM.yyyy"
|
||||
Editable="true"
|
||||
Clearable="true"
|
||||
Immediate="true"
|
||||
@bind-Date:after="OnFilterChanged" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudDatePicker @bind-Date="filterRequest.RegisterDateTo"
|
||||
Label="Data rejestracji do"
|
||||
DateFormat="d.MM.yyyy"
|
||||
Editable="true"
|
||||
Clearable="true"
|
||||
Immediate="true"
|
||||
@bind-Date:after="OnFilterChanged" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudDatePicker @bind-Date="filterRequest.SellDateFrom"
|
||||
Label="Data sprzedaży od"
|
||||
DateFormat="d.MM.yyyy"
|
||||
Editable="true"
|
||||
Clearable="true"
|
||||
Immediate="true"
|
||||
@bind-Date:after="OnFilterChanged" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudDatePicker @bind-Date="filterRequest.SellDateTo"
|
||||
Label="Data sprzedaży do"
|
||||
DateFormat="d.MM.yyyy"
|
||||
Editable="true"
|
||||
Clearable="true"
|
||||
Immediate="true"
|
||||
@bind-Date:after="OnFilterChanged" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudButton Variant="Variant.Outlined"
|
||||
OnClick="ClearFilters"
|
||||
StartIcon="Icons.Material.Filled.Clear">
|
||||
Wyczyść filtry
|
||||
</MudButton>
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
</MudExpansionPanel>
|
||||
</MudExpansionPanels>
|
||||
|
||||
<MudItem xs="12" sm="6" md="4">
|
||||
<MudButton Variant="Variant.Outlined"
|
||||
OnClick="ClearFilters"
|
||||
StartIcon="Icons.Material.Filled.Clear">
|
||||
Wyczyść filtry
|
||||
</MudButton>
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
</MudExpansionPanel>
|
||||
</MudExpansionPanels>
|
||||
|
||||
<MudDivider Class="my-4"></MudDivider>
|
||||
|
||||
@@ -100,7 +142,7 @@
|
||||
|
||||
@if (invoices.TotalCount > 0)
|
||||
{
|
||||
<MudGrid Class="mt-4" AlignItems="Center.Center">
|
||||
<MudGrid Class="mt-4" AlignItems="Center">
|
||||
<MudItem xs="12" sm="6">
|
||||
<MudText Typo="Typo.body2">
|
||||
Wyniki @((invoices.Page - 1) * invoices.PageSize + 1) - @Math.Min(invoices.Page * invoices.PageSize, invoices.TotalCount)
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace BimAI.UI.Shared.Components;
|
||||
public partial class InvoiceListComponent : ComponentBase
|
||||
{
|
||||
[Inject] private InvoiceService InvoiceService { get; set; } = default!;
|
||||
[Inject] private ISnackbar Snackbar { get; set; } = default!;
|
||||
|
||||
private PagedResult<InvoiceDto> invoices = new();
|
||||
private InvoiceFilterRequest filterRequest = new();
|
||||
@@ -16,28 +17,24 @@ public partial class InvoiceListComponent : ComponentBase
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
Console.WriteLine("========== InvoiceListComponent OnInitializedAsync ==========");
|
||||
await LoadInvoices();
|
||||
}
|
||||
|
||||
private async Task LoadInvoices()
|
||||
{
|
||||
isLoading = true;
|
||||
Console.WriteLine($"========== LoadInvoices - Starting load with Page: {filterRequest.Page}, PageSize: {filterRequest.PageSize} ==========");
|
||||
|
||||
try
|
||||
{
|
||||
invoices = await InvoiceService.GetInvoiceAsync(filterRequest);
|
||||
Console.WriteLine($"========== LoadInvoices - Loaded {invoices.Items?.Count ?? 0} invoices, Total: {invoices.TotalCount} ==========");
|
||||
var result = await InvoiceService.GetInvoiceAsync(filterRequest);
|
||||
invoices = result ?? new PagedResult<InvoiceDto>();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"========== ERROR Loading invoices failed: {ex.Message} ==========");
|
||||
Console.WriteLine($"========== ERROR Stack trace: {ex.StackTrace} ==========");
|
||||
if (ex.InnerException != null)
|
||||
{
|
||||
Console.WriteLine($"========== ERROR Inner exception: {ex.InnerException.Message} ==========");
|
||||
}
|
||||
Console.WriteLine($"Loading invoices failed: {ex.Message}");
|
||||
Console.WriteLine($"Stack trace: {ex.StackTrace}");
|
||||
Snackbar.Add($"Błąd podczas ładowania faktur: {ex.Message}", Severity.Error);
|
||||
invoices = new PagedResult<InvoiceDto>();
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -56,6 +53,11 @@ public partial class InvoiceListComponent : ComponentBase
|
||||
filterRequest.Page = page;
|
||||
await LoadInvoices();
|
||||
}
|
||||
private async Task OnFilterChanged()
|
||||
{
|
||||
filterRequest.Page = 1;
|
||||
await SearchInvoices();
|
||||
}
|
||||
|
||||
private async Task ClearFilters()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user