document.addEventListener('DOMContentLoaded', function () { const offerForm = document.getElementById('offer-explorer-form'); const resultsTableBody = document.getElementById('offer-results-body'); const mockOffers = [ { provider: 'AWS', gpu: 'H100', region: 'us-east-1', price: 2.10, spot: true }, { provider: 'GCP', gpu: 'H100', region: 'us-central1', price: 2.25, spot: true }, { provider: 'Azure', gpu: 'H100', region: 'eastus', price: 2.30, spot: false }, { provider: 'CoreWeave', gpu: 'H100', region: 'us-east', price: 1.89, spot: false }, { provider: 'RunPod', gpu: 'H100', region: 'us-east', price: 1.79, spot: true }, { provider: 'AWS', gpu: 'A100', region: 'us-west-2', price: 1.10, spot: true }, { provider: 'GCP', gpu: 'A100', region: 'us-east4', price: 1.20, spot: true }, { provider: 'Vast.ai', gpu: 'A100', region: 'us-west', price: 0.95, spot: true }, { provider: 'AWS', gpu: 'RTX 4090', region: 'eu-west-1', price: 0.70, spot: true }, { provider: 'RunPod', gpu: 'RTX 4090', region: 'eu-central-1', price: 0.65, spot: true }, ]; if (offerForm) { offerForm.addEventListener('submit', function (e) { e.preventDefault(); const gpuType = document.getElementById('gpuType').value; const spotOk = document.getElementById('spotOk').checked; const filteredOffers = mockOffers.filter(offer => { const gpuMatch = gpuType === 'any' || offer.gpu === gpuType; const spotMatch = !spotOk || offer.spot === true; return gpuMatch && spotMatch; }); renderResults(filteredOffers); }); } function renderResults(offers) { if (!resultsTableBody) return; resultsTableBody.innerHTML = ''; if (offers.length === 0) { resultsTableBody.innerHTML = '
Sending...
'; submitButton.disabled = true; const formData = new FormData(this); fetch('contact.php', { method: 'POST', body: formData }) .then(response => response.json().then(data => ({ ok: response.ok, data }))) .then(({ ok, data }) => { if (ok) { statusDiv.innerHTML = `${data.success}
`; contactForm.reset(); } else { statusDiv.innerHTML = `${data.error || 'An unknown error occurred.'}
`; } }) .catch(error => { console.error('Error:', error); statusDiv.innerHTML = 'A network error occurred. Please try again.
'; }) .finally(() => { submitButton.disabled = false; }); }); } });