Pagination in members
This commit is contained in:
parent
2b9fadb75c
commit
910df73609
2 changed files with 108 additions and 11 deletions
|
|
@ -58,8 +58,43 @@ func Members(c *fiber.Ctx) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var count int64
|
||||||
|
db.Model(&models.Person{}).Where(
|
||||||
|
"is_member = ? AND section_id IN ?",
|
||||||
|
true, allowedSections,
|
||||||
|
).Count(&count)
|
||||||
|
|
||||||
|
pageQuery := c.Query("p")
|
||||||
|
page, _ := strconv.Atoi(pageQuery)
|
||||||
|
if page <= 0 {
|
||||||
|
page = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
pageSize := 50
|
||||||
|
offset := (page - 1) * pageSize
|
||||||
|
|
||||||
|
maxPages := 1
|
||||||
|
if count > int64(pageSize) {
|
||||||
|
maxPages = int(count) / pageSize
|
||||||
|
}
|
||||||
|
|
||||||
|
var pages []int
|
||||||
|
for i := 1; i <= maxPages; i++ {
|
||||||
|
if i == page {
|
||||||
|
pages = append(pages, i)
|
||||||
|
} else if i >= (page-2) && i < page {
|
||||||
|
pages = append(pages, i)
|
||||||
|
} else if i <= (page+2) && i > page {
|
||||||
|
pages = append(pages, i)
|
||||||
|
} else if page <= 2 && i <= 5 {
|
||||||
|
pages = append(pages, i)
|
||||||
|
} else if page >= (maxPages-2) && i >= (maxPages-5) {
|
||||||
|
pages = append(pages, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var people []models.Person
|
var people []models.Person
|
||||||
result := db.Order(
|
result := db.Offset(offset).Limit(pageSize).Order(
|
||||||
"last_name collate nocase asc, first_name collate nocase asc",
|
"last_name collate nocase asc, first_name collate nocase asc",
|
||||||
).Preload("Section").Find(
|
).Preload("Section").Find(
|
||||||
&people, "is_member = ? AND section_id IN ?", true, allowedSections,
|
&people, "is_member = ? AND section_id IN ?", true, allowedSections,
|
||||||
|
|
@ -73,6 +108,9 @@ func Members(c *fiber.Ctx) error {
|
||||||
"PageTitle": "Membres",
|
"PageTitle": "Membres",
|
||||||
"MembersPage": true,
|
"MembersPage": true,
|
||||||
"People": people,
|
"People": people,
|
||||||
|
"Page": page,
|
||||||
|
"Pages": pages,
|
||||||
|
"MaxPages": maxPages,
|
||||||
"PermShow": permShow,
|
"PermShow": permShow,
|
||||||
"PermShowArchived": permShowArchived,
|
"PermShowArchived": permShowArchived,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@
|
||||||
<hr>
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if People %}
|
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -55,15 +54,75 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
|
||||||
<div class="my-4">
|
<nav aria-label="Page navigation example">
|
||||||
{% if MembersPage %}
|
<ul class="pagination justify-content-center">
|
||||||
Pas de membre pour le moment
|
|
||||||
{% else %}
|
{% if Page <= 1 %}
|
||||||
Pas de contact pour le moment
|
<li class="page-item disabled">
|
||||||
{% endif %}
|
<a class="page-link" href="javascript:;">
|
||||||
</div>
|
<i class="bi-rewind"></i>
|
||||||
{% endif %}
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item disabled">
|
||||||
|
<a class="page-link" href="javascript:;">
|
||||||
|
<i class="bi-caret-left"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?p=1">
|
||||||
|
<i class="bi-rewind"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?p={{ Page - 1 }}">
|
||||||
|
<i class="bi-caret-left"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for i in Pages %}
|
||||||
|
<li class="page-item">
|
||||||
|
<a
|
||||||
|
{% if i == Page %}
|
||||||
|
class="page-link active"
|
||||||
|
{% else %}
|
||||||
|
class="page-link"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
href="?p={{ i }}"
|
||||||
|
>
|
||||||
|
{{ i }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if Page >= MaxPages %}
|
||||||
|
<li class="page-item disabled">
|
||||||
|
<a class="page-link" href="javascript:;">
|
||||||
|
<i class="bi-caret-right"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item disabled">
|
||||||
|
<a class="page-link" href="javascript:;">
|
||||||
|
<i class="bi-fast-forward"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?p={{ Page + 1 }}">
|
||||||
|
<i class="bi-caret-right"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?p={{ MaxPages }}">
|
||||||
|
<i class="bi-fast-forward"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
{% if MembersPage %}
|
{% if MembersPage %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue