Py.Cafe

soulscode/

solara-date-range-viewer

Date Range Selector Viewer

DocsPricing
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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: ')