`;
elements.suggestionsContainer.innerHTML += item;
});
} else {
elements.suggestionsContainer.innerHTML = ``;
}
elements.resultsPlaceholder.classList.add('hidden');
elements.resultsContainer.classList.remove('hidden');
}
function setLoadingState(isLoading) {
elements.checkBtn.disabled = isLoading;
if (isLoading) {
elements.checkBtn.innerHTML = `Analyzing...`;
elements.resultsContainer.classList.add('hidden');
elements.resultsPlaceholder.classList.remove('hidden');
elements.resultsPlaceholder.innerHTML = ``;
} else {
elements.checkBtn.innerHTML = `Check Engagement`;
}
}
function displayError(message) {
elements.resultsPlaceholder.innerHTML = ``;
elements.resultsPlaceholder.classList.remove('hidden');
elements.resultsContainer.classList.add('hidden');
}
// --- PDF Generation ---
function generatePdf() {
if (!analysisResult) return;
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
doc.setFont('helvetica', 'bold');
doc.setFontSize(18);
doc.text("Content Engagement Report", doc.internal.pageSize.getWidth() / 2, 20, { align: 'center' });
doc.setFontSize(11);
doc.setTextColor(100);
doc.text(`Generated on: ${new Date().toLocaleDateString('en-US')}`, 14, 30);
const metricsBody = [
['Engagement Score', `${analysisResult.engagementScore} / 100`],
['Summary', analysisResult.engagementSummary]
];
doc.autoTable({
startY: 35,
head: [['Metric', 'Value']],
body: metricsBody,
theme: 'striped',
headStyles: { fillColor: '#d97706' }
});
const suggestionsBody = analysisResult.suggestions.map(s => [s]);
doc.autoTable({
startY: doc.autoTable.previous.finalY + 10,
head: [['Suggestions for Improvement']],
body: suggestionsBody,
theme: 'grid'
});
doc.save(`content-engagement-report.pdf`);
}
initialize();
});
This content is already highly engaging!
Measuring Engagement...
Analysis Failed
${message}
