L'affichage des résultats par région/département/circonscription/commune/bureau de vote est fonctionnel

This commit is contained in:
Emmy D'Anello 2024-06-16 08:11:46 +02:00
parent eb5a112c36
commit 5cc10f3106
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
3 changed files with 31 additions and 3 deletions

View File

@ -17,6 +17,10 @@ function App() {
path: "/elections/europeennes/2024/region/:zoneId/",
element: <Elections2024 typeResultats="regions" />,
},
{
path: "/elections/europeennes/2024/circonscription/:zoneId/",
element: <Elections2024 typeResultats="circonscriptions" />,
},
{
path: "/elections/europeennes/2024/departement/:zoneId/",
element: <Elections2024 typeResultats="departements" />,
@ -25,6 +29,10 @@ function App() {
path: "/elections/europeennes/2024/commune/:zoneId/",
element: <Elections2024 typeResultats="communes" />,
},
{
path: "/elections/europeennes/2024/bureau_vote/:zoneId/",
element: <Elections2024 typeResultats="bureaux_vote" />,
},
])
return <>

View File

@ -17,7 +17,7 @@ import {useEffect, useState} from "react"
highchartsItem(Highcharts)
function ResultatsTable({blocs, nuances, listes, resultats, siegesParListe}) {
const voix_listes = resultats.voix_listes
const voix_listes = resultats?.voix_listes ?? {}
const listes_triees = listes.toSorted((l1, l2) => {
return (voix_listes[l2.numero] || 0) - (voix_listes[l1.numero] || 0)
})
@ -117,6 +117,7 @@ function ParticipationTable({resultats}) {
export default function Election2024({typeResultats = "france"}) {
const {zoneId} = useParams()
const [zoneName, setZoneName] = useState("France")
const [grouperParBloc, setGrouperParBloc] = useState(false)
const [retirerSeuil, setRetirerSeuil] = useState(false)
const [blocs, setBlocs] = useState([])
@ -150,6 +151,23 @@ export default function Election2024({typeResultats = "france"}) {
}
}, [typeResultats, zoneId])
useEffect(() => {
if (!resultats || resultats.length === 0)
setZoneName("")
else if (typeResultats === "france")
setZoneName("France")
else if (typeResultats === "regions")
setZoneName(`Région ${resultats.region.nom}`)
else if (typeResultats === "departements")
setZoneName(`Département ${resultats.departement.nom}`)
else if (typeResultats === "circonscriptions")
setZoneName(`Circonscription ${resultats.circonscription.nom}`)
else if (typeResultats === "communes")
setZoneName(`Commune ${resultats.commune.nom}`)
else if (typeResultats === "bureaux_vote")
setZoneName(resultats.bureau_vote.libelle)
}, [typeResultats, resultats])
useEffect(() => {
const parBloc = {}
const parNuance = {}
@ -301,7 +319,7 @@ export default function Election2024({typeResultats = "france"}) {
type: 'column'
},
title: {
text: 'Résultats des élections européennes 2024 en France',
text: `Résultats des élections européennes 2024 : ${zoneName}`,
},
legend: {
labelFormat: '{name} <span style="opacity: 0.4">{x}</span>'

View File

@ -317,7 +317,9 @@ def exporter_resultats_bureaux_vote(engine: Engine, verbose: bool = False) -> No
iterator = tqdm(bureaux_vote, desc="Bureaux de vote") if verbose else bureaux_vote
for bureau_vote in iterator:
bureau_vote_json = {'id': bureau_vote.id, 'commune': bureau_vote.commune_code}
bureau_vote_json = {'id': bureau_vote.id,
'commune': bureau_vote.commune_code,
'circonscription': bureau_vote.circo_code}
bureaux_vote_json.append(bureau_vote_json)
resultats_bureau_vote = session.execute(