fix(analyse): afficher les libellés au lieu des IDs dans la sélection fine des nœuds
Problème: - Dans l'onglet Analyse, la sélection fine des nœuds affichait les clés techniques (ex: "Chine_geographique") au lieu des libellés lisibles (ex: "Chine") Solution: - Création de mappings bidirectionnels ID↔Label pour chaque niveau - Affichage des labels dans les multiselect pour l'utilisateur - Stockage et utilisation des IDs en interne pour la logique métier - Préservation de la compatibilité avec le système de persistance 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
273f409a55
commit
b97bbfe0ed
@ -140,6 +140,14 @@ def selectionner_noeuds(
|
|||||||
depart_nodes = [n for n in G.nodes() if niveaux_temp.get(n) == niveau_depart]
|
depart_nodes = [n for n in G.nodes() if niveaux_temp.get(n) == niveau_depart]
|
||||||
arrivee_nodes = [n for n in G.nodes() if niveaux_temp.get(n) == niveau_arrivee]
|
arrivee_nodes = [n for n in G.nodes() if niveaux_temp.get(n) == niveau_arrivee]
|
||||||
|
|
||||||
|
# Créer un mapping ID -> Label pour l'affichage
|
||||||
|
depart_labels = {n: G.nodes[n].get("label", n) for n in depart_nodes}
|
||||||
|
arrivee_labels = {n: G.nodes[n].get("label", n) for n in arrivee_nodes}
|
||||||
|
|
||||||
|
# Mapping inverse Label -> ID pour retrouver les IDs sélectionnés
|
||||||
|
depart_labels_inverse = {v: k for k, v in depart_labels.items()}
|
||||||
|
arrivee_labels_inverse = {v: k for k, v in arrivee_labels.items()}
|
||||||
|
|
||||||
# DEPARTS -------------------------------------
|
# DEPARTS -------------------------------------
|
||||||
if "analyse_noeuds_depart" not in st.session_state:
|
if "analyse_noeuds_depart" not in st.session_state:
|
||||||
anciens_departs = []
|
anciens_departs = []
|
||||||
@ -152,13 +160,17 @@ def selectionner_noeuds(
|
|||||||
i += 1
|
i += 1
|
||||||
st.session_state["analyse_noeuds_depart"] = anciens_departs
|
st.session_state["analyse_noeuds_depart"] = anciens_departs
|
||||||
|
|
||||||
st.multiselect(
|
# Afficher les labels mais stocker les IDs
|
||||||
|
selected_labels_depart = st.multiselect(
|
||||||
str(_("pages.analyse.filter_start_nodes")),
|
str(_("pages.analyse.filter_start_nodes")),
|
||||||
sorted(depart_nodes),
|
sorted(depart_labels.values()),
|
||||||
key="analyse_noeuds_depart"
|
default=[depart_labels.get(n, n) for n in st.session_state["analyse_noeuds_depart"] if n in depart_labels],
|
||||||
|
key="analyse_noeuds_depart_labels"
|
||||||
)
|
)
|
||||||
|
|
||||||
departs_selection = st.session_state["analyse_noeuds_depart"]
|
# Convertir les labels sélectionnés en IDs
|
||||||
|
departs_selection = [depart_labels_inverse.get(label, label) for label in selected_labels_depart]
|
||||||
|
st.session_state["analyse_noeuds_depart"] = departs_selection
|
||||||
|
|
||||||
supprime_champ_statut("pages.analyse.filter_start_nodes")
|
supprime_champ_statut("pages.analyse.filter_start_nodes")
|
||||||
if departs_selection:
|
if departs_selection:
|
||||||
@ -177,13 +189,17 @@ def selectionner_noeuds(
|
|||||||
i += 1
|
i += 1
|
||||||
st.session_state["analyse_noeuds_arrivee"] = anciens_arrivees
|
st.session_state["analyse_noeuds_arrivee"] = anciens_arrivees
|
||||||
|
|
||||||
st.multiselect(
|
# Afficher les labels mais stocker les IDs
|
||||||
|
selected_labels_arrivee = st.multiselect(
|
||||||
str(_("pages.analyse.filter_end_nodes")),
|
str(_("pages.analyse.filter_end_nodes")),
|
||||||
sorted(arrivee_nodes),
|
sorted(arrivee_labels.values()),
|
||||||
key="analyse_noeuds_arrivee"
|
default=[arrivee_labels.get(n, n) for n in st.session_state["analyse_noeuds_arrivee"] if n in arrivee_labels],
|
||||||
|
key="analyse_noeuds_arrivee_labels"
|
||||||
)
|
)
|
||||||
|
|
||||||
arrivees_selection = st.session_state["analyse_noeuds_arrivee"]
|
# Convertir les labels sélectionnés en IDs
|
||||||
|
arrivees_selection = [arrivee_labels_inverse.get(label, label) for label in selected_labels_arrivee]
|
||||||
|
st.session_state["analyse_noeuds_arrivee"] = arrivees_selection
|
||||||
|
|
||||||
supprime_champ_statut("pages.analyse.filter_end_nodes")
|
supprime_champ_statut("pages.analyse.filter_end_nodes")
|
||||||
if arrivees_selection:
|
if arrivees_selection:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user