/** * Composant liste des chantiers récents */ import React from 'react'; import { Card } from 'primereact/card'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Badge } from 'primereact/badge'; import { Button } from 'primereact/button'; import { Skeleton } from 'primereact/skeleton'; import { ChantierRecent, StatutChantier } from '../../types/btp'; interface ChantiersListProps { chantiers: ChantierRecent[]; loading?: boolean; onViewAll?: () => void; } const ChantiersList: React.FC = ({ chantiers, loading = false, onViewAll }) => { const getStatutSeverity = (statut: StatutChantier) => { switch (statut) { case StatutChantier.EN_COURS: return 'info'; case StatutChantier.PLANIFIE: return 'warning'; case StatutChantier.TERMINE: return 'success'; case StatutChantier.ANNULE: return 'danger'; case StatutChantier.SUSPENDU: return 'secondary'; default: return 'info'; } }; const getStatutLabel = (statut: StatutChantier) => { switch (statut) { case StatutChantier.EN_COURS: return 'En cours'; case StatutChantier.PLANIFIE: return 'Planifié'; case StatutChantier.TERMINE: return 'Terminé'; case StatutChantier.ANNULE: return 'Annulé'; case StatutChantier.SUSPENDU: return 'Suspendu'; default: return statut; } }; const statutBodyTemplate = (rowData: ChantierRecent) => { return ( ); }; const montantBodyTemplate = (rowData: ChantierRecent) => { return rowData.montantPrevu ? `${rowData.montantPrevu.toLocaleString()} €` : '-'; }; const dateBodyTemplate = (rowData: ChantierRecent) => { return new Date(rowData.dateDebut).toLocaleDateString('fr-FR'); }; const header = (
Chantiers récents
{onViewAll && (
); if (loading) { return (
{[...Array(5)].map((_, i) => (
))}
); } return ( (
{rowData.nom}
{rowData.client}
)} />
); }; export default ChantiersList;