- Nouvelles colonnes : Δ sem. (solde cumulé semaine) et Fin cible (heure de sortie aprem optimale pour 0h suppl. en fin de semaine) - Δ sem. n'est affiché que quand la journée est complète et la chaîne de jours ininterrompue (pas de saut de jour non saisi) - Fin cible disparaît quand la journée est validée (passée/complète) - Delta = "—" pour les jours non travaillés (futur ou congé jour) - Indicateur warn (fond rouge) sur matin/aprem si horaires < minimum (matin 09:00→12:00, aprem 14:00→17:00) ; mise à jour live via JS - Suppression du solde global (3 cartes au lieu de 4) - Tableau sans largeurs fixes + container 1100 px pour éviter scroll horizontal sur écrans normaux ; touch-scroll conservé sur mobile - Base reste 39h/semaine (7h48/jour) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
107 lines
3.9 KiB
HTML
107 lines
3.9 KiB
HTML
{% set matin_cg = 'matin' in j.conge or 'jour' in j.conge %}
|
|
{% set aprem_cg = 'aprem' in j.conge or 'jour' in j.conge %}
|
|
{% set matin_warn = not matin_cg and j.du_min > 0 and (
|
|
(j.matin_entree and j.matin_entree > '09:00') or
|
|
(j.matin_sortie and j.matin_sortie < '12:00')
|
|
) %}
|
|
{% set aprem_warn = not aprem_cg and j.du_min > 0 and (
|
|
(j.aprem_entree and j.aprem_entree > '14:00') or
|
|
(j.aprem_sortie and j.aprem_sortie < '17:00')
|
|
) %}
|
|
<tr id="row-{{ j.date }}">
|
|
|
|
<td class="col-jour">
|
|
<span class="jour-nom">{{ nom }}</span>
|
|
<span class="jour-date">{{ j.date[8:] }}/{{ j.date[5:7] }}</span>
|
|
</td>
|
|
|
|
<td class="c-matin">
|
|
<div id="cg-matin-{{ j.date }}" class="td-fill{% if matin_cg %} cg{% elif matin_warn %} warn{% endif %}">
|
|
<div class="time-pair">
|
|
<input class="time-input" type="time" name="matin_entree"
|
|
data-date="{{ j.date }}" value="{{ j.matin_entree or '' }}">
|
|
<span class="time-sep">→</span>
|
|
<input class="time-input" type="time" name="matin_sortie"
|
|
data-date="{{ j.date }}" value="{{ j.matin_sortie or '' }}">
|
|
</div>
|
|
</div>
|
|
</td>
|
|
|
|
<td class="c-aprem">
|
|
<div id="cg-aprem-{{ j.date }}" class="td-fill{% if aprem_cg %} cg{% elif aprem_warn %} warn{% endif %}">
|
|
<div class="time-pair">
|
|
<input class="time-input" type="time" name="aprem_entree"
|
|
data-date="{{ j.date }}" value="{{ j.aprem_entree or '' }}">
|
|
<span class="time-sep">→</span>
|
|
<input class="time-input" type="time" name="aprem_sortie"
|
|
data-date="{{ j.date }}" value="{{ j.aprem_sortie or '' }}">
|
|
</div>
|
|
</div>
|
|
</td>
|
|
|
|
<td class="col-calc">
|
|
<span id="calc-{{ j.date }}-trav">
|
|
<span class="calc-num">{{ j.travaille if j.travaille_min else '—' }}</span>
|
|
</span>
|
|
</td>
|
|
|
|
<td class="col-calc">
|
|
<span id="calc-{{ j.date }}-delta">
|
|
<span class="{% if j.travaille_min and j.delta_min > 0 %}delta-pos{% elif j.travaille_min and j.delta_min < 0 %}delta-neg{% else %}delta-zero{% endif %}">
|
|
{%- if j.travaille_min -%}
|
|
{% if j.delta_min > 0 %}+{% endif %}{{ j.delta }}
|
|
{%- else %}—{%- endif %}
|
|
</span>
|
|
</span>
|
|
</td>
|
|
|
|
<td class="col-cumul">
|
|
<span id="calc-{{ j.date }}-cumul">
|
|
{%- if j.cumul_visible -%}
|
|
<span class="{% if j.delta_cumul_min > 0 %}delta-pos{% elif j.delta_cumul_min < 0 %}delta-neg{% else %}delta-zero{% endif %}">
|
|
{% if j.delta_cumul_min > 0 %}+{% elif j.delta_cumul_min < 0 %}-{% endif %}{{ j.delta_cumul if j.delta_cumul_min != 0 else '0h00' }}
|
|
</span>
|
|
{%- else -%}
|
|
<span class="delta-zero">—</span>
|
|
{%- endif %}
|
|
</span>
|
|
</td>
|
|
|
|
<td class="col-cible">
|
|
<span id="calc-{{ j.date }}-cible">
|
|
{%- if j.sortie_cible and not j.is_complete -%}
|
|
<span class="cible-num">{{ j.sortie_cible }}</span>
|
|
{%- else -%}
|
|
<span class="delta-zero">—</span>
|
|
{%- endif %}
|
|
</span>
|
|
</td>
|
|
|
|
<td class="col-save">
|
|
<button class="btn-valider"
|
|
hx-post="/pointage/{{ j.date }}"
|
|
hx-swap="none"
|
|
hx-include="[data-date='{{ j.date }}']"
|
|
title="Enregistrer">✓</button>
|
|
</td>
|
|
|
|
<td class="col-conge">
|
|
<div id="cg-btn-{{ j.date }}">
|
|
<div class="conge-btns">
|
|
<button hx-post="/conge/{{ j.date }}/matin"
|
|
hx-swap="none"
|
|
class="btn-cg {% if 'matin' in j.conge %}on{% endif %}"
|
|
title="Congé matin">MA</button>
|
|
<button hx-post="/conge/{{ j.date }}/aprem"
|
|
hx-swap="none"
|
|
class="btn-cg {% if 'aprem' in j.conge %}on{% endif %}"
|
|
title="Congé après-midi">AM</button>
|
|
<button hx-post="/conge/{{ j.date }}/jour"
|
|
hx-swap="none"
|
|
class="btn-cg btn-jour {% if 'jour' in j.conge %}jour-on{% endif %}"
|
|
title="Journée entière">J</button>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|