aegis_gui.offcanvas
1import dash 2import dash_bootstrap_components as dbc 3from aegis_gui.guisettings.GuiSettings import gui_settings 4 5 6def get_offcanvas_trigger(): 7 return dbc.Button( 8 children=[dash.html.I(className="bi bi-gear-wide"), "Preferences"], 9 id="open-offcanvas-backdrop", 10 n_clicks=0, 11 outline=True, 12 color="primary", 13 style={"marginTop": "2rem"}, 14 ) 15 16 17def get_theme_switch(): 18 return dash.html.Div( 19 [ 20 dbc.Label("Dark mode", html_for="color-mode-switch"), 21 dbc.Switch(id="color-mode-switch", value=False, className="d-inline-block ms-1", persistence=True), 22 ] 23 ) 24 25 26def get_delete_switch(): 27 return dash.html.Div( 28 [ 29 dbc.Label("One-click deletion", html_for="one-click-deletion"), 30 dbc.Switch( 31 id="one-click-deletion", 32 value=False, 33 className="d-inline-block ms-1", 34 persistence=True, 35 ), 36 ] 37 ) 38 39 40def get_gui_env_settings(): 41 return dash.html.Div( 42 [ 43 dash.html.Hr(), 44 # dash.html.P("GUI settings"), 45 dash.html.P( 46 f"environment: {gui_settings.ENVIRONMENT}", 47 className="text-secondary", 48 ), 49 dash.html.P( 50 f"simulation number limit: {gui_settings.SIMULATION_NUMBER_LIMIT}", 51 className="text-secondary", 52 ), 53 ], 54 style={"padding": "0 0.5rem 0.25rem 0.5rem"}, 55 ) 56 57 58def get_offcanvas(): 59 children = [ 60 get_theme_switch(), 61 get_delete_switch() if gui_settings.ENVIRONMENT == "local" else None, 62 get_gui_env_settings(), 63 ] 64 return dbc.Offcanvas( 65 children=children, 66 id="offcanvas-backdrop", 67 scrollable=True, 68 title="User preferences", 69 ) 70 71 72@dash.callback( 73 dash.Output("offcanvas-backdrop", "is_open"), 74 dash.Input("open-offcanvas-backdrop", "n_clicks"), 75 dash.State("offcanvas-backdrop", "is_open"), 76) 77def toggle_offcanvas(n1, is_open): 78 if n1: 79 return not is_open 80 return is_open 81 82 83dash.clientside_callback( 84 """ 85 (switchOn) => { 86 document.documentElement.setAttribute('data-bs-theme', switchOn ? 'dark' : 'false'); 87 return window.dash_clientside.no_update 88 } 89 """, 90 dash.Output("color-mode-switch", "id"), 91 dash.Input("color-mode-switch", "value"), 92)
def
get_offcanvas_trigger():
def
get_theme_switch():
def
get_delete_switch():
def
get_gui_env_settings():
41def get_gui_env_settings(): 42 return dash.html.Div( 43 [ 44 dash.html.Hr(), 45 # dash.html.P("GUI settings"), 46 dash.html.P( 47 f"environment: {gui_settings.ENVIRONMENT}", 48 className="text-secondary", 49 ), 50 dash.html.P( 51 f"simulation number limit: {gui_settings.SIMULATION_NUMBER_LIMIT}", 52 className="text-secondary", 53 ), 54 ], 55 style={"padding": "0 0.5rem 0.25rem 0.5rem"}, 56 )
def
get_offcanvas():
@dash.callback(dash.Output('offcanvas-backdrop', 'is_open'), dash.Input('open-offcanvas-backdrop', 'n_clicks'), dash.State('offcanvas-backdrop', 'is_open'))
def
toggle_offcanvas(n1, is_open):