Checkpoint: V1.26 - Feuille de présence : un PDF par jour (A4 portrait, colonnes sig. matin + après-midi sur même ligne, zone signature formateur). Correction des bugs d'upload attestations et de plantage PDF.

This commit is contained in:
Manus
2026-03-02 04:39:32 -05:00
parent 460d2f3922
commit 4063e298b9
4 changed files with 192 additions and 15 deletions

View File

@@ -132,17 +132,24 @@ export default function AdminSequenceInscrits() {
});
const exportFeuilleMutation = trpc.inscriptions.exportFeuillePresence.useMutation({
onSuccess: (result) => {
const blob = new Blob([Uint8Array.from(atob(result.buffer), c => c.charCodeAt(0))], {
type: 'application/pdf'
onSuccess: (results) => {
// Télécharger chaque PDF avec un petit décalage pour éviter les blocages navigateur
results.forEach(({ buffer, filename }, index) => {
setTimeout(() => {
const blob = new Blob([Uint8Array.from(atob(buffer), c => c.charCodeAt(0))], {
type: 'application/pdf'
});
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, index * 500); // 500ms de décalage entre chaque téléchargement
});
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = result.filename;
a.click();
window.URL.revokeObjectURL(url);
toast.success("Feuille de présence téléchargée");
toast.success(`${results.length} feuille(s) de présence téléchargée(s) (une par jour)`);
},
onError: (error) => {
toast.error("Erreur lors de l'export : " + error.message);