186 lines
4.1 KiB
C#
186 lines
4.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Components;
|
|
using BlaServApp.UI.Components;
|
|
using BlaServApp.UI.Data;
|
|
|
|
namespace BlaServApp.UI.Components
|
|
{
|
|
public partial class DataPager
|
|
{
|
|
#region Protected Fields
|
|
|
|
protected bool _showLoading = false;
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Private Properties
|
|
|
|
private int endPage
|
|
{
|
|
get
|
|
{
|
|
int answ = (int)(currPage / numPages) * numPages + numPages;
|
|
answ = answ < LastPage ? answ : LastPage;
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
private int LastPage
|
|
{
|
|
get
|
|
{
|
|
return Math.Max((int)Math.Ceiling(totalCount / (double)PageSize), 1);
|
|
}
|
|
}
|
|
|
|
private int nextBlock
|
|
{
|
|
get
|
|
{
|
|
int answ = currPage + numPages;
|
|
answ = answ < LastPage ? answ : LastPage;
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
private int numPages { get; set; } = 10;
|
|
|
|
private int prevBlock
|
|
{
|
|
get
|
|
{
|
|
int answ = currPage - numPages;
|
|
answ = answ > 0 ? answ : 1;
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
// 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;
|
|
}
|
|
}
|
|
|
|
[Inject]
|
|
private Services.BlazorTimer Timer { get; set; }
|
|
|
|
#endregion Private Properties
|
|
|
|
#region Protected Properties
|
|
|
|
protected int _numPage { get; set; } = 1;
|
|
|
|
protected int _numRecord { get; set; } = 10;
|
|
|
|
protected int percLoading { get; set; } = 0;
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Public Properties
|
|
|
|
[Parameter]
|
|
public int currPage
|
|
{
|
|
get
|
|
{
|
|
return _numPage;
|
|
}
|
|
set
|
|
{
|
|
bool doReport = !_numPage.Equals(value);
|
|
if (doReport)
|
|
{
|
|
_numPage = value;
|
|
reportChangePage();
|
|
}
|
|
}
|
|
}
|
|
|
|
[Parameter]
|
|
public EventCallback<int> numPageChanged { get; set; }
|
|
|
|
[Parameter]
|
|
public EventCallback<int> numRecordChanged { get; set; }
|
|
|
|
[Parameter]
|
|
public int PageSize
|
|
{
|
|
get
|
|
{
|
|
return _numRecord;
|
|
}
|
|
set
|
|
{
|
|
bool doReport = !_numRecord.Equals(value);
|
|
if (doReport)
|
|
{
|
|
_numRecord = value;
|
|
reportChange();
|
|
}
|
|
}
|
|
}
|
|
|
|
[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;
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Private Methods
|
|
|
|
private void reportChange()
|
|
{
|
|
numRecordChanged.InvokeAsync(PageSize);
|
|
}
|
|
|
|
private void reportChangePage()
|
|
{
|
|
numPageChanged.InvokeAsync(currPage);
|
|
}
|
|
|
|
#endregion Private Methods
|
|
|
|
#region Protected Methods
|
|
|
|
protected void HandlePaginationItemClick(string page)
|
|
{
|
|
currPage = int.Parse(page);
|
|
}
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
await Task.Run(() => showLoading = false);
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
}
|
|
} |