Spaces:
Sleeping
Sleeping
from dash.dependencies import Input, Output | |
from app_settings import * | |
all_pickers = ['date-picker-dbdata'] + all_range_pickers | |
def register_callbacks(app): | |
def update_all_in_onedatepickers(tab, subtab_appareils, subtab_fonctions, | |
subtab_dashboard, subtab_data, | |
stored_timeDB_data, stored_dayDB_data, | |
stat_dropdownval, | |
dataShowDB_dropdownval, | |
dataExportDB_dropdownval, | |
evotime_dropdownval, | |
analyseGraph_dropdownval, | |
appXT_dropdownval, | |
appBSP_dropdownval, | |
appVT_dropdownval, | |
fctBat_dropdownval, | |
dashMin_dropdownval, | |
dashDay_dropdownval | |
): | |
# 1. Gestion des styles des DatePickerRange | |
styles = {picker: {'display': 'none'} for picker in all_pickers} | |
if tab == "tab-data": | |
## mettre dayI mélnage des 2 | |
selected_db = "both" | |
if subtab_data == 'subtab-showDB': | |
if dataShowDB_dropdownval == "stat_perso" : | |
styles['date-picker-dbdata'] = {'display': 'block', 'margin': '20px 0'} | |
elif subtab_data == 'subtab-exportDB': | |
if dataExportDB_dropdownval == "stat_perso" : | |
styles['range-picker-exportdata'] = {'display': 'block', 'margin': '20px 0'} | |
elif tab == 'tab-evotime': | |
# selected_db = evotime_selected_db | |
if evotime_dropdownval == "stat_perso": | |
styles['range-picker-evotime'] = {'display': 'block', 'margin': '20px 0'} | |
elif tab == 'tab-stat': | |
# selected_db = stat_selected_db | |
if stat_dropdownval == "stat_perso" : | |
styles['range-picker-stat'] = {'display': 'block', 'margin': '20px 0'} | |
elif tab == 'tab-analyseGraph': | |
if analyseGraph_dropdownval == "stat_perso" : | |
styles['range-picker-analyseGraph'] = {'display': 'block', 'margin': '20px 0'} | |
# que time | |
selected_db = dbTime_name | |
elif tab == 'tab-appareils': | |
## mélange des 2 -> on met dayI | |
selected_db = "both" | |
if subtab_appareils == "subtab-xtender": | |
if appXT_dropdownval == "stat_perso" : | |
styles['range-picker-subxtender'] = {'display': 'block', 'margin': '20px 0'} | |
elif subtab_appareils == "subtab-variotrack": | |
if appVT_dropdownval == "stat_perso" : | |
styles['range-picker-subvariotrack'] = {'display': 'block', 'margin': '20px 0'} | |
elif subtab_appareils == "subtab-bsp": | |
if appBSP_dropdownval == "stat_perso" : | |
styles['range-picker-subbsp'] = {'display': 'block', 'margin': '20px 0'} | |
elif tab == 'tab-fonctions': | |
## mélange des 2 -> on met dayI | |
selected_db = "both" | |
if subtab_fonctions == "subtab-batterie": | |
if fctBat_dropdownval == "stat_preso": | |
styles['range-picker-subbat'] = {'display': 'block', 'margin': '20px 0'} | |
elif tab == 'tab-dashboard': | |
if subtab_dashboard == "subtab-minutesdata": | |
selected_db = dbTime_name | |
if dashMin_dropdownval == "stat_perso" : | |
styles['range-picker-subminutes'] = {'display': 'block', 'margin': '20px 0'} | |
elif subtab_dashboard == "subtab-dayIdata": | |
selected_db = dbDayI_name | |
if dashDay_dropdownval == "stat_perso": | |
styles['range-picker-subdayI'] = {'display': 'block', 'margin': '20px 0'} | |
selected_db = "both" | |
# 2. Mise à jour des plages de dates disponibles | |
if selected_db == dbTime_name or selected_db == "both": | |
if stored_timeDB_data: | |
time_df = pd.DataFrame(stored_timeDB_data) | |
print(time_df) | |
time_min_date = time_df[db_timecol].min() | |
time_max_date = time_df[db_timecol].max() | |
time_disabled_days = pd.date_range(time_min_date, time_max_date).difference( | |
time_df[db_timecol]).to_list() | |
if selected_db == dbTime_name: | |
min_date, max_date, disabled_days = (time_min_date, time_max_date, | |
time_disabled_days) | |
else: | |
min_date, max_date, disabled_days = None, None, [] | |
if selected_db == dbDayI_name or selected_db == "both": | |
if stored_dayDB_data: | |
day_df = pd.DataFrame(stored_dayDB_data) | |
day_min_date = day_df[db_daycol].min() | |
day_max_date = day_df[db_daycol].max() | |
day_disabled_days = pd.date_range(day_min_date, day_max_date).difference( | |
day_df[db_daycol]).to_list() | |
if selected_db == dbDayI_name: | |
min_date, max_date, disabled_days = (day_min_date, | |
day_max_date, | |
day_disabled_days) | |
else: | |
min_date, max_date, disabled_days = None, None, [] | |
if selected_db == "both": | |
if not stored_dayDB_data and not stored_timeDB_data : | |
min_date, max_date, disabled_days = None, None, [] | |
elif not stored_dayDB_data: | |
min_date, max_date, disabled_days = (time_min_date, time_max_date, | |
time_disabled_days) | |
elif not stored_timeDB_data: | |
min_date, max_date, disabled_days = (day_min_date, | |
day_max_date, | |
day_disabled_days) | |
else : | |
min_date = min([day_min_date]+ [time_min_date]) | |
max_date = max([day_min_date]+[time_min_date]) | |
disabled_days = [x for x in day_disabled_days if x in time_disabled_days] | |
# 3. Retour des styles et des dates mises à jour pour les DatePickerRange | |
return ( | |
[styles[picker] for picker in all_pickers]+ # Styles pour tous les pickers | |
[min_date] * len(all_pickers)+ # Min date pour tous les pickers | |
[max_date] * len(all_pickers)+ # Max date pour tous les pickers | |
[disabled_days] * len(all_pickers) # Disabled days pour tous les pickers | |
) | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |
def update_statperiod_store(selected_period): | |
return selected_period | |