222 lines
6.0 KiB
Plaintext
222 lines
6.0 KiB
Plaintext
@inject Services.BlazorTimer Timer
|
|
|
|
<div class="row">
|
|
<div class="col-6 col-lg-10 text-left">
|
|
<div class="row">
|
|
<div class="col-9 small">
|
|
@if (totalCount > 0)
|
|
{
|
|
<Pagination>
|
|
<PaginationItem>
|
|
<PaginationLink Clicked="@HandlePaginationItemClick" Page="1">
|
|
<i class="fas fa-angle-double-left"></i>
|
|
</PaginationLink>
|
|
</PaginationItem>
|
|
<PaginationItem>
|
|
<PaginationLink Clicked="@HandlePaginationItemClick" Page="@prevBlock.ToString()">
|
|
<span aria-hidden="true"><i class="fas fa-angle-left"></i></span>
|
|
</PaginationLink>
|
|
</PaginationItem>
|
|
@for (int i = @startPage; i <= endPage; ++i)
|
|
{
|
|
var pageNum = i;
|
|
<PaginationItem Active="@(currPage.Equals(pageNum))">
|
|
<PaginationLink Clicked="@HandlePaginationItemClick" Page="@pageNum.ToString()">
|
|
@pageNum
|
|
</PaginationLink>
|
|
</PaginationItem>
|
|
}
|
|
<PaginationItem>
|
|
<PaginationLink Clicked="@HandlePaginationItemClick" Page="@nextBlock.ToString()">
|
|
<i class="fas fa-angle-right"></i>
|
|
</PaginationLink>
|
|
</PaginationItem>
|
|
<PaginationItem>
|
|
<PaginationLink Clicked="@HandlePaginationItemClick" Page="@LastPage.ToString()">
|
|
<i class="fas fa-angle-double-right"></i>
|
|
</PaginationLink>
|
|
</PaginationItem>
|
|
</Pagination>
|
|
}
|
|
</div>
|
|
<div class="col-3">
|
|
@if (!showLoading)
|
|
{
|
|
<span>@totalCount records</span>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-12 small">
|
|
@if (showLoading)
|
|
{
|
|
<Progress>
|
|
<ProgressBar Value="@percLoading" Striped="true" Animated="true" />
|
|
</Progress>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-6 col-lg-2 text-right">
|
|
@if (totalCount > 0)
|
|
{
|
|
<div class="input-group input-group-sm">
|
|
row/pag:
|
|
<select @bind="@PageSize" class="form-control form-control-sm">
|
|
<option value="5">5</option>
|
|
<option value="10">10</option>
|
|
<option value="25">25</option>
|
|
<option value="50">50</option>
|
|
<option value="100">100</option>
|
|
</select>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
@code {
|
|
|
|
void HandlePaginationItemClick(string page)
|
|
{
|
|
currPage = int.Parse(page);
|
|
reportChangePage();
|
|
}
|
|
|
|
private int numPages { get; set; } = 10;
|
|
|
|
// calcola un set 1..numPOages centrato sulla pagina corrente...
|
|
private int startPage
|
|
{
|
|
get
|
|
{
|
|
int answ = (int)(currPage / numPages) * numPages;
|
|
answ = answ > 0 ? answ : 1;
|
|
return answ;
|
|
}
|
|
}
|
|
private int endPage
|
|
{
|
|
get
|
|
{
|
|
int answ = (int)(currPage / numPages) * numPages + numPages;
|
|
answ = answ < LastPage ? answ : LastPage;
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
private int prevBlock
|
|
{
|
|
get
|
|
{
|
|
int answ = currPage - numPages;
|
|
answ = answ > 0 ? answ : 1;
|
|
return answ;
|
|
}
|
|
}
|
|
private int nextBlock
|
|
{
|
|
get
|
|
{
|
|
int answ = currPage + numPages;
|
|
answ = answ < LastPage ? answ : LastPage;
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
private int LastPage
|
|
{
|
|
get
|
|
{
|
|
return Math.Max((int)Math.Ceiling(totalCount / (double)PageSize), 1);
|
|
}
|
|
}
|
|
|
|
protected override Task OnInitializedAsync()
|
|
{
|
|
showLoading = false;
|
|
return base.OnInitializedAsync();
|
|
}
|
|
|
|
protected int percLoading { get; set; } = 0;
|
|
|
|
protected bool _showLoading = false;
|
|
|
|
[Parameter]
|
|
public bool showLoading
|
|
{
|
|
get
|
|
{
|
|
return _showLoading;
|
|
}
|
|
set
|
|
{
|
|
if (value)
|
|
{
|
|
Random random = new Random();
|
|
percLoading = random.Next(30, 90);
|
|
}
|
|
else
|
|
{
|
|
percLoading = 5;
|
|
}
|
|
_showLoading = value;
|
|
}
|
|
}
|
|
|
|
[Parameter]
|
|
public int totalCount { get; set; } = 0;
|
|
|
|
protected int _numRecord { get; set; } = 10;
|
|
protected int _numPage { get; set; } = 1;
|
|
|
|
[Parameter]
|
|
public int PageSize
|
|
{
|
|
get
|
|
{
|
|
return _numRecord;
|
|
}
|
|
set
|
|
{
|
|
bool doReport = !_numRecord.Equals(value);
|
|
if (doReport)
|
|
{
|
|
_numRecord = value;
|
|
reportChange();
|
|
}
|
|
}
|
|
}
|
|
|
|
[Parameter]
|
|
public int currPage
|
|
{
|
|
get
|
|
{
|
|
return _numPage;
|
|
}
|
|
set
|
|
{
|
|
bool doReport = !_numPage.Equals(value);
|
|
if (doReport)
|
|
{
|
|
_numPage = value;
|
|
reportChangePage();
|
|
}
|
|
}
|
|
}
|
|
|
|
[Parameter]
|
|
public EventCallback<int> numRecordChanged { get; set; }
|
|
[Parameter]
|
|
public EventCallback<int> numPageChanged { get; set; }
|
|
|
|
private void reportChange()
|
|
{
|
|
numRecordChanged.InvokeAsync(PageSize);
|
|
}
|
|
private void reportChangePage()
|
|
{
|
|
numPageChanged.InvokeAsync(currPage);
|
|
}
|
|
|
|
} |