diff --git a/CHANGELOG.md b/CHANGELOG.md index 02130b7..f67cc31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,13 @@ `roles/client_*`). Le type `liste` (chaîne virgulée → liste YAML dédoublonnée) est ajouté au schéma des intrants. +### Supprimé +- **Vue « Chaîne » du bandeau (redondante).** Son contenu (`renduChaine`) était déjà + rendu, par hôte, dans l'onglet « Chaîne » du détail de la vue Inventaire ; la vue ne + faisait que le répéter pour tous les hôtes à la fois, sans réseau/proxmox ni boutons + d'opération. Retirée (bouton, rendu `dessinerArbre`, CSS `.arbre-*`) ; la chaîne + reste consultable hôte par hôte. Raccourcis clavier ramenés à 1-4. + ### Modifié - **Vue Inventaire (cartes) : détail converti en inspection lecture seule.** La vue affichait « généré depuis le plan (lecture seule) » tout en exposant une surface diff --git a/scripts/inventory_gui.py b/scripts/inventory_gui.py index 36c264c..0ddabc6 100644 --- a/scripts/inventory_gui.py +++ b/scripts/inventory_gui.py @@ -691,13 +691,6 @@ HTML = r""" .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); } - .arbre-vm { background: var(--surface); border: 1px solid var(--ligne); border-radius: var(--rayon); margin-bottom: 10px; box-shadow: var(--ombre); } - .arbre-vm > summary { list-style: none; cursor: pointer; padding: 11px 14px; display: flex; align-items: center; gap: 10px; font-size: 14px; } - .arbre-vm > summary::-webkit-details-marker { display: none; } - .arbre-vm > summary::before { content: "\25B8"; color: var(--faint); } - .arbre-vm[open] > summary::before { content: "\25BE"; } - .arbre-vm .ch-meta { color: var(--muted); font-size: 12px; margin-left: auto; } - .arbre-corps { padding: 2px 16px 14px 32px; display: grid; gap: 9px; } .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); } @@ -756,11 +749,10 @@ HTML = r"""
-
+
-
@@ -1021,7 +1013,6 @@ HTML = r""" vuePrincipale = v; document.getElementById('btn-vue-cartes').classList.toggle('on', v === 'cartes'); document.getElementById('btn-vue-serveurs').classList.toggle('on', v === 'serveurs'); - document.getElementById('btn-vue-chaine').classList.toggle('on', v === 'chaine'); document.getElementById('btn-vue-applications').classList.toggle('on', v === 'applications'); document.getElementById('btn-vue-bases').classList.toggle('on', v === 'bases'); dessinerGrilles(); @@ -1031,7 +1022,6 @@ HTML = r""" function dessinerGrilles() { document.getElementById('chips').style.display = vuePrincipale === 'cartes' ? '' : 'none'; if (vuePrincipale === 'serveurs') { dessinerServeurs(); return; } - if (vuePrincipale === 'chaine') { dessinerArbre(); return; } if (vuePrincipale === 'applications') { dessinerApplications(); return; } if (vuePrincipale === 'bases') { dessinerBases(); return; } const cible = document.getElementById('grilles'); @@ -1095,22 +1085,6 @@ HTML = r""" return grpHtml + appSection; } - function dessinerArbre() { - const cible = document.getElementById('grilles'); - const visibles = hotes.map((h, i) => [h, i]).filter(([h]) => correspond(h)); - if (!visibles.length) { cible.innerHTML = '
Aucun hôte.
'; return; } - cible.innerHTML = visibles.map(([h]) => { - const st = statutHote(h); - const cls = st === 'bloque' ? 'bloq' : (h.etat === 'actif' ? 'actif' : 'plan'); - return `
- ${echapper(h.nom || '(sans nom)')} - ${libelleStatut(st)} - ${(h.groupes || []).length} groupes -
${renduChaine(h)}
-
`; - }).join(''); - } - function chargerBases(data) { const b = data.bases || {serveurs_bd: {}, bases_donnees: {}}; bdServeurs = Object.entries(b.serveurs_bd || {}).map(([nom, s]) => ({ @@ -1764,7 +1738,7 @@ HTML = r""" if ((e.ctrlKey || e.metaKey) && (e.key === 's' || e.key === 'S')) { e.preventDefault(); sauvegarderVue(); return; } const dansSaisie = /^(INPUT|SELECT|TEXTAREA)$/.test((document.activeElement || {}).tagName || ''); if (dansSaisie || e.ctrlKey || e.metaKey || e.altKey) return; - const vues = {'1': 'cartes', '2': 'serveurs', '3': 'chaine', '4': 'applications', '5': 'bases'}; + const vues = {'1': 'cartes', '2': 'serveurs', '3': 'applications', '4': 'bases'}; if (vues[e.key]) { setVue(vues[e.key]); return; } if (e.key === '/') { e.preventDefault(); const f = document.getElementById('filtre'); if (f) f.focus(); return; } if (vuePrincipale !== 'cartes') return;