/** * Disk Checker - Main JavaScript * Handles HTMX events and dynamic content rendering */ // Render drives after HTMX loads them function renderDrives(data) { const container = document.getElementById('drives-content'); if (!container) return; container.innerHTML = ''; if (!data.drives || data.drives.length === 0) { container.innerHTML = '

No drives found.

'; return; } data.drives.forEach(drive => { const col = document.createElement('div'); col.className = 'col-md-4 mb-3'; const card = document.createElement('div'); card.className = `drive-card ${drive.mounted ? 'disabled' : 'available'}`; card.innerHTML = `
${drive.name}

Size: ${drive.size}
Model: ${drive.model || 'Unknown'}
${drive.serial ? `Serial: ${drive.serial}
` : ''} ${drive.mount_point ? `Mounted at: ${drive.mount_point}
` : ''}

${drive.mounted ? 'Mounted - Unavailable' : 'Available for Benchmark' }
`; col.appendChild(card); container.appendChild(col); }); } // Listen for HTMX events document.addEventListener('htmx:afterRequest', function(evt) { if (evt.detail.target.id === 'drives-content') { renderDrives(JSON.parse(evt.detail.xhr.response)); } }); // Optional: Listen for HTMX load event as fallback document.addEventListener('htmx:load', function(evt) { if (evt.target.id === 'drives-content') { // HTMX will load the content via hx-get // The afterRequest event will handle rendering } });