import streamlit as st
import pandas as pd
import os

def show_gateway_manager(config):
    # Recupera il percorso dal config.yaml, con fallback
    # Nota: cerchiamo sia sotto 'infer' che 'collect_train' se necessario
    csv_path = config.get('infer', {}).get('gateways_csv', '/data/config/gateway.csv')
    
    st.subheader("🌐 Gestione Gateway (gateway.csv)")
    st.info(f"Percorso file: `{csv_path}`")

    if not os.path.exists(csv_path):
        st.error("Il file gateway.csv non è stato trovato al percorso specificato.")
        if st.button("Crea file vuoto"):
            df_new = pd.DataFrame(columns=["Position", "Floor", "RoomName", "X", "Y", "Z", "GatewayName", "MAC"])
            df_new.to_csv(csv_path, sep=';', index=False)
            st.rerun()
        return

    # Caricamento del CSV
    try:
        # Usiamo il separatore ';' come da tuo esempio
        df = pd.read_csv(csv_path, sep=';', dtype=str)
    except Exception as e:
        st.error(f"Errore nel caricamento del CSV: {e}")
        return

    # Interfaccia di editing
    st.write("Modifica i dati direttamente nella tabella qui sotto:")
    edited_df = st.data_editor(
        df, 
        num_rows="dynamic", 
        use_container_width=True,
        key="gateway_editor"
    )

    col1, col2 = st.columns([1, 5])
    with col1:
        if st.button("💾 Salva Gateway"):
            try:
                edited_df.to_csv(csv_path, sep=';', index=False)
                st.success("File gateway.csv salvato con successo!")
            except Exception as e:
                st.error(f"Errore durante il salvataggio: {e}")
    
    with col2:
        st.caption("Nota: L'aggiunta di righe avviene cliccando sull'ultima riga vuota della tabella.")
