Consider the following:
import panel as pn
import param as pm
import pandas as pd
pn.extension('tabulator')
class Dataset(pm.Parameterized):
file = pm.FileSelector(
default=None,
path='./app/input/*.csv',
)
page_size = pm.Integer(default=20, precedence=-1)
dataset = pm.DataFrame(
default=None,
)
def __init__(self, **params):
super().__init__(**params)
self.load_file()
@pm.depends('file', on_init=True, watch=True)
def load_file(self):
self.dataset = pd.read_csv(self.file)
@pm.depends('dataset', 'page_size')
def view(self):
view = pn.panel(
pn.Param(
self.param,
sort=False,
widgets={
'dataset': {
'widget_type': pn.widgets.Tabulator,
'layout': 'fit_columns',
'page_size': self.page_size,
'pagination': 'remote',
'header_filters': True,
'sizing_mode': 'stretch_width',
},
},
)
)
return view
The above widget provides a little drop down csv file selector and viewer.
In the view function, I would like that a dataset has a title in the app. I would like something like:
@pm.depends('dataset', 'page_size')
def view(self):
view = pn.panel(
pn.Param(
self.param,
sort=False,
widgets={
'dataset': {
'widget_type': pn.Markdown('### Dataset') + pn.widgets.Tabulator,
And in a more general case, how could I render all DataFrame parameters on a class with the above title+tabulator style without needing to hardcode for each one?