Initial commit
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
@using PowderCoating.Application.DTOs.Common
|
||||
@model dynamic
|
||||
|
||||
@if (Model.TotalCount > 0)
|
||||
{
|
||||
var request = Context.Request;
|
||||
var queryParams = request.Query.ToDictionary(k => k.Key, v => v.Value.ToString());
|
||||
|
||||
string BuildUrl(int page, int? pageSize = null)
|
||||
{
|
||||
var urlParams = new Dictionary<string, string>(queryParams);
|
||||
urlParams["pageNumber"] = page.ToString();
|
||||
if (pageSize.HasValue)
|
||||
{
|
||||
urlParams["pageSize"] = pageSize.Value.ToString();
|
||||
}
|
||||
var queryString = string.Join("&", urlParams.Select(kvp => $"{kvp.Key}={Uri.EscapeDataString(kvp.Value)}"));
|
||||
return $"{request.Path}?{queryString}";
|
||||
}
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-6">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="me-2">Showing @Model.StartIndex-@Model.EndIndex of @Model.TotalCount results</span>
|
||||
<span class="me-2">|</span>
|
||||
<label class="me-2 mb-0">Page size:</label>
|
||||
<select class="form-select form-select-sm w-auto" onchange="changePageSize(this.value)">
|
||||
<option value="10" selected="@(Model.PageSize == 10)">10</option>
|
||||
<option value="25" selected="@(Model.PageSize == 25)">25</option>
|
||||
<option value="50" selected="@(Model.PageSize == 50)">50</option>
|
||||
<option value="100" selected="@(Model.PageSize == 100)">100</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination justify-content-end mb-0">
|
||||
<!-- First Page -->
|
||||
<li class="page-item @(!Model.HasPreviousPage ? "disabled" : "")">
|
||||
<a class="page-link" href="@BuildUrl(1)" aria-label="First">
|
||||
<i class="bi bi-chevron-double-left"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<!-- Previous Page -->
|
||||
<li class="page-item @(!Model.HasPreviousPage ? "disabled" : "")">
|
||||
<a class="page-link" href="@BuildUrl(Model.PageNumber - 1)" aria-label="Previous">
|
||||
<i class="bi bi-chevron-left"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@{
|
||||
// Calculate page range to show (5 pages at a time)
|
||||
var startPage = Math.Max(1, Model.PageNumber - 2);
|
||||
var endPage = Math.Min(Model.TotalPages, startPage + 4);
|
||||
if (endPage - startPage < 4)
|
||||
{
|
||||
startPage = Math.Max(1, endPage - 4);
|
||||
}
|
||||
|
||||
for (var i = startPage; i <= endPage; i++)
|
||||
{
|
||||
<li class="page-item @(i == Model.PageNumber ? "active" : "")">
|
||||
<a class="page-link" href="@BuildUrl(i)">@i</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
|
||||
<!-- Next Page -->
|
||||
<li class="page-item @(!Model.HasNextPage ? "disabled" : "")">
|
||||
<a class="page-link" href="@BuildUrl(Model.PageNumber + 1)" aria-label="Next">
|
||||
<i class="bi bi-chevron-right"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<!-- Last Page -->
|
||||
<li class="page-item @(!Model.HasNextPage ? "disabled" : "")">
|
||||
<a class="page-link" href="@BuildUrl(Model.TotalPages)" aria-label="Last">
|
||||
<i class="bi bi-chevron-double-right"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
Reference in New Issue
Block a user