fix(fiches): Correction bug sélection fiche nécessitant double-clic
Problème: - Lors du changement de fiche dans le selectbox, l'ancienne fiche restait affichée et il fallait cliquer 2 fois pour changer Cause: - Le code assignait manuellement la valeur du selectbox au session_state AVANT l'affichage du widget, créant un conflit avec l'index forcé - Streamlit réexécutait le script avec l'ancienne valeur stockée Solution: - Utilisation du paramètre 'key' pour lier automatiquement le selectbox au session_state au lieu d'une assignation manuelle - Suppression des lignes redondantes d'assignation Changements: - app/fiches/interface.py: Ajout key pour les 2 selectbox - .gitignore: Précision /Fiches/ pour ne pas ignorer app/fiches/ Impact: - Sélection de fiche fonctionne maintenant au premier clic - Comportement Streamlit standard et prévisible
This commit is contained in:
parent
77b6bedd6f
commit
64f041f04f
6
.gitignore
vendored
6
.gitignore
vendored
@ -28,10 +28,10 @@ Local/
|
|||||||
HTML/
|
HTML/
|
||||||
Corpus/
|
Corpus/
|
||||||
|
|
||||||
# Ignorer données Fiches (adapté à ton projet)
|
# Ignorer données Fiches générées (adapté à ton projet)
|
||||||
Fiches/
|
/Fiches/
|
||||||
HTML/
|
HTML/
|
||||||
static/Fiches/
|
/static/Fiches/
|
||||||
|
|
||||||
# Autres spécifiques si besoin
|
# Autres spécifiques si besoin
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
@ -43,14 +43,13 @@ def interface_fiches() -> None:
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
idx = 0
|
idx = 0
|
||||||
|
|
||||||
st.session_state["dossier_choisi"] = st.selectbox(
|
dossier_choisi = st.selectbox(
|
||||||
str(_("pages.fiches.choose_category")),
|
str(_("pages.fiches.choose_category")),
|
||||||
[str(_("pages.fiches.select_folder"))] + dossiers,
|
[str(_("pages.fiches.select_folder"))] + dossiers,
|
||||||
index=idx
|
index=idx,
|
||||||
|
key="dossier_choisi"
|
||||||
)
|
)
|
||||||
|
|
||||||
dossier_choisi = st.session_state["dossier_choisi"]
|
|
||||||
|
|
||||||
if dossier_choisi and dossier_choisi != str(_("pages.fiches.select_folder")):
|
if dossier_choisi and dossier_choisi != str(_("pages.fiches.select_folder")):
|
||||||
fiches = arbo.get(dossier_choisi, [])
|
fiches = arbo.get(dossier_choisi, [])
|
||||||
noms_fiches = [f['nom'] for f in fiches]
|
noms_fiches = [f['nom'] for f in fiches]
|
||||||
@ -64,14 +63,13 @@ def interface_fiches() -> None:
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
idx_fiche = 0
|
idx_fiche = 0
|
||||||
|
|
||||||
st.session_state["fiche_choisie"] = st.selectbox(
|
fiche_choisie = st.selectbox(
|
||||||
str(_("pages.fiches.choose_file")),
|
str(_("pages.fiches.choose_file")),
|
||||||
[str(_("pages.fiches.select_file"))] + noms_fiches,
|
[str(_("pages.fiches.select_file"))] + noms_fiches,
|
||||||
index=idx_fiche
|
index=idx_fiche,
|
||||||
|
key="fiche_choisie"
|
||||||
)
|
)
|
||||||
|
|
||||||
fiche_choisie = st.session_state["fiche_choisie"]
|
|
||||||
|
|
||||||
if fiche_choisie and fiche_choisie != str(_("pages.fiches.select_file")):
|
if fiche_choisie and fiche_choisie != str(_("pages.fiches.select_file")):
|
||||||
fiche_info = next((f for f in fiches if f["nom"] == fiche_choisie), None)
|
fiche_info = next((f for f in fiches if f["nom"] == fiche_choisie), None)
|
||||||
if fiche_info:
|
if fiche_info:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user