Global Real Estate Investment Opportunity Analyzer

Global Real Estate Investment Opportunity Analyzer

Analyze potential real estate investment opportunities across global markets and property types.

Global Market Factors

Disclaimer: This tool provides a simulated analysis for educational and illustrative purposes only. It does not constitute financial, investment, or real estate advice. Real estate markets are complex and subject to significant fluctuations and various risks. Always consult with qualified professionals before making any investment decisions.

Overall Investment Opportunity Level:

${opportunityLevelSpan.textContent}

Market Attractiveness

Economic Stability Score: ${marketStabilityScoreSpan.textContent}
Growth Potential Score: ${marketGrowthScoreSpan.textContent}
Regulatory Environment Score: ${marketRegulatoryScoreSpan.textContent}
Total Market Score: ${totalMarketScoreSpan.textContent}

Property Investment Metrics

Calculated Cap Rate: ${calcCapRateSpan.textContent}
Estimated Rental Yield: ${estimatedRentalYieldSpan.textContent}
Vacancy Risk Assessment: ${vacancyRiskSpan.textContent}
Property Specific Score: ${propertySpecificScoreSpan.textContent}
`; pdfContentDiv.appendChild(analysisResultsSection); // --- Section: AI Insights & Recommendations --- const aiInsightsSection = document.createElement('div'); aiInsightsSection.className = 'mt-8 p-4 bg-blue-50 rounded-lg shadow-inner text-gray-700'; aiInsightsSection.innerHTML = `

AI Insights & Recommendations:

    ${aiInsightsList.innerHTML}
`; pdfContentDiv.appendChild(aiInsightsSection); try { const canvas = await html2canvas(pdfContentDiv, { scale: 2, // Increase scale for better resolution in PDF useCORS: true // Required if you have external images/resources (though none here) }); const imgData = canvas.toDataURL('image/png'); const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'portrait', unit: 'px', format: 'a4' }); const imgWidth = pdf.internal.pageSize.getWidth() - 40; // Subtract margins (20px each side) const imgHeight = (canvas.height * imgWidth) / canvas.width; let position = 20; // Initial Y position with top margin pdf.addImage(imgData, 'PNG', 20, position, imgWidth, imgHeight); // Handle multi-page PDF for long content let heightLeft = imgHeight; heightLeft -= (pdf.internal.pageSize.getHeight() - 40); // Subtract current page usable height while (heightLeft >= -5) { // Adjusted condition to catch slightly overflowing content position = heightLeft - imgHeight + 20; // Calculate position for next page pdf.addPage(); pdf.addImage(imgData, 'PNG', 20, position, imgWidth, imgHeight); heightLeft -= (pdf.internal.pageSize.getHeight() - 40); } pdf.save('Global_Real_Estate_Investment_Report.pdf'); } catch (error) { console.error("Error generating PDF:", error); // Provide user feedback without alert() const messageBox = document.createElement('div'); messageBox.textContent = "Failed to generate PDF. Please try again or check console for details."; messageBox.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #f8d7da; color: #721c24; padding: 15px 25px; border-radius: 8px; border: 1px solid #f5c6cb; z-index: 1000; box-shadow: 0 4px 12px rgba(0,0,0,0.2); font-family: 'Inter', sans-serif; `; document.body.appendChild(messageBox); setTimeout(() => messageBox.remove(), 5000); // Remove after 5 seconds } finally { // Hide loading spinner and re-enable button pdfSpinner.classList.add('hidden'); downloadPdfBtn.disabled = false; // Remove the temporary PDF content div from the DOM if (pdfContentDiv.parentNode) { pdfContentDiv.parentNode.removeChild(pdfContentDiv); } } } });
Scroll to Top