I have generalized some code I wrote to make links easier in tables. The code is on github and an example app is running on my site.
I am curious as to feedback. The main
branch currently subclasses dbc.Table
, which may not be something I’m supposed to do, and I got a weird zipimporter
error when trying to use it after installation with setup.py
. The monkeypatch
branch tacks on a new class method enhanced_from_dataframe
to dbc.Table; avoiding any subclassing. Both get the same effect.
Would love feedback or ideas or even open issues/PRs. Thanks!
1 Like
Very sweet @marcosh , and thanks for sharing! Any chance you could post some screenshots of examples?
@chriddyp Ah yes, screenhots are a good idea. I don’t seem to be able to edit the original post anymore. Here is a screenshot of the example app showing the final styled table. The links work come from a Company_HREF
column that provides the links to Company
and a cell_style_dict
that looks like this:
def color_positive(val):
if val > 0:
return {'className': 'table-success'}
elif val < 0:
return {'className': "table-warning"}
cell_style_dict = {
'Company': [
(['Yahoo', 'Apple'], {
'font-weight': 'bold'
}),
(['Oracle'], {
'className': 'table-danger'
}),
],
'Value2':
lambda x: {
'background-color': '#7FFFD4'
} if x > 10 else {},
'Date':
lambda x: {
'className': 'table-info'
} if x.weekday() in [4, 6] else {},
'Value':
color_positive
}
The table itself is created using:
EnhancedTable.from_dataframe(
df,
striped=True,
cell_style_dict=cell_style_dict,
id='hello',
float_format='.2f',
date_format='%Y-%m-%d',
columns=['Company', 'Date', 'Value', 'Value2']),
])
Beautiful, love the design! Great color choices