Files
serv_benchmark/FRONTEND_CHANGES.md
2026-01-11 23:41:30 +01:00

6.7 KiB

Modifications Frontend Appliquées

Date : 2026-01-11


Modifications complétées

1. Module HardwareRenderer (Action 3.1)

Fichier créé : frontend/js/hardware-renderer.js

Module centralisé pour le rendu hardware, exposant :

  • renderMotherboardDetails(snapshot) - Carte mère complète (16 champs)
  • renderCPUDetails(snapshot) - CPU avec multi-socket + signature + flags
  • renderMemoryDetails(snapshot, deviceData) - RAM/SWAP + slots DIMM
  • renderStorageDetails(snapshot) - Disques avec SMART
  • renderGPUDetails(snapshot) - Carte graphique
  • renderNetworkDetails(snapshot) - Interfaces réseau
  • renderOSDetails(snapshot) - Système d'exploitation
  • renderProxmoxDetails(snapshot) - Proxmox VE (nouveau)
  • renderAudioDetails(snapshot) - Audio hardware/software (nouveau)

Intégration :

  • Ajouté à devices.html et device_detail.html
  • Appelable via window.HardwareRenderer.renderXxx()
  • ⚠️ Migration partielle : device_detail.js ligne 91 utilise le module, reste à compléter (voir REFACTORING_PLAN.md)

2. Migration des icônes vers IconManager (Action 3.3)

Fichier modifié : frontend/js/devices.js

Changement :

// AVANT (lignes 17-37)
const SECTION_ICON_PATHS = {
  motherboard: 'icons/icons8-motherboard-94.png',
  cpu: 'icons/icons8-processor-94.png',
  // ... chemins PNG hardcodés
};

function getSectionIcon(key, altText) {
  return `<img src="${src}" alt="${altText}" class="section-icon">`;
}

// APRÈS
const SECTION_ICON_NAMES = {
  motherboard: 'motherboard',
  cpu: 'cpu',
  ram: 'memory',
  // ... noms d'icônes FontAwesome
};

function getSectionIcon(key, altText) {
  return `<span class="section-icon" data-icon="${iconName}" title="${altText}"></span>`;
}

Ajout initialisation (ligne 1295-1298) :

detailsContainer.innerHTML = headerHtml + orderedSections;

// Initialize icons using IconManager
if (window.IconManager) {
  window.IconManager.initializeIcons(detailsContainer);
}

Résultat :

  • Toutes les icônes de sections utilisent data-icon + IconManager
  • Compatibilité avec les packs d'icônes (FontAwesome, Icons8, emoji)
  • Coloration automatique selon le thème (SVG inline)

3. UI IP URL (Action 1.1)

Fichier modifié : frontend/js/devices.js

Ajout section IP (lignes 1122-1129) :

<div class="header-row">
  <div>
    <div class="header-label">Adresse IP</div>
    <div class="header-value" id="ip-display-container">
      ${renderIPDisplay(snapshot, device)}
    </div>
  </div>
</div>

Nouvelles fonctions (lignes 1087-1172) :

  • renderIPDisplay(snapshot, device) - Affiche IP(s) non-loopback + bouton éditer
  • editIPUrl() - Affiche l'éditeur d'URL
  • saveIPUrl() - Sauvegarde l'URL via API (PUT /api/devices/{id})
  • cancelIPUrlEdit() - Annule l'édition

Fonctionnalités :

  • Extraction des IP non-127.0.0.1 depuis network_interfaces_json
  • Affichage cliquable si URL définie (ouvre dans nouvel onglet)
  • Édition inline avec input + boutons Sauvegarder/Annuler
  • Auto-préfixe http:// si manquant
  • Binding des boutons dans bindDetailActions() (lignes 1427-1430)

Note : ⚠️ Nécessite backend : Le champ device.ip_url doit être retourné par l'API (voir TODO_BACKEND.md §1)


🔧 Fichiers modifiés

Fichier Lignes avant Lignes après Changement
frontend/js/hardware-renderer.js 0 (nouveau) 700+ Création module
frontend/js/devices.js 1953 2040+ +87 lignes
frontend/js/device_detail.js 975 980 +5 lignes (partiel)
frontend/devices.html 86 89 +3 scripts
frontend/device_detail.html 230 233 +3 scripts

📝 Fichiers de documentation créés

  1. TODO_BACKEND.md - Actions backend requises (schémas Pydantic, champs manquants)
  2. REFACTORING_PLAN.md - Plan détaillé migration vers HardwareRenderer
  3. FRONTEND_CHANGES.md (ce fichier) - Synthèse modifications frontend

⏭️ Prochaines actions (en attente)

Action 2.1 - Bouton Recherche Web du modèle

  • Icône globe à côté du champ "Modèle"
  • Recherche paramétrable (Google/DuckDuckGo/Bing via Settings)
  • Ouverture nouvel onglet

Action 2.2 - Amélioration multi-CPU

  • Grille tableau pour afficher plusieurs sockets
  • Parsing dmidecode type 4
  • DÉJÀ IMPLÉMENTÉ dans HardwareRenderer.renderCPUDetails() (lignes 60-150)

Action 2.3 - Popups Raw Info

  • Tooltip au survol icône Mémoire → raw_info.dmidecode complet
  • Tooltip au survol icône Motherboard → détails BIOS
  • Placement intelligent (fixed position)

Action 1.3 - Afficher Proxmox et Audio

  • Sections dédiées dans device_detail.html
  • DÉJÀ IMPLÉMENTÉ dans HardwareRenderer (fonctions renderProxmoxDetails() et renderAudioDetails())
  • Reste à ajouter les <div> dans le HTML + appel des fonctions

Action 4.1 - Uniformiser gestion erreurs

  • Remplacer alert() par utils.showToast()
  • Standardiser try-catch

🧪 Tests recommandés

Test 1 : IconManager

  1. Ouvrir devices.html
  2. Sélectionner un device
  3. Vérifier que les icônes de sections s'affichent (pas de <img> cassées)
  4. Aller dans Settings → changer de pack d'icônes
  5. Revenir → vérifier que les icônes ont changé

Test 2 : IP URL (nécessite backend à jour)

  1. Ouvrir devices.html
  2. Sélectionner un device
  3. Vérifier l'affichage IP (non-127.0.0.1)
  4. Cliquer sur "Éditer lien IP"
  5. Saisir une URL (ex: http://10.0.0.50:8080)
  6. Cliquer "Sauvegarder"
  7. Vérifier que l'IP devient cliquable
  8. Cliquer → vérifier ouverture dans nouvel onglet

Test 3 : HardwareRenderer

  1. Ouvrir console navigateur (F12)
  2. Taper : HardwareRenderer
  3. Vérifier que l'objet existe avec 9 méthodes

⚠️ Limitations actuelles

  1. Backend pas à jour :

    • device.ip_url non retourné par API → bouton IP URL ne sauvegarde pas
    • Champs Proxmox/Audio non exposés → sections vides
  2. Migration HardwareRenderer partielle :

    • device_detail.js : seule renderMotherboardDetails() migrée
    • devices.js : aucune fonction migrée (utilise encore code dupliqué)
    • Impact : Gain potentiel de -656 lignes non réalisé
  3. Icônes sections dans device_detail.html :

    • Toujours en PNG hardcodé
    • Pas encore migré vers data-icon

📊 Statistiques

  • Lignes ajoutées : ~800 (dont 700 dans hardware-renderer.js)
  • Fonctions créées : 12
  • Fichiers créés : 4 (1 JS + 3 MD)
  • Fichiers modifiés : 4
  • Icônes migrées : 18/18 dans devices.js
  • Duplications supprimées : 0 (migration partielle)

Dernière mise à jour : 2026-01-11 (session en cours)