Space Exploration Timeline

Space Exploration Timeline

Loading timeline events...

No events match your filters.

'; return; } eventsToDisplay.forEach(event => { const eventItem = document.createElement('div'); eventItem.classList.add('set-event-item'); let categoriesText = Array.isArray(event.category) ? event.category.join(', ') : event.category; eventItem.innerHTML = `

${event.title}

Date: ${event.date} (Year: ${event.year})

${event.description}

${categoriesText ? `
Categories: ${categoriesText}
` : ''} ${event.agency ? `
Agency/Country: ${event.agency}
` : ''} `; displayArea.appendChild(eventItem); }); }, downloadTimelinePDF() { const { jsPDF } = window.jspdf; const doc = new jsPDF(); const category = document.getElementById('set-category-filter').value; const agencyVal = document.getElementById('set-agency-filter').value; const yearStart = document.getElementById('set-year-start-filter').value; const yearEnd = document.getElementById('set-year-end-filter').value; let filteredEvents = this.events.filter(event => { const eventYear = event.year; const categoryMatch = !category || (Array.isArray(event.category) ? event.category.includes(category) : event.category === category); const agencyMatch = !agencyVal || event.agency === agencyVal; const yearStartMatch = !yearStart || eventYear >= parseInt(yearStart); const yearEndMatch = !yearEnd || eventYear <= parseInt(yearEnd); return categoryMatch && agencyMatch && yearStartMatch && yearEndMatch; }); const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--set-primary-color').trim(); const textColor = getComputedStyle(document.documentElement).getPropertyValue('--set-text-color').trim(); // Assuming PDF is on white, use a dark text. For this theme, a dark version of secondary. const pdfTextColor = "#101010"; // Dark text for white PDF background const accentColor = getComputedStyle(document.documentElement).getPropertyValue('--set-accent-color').trim(); doc.setFontSize(20); doc.setTextColor(primaryColor); doc.text("Space Exploration Timeline", 14, 22); doc.setFontSize(10); doc.setTextColor(pdfTextColor); let filterText = "Filters: "; if (category) filterText += `Category: ${category}; `; if (agencyVal) filterText += `Agency: ${agencyVal}; `; if (yearStart) filterText += `From Year: ${yearStart}; `; if (yearEnd) filterText += `To Year: ${yearEnd}; `; if (filterText === "Filters: ") filterText += "None"; doc.text(filterText, 14, 30); let yPos = 40; const pageHeight = doc.internal.pageSize.height; const margin = 14; if (filteredEvents.length === 0) { doc.text("No events match the current filters.", margin, yPos); } else { filteredEvents.forEach((event, index) => { if (yPos > pageHeight - 40) { // Check for page break doc.addPage(); yPos = 20; } doc.setFontSize(12); doc.setTextColor(accentColor); // Title color const titleLines = doc.splitTextToSize(`Event: ${event.title}`, doc.internal.pageSize.width - margin * 2); doc.text(titleLines, margin, yPos); yPos += (titleLines.length * 5) + 2; doc.setFontSize(10); doc.setTextColor(pdfTextColor); const dateText = `Date: ${event.date} (Year: ${event.year})`; doc.text(dateText, margin, yPos); yPos += 6; const descLines = doc.splitTextToSize(event.description, doc.internal.pageSize.width - margin * 2); doc.text(descLines, margin, yPos); yPos += (descLines.length * 5) + 2; if (event.category) { const catText = `Categories: ${(Array.isArray(event.category) ? event.category.join(', ') : event.category)}`; const catLines = doc.splitTextToSize(catText, doc.internal.pageSize.width - margin * 2); doc.text(catLines, margin, yPos); yPos += (catLines.length * 5); } if (event.agency) { const agencyText = `Agency/Country: ${event.agency}`; doc.text(agencyText, margin, yPos); yPos += 5; } yPos += 5; // Space between events if (index < filteredEvents.length -1) { doc.setDrawColor(getComputedStyle(document.documentElement).getPropertyValue('--set-border-color').trim()); doc.line(margin, yPos, doc.internal.pageSize.width - margin, yPos); // Separator line yPos += 5; } }); } // Add generated date footer const finalPageNum = doc.internal.getNumberOfPages(); for (let i = 1; i <= finalPageNum; i++) { doc.setPage(i); doc.setFontSize(8); doc.setTextColor(100); // Gray doc.text(`Page ${i} of ${finalPageNum}`, doc.internal.pageSize.width - margin - 10, doc.internal.pageSize.height - 10); doc.text(`Report generated: ${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}`, margin, doc.internal.pageSize.height - 10); } doc.save('Space_Exploration_Timeline.pdf'); } }; document.addEventListener('DOMContentLoaded', () => { spaceTimeline.init(); });
Scroll to Top