const API_BASE = window.location.origin; let selectedVM = null; // Initialize dashboard document.addEventListener('DOMContentLoaded', () => { loadVMs(); loadISOsForSelect(); // Initialize sidebar state for mobile const sidebar = document.querySelector('.sidebar'); if (window.innerWidth <= 768) { sidebar.classList.add('hidden-mobile'); } // Create VM Form document.getElementById('createVMForm').addEventListener('submit', createVM); }); // Get badge class based on VM state function getStateClass(state) { switch (state) { case 'running': return 'badge-running'; case 'shut off': return 'badge-off'; case 'paused': return 'badge-paused'; case 'crashed': return 'badge-error'; default: return 'bg-light text-dark'; } } // Get icon for state function getStateIcon(state) { switch (state) { case 'running': return ''; case 'shut off': return ''; case 'paused': return ''; default: return ''; } } // Load VMs from API async function loadVMs() { try { const response = await fetch(`${API_BASE}/vms`); const data = await response.json(); const vmList = document.getElementById('vmList'); if (!data.vms || data.vms.length === 0) { vmList.innerHTML = '
No hay máquinas virtuales
'; return; } vmList.innerHTML = data.vms.map(vm => `Haz clic en una VM del panel lateral para ver sus detalles