DASHBOARD.md 6.7 KB

Dashboard Moderno - Cambios Implementados

Descripción General

He transformado completamente la interfaz de VirtManager a un dashboard moderno tipo escritorio con:

  • Panel lateral izquierdo: Lista de máquinas virtuales con selección activa
  • Panel central principal: Información detallada de la VM seleccionada en tabs
  • Diseño responsivo: Adaptable a diferentes tamaños de pantalla

Cambios Principales

1. Nuevo Archivo HTML (static/index.html)

Características:

  • Diseño de dos paneles (sidebar + main content)
  • Sidebar con:
    • Encabezado con logo y título
    • Lista scrolleable de VMs
    • Botones de acción (Actualizar, Nueva VM)
  • Panel principal con:
    • Barra superior con nombre de VM y acciones dinámicas
    • Área de contenido con tabs
    • Información de configuración, discos y red

Colores y Estilos:

  • Gradiente púrpura-azul en sidebar
  • Cards con sombras suaves
  • Diseño moderno y limpio
  • Bootstrap Icons para mejor visualización

2. Nuevo JavaScript (static/dashboard.js)

Funcionalidades:

  • loadVMs(): Carga lista de VMs y las renderiza en el sidebar
  • selectVM(vmName): Selecciona una VM y muestra sus detalles
  • displayVMDetails(): Renderiza información en tabs (Resumen, Discos, Red)
  • createVM(): Crea nueva VM
  • startVM(), stopVM(): Acciones de control
  • deleteVMConfirm(): Elimina VM con confirmación
  • openBootOrderModal(): Modal para cambiar orden de arranque
  • openAddDiskModal(): Modal para agregar discos
  • openConsole(): Abre consola VNC

3. Interfaz Mejorada

Panel Lateral (Sidebar)

┌─────────────────────┐
│   VirtManager       │
│ Virtual Dashboard   │
├─────────────────────┤
│ • VM1 (running)     │ ← Click para seleccionar
│ • VM2 (shut off)    │
│ • VM3 (paused)      │
│                     │
│ [↻] [+ Nueva]       │ ← Acciones
└─────────────────────┘

Panel Central

┌─────────────────────────────────────────────┐
│ Nombre de VM  [Stop] [Console] [Delete] ... │ ← Barra superior
├─────────────────────────────────────────────┤
│ Resumen │ Discos │ Red                      │ ← Tabs
├─────────────────────────────────────────────┤
│ ┌──────────┐  ┌──────────┐                   │
│ │Config    │  │ Display  │                   │
│ │• CPUs: 2 │  │• Puerto  │                   │
│ │• Mem: 2G │  │• VNC: 5901                  │
│ │• State   │  └──────────┘                   │
│ └──────────┘  ┌──────────┐                   │
│              │Acciones  │                   │
│              │• Arranque│                   │
│              │• + Disco │                   │
│              └──────────┘                   │
└─────────────────────────────────────────────┘

4. Funcionalidades del Dashboard

Barra Lateral

  • ✅ Lista de VMs con estado (badge coloreado)
  • ✅ ID de la VM o "Detenida"
  • ✅ Selección visual del item activo
  • ✅ Hover effects para mejor UX
  • ✅ Botón "Actualizar" para refrescar lista
  • ✅ Botón "Nueva VM" para crear

Panel Principal

  • ✅ Muestra nombre de la VM seleccionada
  • ✅ Botones de acción dinámicos (Start/Stop/Delete/Console)
  • ✅ 3 tabs de información:
    1. Resumen: Config hardware y Display (VNC)
    2. Discos: Lista de discos conectados
    3. Red: Interfaces de red y MACs

Modales

  • ✅ Crear VM con formulario validado
  • ✅ Configurar orden de arranque
  • ✅ Agregar disco a VM
  • ✅ Mensajes de confirmación

5. Mejoras de UX

Característica Antes Después
Layout Tabla + Formularios Dashboard moderno
Selección Click en botón Click en item sidebar
Info VM Modal popup Tabs en panel principal
Acciones Tabla horizontal Botones contextuales
Iconos Ninguno Bootstrap Icons
Responsive Media queries Flex layouts
Colores Bootstrap defaults Gradientes personalizados

6. Estados Visuales de VMs

🟢 Running   - Verde (#28a745)
⚫ Shut off  - Gris (#6c757d)
⏸ Paused    - Amarillo (#ffc107)
❌ Crashed   - Rojo (#dc3545)

7. Archivos Modificados/Creados

static/
├── index.html          (NUEVO - Dashboard moderno)
├── dashboard.js        (NUEVO - Lógica del dashboard)
├── app.js             (mantenido como backup)
├── index.html.bak     (respaldo del HTML antiguo)
└── index_old.html     (HTML anterior)

Cambios Técnicos

HTML

  • Estructura con dashboard-container flex
  • Sidebar con sidebar y sidebar-vms
  • Main content con main-content y content-area
  • Modales dinámicos creados con JavaScript

CSS

  • Flexbox para layouts
  • CSS Grid para cards
  • Gradientes lineales
  • Transiciones suaves (0.3s)
  • Hover effects
  • Media queries para responsividad

JavaScript

  • Event listeners dinámicos
  • Creación de elementos DOM
  • Modales de Bootstrap dinámicos
  • Fetch API para llamadas al servidor
  • Manejo de promesas con async/await

Compatibilidad

✅ Compatible con todos los navegadores modernos ✅ Responsive en móvil (sidebar se ajusta) ✅ Bootstrap 5.3 ✅ Bootstrap Icons 1.11 ✅ Sin dependencias adicionales

Próximas Mejoras (Opcionales)

  1. Gráficos de uso de CPU/Memoria en tiempo real
  2. Búsqueda/filtro en la lista de VMs
  3. Drag & drop para reorganizar VMs
  4. Temas oscuro/claro
  5. Export de configuración
  6. Historial de eventos
  7. Auto-refresh de lista

Como Acceder

  1. Inicia el servidor:

    cd /home/creylopez/virtmanager
    source venv/bin/activate
    sudo -E venv/bin/uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
    
  2. Abre en navegador:

    http://localhost:8000
    
  3. Usa el dashboard:

    • Haz clic en una VM en el sidebar
    • Selecciona un tab para ver detalles
    • Usa los botones de acción

Notas

  • El archivo app.js se mantiene para referencia histórica
  • El HTML antiguo está en index_old.html
  • El nuevo dashboard.js reemplaza la funcionalidad
  • Todos los endpoints de la API siguen igual
  • Compatible con las mejoras anteriores de backend