diff --git a/nupes-elections-front/src/App.js b/nupes-elections-front/src/App.js
index 4d15ba3..461e7db 100644
--- a/nupes-elections-front/src/App.js
+++ b/nupes-elections-front/src/App.js
@@ -17,6 +17,10 @@ function App() {
path: "/elections/europeennes/2024/region/:zoneId/",
element: ,
},
+ {
+ path: "/elections/europeennes/2024/circonscription/:zoneId/",
+ element: ,
+ },
{
path: "/elections/europeennes/2024/departement/:zoneId/",
element: ,
@@ -25,6 +29,10 @@ function App() {
path: "/elections/europeennes/2024/commune/:zoneId/",
element: ,
},
+ {
+ path: "/elections/europeennes/2024/bureau_vote/:zoneId/",
+ element: ,
+ },
])
return <>
diff --git a/nupes-elections-front/src/Elections2024.js b/nupes-elections-front/src/Elections2024.js
index 581a913..266b0c6 100644
--- a/nupes-elections-front/src/Elections2024.js
+++ b/nupes-elections-front/src/Elections2024.js
@@ -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} {x}'
diff --git a/nupes/scripts/export_resultats_2024.py b/nupes/scripts/export_resultats_2024.py
index 40a316c..aea55cd 100644
--- a/nupes/scripts/export_resultats_2024.py
+++ b/nupes/scripts/export_resultats_2024.py
@@ -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(