diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx index 912be78566..bf4a98837d 100644 --- a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/Accueil.tsx @@ -1,8 +1,19 @@ +import { useState } from 'react'; +import { Button } from '@tet/ui'; import { referentielToName } from 'app/labels'; import { useProgressionReferentiel } from './data/useProgressionReferentiel'; import EtatDesLieux from './EtatDesLieux/EtatDesLieux'; -import { useCurrentCollectivite } from 'core-logic/hooks/useCurrentCollectivite'; +import { + CurrentCollectivite, + useCurrentCollectivite, +} from 'core-logic/hooks/useCurrentCollectivite'; import { useAuth } from 'core-logic/api/auth/AuthProvider'; +import { + useMembres, + groupeParFonction, +} from './EtatDesLieux/referents/useMembres'; +import { ModaleReferents } from './EtatDesLieux/referents/ModaleReferents'; +import { ReferentsList } from './EtatDesLieux/referents/ReferentsList'; /** * Affiche la page d'accueil d'une collectivité @@ -35,16 +46,14 @@ const Accueil = (): JSX.Element => { /** Sinon on affiche la page. * Ceci permet de ne pas appeler `useProgressionReferentiel` * qui ne marche pas si l'utilisateur n'a pas les droits */ - return ( - - ); + return ; }; /** Affiche le tableau de bord de l'accueil pour les utilisateurs avec les droits nécessaires */ const AccueilNonConfidentielle = ({ - collectiviteId, + collectivite, }: { - collectiviteId: number; + collectivite: CurrentCollectivite; }) => { const { caeTable: caeProgressionScore, @@ -54,34 +63,71 @@ const AccueilNonConfidentielle = ({ caePotentiel, eciPotentiel, } = useProgressionReferentiel(); + + const { collectivite_id: collectiviteId, readonly } = collectivite; + const { data: referents } = useMembres({ collectiviteId, estReferent: true }); + const referentsParFonction = groupeParFonction(referents || []); + + const [isModalOpen, setIsModalOpen] = useState(false); + return (
{!!collectiviteId && ( -
-
-
- {/** Climat Air Énergie */} - - {/** Écomomie circulaire */} - -
+
+
+

{"Synthèse de l'état des lieux"}

+ {!readonly && ( + + )} +
+
+ + + +
+
+ {/** Climat Air Énergie */} + + {/** Écomomie circulaire */} +
)} + + {!readonly && isModalOpen && ( + + )}
); }; diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/referents/ReferentItem.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/referents/ReferentItem.tsx new file mode 100644 index 0000000000..ae909fdf31 --- /dev/null +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/referents/ReferentItem.tsx @@ -0,0 +1,57 @@ +import { Icon, Tooltip, useCopyToClipboard } from '@tet/ui'; +import { CollectiviteMembre } from './useMembres'; +import { referentielToName, membreFonctionToLabel } from 'app/labels'; +import { useBaseToast } from 'core-logic/hooks/useBaseToast'; + +export type ReferentItemProps = { + membre: CollectiviteMembre; +}; + +/** + * Affiche des infos à propos d'un référent de la collectivité + */ +export const ReferentItem = (props: ReferentItemProps) => { + const { membre } = props; + const { copy } = useCopyToClipboard(); + const { setToast, renderToast } = useBaseToast(); + + return ( + +

+ Champ d'intervention :{' '} + + {membre.champIntervention?.length + ? membre.champIntervention + .map((ref) => referentielToName[ref]) + .join(' / ') + : 'Non renseigné'} + +

+

+ Intitulé de poste :{' '} + + {membre.fonction ? membreFonctionToLabel[membre.fonction] : ''} + +

+

{membre.email}

+ + } + > +
{ + if (membre.email) { + copy(membre.email); + setToast('success', 'Courriel copié'); + } + }} + > + {membre.prenom} {membre.nom}{' '} + + {renderToast()} +
+
+ ); +}; diff --git a/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/referents/ReferentsList.tsx b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/referents/ReferentsList.tsx new file mode 100644 index 0000000000..6dd03e50d3 --- /dev/null +++ b/app.territoiresentransitions.react/src/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/referents/ReferentsList.tsx @@ -0,0 +1,26 @@ +import { ReferentItem } from './ReferentItem'; +import { CollectiviteMembre } from './useMembres'; + +export type ReferentsListProps = { + nomFonction: string; + referents?: CollectiviteMembre[]; +}; + +/** + * Affiche une liste de membres référents de la collectivité + */ +export const ReferentsList = (props: ReferentsListProps) => { + const { nomFonction, referents } = props; + return ( +

+ {nomFonction} :{' '} + {referents?.length ? ( + referents.map((membre) => ( + + )) + ) : ( + Non renseigné + )} +

+ ); +};