akono-app-v4 / callbacks /tab_accueil_callbacks.py
mzufferey
1210_2
3a4d232
from dash.dependencies import Input, Output, State
import dash
import pandas as pd
from utils_fcts import *
def register_callbacks(app):
@app.callback(
[Output('upload-stored-container', 'style'),
Output('stored_timeDB', 'data'),
Output('stored_dayDB', 'data'),
Output("stored-data-content", "children")],
[Input('default-data-checkbox', 'value'),
Input('upload-stored-data', 'contents'),
Input('stored_timeDB', 'data')],
[State('upload-stored-data', 'filename'),
State('defaut_stored_timeDB', 'data'),
State('defaut_stored_dayDB', 'data'),
# State('stored_timeDB', 'data'),
State('stored_dayDB', 'data')
]
)
def toggle_upload_visibility(default_data_checkbox, upload_contents,
stored_timeDB_data,
filename, defaut_timeDB_data, defaut_dayDB_data,
stored_dayDB_data):
current_time_df = pd.DataFrame(stored_timeDB_data)
current_day_df = pd.DataFrame(stored_dayDB_data)
if 'default' in default_data_checkbox :
# si je veux Utiliser les données par défaut
# -> je cache l'upload de fichier et je store les données défaut
txt = get_db_text(time_dt=pd.DataFrame(defaut_timeDB_data),
day_dt=pd.DataFrame(defaut_dayDB_data))
outtxt = dcc.Markdown(txt, dangerously_allow_html=True)
return ({'display': 'none'},
pd.DataFrame(defaut_timeDB_data).to_dict(),
pd.DataFrame(defaut_dayDB_data).to_dict(),outtxt)
## si j arrive à ce stade c'est que je n'ai pas coché la checkbox
# si j arrive ici c'est que je n'ai pas cohcé la checkbox et que je n'ai pas chargé de contenu
# Afficher le bouton d'upload si "données par défaut" est décoché
if not upload_contents:
txt = get_db_text(time_dt=current_time_df,
day_dt=current_day_df)
outtxt = dcc.Markdown(txt, dangerously_allow_html=True)
# print("JE SUIS ARRIVEE ICI")
return {'display': 'block'}, stored_timeDB_data, stored_dayDB_data, outtxt
else:
new_data = [parse_table(c, n) for c, n in zip(upload_contents, filename)]
time_df_uploaded = pd.concat([x['time_data'] for x in new_data],
ignore_index=True)
time_df_uploaded[db_timecol] = pd.to_datetime(time_df_uploaded[db_timecol])
time_df_uploaded[db_daycol] = time_df_uploaded[db_timecol].dt.date
# ne sert à rien car stored en dict !
# time_df_uploaded = time_df_uploaded.sort_values(by=db_timecol)
#time_df_uploaded.to_pickle('time_df_uploaded.pkl')
# print("données time loadées : " + str(time_df_uploaded.shape[0]))
day_df_uploaded = pd.concat([x['dayI_data'] for x in new_data],
ignore_index=True)
day_df_uploaded[db_daycol] = pd.to_datetime(day_df_uploaded[db_daycol])
#day_df_uploaded = day_df_uploaded.sort_values(by=db_daycol)
# print("données day loadées : " + str(day_df_uploaded.shape[0]))
txt = get_db_text(time_dt=time_df_uploaded,
day_dt=day_df_uploaded)
newtxt = dcc.Markdown(txt, dangerously_allow_html=True)
return ({'display': 'block'}, time_df_uploaded.to_dict(),
day_df_uploaded.to_dict(), newtxt)