Commercial Lease Rate Analyzer 📊
- 1. Property & Lease Basics
- 2. Concessions & Escalations
- 3. Analysis Report
Property & Lease Basics
Concessions & Escalations
Analysis Report
Commercial Lease Rate Analysis Report
Please complete the details in the previous tabs and click "Analyze Lease".
Lease Term: ${leaseTermYears} years
`; reportHTML += `Annual Escalation: ${escalationPercent}%
`; reportHTML += `Concessions:
`; reportHTML += `TI Allowance: ${CLRA_formatCurrency(tiValue)} (Type: ${CLRA_tiTypePerUnit.checked ? '$'+tiAllowanceInput+'/unit' : 'Total $'+tiAllowanceInput})
`; reportHTML += `Free Rent: ${freeRentMonths} months (Value: ${CLRA_formatCurrency(freeRentValue)})
`; reportHTML += `Total Concessions Value: ${CLRA_formatCurrency(totalConcessions)}
`; reportHTML += `Calculated Lease Metrics:
`; reportHTML += `Total Quoted Rent (over term, with escalations): ${CLRA_formatCurrency(totalQuotedRentOverTerm)}
`; reportHTML += `Net Rent Paid (after concessions, over term): ${CLRA_formatCurrency(netRentPaidOverTerm)}
`; reportHTML += `Average Annual Cost (net, over term): ${CLRA_formatCurrency(averageAnnualCostOverTerm)}
`; reportHTML += `Effective Annual Rate: ${CLRA_formatCurrency(effectiveAnnualRatePerArea)} per ${glaUnitText}
`; reportHTML += `Effective Monthly Rate: ${CLRA_formatCurrency(effectiveMonthlyRatePerArea)} per ${glaUnitText}
`; const targetMarketRateInput = parseFloat(CLRA_targetMarketRate.value); if (!isNaN(targetMarketRateInput) && targetMarketRateInput > 0) { reportHTML += `Comparison:
`; reportHTML += `Your Target/Market Annual Rate: ${CLRA_formatCurrency(targetMarketRateInput)} per ${glaUnitText}
`; const difference = effectiveAnnualRatePerArea - targetMarketRateInput; const diffPercent = (difference / targetMarketRateInput) * 100; reportHTML += `Difference from Target: ${CLRA_formatCurrency(difference)} per ${glaUnitText} (${diffPercent.toFixed(1)}%)`; if (difference > 0) reportHTML += ` (Higher than target)`; else if (difference < 0) reportHTML += ` (Lower than target)`; else reportHTML += ` (Matches target)`; reportHTML += `
`; } reportHTML += `Note: This analysis focuses on the base rent and stated concessions. For NNN or Modified Gross leases, operating expenses are typically an additional cost to the tenant and are not included in this effective rate calculation of the base rent. The 'Effective Rate' reflects the average cost of the base rent per period after accounting for escalations and concessions over the entire lease term.
`; CLRA_analysisReportOutput.innerHTML = reportHTML; CLRA_navigateToTab('clra-tab3'); } async function CLRA_generatePDF() { if (!CLRA_pdfExportContent || !CLRA_analysisReportOutput || !CLRA_pdfSpecificTitle) { console.error("PDF export content area missing."); alert("Error: PDF content area not found."); return; } if (CLRA_analysisReportOutput.innerHTML.includes("Please complete the details")) { alert("Please analyze the lease first before downloading the PDF."); return; } CLRA_pdfSpecificTitle.style.display = 'block'; const originalToolTitle = document.querySelector('.clra-tool-title'); if(originalToolTitle) originalToolTitle.style.display = 'none'; const originalBg = CLRA_pdfExportContent.style.backgroundColor; CLRA_pdfExportContent.style.backgroundColor = '#ffffff'; // Ensure white background try { const canvas = await html2canvas(CLRA_pdfExportContent, { scale: 2, useCORS: true, backgroundColor: '#ffffff' }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); const imgProps = pdf.getImageProperties(imgData); let imgWidth = imgProps.width; let imgHeight = imgProps.height; const ratio = imgWidth / imgHeight; let newImgWidth = pdfWidth - 20; // 10mm margin L/R let newImgHeight = newImgWidth / ratio; if (newImgHeight > pdfHeight - 20) { // 10mm margin T/B newImgHeight = pdfHeight - 20; newImgWidth = newImgHeight * ratio; } const x = (pdfWidth - newImgWidth) / 2; const y = 10; pdf.addImage(imgData, 'PNG', x, y, newImgWidth, newImgHeight); pdf.save('Commercial_Lease_Analysis.pdf'); } catch (error) { console.error("Error generating PDF:", error); alert("An error occurred while generating the PDF."); } finally { CLRA_pdfSpecificTitle.style.display = 'none'; if(originalToolTitle) originalToolTitle.style.display = 'block'; CLRA_pdfExportContent.style.backgroundColor = originalBg; } } document.addEventListener('DOMContentLoaded', function() { CLRA_initDOMElements(); if (!CLRA_tabs || !CLRA_tabContents || !CLRA_propertyType) { // Check a few critical elements console.error("Commercial Lease Rate Analyzer: Tool could not be initialized. Essential elements missing."); const container = document.getElementById('clraToolContainer'); if (container) { container.innerHTML = "Error: Tool components failed to load.
"; } return; } CLRA_tabs.forEach(tab => { tab.addEventListener('click', function() { if (this.dataset && this.dataset.tab) { CLRA_navigateToTab(this.dataset.tab); } else { console.warn("Clicked tab missing 'data-tab' attribute."); } }); }); // Set default analysis date to today if (CLRA_analysisDate) { const today = new Date(); CLRA_analysisDate.value = today.toISOString().split('T')[0]; } CLRA_navigateToTab('clra-tab1'); // Initialize to first tab });