#Solara POC: Sort Table DataFrame
#Filename: sort_table_df.py
#https://www.youtube.com/watch?v=ATqbBIty32U
#this video tutorial how to sort table dataframe in solara framework
import solara
import pandas as pd
# reactive variables will trigger a component rerender
# when changed.
# When you change the default (now 0), hit the embedded browser
# refresh button to reset the state
@solara.component
def Page():
sort_by_name = solara.use_reactive(True)
sort_by_age = solara.use_reactive(True)
# And now I will make fake data
mydata = solara.use_reactive([
{"name":"jdsdfj","age":21},
{"name":"Alfa","age":45},
{"name":"Dorte","age":17},
{"name":"Dennis","age":34},
{"name":"Niels","age":52}
])
df = pd.DataFrame(mydata.value)
# And Render to Table
df_widget = solara.DataFrame(df)
def sort_name():
nonlocal mydata
mydata.value = sorted(mydata.value,key=lambda x:x['name'],
reverse=sort_by_name.value
)
sort_by_name.set(not sort_by_name.value)
def sort_age():
nonlocal mydata
mydata.value = sorted(mydata.value, key=lambda x:x['age'],
reverse=sort_by_age.value
)
sort_by_age.set(not sort_by_age.value)
with solara.Column(margin=10):
with solara.Row():
# And now I will make button for sort of name and age
with solara.Row():
solara.Text("sort by name")
solara.Button("sort",
color="success",
on_click=sort_name
)
with solara.Row():
solara.Text("sort by age")
solara.Button("sort",
color="success",
on_click=sort_age
)
df_widget