#88 Modifications simples: mauvaises balises HTML, fautes d'orthographes, DashBoard attributs à traduire en français.
This commit is contained in:
@@ -41,40 +41,40 @@ public class DashboardController : Controller
|
||||
/// <returns>La vue Index du tableau de bord.</returns>
|
||||
public IActionResult Index()
|
||||
{
|
||||
var mostChronicledArtist = _titres
|
||||
var artisteLePlusChronique = _titres
|
||||
.GroupBy(t => t.Artiste)
|
||||
.OrderByDescending(g => g.Count())
|
||||
.FirstOrDefault();
|
||||
|
||||
var topArtistAlbums = _titres
|
||||
var albumLePlusChronique = _titres
|
||||
.GroupBy(t => t.Artiste)
|
||||
.OrderByDescending(g => g.Select(t => t.Album).Distinct().Count())
|
||||
.FirstOrDefault();
|
||||
|
||||
var mostPlayedTrack = _titres
|
||||
var musiqueLaPlusJouee = _titres
|
||||
.OrderByDescending(t => t.NbLectures)
|
||||
.FirstOrDefault();
|
||||
|
||||
var model = new DashboardViewModel
|
||||
{
|
||||
ArtistCount = _artistes.Count,
|
||||
NombreArtistes = _artistes.Count,
|
||||
|
||||
MostChronicledArtistName = mostChronicledArtist?.Key.Nom,
|
||||
ArtisteLePlusChronique = artisteLePlusChronique?.Key.Nom,
|
||||
|
||||
TopArtistAlbumsName = topArtistAlbums?.Key.Nom,
|
||||
AlbumLePlusChronique = albumLePlusChronique?.Key.Nom,
|
||||
|
||||
BiographyCount = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)),
|
||||
NombreBiographies = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)),
|
||||
|
||||
MostPlayedTrackId = mostPlayedTrack?.IdTitre ?? 0,
|
||||
MostPlayedTrack = mostPlayedTrack?.Libelle,
|
||||
IdMusiqueLaPlusJouee = musiqueLaPlusJouee?.IdTitre ?? 0,
|
||||
MusiqueLaPlusJouee = musiqueLaPlusJouee?.Libelle,
|
||||
|
||||
TrackCount = _titres.Count,
|
||||
NombreTitres = _titres.Count,
|
||||
|
||||
GenreCount = _styles.Count,
|
||||
NombreGenres = _styles.Count,
|
||||
|
||||
TotalPlays = _titres.Sum(t => t.NbLectures),
|
||||
NombreLectures = _titres.Sum(t => t.NbLectures),
|
||||
|
||||
TotalLikes = _titres.Sum(t => t.NbLikes)
|
||||
NombreLikes = _titres.Sum(t => t.NbLikes)
|
||||
};
|
||||
|
||||
return View(model);
|
||||
|
||||
@@ -8,49 +8,49 @@ public class DashboardViewModel
|
||||
/// <summary>
|
||||
/// Définit le nombre total d'artistes chroniqués dans le webzine.
|
||||
/// </summary>
|
||||
public int ArtistCount { get; set; }
|
||||
public int NombreArtistes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nom de l'artiste le plus chroniqué dans le webzine.
|
||||
/// </summary>
|
||||
public string MostChronicledArtistName { get; set; }
|
||||
public string ArtisteLePlusChronique { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nom de l'album le plus chroniqué dans le webzine.
|
||||
/// </summary>
|
||||
public string TopArtistAlbumsName { get; set; }
|
||||
public string AlbumLePlusChronique { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nombre total de biographies d'artistes dans le webzine.
|
||||
/// </summary>
|
||||
public int BiographyCount { get; set; }
|
||||
public int NombreBiographies { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit l'identifiant de la biographie d'artiste la plus lue dans le webzine.
|
||||
/// </summary>
|
||||
public int MostPlayedTrackId { get; set; }
|
||||
public int IdMusiqueLaPlusJouee { get; set; }
|
||||
/// <summary>
|
||||
/// Définit le nom de la biographie d'artiste la plus lue dans le webzine.
|
||||
/// </summary>
|
||||
public string MostPlayedTrack { get; set; }
|
||||
public string MusiqueLaPlusJouee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nombre total de titres chroniqués dans le webzine.
|
||||
/// </summary>
|
||||
public int TrackCount { get; set; }
|
||||
public int NombreTitres { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nombre total de genres musicaux chroniqués dans le webzine.
|
||||
/// </summary>
|
||||
public int GenreCount { get; set; }
|
||||
public int NombreGenres { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nombre total de chroniques d'albums dans le webzine.
|
||||
/// </summary>
|
||||
public int TotalPlays { get; set; }
|
||||
public int NombreLectures { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le nombre total de likes sur les chroniques d'albums dans le webzine.
|
||||
/// </summary>
|
||||
public int TotalLikes { get; set; }
|
||||
public int NombreLikes { get; set; }
|
||||
}
|
||||
@@ -30,12 +30,12 @@
|
||||
<td class="text-center p-2">
|
||||
|
||||
<a asp-action="Edit" asp-route-id="@artiste.IdArtiste"
|
||||
class="text-primary">
|
||||
>
|
||||
<i class="fa fa-edit"></i>
|
||||
</a>
|
||||
|
||||
<a asp-action="Delete" asp-route-id="@artiste.IdArtiste"
|
||||
class="text-primary">
|
||||
>
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
<div class="mb-4">
|
||||
<h4>@Model.Contenu</h4>
|
||||
|
||||
<div class="text-muted"> // TODO y a des balises pour les citations, <blockquote></blockquote>
|
||||
<blockquote>
|
||||
— <strong>@Model.Auteur</strong>
|
||||
le @Model.DateCreation.ToString("dd/MM/yyyy HH:mm:ss") // TODO à virer, c'est pas très lisible, trouver un format de date plus sympa, ou même afficher "il y a X minutes/heures/jours" comme sur les réseaux sociaux
|
||||
le @Model.DateCreation.ToString("dd/MM/yyyy HH:mm:ss")
|
||||
sur <em>@Model.TitreLibelle</em>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<form asp-action="Delete" method="post">
|
||||
|
||||
@@ -11,17 +11,16 @@
|
||||
<!-- ARTISTS -->
|
||||
<div class="col-md-4">
|
||||
<a asp-area="Administration"
|
||||
asp-controller="Artiste"
|
||||
class="text-decoration-none">
|
||||
asp-controller="Artiste">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-users fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h3 class="text-primary">
|
||||
@Model.ArtistCount
|
||||
<h3>
|
||||
@Model.NombreArtistes
|
||||
</h3>
|
||||
|
||||
<p class="text-primary">
|
||||
<p>
|
||||
artistes
|
||||
</p>
|
||||
</div>
|
||||
@@ -29,24 +28,20 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Test remote -->
|
||||
<!-- L'ARTIST LE PLUS CHRONICLED --> // TODO faute de frappe, à virer
|
||||
<!-- L'ARTIST LE PLUS CHRONIQUE -->
|
||||
<div class="col-md-4">
|
||||
<a asp-area=""
|
||||
asp-controller="Artiste"
|
||||
asp-route-nom="@Model.MostChronicledArtistName" // TODO enlever texte décorationnel, pas maintenable
|
||||
class="text-decoration-none">
|
||||
asp-route-nom="@Model.ArtisteLePlusChronique">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-user fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h3 class="text-primary"> // TODO c'est déjà par défaut en couleur primaire, pas besoin de le redéfinir
|
||||
@Model.MostChronicledArtistName
|
||||
<h3>
|
||||
@Model.ArtisteLePlusChronique
|
||||
</h3>
|
||||
|
||||
<p class="text-primary">
|
||||
artiste le plus chroniqué
|
||||
</p>
|
||||
<p>artiste le plus chroniqué</p>
|
||||
</div>
|
||||
|
||||
</a>
|
||||
@@ -56,17 +51,16 @@
|
||||
<div class="col-md-4">
|
||||
<a asp-area=""
|
||||
asp-controller="Artiste"
|
||||
asp-route-nom="@Model.TopArtistAlbumsName"
|
||||
class="text-decoration-none">
|
||||
asp-route-nom="@Model.AlbumLePlusChronique">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-trophy fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h3 class="text-primary">
|
||||
@Model.TopArtistAlbumsName
|
||||
<h3>
|
||||
@Model.AlbumLePlusChronique
|
||||
</h3>
|
||||
|
||||
<p class="text-primary">
|
||||
<p>
|
||||
artiste avec le plus d'albums distincts
|
||||
</p>
|
||||
</div>
|
||||
@@ -77,17 +71,16 @@
|
||||
<!-- BIOGRAPHIES -->
|
||||
<div class="col-md-4">
|
||||
<a asp-area="Administration"
|
||||
asp-controller="Titre"
|
||||
class="text-decoration-none">
|
||||
asp-controller="Titre">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-book fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h3 class="text-primary">
|
||||
@Model.BiographyCount
|
||||
<h3>
|
||||
@Model.NombreBiographies
|
||||
</h3>
|
||||
|
||||
<p class="text-primary">
|
||||
<p>
|
||||
biographies d'artistes
|
||||
</p>
|
||||
</div>
|
||||
@@ -100,17 +93,16 @@
|
||||
<a asp-area=""
|
||||
asp-controller="Titre"
|
||||
asp-action="Details"
|
||||
asp-route-id="@Model.MostPlayedTrackId"
|
||||
class="text-decoration-none">
|
||||
asp-route-id="@Model.IdMusiqueLaPlusJouee">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-compact-disc fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h4 class="text-primary">
|
||||
@Model.MostPlayedTrack
|
||||
<h4>
|
||||
@Model.MusiqueLaPlusJouee
|
||||
</h4>
|
||||
|
||||
<p class="text-primary">
|
||||
<p>
|
||||
titre le plus lu
|
||||
</p>
|
||||
</div>
|
||||
@@ -121,17 +113,16 @@
|
||||
<!-- TITRE NOMBRE -->
|
||||
<div class="col-md-4">
|
||||
<a asp-area="Administration"
|
||||
asp-controller="Titre"
|
||||
class="text-decoration-none">
|
||||
asp-controller="Titre">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-music fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h3 class="text-primary">
|
||||
@Model.TrackCount
|
||||
<h3>
|
||||
@Model.NombreTitres
|
||||
</h3>
|
||||
|
||||
<p class="text-primary">
|
||||
<p>
|
||||
titres
|
||||
</p>
|
||||
</div>
|
||||
@@ -142,17 +133,16 @@
|
||||
<!-- GENRES -->
|
||||
<div class="col-md-4">
|
||||
<a asp-area="Administration"
|
||||
asp-controller="Styles"
|
||||
class="text-decoration-none">
|
||||
asp-controller="Styles">
|
||||
|
||||
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
|
||||
<i class="fa fa-tags fa-3x text-primary mb-3"></i>
|
||||
|
||||
<h3 class="text-primary">
|
||||
@Model.GenreCount
|
||||
<h3>
|
||||
@Model.NombreGenres
|
||||
</h3>
|
||||
|
||||
<p class="text-primary">
|
||||
<p>
|
||||
styles de musique
|
||||
</p>
|
||||
</div>
|
||||
@@ -166,7 +156,7 @@
|
||||
<i class="fa fa-eye fa-3x text-dark mb-3"></i>
|
||||
|
||||
<h3>
|
||||
@Model.TotalPlays
|
||||
@Model.NombreLectures
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
@@ -181,7 +171,7 @@
|
||||
<i class="fa fa-thumbs-up fa-3x text-dark mb-3"></i>
|
||||
|
||||
<h3>
|
||||
@Model.TotalLikes
|
||||
@Model.NombreLikes
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -14,13 +14,9 @@
|
||||
</p>
|
||||
|
||||
<div class="mb-4">
|
||||
@* On affiche le Libellé en gros *@ // TODO c'est quoi ces commentaires Baptiste
|
||||
@* On affiche le Libellé en gros *@
|
||||
<h4>@Model.Libelle</h4>
|
||||
|
||||
@* On affiche l'ID discrètement en dessous *@
|
||||
<div class="text-muted">
|
||||
Identifiant technique : @Model.IdStyle
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form asp-action="Delete" method="post">
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<a asp-action="Edit" asp-route-id="@style.IdStyle" class="text-primary me-2" title="Éditer">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a asp-action="Delete" asp-route-id="@style.IdStyle" class="text-primary" title="Supprimer">
|
||||
<a asp-action="Delete" asp-route-id="@style.IdStyle" title="Supprimer">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
|
||||
@@ -5,36 +5,6 @@
|
||||
|
||||
<h1>Derniers titres chroniqués</h1>
|
||||
|
||||
@* TEMPLATE TODO: virer *@
|
||||
@* <div class="container">
|
||||
<div class="container bg-light row p-3 mt-3">
|
||||
<div class="col-auto">
|
||||
<img class="img-thumbnail"
|
||||
src="" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="text-primary text-decoration-none fw-light h4">Justice - D.A.N.C.E</a>
|
||||
<p class="mt-2 mb-3 text-muted ">
|
||||
Insérer texte
|
||||
</p>
|
||||
<div class="d-flex flex-wrap align-items-center gap-3">
|
||||
<a class="btn btn-primary btn-sm">Lire la suite</a>
|
||||
|
||||
<div class="d-flex align-items-center text-muted small">
|
||||
<i class="fa-solid fa-calendar"></i>
|
||||
Date :
|
||||
17/12/2022 11:08:08
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center text-muted small">
|
||||
<i class="fa-solid fa-tags"></i>
|
||||
<a class="text-decoration-none m-1">Insérer style</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
|
||||
<div class="container">
|
||||
@foreach (var titre in Model.DerniersTitres)
|
||||
{
|
||||
@@ -76,7 +46,7 @@
|
||||
<div class="d-flex align-items-center text-muted small">
|
||||
<i class="fa-solid fa-tags"></i>
|
||||
@* Style *@
|
||||
<a asp-controller="Titre" asp-action="Style" asp-route-id="Pop" class="text-decoration-none m-1">Pop</a>
|
||||
<a asp-controller="Titre" asp-action="Style" asp-route-id="Pop" class="m-1">Pop</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -87,20 +57,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* TEMPLATE *@
|
||||
@* <div class="container">
|
||||
<div class="row">
|
||||
<div class="card col m-1" style="width: 18rem;">
|
||||
<img class="card-img-top"
|
||||
src="" alt="Alternate Text" />
|
||||
|
||||
<div class="card-body">
|
||||
<a class="card-link" href="#">Album</a><br />
|
||||
par <a class="card-link">Artiste</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
<div class="container">
|
||||
<h1 class="mt-5">Titres les plus populaires</h1>
|
||||
<div class="row">
|
||||
|
||||
@@ -21,42 +21,42 @@
|
||||
<h2>Suivez-nous</h2>
|
||||
<div class="row g-4 text-center">
|
||||
<div class="col-md-4">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
|
||||
<i class="fa-solid fa-link fa-3x text-primary mb-3"></i>
|
||||
<div class="fw-bold text-primary">Site officiel du DIIAGE</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
|
||||
<i class="fa-brands fa-facebook fa-3x text-primary mb-3"></i>
|
||||
<div class="fw-bold text-primary">Facebook</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
|
||||
<i class="fa-brands fa-instagram fa-3x text-primary mb-3"></i>
|
||||
<div class="fw-bold text-primary">Instagram</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
|
||||
<i class="fa-brands fa-linkedin fa-3x text-primary mb-3"></i>
|
||||
<div class="fw-bold text-primary">LinkedIn</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
|
||||
<i class="fa-solid fa-map fa-3x text-primary mb-3"></i>
|
||||
<div class="fw-bold text-primary">Google Maps</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
|
||||
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
|
||||
<i class="fa-brands fa-twitter fa-3x text-primary mb-3"></i>
|
||||
<div class="fw-bold text-primary">Twitter</div>
|
||||
</a>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
{
|
||||
var style = Model.Details.Styles[i];
|
||||
|
||||
<a class="text-primary text-decoration-none fw-semibold"
|
||||
<a class="text-primary fw-semibold"
|
||||
asp-controller="Titre"
|
||||
asp-action="Style"
|
||||
asp-route-style="@style.Libelle">
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
<Content Include="..\.dockerignore">
|
||||
<Link>.dockerignore</Link>
|
||||
</Content>
|
||||
<Content Include="..\Webzine.Documentation\StyleCop\stylecop.json">
|
||||
<AdditionalFiles Include="..\Webzine.Documentation\StyleCop\stylecop.json">
|
||||
<Link>stylecop.json</Link>
|
||||
</Content>
|
||||
</AdditionalFiles>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user