Merge branch 'j3/feat/pagination' into dev.
This commit is contained in:
@@ -67,17 +67,25 @@ namespace Webzine.WebApplication.Controllers
|
||||
/// Affiche les titres correspondant a un style musical donne.
|
||||
/// </summary>
|
||||
/// <param name="style">Nom du style musical.</param>
|
||||
/// <param name="page">Numéro de la page.</param>
|
||||
/// <returns>Vue contenant la liste filtree.</returns>
|
||||
public IActionResult Style(string style)
|
||||
[Route("/titres/styles/{style}", Name = "TitresParStyle")]
|
||||
public IActionResult Style(string style, int page = 0)
|
||||
{
|
||||
this.logger.LogInformation("Recherche des titres pour le style : {Style}.", style);
|
||||
var offset = page * 10;
|
||||
var limit = 10;
|
||||
var titresFiltres = this.titreRepository.SearchByStylePaginate(offset, limit, style).ToList();
|
||||
var totalTitres = this.titreRepository.CountByStyle(style);
|
||||
var totalPages = (int)Math.Ceiling((double)totalTitres / limit);
|
||||
|
||||
var titresFiltres = this.titreRepository.SearchByStyle(style).ToList();
|
||||
this.logger.LogInformation("Recherche des titres pour le style : {Style}.", style);
|
||||
|
||||
var vm = new TitreStyle
|
||||
{
|
||||
StyleName = style,
|
||||
Titres = titresFiltres.Select(MapTitreItem).ToList(),
|
||||
Page = page,
|
||||
TotalPages = totalPages,
|
||||
};
|
||||
|
||||
return this.View(vm);
|
||||
|
||||
@@ -14,4 +14,14 @@ public class TitreStyle
|
||||
/// Définit la liste des items de titre associés au style musical.
|
||||
/// </summary>
|
||||
public List<TitreStyleItem> Titres { get; set; } = new ();
|
||||
|
||||
/// <summary>
|
||||
/// Obtient ou définit le numéro de page pour la pagination des titres affichés sur la page d'accueil.
|
||||
/// </summary>
|
||||
public int Page { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Nombre total de page.
|
||||
/// </summary>
|
||||
public int TotalPages { get; set; }
|
||||
}
|
||||
@@ -29,7 +29,7 @@
|
||||
<a asp-action="Index"
|
||||
asp-route-id="@titre.IdTitre"
|
||||
class="me-3 text-black">
|
||||
<img src="@titre.UrlJaquette" alt="@titre.Libelle" width="70px" height="70px" class="object-fit-cover" loading="lazy"/>
|
||||
<img src="@titre.UrlJaquette" alt="@titre.Libelle" width="70px" height="70px" class="object-fit-cover" loading="lazy" />
|
||||
</a>
|
||||
|
||||
<!-- Infos -->
|
||||
@@ -55,6 +55,39 @@
|
||||
</div>
|
||||
}
|
||||
}
|
||||
<div class="d-flex align-items-center justify-content-between mt-3">
|
||||
@if (Model.Page > 0)
|
||||
{
|
||||
<a asp-route="TitresParStyle"
|
||||
asp-route-style="@Model.StyleName"
|
||||
asp-route-page="@(Model.Page - 1)"
|
||||
class="btn btn-secondary">
|
||||
<< Titre plus récent
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div></div>
|
||||
}
|
||||
|
||||
<p class="mb-0">
|
||||
Page : @(Model.Page + 1) sur @Model.TotalPages
|
||||
</p>
|
||||
|
||||
@if (Model.Page < Model.TotalPages - 1)
|
||||
{
|
||||
<a asp-route="TitresParStyle"
|
||||
asp-route-style="@Model.StyleName"
|
||||
asp-route-page="@(Model.Page + 1)"
|
||||
class="btn btn-secondary">
|
||||
Titre plus anciens >>
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div></div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user