from shared import app_dir from utils import create_nav_button from shiny import App, ui import shinyswatch from server import create_server, q1, q2, q3, q4 #QUESTION_TO_SHEET import numpy as np from shinywidgets import output_widget, render_widget app_ui = ui.page_fluid( ui.tags.style(""" .big-table { font-size: 22px; /* Increase font size */ padding: 25px; /* Add padding for spacing */ width: 100%; /* Make the card take full width */ overflow-x: auto; /* Enable horizontal scrolling if needed */ } .big-table table { width: 100%; /* Make table take full width within card */ } .title-logo-container { display: flex; align-items: center; gap: 15px; /* Add some space between the logo and title */ } .title-logo-container img { max-height: 50px; /* Adjust logo size */ height: auto; } .title-logo-container h1 { margin: 0; font-size: 28px; /* Adjust title font size */ font-weight: bold; /* Make it bold */ } """), ui.page_fillable( ui.page_sidebar( ui.sidebar( ui.div( ui.output_image("clientlogo"), style="display: inline-block; overflow: hidden; max-height: 75px; width: 90%;" ), ui.card( create_nav_button( button_icon="house", button_label_text="Homepage", button_link="https://rsginc-nvtbs.hf.space", #button_cls="btn btn-secondary" ), create_nav_button( button_icon = "route", button_label_text = "Origin-Destination", button_link = "https://rsginc-nvtbsod.hf.space", button_cls="btn btn-secondary" ), # create_nav_button( # button_icon = "car", # button_label_text = "Auto Travel", # button_link = "https://www.rsginc.com" # ), #create_nav_button( # button_icon = "road", # button_label_text = "VMT", # button_link = "https://rsginc-nvtbsvmt.hf.space" #), create_nav_button( button_icon = "house-laptop", button_label_text = "Home-Work Location", button_link = "https://rsginc-nvtbsdwell.hf.space", #button_cls="btn btn-secondary" ), #create_nav_button( # button_icon = "truck", # button_label_text = "Truck", # button_link = "https://rsginc-nvtbstruck.hf.space" #), create_nav_button( button_icon = "clipboard-question", button_label_text = "Survey", button_link = "https://rsginc-nvtbssurvey.hf.space" ) ), ui.div( ui.output_image("rsglogo"), style="display: inline-block; overflow: hidden; max-height: 40px; width: 50%;" ), open="desktop", ), ui.include_css(app_dir / "styles.css"), ui.div( ui.tags.div( ui.h1("NAPA Valley Travels", style="margin: 0; font-size: 28px; font-weight: bold;"), class_="title-logo-container" ), style="padding-bottom: 20px;" ), # Tabs inside a card ui.card( ui.tags.h5("Travel Trends in NAPA Valley", style="text-align: center; font-weight: bold; margin-bottom: 15px;"), # Add card title ui.navset_card_underline( ui.nav_panel( "OD Map", ui.tags.div( ui.HTML("""
""" ), ) ), ui.nav_panel( "Trip distribution", ui.tags.div( ui.HTML("""
""" ), ), ), ui.nav_panel( "School Trips", ui.tags.div( ui.HTML("""
""" ), ), ), ui.nav_panel( "Winery Trips", ui.tags.div( ui.HTML("""
""" ), ), ), ui.nav_panel( "Travel Patterns", ui.tags.h3("Select a Question to View Travel Patterns", style="text-align: center;"), # Add radio button for date and data table selection ui.input_radio_buttons( "data_year_selector1", label="Select Data Year:", choices=["Fall 2014", "Fall 2018", "Fall 2024"], selected="Fall 2024", # Preselect a default year inline=True ), ui.tags.br(), # Add dropdown for question selection ui.input_select( "question_selector1", label="Select a Question:", choices=list(q1.keys()), selected="What types of trips are occurring within Napa County?", # Preselect a valid question ), ui.tags.br(), #ui.input_radio_buttons( # "data_year_selector", # label="Select Data Year:", # choices=["Fall 2014", "Fall 2018", "Fall 2024"], # selected="Fall 2024" # Preselect a default year #), # Output table for the selected sheet ui.output_table("table_title1"), ui.output_table("trip_table1"), ), ui.nav_panel( "Travel Characteristics", ui.tags.h3("Select a Question to View Travel Characteristics", style="text-align: center;"), # Add radio button for date and data table selection ui.input_radio_buttons( "data_year_selector2", label="Select Data Year:", choices=["Fall 2014", "Fall 2018", "Fall 2024"], selected="Fall 2024", # Preselect a default year inline=True ), ui.tags.br(), # Add dropdown for question selection ui.input_select( "question_selector2", label="Select a Question:", choices=list(q2.keys()), selected="What types of trips are occurring within Napa County?", # Preselect a valid question ), ui.tags.br(), #ui.input_radio_buttons( # "data_year_selector", # label="Select Data Year:", # choices=["Fall 2014", "Fall 2018", "Fall 2024"], # selected="Fall 2024" # Preselect a default year #), # Output table for the selected sheet ui.output_table("table_title2"), ui.output_table("trip_table2"), ), ui.nav_panel( "Roadway Segments", ui.tags.h3("Select a Question to View Travel Characteristics for Roadway Segments", style="text-align: center;"), # Add radio button for date and data table selection ui.input_radio_buttons( "data_year_selector3", label="Select Data Year:", choices=["Fall 2014", "Fall 2018", "Fall 2024"], selected="Fall 2024", # Preselect a default year inline=True ), ui.tags.br(), # Add dropdown for question selection ui.input_select( "question_selector3", label="Select a Question:", choices=list(q3.keys()), selected="What types of trips are occurring within Napa County?", # Preselect a valid question ), ui.tags.br(), #ui.input_radio_buttons( # "data_year_selector", # label="Select Data Year:", # choices=["Fall 2014", "Fall 2018", "Fall 2024"], # selected="Fall 2024" # Preselect a default year #), # Output table for the selected sheet ui.output_table("table_title3"), ui.output_table("trip_table3"), ), ui.nav_panel( "Commercial Vehicle Travel Characteristics", ui.tags.h3("Select a Question to View Travel Characteristics for Commercial Vehicle", style="text-align: center;"), # Add radio button for date and data table selection ui.input_radio_buttons( "data_year_selector4", label="Select Data Year:", choices=["Fall 2014", "Fall 2018", "Fall 2024"], selected="Fall 2024", # Preselect a default year inline=True ), ui.tags.br(), # Add dropdown for question selection ui.input_select( "question_selector4", label="Select a Question:", choices=list(q4.keys()), selected="What types of trips are occurring within Napa County?", # Preselect a valid question ), ui.tags.br(), #ui.input_radio_buttons( # "data_year_selector", # label="Select Data Year:", # choices=["Fall 2014", "Fall 2018", "Fall 2024"], # selected="Fall 2024" # Preselect a default year #), # Output table for the selected sheet ui.output_table("table_title4"), ui.output_table("trip_table4"), ), #ui.nav_panel( # "Mode", # ui.tags.div( # ui.HTML(""" # Mode # """ # ), # ), #), #ui.nav_panel( # "VMT", # ui.tags.div( # ui.HTML(""" # VMT # """ # ), # ), #), ), style="padding: 10px; margin-top: 20px;", class_="tabbed-card", ), ) ), theme=shinyswatch.theme.spacelab, ) app = App(app_ui, create_server(app_dir)) if __name__ == "__main__": import asyncio try: app.run() # Use this for environments without a running event loop except RuntimeError as e: if "asyncio.run()" in str(e): asyncio.run(app.start()) # Fallback for environments with an active event loop