diff --git a/app/analyse/interface.py b/app/analyse/interface.py index 4901ce5..8874656 100644 --- a/app/analyse/interface.py +++ b/app/analyse/interface.py @@ -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: