Spaces:
Running
Running
ping98k
Implement event handler functions for heatmap, K-Means, cluster plot, and naming events; refactor main.js to use these handlers.
f2e1fb8 | // Handles cluster naming event | |
| import { nameCluster } from './cluster_naming.js'; | |
| import { updateScatter } from './plotting.js'; | |
| export async function handleNamingEvent() { | |
| const progressBar = document.getElementById("progress-bar"); | |
| const progressBarInner = document.getElementById("progress-bar-inner"); | |
| progressBar.style.display = "block"; | |
| progressBarInner.style.width = "0%"; | |
| const text = document.getElementById("input").value; | |
| // Reconstruct clusters from textarea (split by triple newlines) | |
| const clustered = text.split(/\n{3,}/).map(group => | |
| group.split('\n').filter(line => line && !line.startsWith('##')) | |
| ); | |
| const k = clustered.length; | |
| const clusterNames = []; | |
| for (let c = 0; c < k; ++c) { | |
| progressBarInner.style.width = `${Math.round(((c + 1) / k) * 100)}%`; | |
| const name = await nameCluster(clustered[c]); | |
| clusterNames.push(name || `Cluster ${c + 1}`); | |
| // Update UMAP scatter plot legend with new cluster names | |
| if (window.traces && window.traces[c]) { | |
| window.traces[c].name = clusterNames[c]; | |
| } | |
| } | |
| // Update textarea with cluster names as markdown headers | |
| document.getElementById("input").value = clustered.map((g, i) => | |
| `## ${clusterNames[i]}\n${g.join("\n")}` | |
| ).join("\n\n\n"); | |
| // Update UMAP scatter plot if traces are available | |
| if (window.traces) { | |
| updateScatter(window.traces, k); | |
| } | |
| progressBarInner.style.width = "100%"; | |
| } | |