6.7 KiB
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 + flagsrenderMemoryDetails(snapshot, deviceData)- RAM/SWAP + slots DIMMrenderStorageDetails(snapshot)- Disques avec SMARTrenderGPUDetails(snapshot)- Carte graphiquerenderNetworkDetails(snapshot)- Interfaces réseaurenderOSDetails(snapshot)- Système d'exploitationrenderProxmoxDetails(snapshot)- Proxmox VE (nouveau)renderAudioDetails(snapshot)- Audio hardware/software (nouveau)
Intégration :
- ✅ Ajouté à
devices.htmletdevice_detail.html - ✅ Appelable via
window.HardwareRenderer.renderXxx() - ⚠️ Migration partielle :
device_detail.jsligne 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 éditereditIPUrl()- Affiche l'éditeur d'URLsaveIPUrl()- 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
- TODO_BACKEND.md - Actions backend requises (schémas Pydantic, champs manquants)
- REFACTORING_PLAN.md - Plan détaillé migration vers HardwareRenderer
- 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.dmidecodecomplet - 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()etrenderAudioDetails()) - Reste à ajouter les
<div>dans le HTML + appel des fonctions
Action 4.1 - Uniformiser gestion erreurs
- Remplacer
alert()parutils.showToast() - Standardiser
try-catch
🧪 Tests recommandés
Test 1 : IconManager
- Ouvrir
devices.html - Sélectionner un device
- Vérifier que les icônes de sections s'affichent (pas de
<img>cassées) - Aller dans Settings → changer de pack d'icônes
- Revenir → vérifier que les icônes ont changé
Test 2 : IP URL (nécessite backend à jour)
- Ouvrir
devices.html - Sélectionner un device
- Vérifier l'affichage IP (non-127.0.0.1)
- Cliquer sur "Éditer lien IP"
- Saisir une URL (ex:
http://10.0.0.50:8080) - Cliquer "Sauvegarder"
- Vérifier que l'IP devient cliquable
- Cliquer → vérifier ouverture dans nouvel onglet
Test 3 : HardwareRenderer
- Ouvrir console navigateur (F12)
- Taper :
HardwareRenderer - Vérifier que l'objet existe avec 9 méthodes
⚠️ Limitations actuelles
-
Backend pas à jour :
device.ip_urlnon retourné par API → bouton IP URL ne sauvegarde pas- Champs Proxmox/Audio non exposés → sections vides
-
Migration HardwareRenderer partielle :
device_detail.js: seulerenderMotherboardDetails()migréedevices.js: aucune fonction migrée (utilise encore code dupliqué)- Impact : Gain potentiel de -656 lignes non réalisé
-
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)