I’ve made a fairly simple app and would like the graph and data to update on each page load or page refresh. It seems that the tables and graph are only computed once and never change. Any help would be greatly appreciated.
import golf
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
def generate_table(dataframe, max_rows=10):
return html.Table(
# Header
[html.Tr([html.Th(col) for col in dataframe.columns])] +
# Body
[html.Tr([
html.Td(dataframe.iloc[i][col]) for col in dataframe.columns
]) for i in range(min(len(dataframe), max_rows))]
)
app = dash.Dash()
def serve_layout():
dfAlecPlayers = golf.getPlayers('alecPlayers.csv')
dfBillyPlayers = golf.getPlayers('billyPlayers.csv')
dfBrandonPlayers = golf.getPlayers('brandonPlayers.csv')
dfDustinPlayers = golf.getPlayers('dustinPlayers.csv')
dfJeffPlayers = golf.getPlayers('jeffPlayers.csv')
dfPatPlayers = golf.getPlayers('patPlayers.csv')
dfSmittyPlayers = golf.getPlayers('smittyPlayers.csv')
alecScore = golf.getScore(dfAlecPlayers)
billyScore = golf.getScore(dfBillyPlayers)
brandonScore = golf.getScore(dfBrandonPlayers)
dustinScore = golf.getScore(dfDustinPlayers)
jeffScore = golf.getScore(dfJeffPlayers)
patScore = golf.getScore(dfPatPlayers)
smittyScore = golf.getScore(dfSmittyPlayers)
dScores = {'Name': ['Alec', 'Billy', 'Brandon', 'Dustin', 'Jeff', 'Pat', 'Smitty'],
'Score': [alecScore, billyScore, brandonScore, dustinScore, jeffScore, patScore, smittyScore]}
dfScores = pd.DataFrame(data=dScores)
dfScores.sort_values('Score', inplace=True)
tournamentName = golf.getTournamentName()
app.layout =html.Div([
dcc.Graph(id='scores',
figure={
'data': [
{'x': dfScores.Name, 'y': dfScores.Score, 'type': 'bar', 'name': 'SCORE'}],
'layout': {'title': tournamentName}
}),
html.Div([
html.Table(
html.Tr([
html.Td(
html.Div([
html.H6('ALEC PLAYERS'),
html.B('SCORE: '),
html.B(alecScore),
generate_table(dfAlecPlayers)])),
html.Td(
html.Div([
html.H6('BILLY PLAYERS'),
html.B('SCORE: '),
html.B(billyScore),
generate_table(dfBillyPlayers)])),
html.Td(
html.Div([
html.H6('BRANDON PLAYERS'),
html.B('SCORE: '),
html.B(brandonScore),
generate_table(dfBrandonPlayers)])),
html.Td(
html.Div([
html.H6('DUSTIN PLAYERS'),
html.B('SCORE: '),
html.B(dustinScore),
generate_table(dfDustinPlayers)])),
]),
style={'white-space':'nowrap'})
]),
html.Div([
html.Table(
html.Tr([
html.Td(
html.Div([
html.H6('JEFF PLAYERS'),
html.B('SCORE: '),
html.B(jeffScore),
generate_table(dfJeffPlayers)])),
html.Td(
html.Div([
html.H6('PAT PLAYERS'),
html.B('SCORE: '),
html.B(patScore),
generate_table(dfPatPlayers)])),
html.Td(
html.Div([
html.H6('SMITTY PLAYERS'),
html.B('SCORE: '),
html.B(smittyScore),
generate_table(dfSmittyPlayers)])),
]),
style={'white-space':'nowrap'})
])
])
return app.layout
app.title='HIGH ROLLERS GOLF'
app.layout = serve_layout()
app.css.append_css({'external_url': 'https://codepen.io/chriddyp/pen/bWLwgP.css'})
if __name__ == '__main__':
app.run_server(debug=True)