import streamlit as st from admin import AuthManager, create_admin_pages from config import AppConfig from dashboard_analytics import render_analytics_page from pages import ( calendar_heatmaps_page, dissolved_oxygen_page, do_temp_relationship_page, home_page, nutrient_ratios_page, parameter_correlations_page, raw_data_page, scatter_plots_page, seasonal_line_charts_page, seasonal_maps_page, sector_compare_page, sector_trends_page, settings_page, tables_page, trends_by_station_page, ) from utils.session import ensure_session_initialized st.set_page_config( page_title="Water Quality Portal", page_icon="💧", layout="wide", initial_sidebar_state="expanded", menu_items={"Get Help": None, "Report a bug": None, "About": None}, ) try: config = AppConfig.from_env() except Exception as e: st.error(f"Failed to load configuration: {str(e)}") st.stop() ensure_session_initialized(config) auth_manager = AuthManager(config) admin_pages = create_admin_pages(config) analytics = st.Page( render_analytics_page, title="Analytics", icon=":material/analytics:" ) page_dict = {} page_dict["Annual Report Draft Charts/Tables"] = [ sector_compare_page, seasonal_maps_page, seasonal_line_charts_page, scatter_plots_page, tables_page, ] page_dict["Water Quality Portal"] = [ home_page, trends_by_station_page, sector_trends_page, parameter_correlations_page, calendar_heatmaps_page, nutrient_ratios_page, dissolved_oxygen_page, do_temp_relationship_page, raw_data_page, settings_page, ] # page_dict["Admin"] = [admin_pages["login"]] if auth_manager.check_admin_access(): page_dict["Admin"] = [analytics, admin_pages["logout"]] # page_dict["Admin"].pop(0) pg = st.navigation(page_dict) if st.session_state.get("admin_authenticated", False): def on_timing_change(): st.session_state.ENABLE_TIMING = not st.session_state.ENABLE_TIMING def on_debug_change(): st.session_state.DEBUG = not st.session_state.DEBUG st.sidebar.toggle( "Enable Timing", value=st.session_state.ENABLE_TIMING, key="timing_toggle", on_change=on_timing_change, ) st.sidebar.toggle( "Enable Debug", value=st.session_state.DEBUG, key="debug_toggle", on_change=on_debug_change, ) pg.run()