import { useState, useEffect } from 'react'; import { api } from '../../api.js'; export default function SecteursInvSection() { const [secteursInv, setSecteursInv] = useState([]); const [err, setErr] = useState(null); const [selectedSectInv, setSelectedSectInv] = useState(null); const [editingSectInv, setEditingSectInv] = useState(null); const [editingNomSectInv, setEditingNomSectInv] = useState(''); const [newSectInvNom, setNewSectInvNom] = useState(''); const [showNewSectInv, setShowNewSectInv] = useState(false); const [sectGlobalOpen, setSectGlobalOpen] = useState(false); const [sectPrivateOpen, setSectPrivateOpen] = useState(true); useEffect(() => { api.get('/secteurs-inv').then(data => { setSecteursInv(data.sort((a, b) => b.is_global - a.is_global || a.nom.localeCompare(b.nom))); }).catch(() => {}); }, []); const saveSectInv = async (nom) => { if (!nom.trim()) return; try { const row = await api.post('/secteurs-inv', { nom: nom.trim() }); setSecteursInv(prev => [...prev, row].sort((a, b) => b.is_global - a.is_global || a.nom.localeCompare(b.nom))); setShowNewSectInv(false); setNewSectInvNom(''); setErr(null); } catch (e) { setErr(e.message || 'Erreur'); } }; const renameSectInv = async (id, nom) => { if (!nom.trim()) return; try { await api.put(`/secteurs-inv/${id}`, { nom: nom.trim() }); setSecteursInv(prev => prev.map(s => s.id === id ? { ...s, nom: nom.trim() } : s)); setEditingSectInv(null); } catch (e) { setErr(e.message || 'Erreur'); } }; const delSectInv = async (id) => { try { await api.del(`/secteurs-inv/${id}`); setSecteursInv(prev => prev.filter(s => s.id !== id)); if (selectedSectInv?.id === id) setSelectedSectInv(null); } catch (e) { setErr(e.message || 'Erreur'); } }; const globalSects = secteursInv.filter(s => s.is_global); const privateSects = secteursInv.filter(s => !s.is_global); return (

Mes secteurs d'investissement

{err &&
{err}
} {/* Accordéon — Secteurs globalement définis */}
{sectGlobalOpen && (
{globalSects.length === 0 && ( )} {globalSects.map(s => ( ))}
Nom Plateformes Investissements
Aucun secteur global
{s.nom} {s.nb_plateformes > 0 ? s.nb_plateformes : } {s.nb_investissements > 0 ? s.nb_investissements : }
)}
{/* Accordéon — Mes propres secteurs */}
{sectPrivateOpen && ( )}
{sectPrivateOpen && (
{showNewSectInv && (
setNewSectInvNom(e.target.value)} onKeyDown={e => { if (e.key === 'Enter') saveSectInv(newSectInvNom); if (e.key === 'Escape') setShowNewSectInv(false); }} />
)} {privateSects.length === 0 && ( )} {privateSects.map(s => ( ))}
Nom Plateformes Investissements
Aucun secteur personnel
{editingSectInv === s.id ? (
setEditingNomSectInv(e.target.value)} onKeyDown={e => { if (e.key === 'Enter') renameSectInv(s.id, editingNomSectInv); if (e.key === 'Escape') setEditingSectInv(null); }} />
) : ( {s.nom} )}
{s.nb_plateformes > 0 ? s.nb_plateformes : } {s.nb_investissements > 0 ? s.nb_investissements : } {editingSectInv !== s.id && (
)}
)}
); }