Résolution de l'issue #1341

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é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<number>('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 : 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 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 : 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 : Add a tooltip to explain how trending section works

Démo

Voici un aperçu de ce à quoi ressemble la section tendances à présent.

Une fois cette issue mergée, il me sera possible de m'atteler à boucler la #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.

  • txs/peertube-a18/issues_1341.txt
  • Dernière modification: 2019/01/12 15:11
  • par aurelien.beranger