Checkpoint: Affichage des images de signature (matin et après-midi) directement dans la page d'émargement pour les apprenants et formateurs. Les images s'affichent en miniature (h-8 w-16) à côté des informations de présence et sont cliquables pour agrandissement.
This commit is contained in:
@@ -381,19 +381,15 @@ export default function FormateurEmargement() {
|
|||||||
minute: "2-digit"
|
minute: "2-digit"
|
||||||
})}</span>
|
})}</span>
|
||||||
{presenceInfo.signatureUrl && (
|
{presenceInfo.signatureUrl && (
|
||||||
<Button
|
<img
|
||||||
size="sm"
|
src={presenceInfo.signatureUrl}
|
||||||
variant="ghost"
|
alt="Signature"
|
||||||
className="h-5 w-5 p-0"
|
className="h-8 w-16 object-contain border border-gray-300 rounded cursor-pointer hover:border-blue-500 transition-colors"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedSignature(presenceInfo.signatureUrl!);
|
setSelectedSignature(presenceInfo.signatureUrl!);
|
||||||
setShowSignatureDialog(true);
|
setShowSignatureDialog(true);
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-4 w-4 text-blue-600">
|
|
||||||
<path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/>
|
|
||||||
</svg>
|
|
||||||
</Button>
|
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -441,19 +437,15 @@ export default function FormateurEmargement() {
|
|||||||
minute: "2-digit"
|
minute: "2-digit"
|
||||||
})}</span>
|
})}</span>
|
||||||
{presenceInfo.signatureUrl && (
|
{presenceInfo.signatureUrl && (
|
||||||
<Button
|
<img
|
||||||
size="sm"
|
src={presenceInfo.signatureUrl}
|
||||||
variant="ghost"
|
alt="Signature"
|
||||||
className="h-5 w-5 p-0"
|
className="h-8 w-16 object-contain border border-gray-300 rounded cursor-pointer hover:border-blue-500 transition-colors"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedSignature(presenceInfo.signatureUrl!);
|
setSelectedSignature(presenceInfo.signatureUrl!);
|
||||||
setShowSignatureDialog(true);
|
setShowSignatureDialog(true);
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-4 w-4 text-blue-600">
|
|
||||||
<path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/>
|
|
||||||
</svg>
|
|
||||||
</Button>
|
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -561,19 +553,15 @@ export default function FormateurEmargement() {
|
|||||||
minute: "2-digit"
|
minute: "2-digit"
|
||||||
})}</span>
|
})}</span>
|
||||||
{dateGroup.matin.signatureUrl && (
|
{dateGroup.matin.signatureUrl && (
|
||||||
<Button
|
<img
|
||||||
size="sm"
|
src={dateGroup.matin.signatureUrl}
|
||||||
variant="ghost"
|
alt="Signature formateur"
|
||||||
className="h-5 w-5 p-0"
|
className="h-8 w-16 object-contain border border-gray-300 rounded cursor-pointer hover:border-blue-500 transition-colors"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedSignature(dateGroup.matin.signatureUrl!);
|
setSelectedSignature(dateGroup.matin.signatureUrl!);
|
||||||
setShowSignatureDialog(true);
|
setShowSignatureDialog(true);
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-4 w-4 text-blue-600">
|
|
||||||
<path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/>
|
|
||||||
</svg>
|
|
||||||
</Button>
|
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -600,19 +588,15 @@ export default function FormateurEmargement() {
|
|||||||
minute: "2-digit"
|
minute: "2-digit"
|
||||||
})}</span>
|
})}</span>
|
||||||
{dateGroup.apres_midi.signatureUrl && (
|
{dateGroup.apres_midi.signatureUrl && (
|
||||||
<Button
|
<img
|
||||||
size="sm"
|
src={dateGroup.apres_midi.signatureUrl}
|
||||||
variant="ghost"
|
alt="Signature formateur"
|
||||||
className="h-5 w-5 p-0"
|
className="h-8 w-16 object-contain border border-gray-300 rounded cursor-pointer hover:border-blue-500 transition-colors"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedSignature(dateGroup.apres_midi.signatureUrl!);
|
setSelectedSignature(dateGroup.apres_midi.signatureUrl!);
|
||||||
setShowSignatureDialog(true);
|
setShowSignatureDialog(true);
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-4 w-4 text-blue-600">
|
|
||||||
<path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/>
|
|
||||||
</svg>
|
|
||||||
</Button>
|
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
9
todo.md
9
todo.md
@@ -1557,3 +1557,12 @@
|
|||||||
- [x] Ajouter une section "Signature Formateur" dans le PDF avec les signatures matin et après-midi
|
- [x] Ajouter une section "Signature Formateur" dans le PDF avec les signatures matin et après-midi
|
||||||
- [x] Tester la génération PDF avec les signatures formateurs
|
- [x] Tester la génération PDF avec les signatures formateurs
|
||||||
- [x] Déployer sur recette et production
|
- [x] Déployer sur recette et production
|
||||||
|
|
||||||
|
|
||||||
|
## Afficher les images de signature directement dans la page d'émargement
|
||||||
|
|
||||||
|
- [x] Analyser le code actuel de la page FormateurEmargement.tsx pour identifier où ajouter les images
|
||||||
|
- [x] Modifier l'affichage des lignes de présence apprenants pour inclure les images de signature matin et après-midi
|
||||||
|
- [x] Modifier l'affichage des lignes de présence formateurs pour inclure les images de signature matin et après-midi
|
||||||
|
- [x] Ajuster le layout pour que les images s'affichent correctement à côté des informations existantes
|
||||||
|
- [x] Déployer sur le serveur de test (recette) uniquement
|
||||||
|
|||||||
Reference in New Issue
Block a user