Renaissance Art & History Learning Tool
Explore the Renaissance! Data is illustrative. For in-depth study, consult scholarly sources.
The Renaissance: A Rebirth
The Renaissance, meaning "rebirth," was a transformative period in European history, marking the transition from the Middle Ages to modernity. Spanning roughly from the 14th to the 17th century, it began in Italy and spread across Europe. This era witnessed a resurgence of interest in the classical art, literature, and philosophy of ancient Greece and Rome, leading to profound innovations in art, science, politics, and intellectual thought.
Timeline of Key Events & Periods
Loading timeline...
Key Figures & Artists
Select a figure to learn more about them.
Artworks Explorer
Select an artwork to explore its details.
Key Concepts & Movements
Select a concept to understand its significance in the Renaissance.
Artwork details not found.
'; return; } let artistNameDisplay = artwork.artistName || "Unknown Artist"; if(artwork.artistId && this.data.figures){ const artist = this.data.figures.find(f => f.id === artwork.artistId); if(artist) artistNameDisplay = artist.name; } detailsArea.innerHTML = `${artwork.title}
Artist: ${artistNameDisplay}
Year: ${artwork.year}
Medium: ${artwork.medium}
Description: ${artwork.description}
Analysis/Context: ${artwork.analysis}
Techniques/Style: ${artwork.techniques ? artwork.techniques.join(', ') : 'N/A'}
${artwork.imageUrl ? `Select a concept to understand its significance.
'; return; } const concept = this.data.concepts.find(c => c.id === conceptId); if (!concept) { detailsArea.innerHTML = 'Concept details not found.
'; return; } let characteristicsHtml = concept.characteristics && concept.characteristics.length > 0 ? `Key Characteristics:
- ${concept.characteristics.map(c => `
- ${c} `).join('')}
Associated Figures:
${concept.keyFigures.join(', ')}
` : ''; let practitionersHtml = concept.notablePractitioners && concept.notablePractitioners.length > 0 ? `Notable Practitioners:
${concept.notablePractitioners.join(', ')}
` : ''; detailsArea.innerHTML = `${concept.name}
${concept.definition}
${characteristicsHtml} ${figuresHtml} ${practitionersHtml} `; }, downloadActiveTabPDF() { const { jsPDF } = window.jspdf; const doc = new jsPDF('p', 'pt', 'a4'); const activeTabContent = document.querySelector('.rah-tab-content.active'); if (!activeTabContent) { alert("No active tab found to download."); return; } const activeTabId = activeTabContent.id; let fileName = "Renaissance_Learning_Summary.pdf"; let currentY = 40; const margin = 40; const pageWidth = doc.internal.pageSize.getWidth(); const usableWidth = pageWidth - (2 * margin); doc.setFont(undefined, 'normal'); const addTitle = (titleText) => { doc.setFontSize(18); doc.setFont(undefined, 'bold'); doc.setTextColor(getComputedStyle(document.documentElement).getPropertyValue('--rah-heading-color').trim()); const splitTitle = doc.splitTextToSize(titleText, usableWidth); doc.text(splitTitle, margin, currentY); currentY += (splitTitle.length * 12) + 10; doc.setFont(undefined, 'normal'); }; const addSectionTitle = (titleText) => { if (currentY > doc.internal.pageSize.getHeight() - 60) { doc.addPage(); currentY = margin; } doc.setFontSize(14); doc.setFont(undefined, 'bold'); doc.setTextColor(getComputedStyle(document.documentElement).getPropertyValue('--rah-secondary-color').trim()); doc.text(titleText, margin, currentY); currentY += 18; doc.setFont(undefined, 'normal'); }; const addParagraph = (text, isKey = false) => { if (!text) return; doc.setFontSize(10); doc.setTextColor(getComputedStyle(document.documentElement).getPropertyValue('--rah-text-color').trim()); if(isKey) doc.setFont(undefined, 'bold'); const lines = doc.splitTextToSize(text, usableWidth); if (currentY + (lines.length * 12) > doc.internal.pageSize.getHeight() - margin) { doc.addPage(); currentY = margin; } doc.text(lines, margin, currentY); currentY += (lines.length * 12) + 5; if(isKey) doc.setFont(undefined, 'normal'); }; const addListItem = (text) => { if (!text) return; doc.setFontSize(10); doc.setTextColor(getComputedStyle(document.documentElement).getPropertyValue('--rah-text-color').trim()); const lines = doc.splitTextToSize(`• ${text}`, usableWidth - 10); // Indent list item if (currentY + (lines.length * 12) > doc.internal.pageSize.getHeight() - margin) { doc.addPage(); currentY = margin; } doc.text(lines, margin + 10, currentY); currentY += (lines.length * 12) + 2; } if (activeTabId === 'rah-overview-tab') { fileName = "Renaissance_Timeline.pdf"; addTitle("Renaissance Overview & Timeline"); const overviewPara = activeTabContent.querySelector('p'); if(overviewPara) addParagraph(overviewPara.textContent); addSectionTitle("Filtered Timeline Events"); const periodFilter = document.getElementById('rah-timeline-period-filter').value; const categoryFilter = document.getElementById('rah-timeline-category-filter').value; const filteredEvents = this.data.timelineEvents.filter(event => (!periodFilter || event.period === periodFilter) && (!categoryFilter || event.category === categoryFilter) ); if (filteredEvents.length > 0) { filteredEvents.forEach(event => { if (currentY > doc.internal.pageSize.getHeight() - 70) { doc.addPage(); currentY = margin; } addParagraph(`${event.title} (${event.dateApprox || event.year})`, true); addParagraph(`Period: ${event.period} | Category: ${event.category}`); addParagraph(event.description); currentY += 5; }); } else { addParagraph("No events match current filters."); } } else if (activeTabId === 'rah-figures-tab') { const figureId = document.getElementById('rah-figure-select').value; if (figureId) { const figure = this.data.figures.find(f => f.id === figureId); fileName = `Figure_${figure.name.replace(/\s+/g, '_')}.pdf`; addTitle(`Key Figure: ${figure.name} (${figure.lifespan})`); addParagraph(`Field: ${figure.field}`); addSectionTitle("Biography"); addParagraph(figure.bio); if (figure.notableWorks && figure.notableWorks.length > 0) { addSectionTitle("Notable Works/Achievements"); figure.notableWorks.forEach(work => addListItem(work)); } addSectionTitle("Significance"); addParagraph(figure.significance); } else { addTitle("Key Figures"); addParagraph("No figure selected."); } } else if (activeTabId === 'rah-artworks-tab') { const artworkId = document.getElementById('rah-artwork-select').value; if (artworkId) { const artwork = this.data.artworks.find(a => a.id === artworkId); let artistName = artwork.artistName || "Unknown Artist"; if(artwork.artistId && this.data.figures) { const artist = this.data.figures.find(f => f.id === artwork.artistId); if(artist) artistName = artist.name; } fileName = `Artwork_${artwork.title.replace(/\s+/g, '_')}.pdf`; addTitle(`Artwork: ${artwork.title}`); addParagraph(`Artist: ${artistName}`); addParagraph(`Year: ${artwork.year}`); addParagraph(`Medium: ${artwork.medium}`); addSectionTitle("Description"); addParagraph(artwork.description); addSectionTitle("Analysis/Context"); addParagraph(artwork.analysis); addParagraph(`Techniques/Style: ${artwork.techniques ? artwork.techniques.join(', ') : 'N/A'}`); } else { addTitle("Artworks Explorer"); addParagraph("No artwork selected."); } } else if (activeTabId === 'rah-concepts-tab') { const conceptId = document.getElementById('rah-concept-select').value; if (conceptId) { const concept = this.data.concepts.find(c => c.id === conceptId); fileName = `Concept_${concept.name.replace(/\s+/g, '_')}.pdf`; addTitle(`Concept: ${concept.name}`); addSectionTitle("Definition"); addParagraph(concept.definition); if (concept.characteristics && concept.characteristics.length > 0) { addSectionTitle("Key Characteristics"); concept.characteristics.forEach(char => addListItem(char)); } if (concept.keyFigures && concept.keyFigures.length > 0) { addSectionTitle("Associated Figures (Examples)"); addParagraph(concept.keyFigures.join(', ')); } if (concept.notablePractitioners && concept.notablePractitioners.length > 0) { addSectionTitle("Notable Practitioners (Examples)"); addParagraph(concept.notablePractitioners.join(', ')); } } else { addTitle("Key Concepts"); addParagraph("No concept selected."); } } const pageCount = doc.internal.getNumberOfPages(); for (let i = 1; i <= pageCount; i++) { doc.setPage(i); doc.setFontSize(8); doc.setTextColor(100); doc.text(`Page ${i} of ${pageCount}`, pageWidth - margin - 20, doc.internal.pageSize.getHeight() - 15); } doc.save(fileName); } }; document.addEventListener('DOMContentLoaded', () => { if (typeof rahTool !== 'undefined' && rahTool.init) { rahTool.init(); } else { console.error("rahTool object or init method not found."); } });