import solara
import solara.lab
import datetime
end_date = datetime.date(2023, 8, 8)
@solara.component
def Page():
# Default date range
date_range = solara.use_reactive((end_date - datetime.timedelta(days=-7), end_date))
with solara.AppBar():
with solara.AppBarTitle():
with solara.Row(style={"background-color": "transparent", "align-items": "center"}):
solara.HTML(tag="img", attributes={"src": "https://picsum.photos/400/200", "style": "height: 40px"})
solara.Text("Cool Viewer")
solara.v.Spacer()
solara.Button(label="Quit", on_click = lambda: None)
with solara.Sidebar():
Control(date_range)
with solara.Column(align = 'end'):
View(date_range)
@solara.component
def Control(date_range):
# Component to change to desired data range
solara.lab.InputDateRange(date_range, sort=True)
@solara.component
def View(date_range):
# Display the whole variable, showing that it's changing without triggering an error.
solara.Text(str(date_range.value))
if len(date_range.value) > 1:
# Only display this section if the date_range.value has both beginning and end values in the tuple.
with solara.Card('Basic'):
with solara.Column():
solara.Text(f'Start date: {date_range.value[0]}')
solara.Text(f'End date: {date_range.value[1]}')
# Going all fancy
with solara.Card('Fancy!'):
with solara.Column():
# This'll always exist
solara.Text(f'Start: {date_range.value[0]}')
# Display a blank End if the index doesn't exist yet.
try:
solara.Text(f'End: {date_range.value[1]}')
except IndexError:
solara.Text(f'End: ')