Google My Business Optimization Checker Google My Business Optimization Checker Analyze your profile's completeness and identify areas for improvement. 1. Business Profile Checklist 2. Optimization Report Optimization Report Optimization Score Previous Generate Report Download Report None!'} `; }; // --- Tab & Navigation Logic --- function switchTab(targetTabId) { if (targetTabId === 'report') { renderReport(); } currentTab = targetTabId; tabs.forEach(tab => tab.classList.toggle('active', tab.dataset.tab === currentTab)); tabContents.forEach(content => content.classList.toggle('active', content.id === currentTab)); updateNavButtons(); } function updateNavButtons() { if (currentTab === 'input') { prevBtn.style.display = 'none'; nextBtn.style.display = 'inline-flex'; pdfButtonContainer.style.display = 'none'; } else { prevBtn.style.display = 'inline-flex'; nextBtn.style.display = 'none'; pdfButtonContainer.style.display = 'block'; } } // --- Event Handlers --- tabs.forEach(tab => tab.addEventListener('click', () => switchTab(tab.dataset.tab))); nextBtn.addEventListener('click', () => switchTab('report')); prevBtn.addEventListener('click', () => switchTab('input')); // --- PDF Download --- downloadPdfBtn.addEventListener('click', async () => { const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const content = document.getElementById('pdf-content'); document.getElementById('pdf-date').textContent = `Report Generated: ${new Date().toLocaleString()}`; const canvas = await html2canvas(content, { scale: 2 }); const imgData = canvas.toDataURL('image/jpeg', 1.0); const imgProps = doc.getImageProperties(imgData); const pdfWidth = doc.internal.pageSize.getWidth() - 28; const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; doc.addImage(imgData, 'JPEG', 14, 15, pdfWidth, pdfHeight); document.getElementById('pdf-date').textContent = ''; doc.save(`GMB-Optimization-Report-${new Date().toISOString().slice(0,10)}.pdf`); }); // --- Initial Load --- renderChecklist(); updateNavButtons(); });