| 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, |
| ] |
| |
| if auth_manager.check_admin_access(): |
| page_dict["Admin"] = [analytics, admin_pages["logout"]] |
| |
|
|
| 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() |
|
|