====== Résolution de l'issue #1341 ====== ===== Description de l'issue ===== **Titre** : //the "Trending" page needs a visible filter saying "For the past X days" and give a few more options// **Lien** : [[https://github.com/Chocobozzz/PeerTube/issues/1409]] **Reformulation de la demande** : ajout de filtres permettant de préciser la période sur laquelle porte les résultats des tendances (comme "pour les 7 derniers jours, par exemple). ==== Justification du choix ==== Cette issue a été choisie conjointement à la #1409. Ces issues sont les premières que je m’apprête à traiter seul pour cette TX. Elles touchent à des bouts du code que je n'ai pas encore exploré dans l'issue précédente. Une partie de l'issue semble plutôt accessible : ajouter au niveau du //front// une infobulle explicative ; tandis que la partie //back// consistant à aller chercher la constante correspondant au nombre de jours sur lesquels portent les tendances, en passant par l'api, apparait plus technique. Ce sera donc un défi intéressant. Par ailleurs, c'est un //feature// qui semble plutôt pertinent étant donné l'absence d'explication et de paramétrage possible de cette section tendances. ==== Cas d'usages ==== **use-case #1 :** un utilisateur a besoin de comprendre immédiatement sur combien de jours portent les vidéos afficher dans la section //Tendances// ; **use-case #2 :** une utilisatrice souhaite comprendre la façon dont sont listées les vidéos dans la section tendances. ==== Spécifications fonctionnelles ==== ==== Tâches ==== * Changement des modèles de l'api serveur pour récupérer la valeur de la constante définissant le nombre de jours sur lesquels sont évaluées les vidéos pour être affichées dans les tendances * Ajout de l'infobulle explicative de la section tendances * Changement du titre de la section en précisant le nombre de jours sur lesquels sont prises en compte les vues ===== Résolution ===== **Merge request** : [[https://github.com/Chocobozzz/PeerTube/pull/1458]] **Logs** : [[https://pad.picasoft.net/p/TX-peertube-issues-1409-1341]] ==== Récupérer côté client l'intervale de jours pour les tendances ==== Le premier et principal problème rencontré pour la résolution de cette //issue// a été de comprendre d'ou vient la valeur correspondant au nombre de jours sur lesquels portent les vidéos dans la section tendances. Cette valeur est définie au niveau des constantes, dans le fichier ''/server/initializers/constants.ts'' : const CONFIG = { ... TRENDING: { VIDEOS: { INTERVAL_DAYS: config.get('trending.videos.interval_days') } }, ... } Une fois identifée cette constante //INTERVAL_DAYS//, il a fallu la faire remonter dans l'API ('' server/controllers/api/config.ts'') et dans l'interface ''ServerService'' (''client/src/app/core/server/server.service.ts'') avant de pouvoir la récupérer dans les ''components'' côté client. **Commit correspondant** : [[https://github.com/Chocobozzz/PeerTube/pull/1458/commits/fc8568068dc05baf84715e78932ec95778b5dce9|Get the INTERVAL_DAYS const in the video-trending component]] ==== Modifications d'interface utilisateur de la section Tendances ==== A ce stade, nous avons un attribut ''trendingDays'' qui nous permet de récupérer la valeur de la constante ''INTERVAL_DAYS'' côté client. Ainsi que demandé dans un [[https://github.com/Chocobozzz/PeerTube/pull/1458#issuecomment-444510262|commentaire]] par le mainteneur, il a donc été possible de changer le titre de la page //Trending// en //Trending for the last X days//. **Commit correspondant** : [[https://github.com/Chocobozzz/PeerTube/pull/1458/commits/491beccfe9113c13c6731187b7c4b1c230d0a27e|Change Trending section title ]] Enfin, j'ai rajouté une infobulle en utilisant un composant de bootstrap ''ng-tooltip'' expliquant les vidéos présentées dans la section Tendances. Pour l'infobulle comme pour le titre, bien qu'elle n'est pour le moment aucune raison de différer de 7, la valeur de ''trendingDays'' est testée pour générer des textes différents (si elle est égale à 1, on affiche ''for the last 24 hours''). Cette petite vérification anticipe les modifications de ''trendingDays'' lorsqu'il sera possible pour l'utilisateur de lui donner différentes valeurs. **Commit correspondant** : [[https://github.com/Chocobozzz/PeerTube/pull/1458/commits/0ea8b7b26cfc733b107bced53508dbe934ae8faa|Add a tooltip to explain how trending section works]] ==== Démo ==== Voici un aperçu de ce à quoi ressemble la section tendances à présent. {{ :txs:peertube-a18:issue_1341_demo.png?nolink&800 |}} ===== Pistes ouvertes par la résolution de cette issue ===== Une fois cette issue mergée, il me sera possible de m'atteler à boucler la [[txs:contrib:peertube-a18:issues_1409|#1409 ]] qui dépendait de certains bouts de code proposés ici. La résolution de cette issue et de la #1409 semblent ouvrir pas mal de pistes. On pourrait imaginer de donner la possibilité de réaliser des filtrages sur les chaînes tendances, en fonction des catégories de vidéos, de leur langue, de leur pays d'origine, de la longueur, du type, //etc//. On pourrait éventuellement envisager d'ajouter ce type de filtrage pour la section Vue d'ensemble. Enfin, il est maintenant très facilement possible d'ajouter au besoin des ''tooltips'' sur n'importe quel titre de section au besoin.