Répartit les préconisations de rattrapage sur les demi-journées restantes de la semaine

Au lieu de reporter tout le manque horaire sur la sortie du jour courant, le calcul
distribue désormais le retard à parts égales sur chaque demi-journée non traitée
(aujourd'hui et jours à venir), avec un plafond de sécurité si le rattrapage dépasse
minuit. La table affiche une cible par demi-journée (matin/après-midi) et le bandeau
de soldes indique le reste à faire et le nombre de demi-journées restantes.
This commit is contained in:
Antoine
2026-07-17 23:02:07 +02:00
parent c2d7d0e3ac
commit e6b5173018
7 changed files with 138 additions and 99 deletions

View File

@ -154,7 +154,7 @@ def _oob_calc(date, jour):
)
def _oob_week_extras(result, plages):
def _oob_week_extras(result):
html = ""
for jour in result["jours"]:
date = jour["date"]
@ -169,14 +169,12 @@ def _oob_week_extras(result, plages):
else:
cumul_inner = '<span class="delta-zero">—</span>'
html += f'<span id="calc-{date}-cumul" hx-swap-oob="true">{cumul_inner}</span>'
cible = None
if not jour.get("is_complete"):
if jour.get("entree_cible"):
suffix = f'{plages["matin_fin"]}' if "aprem" in jour.get("conge", set()) else f'{plages["aprem_fin"]}'
cible = f'{jour["entree_cible"]}{suffix}'
elif jour.get("sortie_cible"):
cible = jour.get("sortie_cible")
cible_inner = f'<span class="cible-num">{cible}</span>' if cible else '<span class="delta-zero">—</span>'
parts = []
if jour.get("cible_matin"):
parts.append(f'<span class="cible-num">M {jour["cible_matin"]}</span>')
if jour.get("cible_aprem"):
parts.append(f'<span class="cible-num">A {jour["cible_aprem"]}</span>')
cible_inner = " ".join(parts) if parts else '<span class="delta-zero">—</span>'
html += f'<span id="calc-{date}-cible" hx-swap-oob="true">{cible_inner}</span>'
return html
@ -236,7 +234,7 @@ def _htmx_conge_and_soldes(request, date, d, conges, h_jour, user_id):
_oob_time_cells(date, jour, plages)
+ btns_html
+ _oob_calc(date, jour)
+ _oob_week_extras(soldes_ctx["result"], plages)
+ _oob_week_extras(soldes_ctx["result"])
+ soldes_html
)
@ -250,7 +248,7 @@ def _htmx_calc_and_soldes(request, date, d, conges, h_jour, user_id):
return HTMLResponse(
_oob_calc(date, jour)
+ _oob_time_cells(date, jour, plages)
+ _oob_week_extras(soldes_ctx["result"], plages)
+ _oob_week_extras(soldes_ctx["result"])
+ soldes_html
)