Hi Guys,
I working in a project based on @nedned github project.
ned code: https://github.com/ned2/dash-django-example
my code: https://github.com/CaioEuzebio/DjangoDashboard/blob/master/app/as_dash.py
However i not sure how can i make my callbacks work inside a routes(functions)
The update_columns callback functions are not working as expected to perform calculations in dash table.
This is the structure.
def dispatcher(request):
'''
Main function
@param request: Request object
'''
app = _create_app()
params = {
'data': request.body,
'method': request.method,
'content_type': request.content_type
}
with app.server.test_request_context(request.path, **params):
app.server.preprocess_request()
try:
response = app.server.full_dispatch_request()
except Exception as e:
response = app.server.make_response(app.server.handle_exception(e))
return response.get_data()
def _create_app():
''' Creates dash application '''
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
app.config['suppress_callback_exceptions']=True
app.layout = dhc.Div(children=[])
@app.callback(
dash.dependencies.Output('content', 'children'),
[dash.dependencies.Input('url', 'pathname')]
)
def display_page(pathname):
''' '''
if not pathname:
return ''
if pathname == '/':
return dash_index()
method = pathname[1:].replace('-', '_')
func = getattr(sys.modules[__name__], method, None)
if func:
return func()
return 'Unknown link'
return app
def dash_fig1():
pandas code
return dash core components
@app.callback(
Output('computed-table', 'data'),
[Input('computed-table', 'data_timestamp')],
[State('computed-table', 'data')])
def update_columns(timestamp, rows):
for row in rows:
try:
if row['Unidades Pendentes'] != 0:
row['UPH_BPI_vs_Head'] = float(row['UPH_BPI_vs_Perfil']) * float(row['Head_Disponível'])
row['ETA_Geral'] = float(row['Unidades Pendentes']) / float(row['UPH_BPI_vs_Head'])
row['Delta_Hora'] = float(row['Horas_Disp']) - float(row['ETA_Geral'])
row['Risco_Aging'] = float(row['Delta_Hora']) * float(row['UPH_BPI_vs_Head'])
else:
row['UPH_BPI_vs_Head'] = "Completed"
row['ETA_Geral'] = "Completed"
row['Delta_Hora'] = "Completed"
row['Risco_Aging'] = "Completed"
row['UPH_BPI_vs_Perfil'] = "Completed"
row['Head_Disponível'] = "Completed"
row['Horas_Disp'] = "Completed"
except:
row['ETA_Geral'] = 'NA'
return rows
@app.callback(
Output('table-backlog', 'data'),
[Input('table-backlog', 'data_timestamp')],
[State('table-backlog', 'data')])
def update_columns(timestamp, rows):
for row in rows:
try:
if row['Unidades Pendentes'] != 0:
row['Delta Hora'] = float(row['Horas Disp']) - float(row['ETA'])
row['Risco Aging'] = float(row['Delta Hora']) * float(row['UPH'])
else:
row['ETA'] = "Completed"
except:
row['ETA'] = row['ETA']
return rows