Competitor Keywords
${results.competitorTotal}
Keyword Gap
${results.gap.length}
Shared Keywords
${results.shared.length}
`;
// Render lists
const renderList = (elementId, keywords) => {
const listEl = document.getElementById(elementId);
listEl.innerHTML = keywords.length > 0 ? keywords.map(k => `
${k}`).join('') : '
None found.';
};
renderList('gap-keywords', results.gap);
renderList('your-keywords-only', results.yourOnly);
renderList('shared-keywords', results.shared);
// Chart
if (overlapChart) overlapChart.destroy();
overlapChart = new Chart(document.getElementById('overlap-chart').getContext('2d'), {
type: 'doughnut',
data: {
labels: ['Keywords You\'re Missing', 'Keywords Only You Have', 'Shared Keywords'],
datasets: [{ data: [results.gap.length, results.yourOnly.length, results.shared.length], backgroundColor: ['#ef4444', '#22c55e', '#3b82f6'] }]
},
options: { responsive: true, plugins: { legend: { position: 'top' } } }
});
};
// --- EVENT HANDLERS ---
const handleNavClick = () => {
if(currentTab === 'config') {
runAnalysis();
} else {
showTab('config');
}
};
const generatePDF = () => {
const pdfContent = document.getElementById('pdf-content');
const pdfBtnContainer = document.getElementById('pdf-button-container');
if (!pdfContent || !pdfBtnContainer) return;
pdfBtnContainer.style.display = 'none';
html2canvas(pdfContent, { scale: 2, useCORS: true }).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const imgWidth = pdfWidth - 20;
const imgHeight = (canvas.height * imgWidth) / canvas.width;
pdf.setFontSize(22);
pdf.setFont('helvetica', 'bold');
pdf.text('Keyword Gap Analysis Report', pdfWidth / 2, 15, { align: 'center' });
pdf.addImage(imgData, 'PNG', 10, 25, imgWidth, imgHeight);
pdf.save('keyword-gap-report.pdf');
pdfBtnContainer.style.display = 'block';
});
};
// Sample Data
document.getElementById('your-keywords').value = "digital marketing agency\nseo services\nlocal seo company\nppc management\ncontent marketing services\nsocial media marketing";
document.getElementById('competitor-keywords').value = "seo services\nppc agency\nsocial media advertising\nemail marketing platform\nwhat is digital marketing\nlocal seo company\ncontent marketing strategy";
// --- ATTACH LISTENERS ---
prevBtn.addEventListener('click', () => showTab('config'));
nextBtn.addEventListener('click', handleNavClick);
tabButtons.config.addEventListener('click', () => showTab('config'));
tabButtons.dashboard.addEventListener('click', () => showTab('dashboard'));
downloadPdfBtn.addEventListener('click', generatePDF);
});