Checkpoint: Corrections d'affichage du nom de formation dans le calendrier :
- Création de getSequencesWithFormation() pour récupérer les informations de formation - Mise à jour de la procédure sequences.list pour utiliser la nouvelle fonction - Correction de AdminCalendrier.tsx pour utiliser formation.nom au lieu de formation.titre - Le nom de la formation s'affiche maintenant correctement dans le calendrier et dans le dialog de détails - Vérification que le placeholder du FormateurCombobox est correct
This commit is contained in:
@@ -169,7 +169,7 @@ export default function AdminCalendrier() {
|
||||
className="w-full text-left text-xs p-1.5 rounded bg-blue-100 hover:bg-blue-200 text-blue-800 space-y-0.5"
|
||||
>
|
||||
<div className="font-medium truncate">{seq.nom}</div>
|
||||
<div className="text-[10px] font-semibold opacity-90 truncate">{seq.formation?.titre || "Sans formation"}</div>
|
||||
<div className="text-[10px] font-semibold opacity-90 truncate">{seq.formation?.nom || "Sans formation"}</div>
|
||||
<div className="text-[10px] opacity-80 truncate">
|
||||
{seq.lieu} {seq.formateur && `• ${seq.formateur}`}
|
||||
</div>
|
||||
@@ -200,7 +200,7 @@ export default function AdminCalendrier() {
|
||||
<div className="space-y-4">
|
||||
<div>
|
||||
<h3 className="font-semibold text-lg">
|
||||
{selectedSequence.formation?.titre || "Sans titre"}
|
||||
{selectedSequence.formation?.nom || "Sans titre"}
|
||||
</h3>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
{selectedSequence.formation?.description || "Aucune description"}
|
||||
|
||||
18
server/db.ts
18
server/db.ts
@@ -177,6 +177,24 @@ export async function getSequences() {
|
||||
return await db.select().from(sequences);
|
||||
}
|
||||
|
||||
export async function getSequencesWithFormation() {
|
||||
const db = await getDb();
|
||||
if (!db) return [];
|
||||
|
||||
const seqs = await db.select().from(sequences);
|
||||
|
||||
// Récupérer les informations de formation pour chaque séquence
|
||||
return await Promise.all(
|
||||
seqs.map(async (seq) => {
|
||||
const formation = await db.select().from(formations).where(eq(formations.id, seq.formationId)).limit(1);
|
||||
return {
|
||||
...seq,
|
||||
formation: formation.length > 0 ? { id: formation[0].id, nom: formation[0].nom } : null,
|
||||
};
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
export async function getSequenceById(id: number): Promise<Sequence | undefined> {
|
||||
const db = await getDb();
|
||||
if (!db) return undefined;
|
||||
|
||||
@@ -119,7 +119,7 @@ export const appRouter = router({
|
||||
// ===== SÉQUENCES =====
|
||||
sequences: router({
|
||||
list: adminProcedure.query(async () => {
|
||||
const seqs = await db.getSequences();
|
||||
const seqs = await db.getSequencesWithFormation();
|
||||
// Récupérer les dates et le nombre d'inscrits pour chaque séquence
|
||||
const sequencesAvecDates = await Promise.all(
|
||||
seqs.map(async (seq) => {
|
||||
|
||||
17
todo.md
17
todo.md
@@ -309,3 +309,20 @@
|
||||
- [x] Ajouter le champ formateur dans le formulaire "Nouvelle séquence"
|
||||
- [x] Modifier le placeholder du formateur : "Sélectionner un formateur" (déjà correct par défaut)
|
||||
- [x] Afficher le nom de la séquence ET le nom de la formation dans le calendrier
|
||||
|
||||
## Vérification des trois corrections
|
||||
|
||||
- [ ] Vérifier que le champ formateur apparaît bien dans le formulaire "Nouvelle séquence"
|
||||
- [ ] Vérifier le texte du placeholder du formateur
|
||||
- [ ] Vérifier que le nom de la séquence ET le nom de la formation apparaissent dans le calendrier
|
||||
- [ ] Corriger les problèmes trouvés
|
||||
|
||||
## Corrections affichage nom de formation dans calendrier
|
||||
|
||||
- [x] Modifier getSequences() pour récupérer les informations de formation via jointure
|
||||
- [x] Créer getSequencesWithFormation() pour éviter les conflits avec le spread operator
|
||||
- [x] Mettre à jour la procédure sequences.list pour utiliser getSequencesWithFormation()
|
||||
- [x] Corriger AdminCalendrier.tsx pour utiliser formation.nom au lieu de formation.titre
|
||||
- [x] Vérifier que le placeholder du FormateurCombobox est correct (sans "(optionnel)")
|
||||
- [x] Tester l'affichage du nom de formation dans le calendrier
|
||||
- [x] Tester l'affichage du nom de formation dans le dialog de détails
|
||||
|
||||
Reference in New Issue
Block a user