import solara import duckdb from dashboard_helpers import build_trip_map, build_demo_map, build_stats # Connect to pre-baked database in read-only mode con = duckdb.connect('processed_dashboard.db', read_only=True) con.install_extension('spatial') con.load_extension('spatial') # Read baselines baseline_df = con.sql("SELECT * FROM city_baselines").df() baseline_white = float(baseline_df['baseline_white_pct'].iloc[0]) / 100.0 baseline_black = float(baseline_df['baseline_black_pct'].iloc[0]) / 100.0 # Reactive state selected_month = solara.reactive('Feb2025') @solara.component def TaxiMap(service, metric, cmap, title): month = selected_month.value m = build_trip_map(con, service, month, metric, cmap, title) with solara.Card(title=f'{title} ({month})'): solara.display(m) @solara.component def DemographicMap(column, baseline_val, title): m = build_demo_map(con, column, baseline_val, title) with solara.Card(title=title): solara.display(m) @solara.component def ServiceStatsCard(service, cmap_pu, cmap_do): month = selected_month.value pu_head, pu_table = build_stats(con, service, month, 'pu', cmap_pu, 'Pickups') do_head, do_table = build_stats(con, service, month, 'do', cmap_do, 'Drop-offs') with solara.Card(): with solara.Row(): with solara.Column(): solara.Markdown(pu_head, style={'text-align': 'center'}) solara.display(pu_table) with solara.Column(): solara.Markdown(do_head, style={'text-align': 'center'}) solara.display(do_table) @solara.component def Page(): solara.Title('NYC Taxi Mobility Equity Dashboard') with solara.Column(): with solara.Column(align='center'): solara.Markdown('# NYC Taxi Mobility Equity Dashboard', style={'text-align': 'center'}) solara.Markdown( '