import altair as alt
from vega_datasets import data
import ipydatagrid
import pandas as pd
import ipywidgets as widgets
# our custom JupyterChart which includes a signals trait
from jupyter_chart import JupyterChart
cars = data.cars()
chart = alt.Chart(cars).mark_circle().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
)
chart_widget = JupyterChart(chart)
# hook up chart_widget.signals to a ipydatagrid table
def on_signals_change(signals_change):
signals = signals_change["new"]
print("received signals", signals)
grid_signals.data = pd.DataFrame(signals)
grid_signals = ipydatagrid.DataGrid(pd.DataFrame({"name": [], "value": []}))
chart_widget.observe(on_signals_change, "signals")
# assign a widget to page so solara knows what to render
page = widgets.VBox([chart_widget, grid_signals])