Online AI-Powered Concept Clustering Tool

AI-Powered Concept Clustering Tool

Organize your ideas into logical groups automatically.

No clusters could be formed from the provided concepts.

'; return; } for (const clusterName in data) { const items = data[clusterName]; const clusterEl = document.createElement('div'); clusterEl.className = 'p-4 border rounded-lg'; let itemsHTML = items.map(item => `${item}`).join(''); clusterEl.innerHTML = `

${clusterName}

${itemsHTML}
`; resultsWrapper.appendChild(clusterEl); } pdfBtnContainer.classList.remove('hidden'); }; // --- PDF Export --- pdfBtn.addEventListener('click', () => { if (!clusteredData) { showMessage('No clusters to download.', 'error'); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFontSize(18); doc.text('Concept Clustering Report', 105, 20, { align: 'center' }); let yPos = 35; for (const clusterName in clusteredData) { if (yPos > 250) { // Add new page if content overflows doc.addPage(); yPos = 20; } doc.setFontSize(14); doc.setFont(undefined, 'bold'); doc.setTextColor(79, 70, 229); // Indigo doc.text(clusterName, 15, yPos); yPos += 8; doc.setFontSize(11); doc.setFont(undefined, 'normal'); doc.setTextColor(0, 0, 0); const itemsText = clusteredData[clusterName].join(', '); const splitText = doc.splitTextToSize(itemsText, 180); doc.text(splitText, 15, yPos); yPos += (splitText.length * 5) + 8; } doc.save('concept-clusters.pdf'); }); // --- Utility --- const showMessage = (message, type = 'success') => { messageBox.textContent = message; messageBox.className = `message-box ${type} show`; setTimeout(() => { messageBox.classList.remove('show'); }, 3000); }; });
Scroll to Top