Py.Cafe

maartenbreddels/

solara-crossfilter-reset-workaround

Crossfilter Reset workaround for Solara

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
import solara
import solara.lab

import plotly

df = solara.reactive(plotly.data.gapminder())


def reset():
    # by changing the database object, the cross filters
    # will use a new key
    df.value = df.value.copy()


@solara.component
def Page():
    solara.provide_cross_filter()
    # but that even doesn't seem enough, by making a key dependent on the object id
    # we force new component instances when the dataframe changes
    solara.CrossFilterReport(df.value, classes=["py-2"]).key(f"report-{id(df.value)}")
    solara.CrossFilterSlider(df.value, "pop", mode=">").key(f"slider1-{id(df.value)}")
    solara.CrossFilterSlider(df.value, "gdpPercap", mode="<").key(f"slider2-{id(df.value)}")
    solara.Button("Reset", on_click=reset, outlined=True, color="primary")

requirements.txt
1
2
3
solara
pandas
plotly