document.addEventListener('DOMContentLoaded', function() { const cgForm = document.getElementById('cg-calculator-form'); const cgCalculateButton = document.querySelector('.btn-cg-calculate'); if (cgForm && cgCalculateButton) { function checkFormValidity() { const isValid = cgForm.checkValidity(); if (isValid) { cgCalculateButton.disabled = false; cgCalculateButton.classList.add('enabled'); } else { cgCalculateButton.disabled = true; cgCalculateButton.classList.remove('enabled'); } } checkFormValidity(); cgForm.addEventListener('input', checkFormValidity); cgForm.addEventListener('submit', async function(event) { event.preventDefault(); const formData = new FormData(cgForm); const [voltage, ledPower] = formData.get('led_type').split(',').map(Number); const cableLength = parseFloat(formData.get('cable_length')) || 3; const awg = formData.get('awg') || null; const fixtureHeight = parseFloat(formData.get('fixture_height')) || null; const levels = parseInt(formData.get('levels')) || null; const ledsPerLevel = parseInt(formData.get('leds_per_level')) || 6; if (awg && voltage && cableLength) { try { const resistanceResponse = await fetch(`/get_resistance/${awg}`); if (resistanceResponse.ok) { const { resistance } = await resistanceResponse.json(); const totalLEDs = levels * ledsPerLevel; const initialCurrent = (totalLEDs * ledPower) / voltage; let remainingVoltage = voltage; const levelHeight = fixtureHeight / levels; let resultsHtml = `
Total LEDs: ${totalLEDs} pcs
Level ${i}: Final Voltage: ${remainingVoltage.toFixed(2)} V
`; // Add length for the next level accumulatedLength += levelHeight; } else { console.error("Error calculating voltage drop:", calculationResponse.statusText); document.getElementById('result').innerHTML = `Error: Unable to calculate voltage drop.
`; return; } } document.getElementById('result').innerHTML = resultsHtml; } else { console.error("Error fetching resistance:", resistanceResponse.statusText); document.getElementById('result').innerHTML = `Error: Unable to fetch cable resistance.
`; } } catch (error) { console.error("An error occurred:", error); document.getElementById('result').innerHTML = `Error: An unexpected error occurred.
`; } } else { document.getElementById('result').innerHTML = `Please provide all required fields.
`; } }); } });