Spaces:
Running
Running
import streamlit as st | |
from util import getYamlConfig | |
def page(): | |
st.subheader("Définissez vos paramètres") | |
# Charge la configuration YAML | |
config = getYamlConfig() | |
# Vérifie si la structure inclut des 'parts' ou une liste de variables | |
if 'parts' in config['variables']: | |
# Cas avec 'parts' : Trie les parts et affiche les champs par onglet | |
parts = config["variables"]["parts"] | |
parts_sorted = sorted(parts, key=lambda part: part.get('number', float('inf'))) | |
# Création de tabs pour chaque 'part' trié | |
tabs = st.tabs([part['name'] for part in parts_sorted]) | |
for part, tab in zip(parts_sorted, tabs): | |
with tab: | |
for field in part['fields']: | |
display_field(field) | |
else: | |
# Display fields directly if no parts are defined | |
for field in st.session_state.data_dict: | |
display_field(field) | |
def display_field(field): | |
"""Helper function to create the correct input based on field 'nature'.""" | |
if field['nature'] == 'radio': | |
value = st.radio(field['label'], field['options'], key=field['key']) | |
field['value'] = value | |
elif field['nature'] == 'selectbox': | |
value = st.selectbox(field['label'], field['options'], key=field['key']) | |
field['value'] = value | |
elif field['nature'] == 'multiselect': | |
value = st.multiselect(field['label'], field['options'], key=field['key']) | |
field['value'] = value | |
elif field['nature'] == 'date': | |
value = st.date_input(field['label'], key=field['key']) | |
field['value'] = value | |
elif field['nature'] == 'numeric': | |
value = st.number_input(field['label'], key=field['key']) | |
field['value'] = value | |
elif field['nature'] == 'text_area': | |
value = st.text_area(field['label'], value=field['value'] if 'value' in field else "", key=field['key']) | |
field['value'] = value | |
else: | |
value = st.text_input(label=field['label'], value=field['value'] if 'value' in field else "") | |
field['value'] = value | |
page() |