mirror of
https://github.com/R0m1k3/Presencia.git
synced 2026-10-23 15:18:03 +02:00
Contrôle complet + corrections de bugs + améliorations UI
Vérification de bout en bout via la vraie config nginx (21 checks Playwright, tous passants) : parcours admin complet, saisie cadre, double validation, verrouillages, exports, erreurs de connexion. Bugs corrigés découverts par ce contrôle : - La création d'utilisateur via l'interface était cassée depuis le début : l'id "user-role" existait en double (badge de l'en-tête + select de la modale), getElementById renvoyait le span du header et le rôle n'était jamais envoyé (400 systématique). Le badge devient user-role-badge. - Les toasts de notification interceptaient les clics sur les boutons situés dessous pendant 4 s (pointer-events: none ajouté). Améliorations UI : - « Absent » renommé « Non-présent » partout (légende, popover, exports PDF et Excel — code NP au lieu de A). - Récapitulatif mensuel : tuiles de compteurs par statut au-dessus du calendrier, mises à jour à chaque saisie. - Bouton « Remplir les jours ouvrés en Présent » : renseigne en un clic toutes les demi-journées vides du lundi au vendredi (nouvel endpoint PUT /api/attendance/bulk, transactionnel, mêmes contrôles de verrouillage), sans toucher aux saisies existantes. - Jour actuel mis en évidence dans le calendrier. - Favicon.
This commit is contained in:
7 files changed
+146
-11
No files matched your search
@@ -250,7 +250,35 @@ h2 { font-size: 17px; margin: 0 0 4px; }
|
||||
.half-day.st-conge { background: var(--color-conge-bg); color: var(--color-conge); border-style: solid; border-color: transparent; }
|
||||
.half-day.st-rtt { background: var(--color-rtt-bg); color: var(--color-rtt); border-style: solid; border-color: transparent; }
|
||||
|
||||
.calendar-actions { margin-top: 22px; display: flex; justify-content: flex-end; }
|
||||
.calendar-actions { margin-top: 22px; display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; }
|
||||
|
||||
/* Highlight of the current day */
|
||||
.day-cell.today { border-color: var(--color-primary); box-shadow: inset 0 0 0 1px var(--color-primary); }
|
||||
.day-cell.today .day-number { color: var(--color-primary); }
|
||||
|
||||
/* ---------- Monthly summary tiles ---------- */
|
||||
.month-summary {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.month-summary:empty { display: none; }
|
||||
.summary-tile {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 7px;
|
||||
background: var(--color-surface);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: 8px;
|
||||
padding: 8px 14px;
|
||||
}
|
||||
.summary-count { font-size: 18px; font-weight: 700; }
|
||||
.summary-label { font-size: 12px; color: var(--color-muted); font-weight: 600; }
|
||||
.summary-present .summary-count { color: var(--color-present); }
|
||||
.summary-absent .summary-count { color: var(--color-absent); }
|
||||
.summary-conge .summary-count { color: var(--color-conge); }
|
||||
.summary-rtt .summary-count { color: var(--color-rtt); }
|
||||
|
||||
/* ---------- Tables ---------- */
|
||||
.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
||||
@@ -318,6 +346,8 @@ h2 { font-size: 17px; margin: 0 0 4px; }
|
||||
.toast-container {
|
||||
position: fixed; top: 18px; right: 18px; z-index: 200;
|
||||
display: flex; flex-direction: column; gap: 10px;
|
||||
/* Notifications must never block clicks on the UI underneath them. */
|
||||
pointer-events: none;
|
||||
}
|
||||
.toast {
|
||||
background: var(--color-text); color: #fff; padding: 12px 18px; border-radius: 8px;
|
||||
|
||||
Reference in new issue
Block a user