Appliquer chezlepro_timezone (rôle chrony) + nettoyer le CSS mort du GUI
L'intrant de base global chezlepro_timezone était défini mais jamais appliqué : le rôle chrony règle désormais le fuseau horaire (chrony_timezone, vide = ne pas toucher). Nettoyage du CSS/HTML devenu mort après la refonte maître-détail (.message, .chip-f, .onglet*, .base-ligne, .ch-grp*, etc.). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
5176d714e9
commit
3a3a80e0ac
4 changed files with 22 additions and 28 deletions
12
CHANGELOG.md
12
CHANGELOG.md
|
|
@ -2,7 +2,19 @@
|
|||
|
||||
## 2026-06-30
|
||||
|
||||
### Corrigé
|
||||
- **`chezlepro_timezone` n'était appliqué nulle part.** Cet intrant de base global
|
||||
était défini mais aucun rôle ne s'en servait. Le rôle `chrony` (appliqué à tout
|
||||
hôte via `serveur_debian`) règle désormais le fuseau horaire à partir de
|
||||
`chezlepro_timezone` (`chrony_timezone` par défaut, vide = ne pas toucher). Les
|
||||
autres défauts globaux (nœud / stockage / pont Proxmox) étaient déjà réutilisés
|
||||
comme valeurs par défaut, surchargeables par hôte.
|
||||
|
||||
### Modifié
|
||||
- **Nettoyage CSS/HTML du GUI** après la refonte : retrait des règles et éléments
|
||||
morts (`.message`, `.chips-filtre`/`.chip-f`, `.onglet*`, `.base-ligne`,
|
||||
`.bases-liste`, `.ch-grp*`/`.ch-fleche`/`.ch-roles`, `.champ-val`, divs `#message`
|
||||
et `#chips`).
|
||||
- **GUI refondu en atelier maître-détail unifié.** Toutes les vues suivent le même
|
||||
motif : tuiles à gauche, **détail + saisie à droite**, le panneau droit reflétant
|
||||
la sélection de la vue courante (fin du panneau « figé » au changement de vue).
|
||||
|
|
|
|||
5
roles/chrony/defaults/main.yml
Normal file
5
roles/chrony/defaults/main.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
# Fuseau horaire de l'hôte. Réutilise l'intrant de base global chezlepro_timezone
|
||||
# (source unique : inventories/<env>/group_vars/all/, panneau « Intrants » du GUI).
|
||||
# Laisser vide pour ne pas toucher au fuseau de la VM.
|
||||
chrony_timezone: "{{ chezlepro_timezone | default('') }}"
|
||||
|
|
@ -1,4 +1,9 @@
|
|||
---
|
||||
- name: Définir le fuseau horaire (intrant global chezlepro_timezone)
|
||||
community.general.timezone:
|
||||
name: "{{ chrony_timezone }}"
|
||||
when: chrony_timezone | length > 0
|
||||
|
||||
- name: Installer chrony
|
||||
ansible.builtin.apt:
|
||||
name: chrony
|
||||
|
|
|
|||
|
|
@ -577,8 +577,6 @@ HTML = r"""<!doctype html>
|
|||
input:focus, select:focus { outline: none; border-color: var(--teal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--teal) 22%, transparent); }
|
||||
|
||||
main { padding: 16px 22px 44px; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(420px, 1fr); gap: 20px; align-items: start; max-width: 1760px; margin: 0 auto; }
|
||||
.message { min-height: 18px; font-size: 13px; font-weight: 650; color: var(--bleu); margin: 0 2px 12px; }
|
||||
.message.erreur { color: var(--rouge); } .message.ok { color: var(--vert); }
|
||||
.toasts { position: fixed; top: 14px; right: 14px; z-index: 60; display: flex; flex-direction: column; gap: 8px; max-width: min(380px, 92vw); pointer-events: none; }
|
||||
.toast { pointer-events: auto; background: var(--surface-2); border: 1px solid var(--ligne-forte); border-left: 3px solid var(--bleu); border-radius: var(--rayon-sm); box-shadow: var(--ombre-forte); padding: 9px 12px; font-size: 13px; font-weight: 600; color: var(--texte); display: flex; gap: 9px; align-items: flex-start; animation: toast-in .18s ease-out; }
|
||||
.toast.ok { border-left-color: var(--vert); } .toast.erreur { border-left-color: var(--rouge); }
|
||||
|
|
@ -588,15 +586,6 @@ HTML = r"""<!doctype html>
|
|||
@keyframes toast-in { from { opacity: 0; transform: translateX(12px); } }
|
||||
input.invalide, select.invalide { border-color: var(--rouge) !important; box-shadow: 0 0 0 1px var(--rouge); }
|
||||
|
||||
.chips-filtre { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 16px; }
|
||||
.chip-f { padding: 6px 13px; border-radius: 999px; border: 1px solid var(--ligne-forte); background: var(--surface-2); color: var(--muted); font-weight: 700; font-size: 12.5px; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; transition: all .14s; }
|
||||
.chip-f:hover { border-color: var(--ligne-forte); color: var(--texte); }
|
||||
.chip-f .n { font-size: 11px; opacity: .8; }
|
||||
.chip-f.on { color: #07101f; border-color: transparent; }
|
||||
.chip-f.on.tous { background: var(--teal); }
|
||||
.chip-f.on.actif { background: var(--vert); }
|
||||
.chip-f.on.planifie { background: var(--bleu); }
|
||||
.chip-f.on.bloque { background: var(--rouge); }
|
||||
|
||||
.section-grille { margin-bottom: 22px; }
|
||||
.section-tete { display: flex; align-items: center; gap: 10px; margin: 0 0 11px; color: var(--faint); font-size: 11px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
|
||||
|
|
@ -638,11 +627,6 @@ HTML = r"""<!doctype html>
|
|||
.stat .v { font-size: 18px; font-weight: 800; line-height: 1.1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||||
.stat .v.vide { color: var(--faint); }
|
||||
.stat .l { font-size: 9.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--faint); font-weight: 800; margin-top: 3px; }
|
||||
.onglets { display: flex; gap: 2px; padding: 0 12px; border-bottom: 1px solid var(--ligne); }
|
||||
.onglet { padding: 9px 12px; background: transparent; border: none; border-bottom: 2px solid transparent; color: var(--muted); font-weight: 750; font-size: 13px; cursor: pointer; border-radius: 0; }
|
||||
.onglet:hover { color: var(--texte); border-color: transparent; }
|
||||
.onglet.actif { color: var(--texte); border-bottom-color: var(--teal); }
|
||||
.onglet-corps { padding: 14px 16px; }
|
||||
.grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(135px, 1fr)); gap: 11px 12px; }
|
||||
.champ { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
|
||||
.champ > span { color: var(--muted); font-size: 11px; font-weight: 700; }
|
||||
|
|
@ -656,8 +640,6 @@ HTML = r"""<!doctype html>
|
|||
.aide-corps p { margin: 6px 0; } .aide-corps ul { margin: 6px 0; padding-left: 18px; } .aide-corps li { margin: 3px 0; }
|
||||
.aide-corps b { color: var(--texte); }
|
||||
.aide-ro { border-top: 1px solid var(--ligne); padding-top: 8px; }
|
||||
.champ .champ-val { font-size: 13px; font-weight: 600; color: var(--texte); padding: 5px 2px; min-height: 18px; overflow-wrap: anywhere; }
|
||||
.champ .champ-val.vide { color: var(--faint); }
|
||||
.detail-nom-txt { font-weight: 800; font-size: 17px; padding: 4px 7px; display: inline-block; overflow-wrap: anywhere; }
|
||||
#infobulle {
|
||||
position: fixed; z-index: 200; max-width: 260px; pointer-events: none;
|
||||
|
|
@ -699,16 +681,8 @@ HTML = r"""<!doctype html>
|
|||
.vue-bascule button { border: none; background: transparent; border-radius: 999px; padding: 6px 13px; font-size: 12.5px; font-weight: 750; color: var(--muted); box-shadow: none; }
|
||||
.vue-bascule button:hover { color: var(--texte); background: transparent; }
|
||||
.vue-bascule button.on { background: var(--surface); color: var(--teal); box-shadow: var(--ombre); }
|
||||
.ch-grp { border-left: 2px solid var(--ligne-forte); padding: 3px 0 3px 12px; }
|
||||
.ch-grp-tete { display: flex; align-items: center; gap: 7px; font-weight: 700; font-size: 13px; flex-wrap: wrap; }
|
||||
.ch-fleche { color: var(--faint); }
|
||||
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--teal); font-size: 12px; }
|
||||
.ch-roles { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
|
||||
.ch-stub { color: var(--ambre); font-size: 11.5px; font-style: italic; margin-top: 5px; }
|
||||
.bases-liste { display: grid; gap: 10px; }
|
||||
.base-ligne { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)) auto; gap: 9px 11px; align-items: end; background: var(--surface); border: 1px solid var(--ligne); border-radius: var(--rayon-sm); padding: 11px 12px; box-shadow: var(--ombre); }
|
||||
.base-ligne .danger { align-self: end; }
|
||||
.base-ligne .dsn { grid-column: 1 / -1; color: var(--muted); font-size: 11.5px; padding-top: 2px; overflow-wrap: anywhere; }
|
||||
.ch-bases { display: grid; gap: 4px; margin: 6px 0 0 23px; }
|
||||
.ch-base { font-size: 11.5px; color: var(--muted); overflow-wrap: anywhere; }
|
||||
.badge-bd { display: inline-block; font-size: 10px; font-weight: 800; padding: 1px 6px; border-radius: 999px; background: color-mix(in srgb, var(--bleu) 18%, transparent); color: var(--bleu); }
|
||||
|
|
@ -773,8 +747,6 @@ HTML = r"""<!doctype html>
|
|||
</header>
|
||||
<main>
|
||||
<section>
|
||||
<div class="message" id="message"></div>
|
||||
<div class="chips-filtre" id="chips"></div>
|
||||
<div id="grilles"></div>
|
||||
<details class="dep-bloc" id="panneau-dep">
|
||||
<summary>Dépendances causales <span id="dep-resume" class="chip"></span></summary>
|
||||
|
|
|
|||
Loading…
Reference in a new issue