Anniversary Celebration Plan Outline

Anniversary Celebration Plan Outline

Milestone Planner

Anniversary Celebration Plan Outline
Event Identification & Budget
Guest List & Location
Timeline of Activities

Define the chronological flow of the event (Time, Activity, Notes/Logistics).

[Placeholder for Post-Event Tasks: e.g., Send thank-you notes, Finalize vendor payments.]

`; container.innerHTML = html; } function acpoSwitchTab(tabId) { document.querySelectorAll('.acpo-tab-btn').forEach(b => b.classList.remove('active')); document.querySelectorAll('.acpo-content').forEach(c => c.classList.remove('active')); const idx = tabId === 'builder' ? 0 : 1; document.querySelectorAll('.acpo-tab-btn')[idx].classList.add('active'); document.getElementById('acpo-' + tabId).classList.add('active'); if (tabId === 'preview') { acpoRenderOutline(); } } function acpoGeneratePDF() { acpoRenderOutline(); // Final render const data = acpoGetTimelineData(); if (data.length === 0) { alert("Please add at least one activity to the timeline before generating the PDF."); return; } const meta = { anniversary: document.getElementById('inp-anniversary').value || "N/A Anniversary", date: document.getElementById('inp-date').value || "N/A Date", budget: parseFloat(document.getElementById('inp-budget').value) || 0, guests: document.getElementById('inp-guests').value || "N/A", location: document.getElementById('inp-location').value || "N/A Location", }; const { jsPDF } = window.jspdf; const doc = new jsPDF('p', 'mm', 'a4'); const maroon = [139, 0, 0]; const gold = [255, 215, 0]; let y = 20; // 1. Header doc.setFillColor(...maroon); doc.rect(0, 0, 210, 20, 'F'); doc.setTextColor(255, 255, 255); doc.setFontSize(16); doc.text(`Anniversary Celebration Plan`, 14, 13); doc.setFontSize(10); doc.text(`${meta.anniversary} | Date: ${meta.date}`, 14, 17); // 2. Metadata Block (Using AutoTable for neatness) y = 30; doc.setTextColor(0, 0, 0); doc.setFontSize(10); doc.setFont("helvetica", "bold"); const metaTable = [ ['Anniversary', meta.anniversary, 'Budget', meta.budget.toLocaleString('en-US', { style: 'currency', currency: 'USD' })], ['Location', meta.location, 'Guests', meta.guests] ]; doc.autoTable({ startY: y, head: [['Event Metadata', '', 'Financials', '']], body: metaTable, theme: 'grid', headStyles: { fillColor: [240, 240, 240], textColor: maroon, fontStyle: 'bold' }, styles: { fontSize: 9 }, columnStyles: { 0: { fontStyle: 'bold' }, 2: { fontStyle: 'bold' } } }); y = doc.lastAutoTable.finalY + 10; // 3. Timeline Table doc.setFontSize(12); doc.setFont("helvetica", "bold"); doc.setTextColor(...maroon); doc.text("Timeline of Activities", 14, y); y += 5; const tableBody = data.map(t => [ t.time, t.activity, t.notes ]); doc.autoTable({ startY: y, head: [['Time', 'Activity', 'Logistics / Notes']], body: tableBody, theme: 'grid', headStyles: { fillColor: maroon, fontSize: 10 }, styles: { fontSize: 9 }, columnStyles: { 0: { cellWidth: 20, fontStyle: 'bold' }, 1: { cellWidth: 60 }, 2: { cellWidth: 'auto', overflow: 'linebreak' } } }); y = doc.lastAutoTable.finalY + 15; // 4. Signature Block doc.setFontSize(10); doc.text("Plan Approved By: ___________________________", 14, y); doc.save(`AnniversaryPlan_${meta.anniversary.replace(/\s/g, '_')}.pdf`); }
Scroll to Top