Primary and Secondary

This commit is contained in:
Oxy8
2026-02-10 17:38:54 -03:00
parent 022da71e6a
commit f3db6af958
9 changed files with 20636 additions and 200264 deletions

View File

@@ -39,16 +39,19 @@ export default function App() {
(async () => {
try {
setStatus("Fetching data files…");
const [nodesResponse, edgesResponse] = await Promise.all([
const [nodesResponse, primaryEdgesResponse, secondaryEdgesResponse] = await Promise.all([
fetch("/node_positions.csv"),
fetch("/edges.csv"),
fetch("/primary_edges.csv"),
fetch("/secondary_edges.csv"),
]);
if (!nodesResponse.ok) throw new Error(`Failed to fetch nodes: ${nodesResponse.status}`);
if (!edgesResponse.ok) throw new Error(`Failed to fetch edges: ${edgesResponse.status}`);
if (!primaryEdgesResponse.ok) throw new Error(`Failed to fetch primary edges: ${primaryEdgesResponse.status}`);
if (!secondaryEdgesResponse.ok) throw new Error(`Failed to fetch secondary edges: ${secondaryEdgesResponse.status}`);
const [nodesText, edgesText] = await Promise.all([
const [nodesText, primaryEdgesText, secondaryEdgesText] = await Promise.all([
nodesResponse.text(),
edgesResponse.text(),
primaryEdgesResponse.text(),
secondaryEdgesResponse.text(),
]);
if (cancelled) return;
@@ -67,12 +70,24 @@ export default function App() {
}
setStatus("Parsing edges…");
const edgeLines = edgesText.split("\n").slice(1).filter(l => l.trim().length > 0);
const edgeData = new Uint32Array(edgeLines.length * 2);
for (let i = 0; i < edgeLines.length; i++) {
const parts = edgeLines[i].split(",");
edgeData[i * 2] = parseInt(parts[0], 10);
edgeData[i * 2 + 1] = parseInt(parts[1], 10);
const pLines = primaryEdgesText.split("\n").slice(1).filter(l => l.trim().length > 0);
const sLines = secondaryEdgesText.split("\n").slice(1).filter(l => l.trim().length > 0);
const totalEdges = pLines.length + sLines.length;
const edgeData = new Uint32Array(totalEdges * 2);
let idx = 0;
// Parse primary
for (let i = 0; i < pLines.length; i++) {
const parts = pLines[i].split(",");
edgeData[idx++] = parseInt(parts[0], 10);
edgeData[idx++] = parseInt(parts[1], 10);
}
// Parse secondary
for (let i = 0; i < sLines.length; i++) {
const parts = sLines[i].split(",");
edgeData[idx++] = parseInt(parts[0], 10);
edgeData[idx++] = parseInt(parts[1], 10);
}
if (cancelled) return;
@@ -83,7 +98,7 @@ export default function App() {
const buildMs = renderer.init(xs, ys, vertexIds, edgeData);
setNodeCount(renderer.getNodeCount());
setStatus("");
console.log(`Init complete: ${count.toLocaleString()} nodes, ${edgeLines.length.toLocaleString()} edges in ${buildMs.toFixed(0)}ms`);
console.log(`Init complete: ${count.toLocaleString()} nodes, ${totalEdges.toLocaleString()} edges in ${buildMs.toFixed(0)}ms`);
} catch (e) {
if (!cancelled) {
setError(e instanceof Error ? e.message : String(e));