// EtablissementListView.tsx — Vue liste tableau des établissements
// Design: Corporate Modernism — Tableau dense avec indicateurs visuels de vétusté
import { Monitor, Laptop, ChevronRight, ArrowUpDown, ArrowUp, ArrowDown } from 'lucide-react';
import type { Etablissement, SortField, SortOrder } from '../types/budget';
import { formatEuros } from '../lib/format';
interface Props {
etablissements: Etablissement[];
onSelect: (etab: Etablissement) => void;
sortField: SortField;
sortOrder: SortOrder;
onSort: (field: SortField) => void;
}
function SortIcon({ field, sortField, sortOrder }: { field: SortField; sortField: SortField; sortOrder: SortOrder }) {
if (sortField !== field) return
| Code | onSort('nom')}
>
Établissement
|
onSort('nb_fixes_renouveler')}
style={{ width: '200px' }}
>
|
onSort('nb_portables_renouveler')}
style={{ width: '200px' }}
>
|
Total à renouveler | onSort('budget_total')}
style={{ width: '130px' }}
>
Budget 2027
|
|
|---|---|---|---|---|---|---|
| {etab.code} | {/* Nom */}{etab.nom} | {/* PC Fixes */}
|
{/* PC Portables */}
|
{/* Total à renouveler */}
{totalR > 0 ? ( {totalR} ) : ( 0 )} | {/* Budget */}{formatEuros(budget)} | {/* Chevron */}
|