Primary and Secondary
This commit is contained in:
39
src/App.tsx
39
src/App.tsx
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user