waterdb / app.py
github-actions[bot]
Deploy from GitHub Actions
faed07e
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()