Source code for rxnDB.ui
#######################################################
## .0. Load Libraries !!! ##
#######################################################
from shiny import ui
from shinywidgets import output_widget
from rxnDB.utils import app_dir
#######################################################
## .1. Shiny App UI !!! ##
#######################################################
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[docs]def configure_ui() -> ui.Tag:
"""
Configures the Shiny app user interface
"""
return ui.page_sidebar(
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Sidebar !!
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui.sidebar(
ui.output_ui("sidebar_chemical_system_ui"),
ui.output_ui("sidebar_checkbox_ui"),
title="Phases",
width=300,
open={"desktop": "open", "mobile": "closed"},
),
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Custom CSS !!
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui.head_content(ui.include_css(app_dir / "styles.css")),
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Plotly and Table !!
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ui.navset_card_pill(
ui.nav_panel(
"Visualization",
ui.layout_sidebar(
ui.sidebar(
ui.tooltip(
ui.input_action_button(
"toggle_data_type",
"Toggle Data Type",
class_="popover-btn",
),
"Show phase boundaries, calibrations, melting curves, or all",
),
ui.tooltip(
ui.input_action_button(
"toggle_similar_reactions",
"Toggle Similar Reactions",
class_="popover-btn",
),
"Find similar rxn sets by intersection or union (for table selections)",
),
ui.input_selectize(
"select_temperature_units",
"Select temperature units",
{"celcius": "celcius", "kelvin": "kelvin"},
),
ui.input_selectize(
"select_pressure_units",
"Select pressure units",
{"gigapascal": "gigapascal", "kilobar": "kilobar"},
),
ui.output_text_verbatim("plot_settings", placeholder=False),
title="Plot Controls",
open={"desktop": "open", "mobile": "closed"},
),
output_widget("plotly"),
fillable=True,
),
),
ui.nav_panel(
"Table",
ui.page_sidebar(
ui.sidebar(
ui.input_action_button(
"clear_table_row_selection",
"Clear Table Selections",
class_="popover-btn",
),
ui.output_ui("table_column_selector_ui"),
title="Table Controls",
open={"desktop": "open", "mobile": "closed"},
),
ui.output_data_frame("table"),
fillable=True,
),
),
ui.nav_spacer(),
ui.nav_menu(
"Settings",
ui.nav_control(
ui.tooltip(
ui.input_dark_mode(id="dark_mode", class_="dark-mode-switch"),
"Dark/Light Mode",
),
),
),
),
title="rxnDB",
fillable=True,
)