Franchise Law Compliance Checklist

Franchise Law Compliance Checklist

A step-by-step guide for franchising your business in the USA.

Franchise Disclosure Document (FDD) Items

You have completed ${completedTasks.length} out of ${tasks.length} tasks.

${completionPercentage}%

Pending Items (${pendingTasks.length})

${renderTaskList(pendingTasks, 'Pending Items', 'No pending items. Great job!')}

Completed Items (${completedTasks.length})

${renderTaskList(completedTasks, 'Completed Items', 'No items completed yet.')}
`; } async function downloadPDF() { downloadPdfButton.disabled = true; pdfLoadingMessage.classList.remove('hidden'); const tasks = getChecklistData(); const completedTasks = tasks.filter(t => t.completed); const pendingTasks = tasks.filter(t => !t.completed); const renderPdfSection = (title, taskList) => { if (taskList.length === 0) return ''; return `

${title}

${taskList.map(task => `
${task.completed ? '✅' : '🔲'} ${task.text}
`).join('')} `; }; const pdfContainer = document.getElementById('pdf-clone-container'); pdfContainer.innerHTML = `

Franchise Law Compliance Summary

${renderPdfSection(`Pending Items (${pendingTasks.length})`, pendingTasks)} ${renderPdfSection(`Completed Items (${completedTasks.length})`, completedTasks)}
`; pdfContainer.style.display = 'block'; try { const canvas = await html2canvas(pdfContainer.querySelector('#pdf-content-wrapper'), { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'px', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save('Franchise-Compliance-Checklist.pdf'); } catch (error) { console.error("Error generating PDF:", error); } finally { downloadPdfButton.disabled = false; pdfLoadingMessage.classList.add('hidden'); pdfContainer.style.display = 'none'; } } // --- EVENT LISTENERS --- prevButton.addEventListener('click', () => navigateTabs(-1)); nextButton.addEventListener('click', () => navigateTabs(1)); downloadPdfButton.addEventListener('click', downloadPDF); tabButtons.forEach(button => { button.addEventListener('click', () => showTab(parseInt(button.dataset.tab, 10))); }); initialize(); });
Scroll to Top