YOAT Lab
12 · Module 4 — Développement assisté

Fonctions du Dashboard

Filtres persistants, export CSV, refresh et recherche.
Les quatre fonctions qui transforment une liste en outil.

5 minutesURL params · CSV · RechercheClaude Code en action
§01 · De l'affichage à l'outil

Un tableau qui s'affiche vs un tableau qu'on utilise

La leçon 11 a généré le dashboard visuellement. Il affiche des données. Maintenant, on le rend opérationnel : les utilisateurs doivent pouvoir filtrer, exporter, rafraîchir et chercher. Ce sont ces quatre fonctions qui transforment une page d'affichage en outil métier.

§02 · Fonction 1 — Filtres persistants

Les filtres survivent au rechargement

Le problème des filtres classiques : l'utilisateur sélectionne statut=Actif, recharge la page — le filtre disparaît. Solution : stocker les filtres dans les paramètres d'URL.

Vous : Ajoute des filtres persistants sur le tableau
des missions :
  - Filtre par statut (Actif, Terminé, En attente)
  - Filtre par période (ce mois, trimestre, année)
  Les filtres doivent être stockés dans l'URL
  (ex: ?statut=actif&periode=mois) pour être
  partageable et survivre au rechargement.

→ Claude génère les composants Select
→ Câble la logique useSearchParams (Next.js)
→ Les filtres sont dans l'URL et persistants
§03 · Fonction 2 — Export CSV

Un bouton, un fichier

L'export CSV est la fonctionnalité la plus demandée dans les applications métier. Les utilisateurs veulent sortir les données dans Excel. Claude le génère en une demande.

Vous : Ajoute un bouton "Exporter CSV" dans
l'en-tête du tableau. Au clic, il doit :
  - Exporter les lignes affichées (en tenant
    compte des filtres actifs)
  - Colonnes : client, statut, date début,
    date fin, montant
  - Nom de fichier : missions-[date du jour].csv
  - Encodage UTF-8 avec BOM (pour Excel)

→ Claude génère la fonction d'export
→ Déclenche le téléchargement via Blob + URL.createObjectURL
→ Le BOM évite les problèmes d'accents dans Excel
UTF-8 BOM

Sans BOM (Byte Order Mark), les accents français s'affichent en caractères illisibles dans Excel. Claude le sait si vous le précisez dans la demande. Toujours spécifier l'encodage UTF-8 BOM pour les exports destinés à Excel.

§04 · Fonction 3 — Refresh automatique

Données toujours fraîches

Pour les dashboards métier consultés tout au long de la journée, rafraîchir les données sans recharger la page est indispensable.

1.
Refresh manuel. Bouton « Rafraîchir » dans l'en-tête qui relance le fetch. Simple, contrôlé. « Ajoute un bouton Rafraîchir qui relance la requête Supabase et affiche un indicateur de chargement. »
2.
Refresh automatique. Intervalle configurable (toutes les 30, 60, 120 secondes). « Ajoute un refresh automatique toutes les 60 secondes avec un compteur visible. »
3.
Real-time Supabase. Pour les données critiques, Supabase propose des subscriptions en temps réel. « Abonne le composant aux changements de la table missions via Supabase Realtime. »
§05 · Fonction 4 — Recherche

Trouver en tapant

La recherche plein texte dans un tableau est une fonctionnalité attendue. Deux variantes selon le besoin.

Côté client

Recherche dans les données chargées

Filtre les lignes affichées par le texte saisi. Simple, instantané. Limite : ne cherche que dans les données déjà chargées (pagination).

Côté serveur

Recherche dans toute la base

La requête Supabase utilise .ilike() ou la recherche full-text PostgreSQL. Cherche dans toutes les lignes. Plus lent, mais exhaustif.

Débounce

Attendre la fin de frappe

Sans débounce, une requête Supabase est lancée à chaque touche. Avec débounce (300ms), la requête part 300ms après la dernière touche. Toujours demander le débounce.

Prompt type

Demande à Claude

« Ajoute une barre de recherche sur le nom du client avec débounce de 300ms et recherche côté serveur via .ilike(). »

Fin · Leçon 12 acquise

Cap sur la leçon 13

Votre dashboard est fonctionnel : filtres, export, refresh, recherche. La leçon suivante couvre le post-MVP — tests, performance, refactoring et documentation.

Exercice — appropriation

Implémentez les quatre fonctions sur votre projet de référence. Pour chacune, utilisez Claude Code avec un prompt précis (comme les exemples de cette leçon). Notez ce qui a fonctionné directement, ce qui a demandé un ajustement, et ce qui a nécessité une correction manuelle.

Quiz · Validation des acquis

Quiz · Fonctions du Dashboard

8 questions · une seule bonne réponse par question · vous pouvez recommencer autant de fois que nécessaire.

1 / 8
Question à choix multiple

Pourquoi stocker les filtres dans l'URL plutôt qu'en état React local ?

Cliquez sur lecture pour démarrer.
§00 · Intro 0:00 / 5:00 Voix activée