`;var frame = document.getElementById('rc-frame'); frame.srcdoc = innerHtml;function fmtEUR(n){ return Math.round(n).toLocaleString('fr-FR') + ' EUR'; } function fmtPct(n){ return n.toFixed(1).replace('.', ',') + '%'; } var icons = { ok: '', warn: '', bad: '' };function resize(){ try { var d = frame.contentDocument; frame.style.height = (d.body.scrollHeight + 16) + 'px'; } catch(e) {} }frame.addEventListener('load', function(){ var d = frame.contentDocument;// Stocke les derniers resultats calcules, reutilises lors de l'envoi a Brevo var lastResults = { brute: 0, nette: 0, cashflow: 0, cashOnCash: 0, diagnostic: '' };function calc(){ var prix = parseFloat(d.getElementById('rc-prix').value) || 0; var apport = parseFloat(d.getElementById('rc-apport').value) || 0; var loyer = parseFloat(d.getElementById('rc-loyer').value) || 0; var charges = parseFloat(d.getElementById('rc-charges').value) || 0;var loyerAnnuel = loyer * 12; var chargesAnnuelles = charges * 12; var brute = prix > 0 ? (loyerAnnuel / prix) * 100 : 0; var nette = prix > 0 ? ((loyerAnnuel - chargesAnnuelles) / prix) * 100 : 0; var cashflow = loyer - charges; var cashOnCash = apport > 0 ? ((cashflow * 12) / apport) * 100 : 0;d.getElementById('rc-out-brute').textContent = fmtPct(brute); d.getElementById('rc-out-nette').textContent = fmtPct(nette); d.getElementById('rc-out-cashflow').textContent = fmtEUR(cashflow); d.getElementById('rc-out-cashoncash').textContent = fmtPct(cashOnCash);var diag = d.getElementById('rc-diagnostic'); var diagnosticLabel; if(nette >= 6){ diag.style.background = '#e7f3ea'; diag.style.color = '#1f6d3b'; diag.innerHTML = icons.ok + 'Bon investissement : rentabilite nette superieure a 6%'; diagnosticLabel = 'Bon investissement'; } else if(nette >= 4){ diag.style.background = '#fcf1dc'; diag.style.color = '#8a5a0a'; diag.innerHTML = icons.warn + 'Correct, mais a analyser de plus pres'; diagnosticLabel = 'Correct, a analyser'; } else { diag.style.background = '#fbe9e9'; diag.style.color = '#a13030'; diag.innerHTML = icons.bad + 'Rentabilite faible, soyez prudent'; diagnosticLabel = 'Rentabilite faible'; }lastResults = { brute: brute, nette: nette, cashflow: cashflow, cashOnCash: cashOnCash, diagnostic: diagnosticLabel }; resize(); }['rc-prix','rc-apport','rc-loyer','rc-charges'].forEach(function(id){ d.getElementById(id).addEventListener('input', calc); }); calc(); resize();d.getElementById('rc-form').addEventListener('submit', function(e){ e.preventDefault();var btn = d.getElementById('rc-submit-btn'); var successMsg = d.getElementById('rc-success'); var errorMsg = d.getElementById('rc-error'); successMsg.style.display = 'none'; errorMsg.style.display = 'none';var payload = { email: d.getElementById('rc-email').value, prix: parseFloat(d.getElementById('rc-prix').value) || 0, apport: parseFloat(d.getElementById('rc-apport').value) || 0, loyer: parseFloat(d.getElementById('rc-loyer').value) || 0, charges: parseFloat(d.getElementById('rc-charges').value) || 0, rentaBrute: Number(lastResults.brute.toFixed(2)), rentaNette: Number(lastResults.nette.toFixed(2)), cashflow: Number(lastResults.cashflow.toFixed(2)), cashOnCash: Number(lastResults.cashOnCash.toFixed(2)), diagnostic: lastResults.diagnostic };btn.disabled = true; btn.textContent = 'Envoi...';fetch(BREVO_ENDPOINT_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }) .then(function(res){ return res.json().then(function(data){ return { ok: res.ok, data: data }; }); }) .then(function(result){ if (result.ok && result.data && result.data.success) { successMsg.style.display = 'block'; btn.textContent = '\u2713 Merci, v\u00e9rifiez vos emails !'; d.getElementById('rc-email').value = ''; } else { errorMsg.style.display = 'block'; btn.textContent = 'Erreur, r\u00e9essayez'; } }) .catch(function(){ errorMsg.style.display = 'block'; btn.textContent = 'Erreur, r\u00e9essayez'; }) .finally(function(){ btn.disabled = false; resize(); setTimeout(resize, 150); // re-mesure apres que le navigateur ait fini d'afficher le message }); }); });window.addEventListener('resize', resize); } // fin de init()if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();

Blog

Your blog category

Retour en haut