import networkx as nx
import streamlit as st

from utils.translations import _
from utils.widgets import html_expander

from .graphes import lancer_visualisation_ihh_ics, lancer_visualisation_ihh_ivc


def interface_visualisations(G_temp: nx.DiGraph, G_temp_ivc: nx.DiGraph) -> None:
    """Affiche l'interface utilisateur des visualisations.

    Parameters
    ----------
    G_temp : object
        Graphique temporel contenant les données de IHH.
    G_temp_ivc : object
        Graphique temporel contenant les données d'IVC.

    Notes:
    -----
    Cette fonction initialise l'interface utilisateur qui permet aux utilisateurs de visualiser
    différentes données relatives à la gravité et au risque d'infections.
    Elle gère également le traitement des erreurs liées aux graphiques temporels IHH et IV C.
    """
    st.markdown(f"# {str(_('pages.visualisations.title'))}")
    html_expander(f"{str(_('pages.visualisations.help'))}", content="\n".join(_("pages.visualisations.help_content")), open_by_default=False, details_class="details_introduction")
    st.markdown("---")

    st.markdown(f"""## {str(_("pages.visualisations.ihh_criticality"))}

{str(_("pages.visualisations.ihh_criticality_desc"))}
""")
    if st.button(str(_("buttons.run")), key="btn_ihh_ics", icon=":material/bubble_chart:"):
        try:
            lancer_visualisation_ihh_ics(G_temp)
        except Exception as e:
            st.error(f"{str(_('errors.ihh_criticality_error'))} {e}")

    st.markdown(f"""## {str(_("pages.visualisations.ihh_ivc"))}

{str(_("pages.visualisations.ihh_ivc_desc"))}
""")

    if st.button(str(_("buttons.run")), key="btn_ihh_ivc", icon=":material/bubble_chart:"):
        try:
            lancer_visualisation_ihh_ivc(G_temp_ivc)
        except Exception as e:
            st.error(f"{str(_('errors.ihh_ivc_error'))} {e}")
