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]
|
||||
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 -------------------------------------
|
||||
if "analyse_noeuds_depart" not in st.session_state:
|
||||
anciens_departs = []
|
||||
@ -152,13 +160,17 @@ def selectionner_noeuds(
|
||||
i += 1
|
||||
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")),
|
||||
sorted(depart_nodes),
|
||||
key="analyse_noeuds_depart"
|
||||
sorted(depart_labels.values()),
|
||||
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")
|
||||
if departs_selection:
|
||||
@ -177,13 +189,17 @@ def selectionner_noeuds(
|
||||
i += 1
|
||||
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")),
|
||||
sorted(arrivee_nodes),
|
||||
key="analyse_noeuds_arrivee"
|
||||
sorted(arrivee_labels.values()),
|
||||
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")
|
||||
if arrivees_selection:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user