diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/components/graph/graph.tsx | 110 | ||||
-rw-r--r-- | app/data/randorev.json | 2392 | ||||
-rw-r--r-- | app/screens/graph/graph-screen.tsx | 84 |
3 files changed, 114 insertions, 2472 deletions
diff --git a/app/components/graph/graph.tsx b/app/components/graph/graph.tsx index 930233b..1202413 100644 --- a/app/components/graph/graph.tsx +++ b/app/components/graph/graph.tsx @@ -9,7 +9,6 @@ import { flatten } from "ramda" //import data from "../../data/miserables.json" //import genRandomTree from "../../data/randomdata"; //import rando from "../../data/rando.json" -import rando from "../../data/randorev.json" import { ForceGraph2D, ForceGraph3D, ForceGraphVR, ForceGraphAR } from "react-force-graph" import * as d3 from "d3-force" @@ -62,44 +61,44 @@ export const Graph = observer(function Graph(props: GraphProps): JSX.Element { }) // For the expandable version of the graph - const rootId = 0 - - const nodesById = useMemo(() => { - const nodesById = Object.fromEntries(rando.nodes.map((node) => [node.id, node])) + /* const rootId = 0 +* const nodesById = useMemo(() => { +* const nodesById = Object.fromEntries(gData.nodes.map((node) => [node.id, node])) + */ // link parent/children - rando.nodes.forEach((node) => { - node.collapsed = node.id !== rootId - node.childLinks = [] - node.parentLink = [] - }) - rando.links.forEach((link) => nodesById[link.source].childLinks.push(link)) - - return nodesById - }, [rando]) - - const getPrunedTree = useCallback(() => { - const visibleNodes = [] - const visibleLinks = [] - ; (function traverseTree(node = nodesById[rootId]) { - visibleNodes.push(node) - if (node.collapsed) return - visibleLinks.push(...node.childLinks) - node.childLinks - .map((link) => (typeof link.target === "object" ? link.target : nodesById[link.target])) // get child node - .forEach(traverseTree) - })() - - return { nodes: visibleNodes, links: visibleLinks } - }, [nodesById]) - - const [prunedTree, setPrunedTree] = useState(getPrunedTree()) - - const handleNodeClick = useCallback((node) => { - node.collapsed = !node.collapsed // toggle collapse state - setPrunedTree(getPrunedTree()) - }, []); - + /* gData.nodes.forEach((node) => { + * node.collapsed = node.id !== rootId + * node.childLinks = [] + * node.parentLink = [] + * }) + * gData.links.forEach((link) => nodesById[link.source].childLinks.push(link)) + + * return nodesById + }, [gData]) + */ + /* const getPrunedTree = useCallback(() => { +* const visibleNodes = []; +* const visibleLinks = []; +* (function traverseTree(node = nodesById[rootId]) { +* visibleNodes.push(node); +* if (node.collapsed) return +* visibleLinks.push(...node.childLinks) +* node.childLinks +* .map((link) => (typeof link.target === "object" ? link.target : nodesById[link.target])) // get child node +* .forEach(traverseTree) +* })() + +* return { nodes: visibleNodes, links: visibleLinks } +* }, [nodesById]) + +* const [prunedTree, setPrunedTree] = useState(getPrunedTree()) + +* const handleNodeClick = useCallback((node) => { +* node.collapsed = !node.collapsed // toggle collapse state +* setPrunedTree(getPrunedTree()) +* }, []); + */ // Highlight Graph /** @@ -180,37 +179,40 @@ export const Graph = observer(function Graph(props: GraphProps): JSX.Element { {!physics.threedim ? ( <ForceGraph2D ref={fgRef} - graphData={physics.collapse ? prunedTree : rando} + graphData={gData} + //graphData={physics.collapse ? prunedTree : gData} // nodeAutoColorBy={d => d.id%GROUPS} - linkAutoColorBy={(d) => rando.nodes[d.source].id % GROUPS} - linkColor={"#ffffff"} + //linkAutoColorBy={(d) => gData.nodes[d.source].id % GROUPS} + linkColor="#ffffff" linkDirectionalParticles={physics.particles} - nodeColor={(node) => - !node.childLinks.length ? "green" : node.collapsed ? "red" : "yellow" - } - onNodeClick={!physics.collapse ? null : handleNodeClick} - nodeLabel={(node) => "label"} - // nodeVal ={(node)=> node.childLinks.length * 0.5 + 1} + //nodeColor={(node) => + // !node.childLinks.length ? "green" : node.collapsed ? "red" : "yellow" + //} + //onNodeClick={!physics.collapse ? null : handleNodeClick} + nodeLabel={(node) => node.title} + //nodeVal ={(node)=> node.childLinks.length * 0.5 + 1} //d3VelocityDecay={visco} linkWidth={physics.linkWidth} linkOpacity={physics.linkOpacity} nodeRelSize={physics.nodeRel} linkDirectionalParticleWidth={physics.particleWidth} + backgroundColor={"#ffffff"} /> ) : ( <ForceGraph3D ref={fgRef} - graphData={physics.collapse ? prunedTree : rando} + graphData={gData} + //graphData={physics.collapse ? prunedTree : gData} // nodeAutoColorBy={d => d.id%GROUPS} - linkAutoColorBy={(d) => rando.nodes[d.source].id % GROUPS} - linkColor={"#ffffff"} + //linkAutoColorBy={(d) => gData.nodes[d.source].id % GROUPS} + linkColor="#ffffff" linkWidth={2} linkDirectionalParticles={physics.particles} - nodeColor={(node) => - !node.childLinks.length ? "green" : node.collapsed ? "red" : "yellow" - } - onNodeClick={!physics.collapse ? null : handleNodeClick} - nodeVal={(node) => node.childLinks.length + 1} + //nodeColor={(node) => + // !node.childLinks.length ? "green" : node.collapsed ? "red" : "yellow" + //} + //onNodeClick={!physics.collapse ? null : handleNodeClick} + //nodeVal={(node) => node.childLinks.length + 1} //d3VelocityDecay={visco} linkWidth={physics.linkWidth} linkOpacity={physics.linkOpacity} diff --git a/app/data/randorev.json b/app/data/randorev.json index 2bfb6cb..e686411 100644 --- a/app/data/randorev.json +++ b/app/data/randorev.json @@ -1805,2398 +1805,6 @@ { "target": 1, "source": 0 - }, - { - "target": 2, - "source": 1 - }, - { - "target": 3, - "source": 1 - }, - { - "target": 4, - "source": 1 - }, - { - "target": 5, - "source": 1 - }, - { - "target": 6, - "source": 2 - }, - { - "target": 7, - "source": 6 - }, - { - "target": 8, - "source": 5 - }, - { - "target": 9, - "source": 3 - }, - { - "target": 10, - "source": 6 - }, - { - "target": 11, - "source": 9 - }, - { - "target": 12, - "source": 5 - }, - { - "target": 13, - "source": 11 - }, - { - "target": 14, - "source": 6 - }, - { - "target": 15, - "source": 14 - }, - { - "target": 16, - "source": 10 - }, - { - "target": 17, - "source": 10 - }, - { - "target": 18, - "source": 1 - }, - { - "target": 19, - "source": 5 - }, - { - "target": 20, - "source": 3 - }, - { - "target": 21, - "source": 6 - }, - { - "target": 22, - "source": 14 - }, - { - "target": 23, - "source": 13 - }, - { - "target": 24, - "source": 13 - }, - { - "target": 25, - "source": 2 - }, - { - "target": 26, - "source": 9 - }, - { - "target": 27, - "source": 14 - }, - { - "target": 28, - "source": 24 - }, - { - "target": 29, - "source": 19 - }, - { - "target": 30, - "source": 14 - }, - { - "target": 31, - "source": 23 - }, - { - "target": 32, - "source": 3 - }, - { - "target": 33, - "source": 7 - }, - { - "target": 34, - "source": 7 - }, - { - "target": 35, - "source": 14 - }, - { - "target": 36, - "source": 6 - }, - { - "target": 37, - "source": 28 - }, - { - "target": 38, - "source": 22 - }, - { - "target": 39, - "source": 28 - }, - { - "target": 40, - "source": 37 - }, - { - "target": 41, - "source": 25 - }, - { - "target": 42, - "source": 38 - }, - { - "target": 43, - "source": 15 - }, - { - "target": 44, - "source": 40 - }, - { - "target": 45, - "source": 13 - }, - { - "target": 46, - "source": 28 - }, - { - "target": 47, - "source": 43 - }, - { - "target": 48, - "source": 40 - }, - { - "target": 49, - "source": 1 - }, - { - "target": 50, - "source": 26 - }, - { - "target": 51, - "source": 35 - }, - { - "target": 52, - "source": 22 - }, - { - "target": 53, - "source": 39 - }, - { - "target": 54, - "source": 11 - }, - { - "target": 55, - "source": 20 - }, - { - "target": 56, - "source": 24 - }, - { - "target": 57, - "source": 35 - }, - { - "target": 58, - "source": 46 - }, - { - "target": 59, - "source": 8 - }, - { - "target": 60, - "source": 52 - }, - { - "target": 61, - "source": 8 - }, - { - "target": 62, - "source": 5 - }, - { - "target": 63, - "source": 10 - }, - { - "target": 64, - "source": 39 - }, - { - "target": 65, - "source": 0 - }, - { - "target": 66, - "source": 6 - }, - { - "target": 67, - "source": 41 - }, - { - "target": 68, - "source": 61 - }, - { - "target": 69, - "source": 59 - }, - { - "target": 70, - "source": 65 - }, - { - "target": 71, - "source": 29 - }, - { - "target": 72, - "source": 12 - }, - { - "target": 73, - "source": 46 - }, - { - "target": 74, - "source": 19 - }, - { - "target": 75, - "source": 39 - }, - { - "target": 76, - "source": 41 - }, - { - "target": 77, - "source": 35 - }, - { - "target": 78, - "source": 36 - }, - { - "target": 79, - "source": 23 - }, - { - "target": 80, - "source": 8 - }, - { - "target": 81, - "source": 36 - }, - { - "target": 82, - "source": 58 - }, - { - "target": 83, - "source": 23 - }, - { - "target": 84, - "source": 25 - }, - { - "target": 85, - "source": 75 - }, - { - "target": 86, - "source": 28 - }, - { - "target": 87, - "source": 34 - }, - { - "target": 88, - "source": 34 - }, - { - "target": 89, - "source": 20 - }, - { - "target": 90, - "source": 68 - }, - { - "target": 91, - "source": 48 - }, - { - "target": 92, - "source": 73 - }, - { - "target": 93, - "source": 41 - }, - { - "target": 94, - "source": 85 - }, - { - "target": 95, - "source": 84 - }, - { - "target": 96, - "source": 64 - }, - { - "target": 97, - "source": 59 - }, - { - "target": 98, - "source": 46 - }, - { - "target": 99, - "source": 14 - }, - { - "target": 100, - "source": 25 - }, - { - "target": 101, - "source": 66 - }, - { - "target": 102, - "source": 6 - }, - { - "target": 103, - "source": 53 - }, - { - "target": 104, - "source": 22 - }, - { - "target": 105, - "source": 47 - }, - { - "target": 106, - "source": 54 - }, - { - "target": 107, - "source": 47 - }, - { - "target": 108, - "source": 55 - }, - { - "target": 109, - "source": 76 - }, - { - "target": 110, - "source": 34 - }, - { - "target": 111, - "source": 93 - }, - { - "target": 112, - "source": 0 - }, - { - "target": 113, - "source": 58 - }, - { - "target": 114, - "source": 1 - }, - { - "target": 115, - "source": 109 - }, - { - "target": 116, - "source": 89 - }, - { - "target": 117, - "source": 49 - }, - { - "target": 118, - "source": 75 - }, - { - "target": 119, - "source": 78 - }, - { - "target": 120, - "source": 11 - }, - { - "target": 121, - "source": 37 - }, - { - "target": 122, - "source": 20 - }, - { - "target": 123, - "source": 52 - }, - { - "target": 124, - "source": 45 - }, - { - "target": 125, - "source": 93 - }, - { - "target": 126, - "source": 105 - }, - { - "target": 127, - "source": 99 - }, - { - "target": 128, - "source": 48 - }, - { - "target": 129, - "source": 34 - }, - { - "target": 130, - "source": 58 - }, - { - "target": 131, - "source": 97 - }, - { - "target": 132, - "source": 89 - }, - { - "target": 133, - "source": 19 - }, - { - "target": 134, - "source": 106 - }, - { - "target": 135, - "source": 62 - }, - { - "target": 136, - "source": 99 - }, - { - "target": 137, - "source": 97 - }, - { - "target": 138, - "source": 62 - }, - { - "target": 139, - "source": 109 - }, - { - "target": 140, - "source": 101 - }, - { - "target": 141, - "source": 88 - }, - { - "target": 142, - "source": 107 - }, - { - "target": 143, - "source": 81 - }, - { - "target": 144, - "source": 92 - }, - { - "target": 145, - "source": 102 - }, - { - "target": 146, - "source": 60 - }, - { - "target": 147, - "source": 56 - }, - { - "target": 148, - "source": 41 - }, - { - "target": 149, - "source": 84 - }, - { - "target": 150, - "source": 79 - }, - { - "target": 151, - "source": 56 - }, - { - "target": 152, - "source": 110 - }, - { - "target": 153, - "source": 130 - }, - { - "target": 154, - "source": 65 - }, - { - "target": 155, - "source": 66 - }, - { - "target": 156, - "source": 124 - }, - { - "target": 157, - "source": 10 - }, - { - "target": 158, - "source": 17 - }, - { - "target": 159, - "source": 0 - }, - { - "target": 160, - "source": 19 - }, - { - "target": 161, - "source": 115 - }, - { - "target": 162, - "source": 95 - }, - { - "target": 163, - "source": 144 - }, - { - "target": 164, - "source": 22 - }, - { - "target": 165, - "source": 91 - }, - { - "target": 166, - "source": 14 - }, - { - "target": 167, - "source": 34 - }, - { - "target": 168, - "source": 40 - }, - { - "target": 169, - "source": 40 - }, - { - "target": 170, - "source": 100 - }, - { - "target": 171, - "source": 23 - }, - { - "target": 172, - "source": 88 - }, - { - "target": 173, - "source": 78 - }, - { - "target": 174, - "source": 8 - }, - { - "target": 175, - "source": 129 - }, - { - "target": 176, - "source": 160 - }, - { - "target": 177, - "source": 94 - }, - { - "target": 178, - "source": 42 - }, - { - "target": 179, - "source": 33 - }, - { - "target": 180, - "source": 53 - }, - { - "target": 181, - "source": 73 - }, - { - "target": 182, - "source": 112 - }, - { - "target": 183, - "source": 175 - }, - { - "target": 184, - "source": 71 - }, - { - "target": 185, - "source": 65 - }, - { - "target": 186, - "source": 15 - }, - { - "target": 187, - "source": 69 - }, - { - "target": 188, - "source": 1 - }, - { - "target": 189, - "source": 142 - }, - { - "target": 190, - "source": 111 - }, - { - "target": 191, - "source": 6 - }, - { - "target": 192, - "source": 31 - }, - { - "target": 193, - "source": 54 - }, - { - "target": 194, - "source": 128 - }, - { - "target": 195, - "source": 24 - }, - { - "target": 196, - "source": 163 - }, - { - "target": 197, - "source": 160 - }, - { - "target": 198, - "source": 168 - }, - { - "target": 199, - "source": 92 - }, - { - "target": 200, - "source": 80 - }, - { - "target": 201, - "source": 18 - }, - { - "target": 202, - "source": 191 - }, - { - "target": 203, - "source": 65 - }, - { - "target": 204, - "source": 128 - }, - { - "target": 205, - "source": 195 - }, - { - "target": 206, - "source": 126 - }, - { - "target": 207, - "source": 202 - }, - { - "target": 208, - "source": 162 - }, - { - "target": 209, - "source": 54 - }, - { - "target": 210, - "source": 125 - }, - { - "target": 211, - "source": 170 - }, - { - "target": 212, - "source": 150 - }, - { - "target": 213, - "source": 202 - }, - { - "target": 214, - "source": 202 - }, - { - "target": 215, - "source": 83 - }, - { - "target": 216, - "source": 6 - }, - { - "target": 217, - "source": 60 - }, - { - "target": 218, - "source": 209 - }, - { - "target": 219, - "source": 3 - }, - { - "target": 220, - "source": 83 - }, - { - "target": 221, - "source": 18 - }, - { - "target": 222, - "source": 61 - }, - { - "target": 223, - "source": 185 - }, - { - "target": 224, - "source": 62 - }, - { - "target": 225, - "source": 55 - }, - { - "target": 226, - "source": 51 - }, - { - "target": 227, - "source": 21 - }, - { - "target": 228, - "source": 48 - }, - { - "target": 229, - "source": 175 - }, - { - "target": 230, - "source": 3 - }, - { - "target": 231, - "source": 25 - }, - { - "target": 232, - "source": 143 - }, - { - "target": 233, - "source": 229 - }, - { - "target": 234, - "source": 172 - }, - { - "target": 235, - "source": 32 - }, - { - "target": 236, - "source": 56 - }, - { - "target": 237, - "source": 168 - }, - { - "target": 238, - "source": 143 - }, - { - "target": 239, - "source": 1 - }, - { - "target": 240, - "source": 125 - }, - { - "target": 241, - "source": 60 - }, - { - "target": 242, - "source": 150 - }, - { - "target": 243, - "source": 238 - }, - { - "target": 244, - "source": 76 - }, - { - "target": 245, - "source": 129 - }, - { - "target": 246, - "source": 58 - }, - { - "target": 247, - "source": 232 - }, - { - "target": 248, - "source": 80 - }, - { - "target": 249, - "source": 39 - }, - { - "target": 250, - "source": 143 - }, - { - "target": 251, - "source": 47 - }, - { - "target": 252, - "source": 13 - }, - { - "target": 253, - "source": 191 - }, - { - "target": 254, - "source": 60 - }, - { - "target": 255, - "source": 52 - }, - { - "target": 256, - "source": 224 - }, - { - "target": 257, - "source": 109 - }, - { - "target": 258, - "source": 1 - }, - { - "target": 259, - "source": 66 - }, - { - "target": 260, - "source": 2 - }, - { - "target": 261, - "source": 143 - }, - { - "target": 262, - "source": 40 - }, - { - "target": 263, - "source": 202 - }, - { - "target": 264, - "source": 104 - }, - { - "target": 265, - "source": 116 - }, - { - "target": 266, - "source": 154 - }, - { - "target": 267, - "source": 120 - }, - { - "target": 268, - "source": 226 - }, - { - "target": 269, - "source": 245 - }, - { - "target": 270, - "source": 128 - }, - { - "target": 271, - "source": 125 - }, - { - "target": 272, - "source": 216 - }, - { - "target": 273, - "source": 263 - }, - { - "target": 274, - "source": 98 - }, - { - "target": 275, - "source": 118 - }, - { - "target": 276, - "source": 55 - }, - { - "target": 277, - "source": 132 - }, - { - "target": 278, - "source": 173 - }, - { - "target": 279, - "source": 50 - }, - { - "target": 280, - "source": 63 - }, - { - "target": 281, - "source": 197 - }, - { - "target": 282, - "source": 153 - }, - { - "target": 283, - "source": 243 - }, - { - "target": 284, - "source": 195 - }, - { - "target": 285, - "source": 98 - }, - { - "target": 286, - "source": 45 - }, - { - "target": 287, - "source": 274 - }, - { - "target": 288, - "source": 152 - }, - { - "target": 289, - "source": 228 - }, - { - "target": 290, - "source": 49 - }, - { - "target": 291, - "source": 130 - }, - { - "target": 292, - "source": 197 - }, - { - "target": 293, - "source": 162 - }, - { - "target": 294, - "source": 115 - }, - { - "target": 295, - "source": 66 - }, - { - "target": 296, - "source": 181 - }, - { - "target": 297, - "source": 50 - }, - { - "target": 298, - "source": 14 - }, - { - "target": 299, - "source": 101 - }, - { - "target": 300, - "source": 126 - }, - { - "target": 301, - "source": 236 - }, - { - "target": 302, - "source": 195 - }, - { - "target": 303, - "source": 224 - }, - { - "target": 304, - "source": 129 - }, - { - "target": 305, - "source": 171 - }, - { - "target": 306, - "source": 233 - }, - { - "target": 307, - "source": 103 - }, - { - "target": 308, - "source": 36 - }, - { - "target": 309, - "source": 162 - }, - { - "target": 310, - "source": 100 - }, - { - "target": 311, - "source": 130 - }, - { - "target": 312, - "source": 123 - }, - { - "target": 313, - "source": 158 - }, - { - "target": 314, - "source": 258 - }, - { - "target": 315, - "source": 148 - }, - { - "target": 316, - "source": 70 - }, - { - "target": 317, - "source": 159 - }, - { - "target": 318, - "source": 257 - }, - { - "target": 319, - "source": 306 - }, - { - "target": 320, - "source": 307 - }, - { - "target": 321, - "source": 55 - }, - { - "target": 322, - "source": 64 - }, - { - "target": 323, - "source": 319 - }, - { - "target": 324, - "source": 121 - }, - { - "target": 325, - "source": 7 - }, - { - "target": 326, - "source": 207 - }, - { - "target": 327, - "source": 280 - }, - { - "target": 328, - "source": 121 - }, - { - "target": 329, - "source": 13 - }, - { - "target": 330, - "source": 59 - }, - { - "target": 331, - "source": 292 - }, - { - "target": 332, - "source": 267 - }, - { - "target": 333, - "source": 79 - }, - { - "target": 334, - "source": 113 - }, - { - "target": 335, - "source": 250 - }, - { - "target": 336, - "source": 4 - }, - { - "target": 337, - "source": 253 - }, - { - "target": 338, - "source": 34 - }, - { - "target": 339, - "source": 20 - }, - { - "target": 340, - "source": 160 - }, - { - "target": 341, - "source": 138 - }, - { - "target": 342, - "source": 45 - }, - { - "target": 343, - "source": 209 - }, - { - "target": 344, - "source": 173 - }, - { - "target": 345, - "source": 99 - }, - { - "target": 346, - "source": 111 - }, - { - "target": 347, - "source": 273 - }, - { - "target": 348, - "source": 267 - }, - { - "target": 349, - "source": 127 - }, - { - "target": 350, - "source": 310 - }, - { - "target": 351, - "source": 144 - }, - { - "target": 352, - "source": 274 - }, - { - "target": 353, - "source": 339 - }, - { - "target": 354, - "source": 308 - }, - { - "target": 355, - "source": 317 - }, - { - "target": 356, - "source": 130 - }, - { - "target": 357, - "source": 328 - }, - { - "target": 358, - "source": 342 - }, - { - "target": 359, - "source": 20 - }, - { - "target": 360, - "source": 155 - }, - { - "target": 361, - "source": 348 - }, - { - "target": 362, - "source": 119 - }, - { - "target": 363, - "source": 240 - }, - { - "target": 364, - "source": 176 - }, - { - "target": 365, - "source": 344 - }, - { - "target": 366, - "source": 306 - }, - { - "target": 367, - "source": 88 - }, - { - "target": 368, - "source": 56 - }, - { - "target": 369, - "source": 194 - }, - { - "target": 370, - "source": 136 - }, - { - "target": 371, - "source": 100 - }, - { - "target": 372, - "source": 233 - }, - { - "target": 373, - "source": 301 - }, - { - "target": 374, - "source": 373 - }, - { - "target": 375, - "source": 329 - }, - { - "target": 376, - "source": 302 - }, - { - "target": 377, - "source": 87 - }, - { - "target": 378, - "source": 16 - }, - { - "target": 379, - "source": 72 - }, - { - "target": 380, - "source": 144 - }, - { - "target": 381, - "source": 112 - }, - { - "target": 382, - "source": 88 - }, - { - "target": 383, - "source": 374 - }, - { - "target": 384, - "source": 213 - }, - { - "target": 385, - "source": 168 - }, - { - "target": 386, - "source": 14 - }, - { - "target": 387, - "source": 301 - }, - { - "target": 388, - "source": 76 - }, - { - "target": 389, - "source": 140 - }, - { - "target": 390, - "source": 187 - }, - { - "target": 391, - "source": 243 - }, - { - "target": 392, - "source": 249 - }, - { - "target": 393, - "source": 154 - }, - { - "target": 394, - "source": 131 - }, - { - "target": 395, - "source": 322 - }, - { - "target": 396, - "source": 1 - }, - { - "target": 397, - "source": 176 - }, - { - "target": 398, - "source": 187 - }, - { - "target": 399, - "source": 80 - }, - { - "target": 400, - "source": 211 - }, - { - "target": 401, - "source": 17 - }, - { - "target": 402, - "source": 294 - }, - { - "target": 403, - "source": 57 - }, - { - "target": 404, - "source": 135 - }, - { - "target": 405, - "source": 228 - }, - { - "target": 406, - "source": 227 - }, - { - "target": 407, - "source": 245 - }, - { - "target": 408, - "source": 237 - }, - { - "target": 409, - "source": 262 - }, - { - "target": 410, - "source": 66 - }, - { - "target": 411, - "source": 128 - }, - { - "target": 412, - "source": 30 - }, - { - "target": 413, - "source": 37 - }, - { - "target": 414, - "source": 172 - }, - { - "target": 415, - "source": 188 - }, - { - "target": 416, - "source": 191 - }, - { - "target": 417, - "source": 251 - }, - { - "target": 418, - "source": 382 - }, - { - "target": 419, - "source": 138 - }, - { - "target": 420, - "source": 354 - }, - { - "target": 421, - "source": 203 - }, - { - "target": 422, - "source": 220 - }, - { - "target": 423, - "source": 404 - }, - { - "target": 424, - "source": 178 - }, - { - "target": 425, - "source": 72 - }, - { - "target": 426, - "source": 329 - }, - { - "target": 427, - "source": 119 - }, - { - "target": 428, - "source": 206 - }, - { - "target": 429, - "source": 287 - }, - { - "target": 430, - "source": 315 - }, - { - "target": 431, - "source": 62 - }, - { - "target": 432, - "source": 366 - }, - { - "target": 433, - "source": 290 - }, - { - "target": 434, - "source": 196 - }, - { - "target": 435, - "source": 132 - }, - { - "target": 436, - "source": 172 - }, - { - "target": 437, - "source": 286 - }, - { - "target": 438, - "source": 172 - }, - { - "target": 439, - "source": 207 - }, - { - "target": 440, - "source": 316 - }, - { - "target": 441, - "source": 127 - }, - { - "target": 442, - "source": 350 - }, - { - "target": 443, - "source": 114 - }, - { - "target": 444, - "source": 440 - }, - { - "target": 445, - "source": 174 - }, - { - "target": 446, - "source": 324 - }, - { - "target": 447, - "source": 154 - }, - { - "target": 448, - "source": 349 - }, - { - "target": 449, - "source": 170 - }, - { - "target": 450, - "source": 229 - }, - { - "target": 451, - "source": 171 - }, - { - "target": 452, - "source": 271 - }, - { - "target": 453, - "source": 24 - }, - { - "target": 454, - "source": 91 - }, - { - "target": 455, - "source": 61 - }, - { - "target": 456, - "source": 37 - }, - { - "target": 457, - "source": 235 - }, - { - "target": 458, - "source": 412 - }, - { - "target": 459, - "source": 299 - }, - { - "target": 460, - "source": 177 - }, - { - "target": 461, - "source": 447 - }, - { - "target": 462, - "source": 43 - }, - { - "target": 463, - "source": 415 - }, - { - "target": 464, - "source": 363 - }, - { - "target": 465, - "source": 9 - }, - { - "target": 466, - "source": 312 - }, - { - "target": 467, - "source": 138 - }, - { - "target": 468, - "source": 209 - }, - { - "target": 469, - "source": 425 - }, - { - "target": 470, - "source": 376 - }, - { - "target": 471, - "source": 379 - }, - { - "target": 472, - "source": 252 - }, - { - "target": 473, - "source": 129 - }, - { - "target": 474, - "source": 30 - }, - { - "target": 475, - "source": 325 - }, - { - "target": 476, - "source": 411 - }, - { - "target": 477, - "source": 264 - }, - { - "target": 478, - "source": 346 - }, - { - "target": 479, - "source": 468 - }, - { - "target": 480, - "source": 67 - }, - { - "target": 481, - "source": 438 - }, - { - "target": 482, - "source": 374 - }, - { - "target": 483, - "source": 173 - }, - { - "target": 484, - "source": 198 - }, - { - "target": 485, - "source": 22 - }, - { - "target": 486, - "source": 159 - }, - { - "target": 487, - "source": 172 - }, - { - "target": 488, - "source": 13 - }, - { - "target": 489, - "source": 127 - }, - { - "target": 490, - "source": 337 - }, - { - "target": 491, - "source": 59 - }, - { - "target": 492, - "source": 229 - }, - { - "target": 493, - "source": 177 - }, - { - "target": 494, - "source": 117 - }, - { - "target": 495, - "source": 290 - }, - { - "target": 496, - "source": 81 - }, - { - "target": 497, - "source": 247 - }, - { - "target": 498, - "source": 149 - }, - { - "target": 499, - "source": 227 - }, - { - "target": 500, - "source": 393 - }, - { - "target": 501, - "source": 221 - }, - { - "target": 502, - "source": 345 - }, - { - "target": 503, - "source": 413 - }, - { - "target": 504, - "source": 247 - }, - { - "target": 505, - "source": 281 - }, - { - "target": 506, - "source": 294 - }, - { - "target": 507, - "source": 463 - }, - { - "target": 508, - "source": 119 - }, - { - "target": 509, - "source": 72 - }, - { - "target": 510, - "source": 207 - }, - { - "target": 511, - "source": 380 - }, - { - "target": 512, - "source": 409 - }, - { - "target": 513, - "source": 331 - }, - { - "target": 514, - "source": 444 - }, - { - "target": 515, - "source": 334 - }, - { - "target": 516, - "source": 228 - }, - { - "target": 517, - "source": 51 - }, - { - "target": 518, - "source": 12 - }, - { - "target": 519, - "source": 290 - }, - { - "target": 520, - "source": 433 - }, - { - "target": 521, - "source": 312 - }, - { - "target": 522, - "source": 483 - }, - { - "target": 523, - "source": 469 - }, - { - "target": 524, - "source": 7 - }, - { - "target": 525, - "source": 357 - }, - { - "target": 526, - "source": 146 - }, - { - "target": 527, - "source": 251 - }, - { - "target": 528, - "source": 43 - }, - { - "target": 529, - "source": 379 - }, - { - "target": 530, - "source": 439 - }, - { - "target": 531, - "source": 214 - }, - { - "target": 532, - "source": 366 - }, - { - "target": 533, - "source": 56 - }, - { - "target": 534, - "source": 25 - }, - { - "target": 535, - "source": 534 - }, - { - "target": 536, - "source": 162 - }, - { - "target": 537, - "source": 45 - }, - { - "target": 538, - "source": 180 - }, - { - "target": 539, - "source": 56 - }, - { - "target": 540, - "source": 417 - }, - { - "target": 541, - "source": 372 - }, - { - "target": 542, - "source": 534 - }, - { - "target": 543, - "source": 264 - }, - { - "target": 544, - "source": 197 - }, - { - "target": 545, - "source": 496 - }, - { - "target": 546, - "source": 221 - }, - { - "target": 547, - "source": 238 - }, - { - "target": 548, - "source": 97 - }, - { - "target": 549, - "source": 229 - }, - { - "target": 550, - "source": 240 - }, - { - "target": 551, - "source": 213 - }, - { - "target": 552, - "source": 523 - }, - { - "target": 553, - "source": 293 - }, - { - "target": 554, - "source": 287 - }, - { - "target": 555, - "source": 360 - }, - { - "target": 556, - "source": 467 - }, - { - "target": 557, - "source": 419 - }, - { - "target": 558, - "source": 136 - }, - { - "target": 559, - "source": 427 - }, - { - "target": 560, - "source": 20 - }, - { - "target": 561, - "source": 218 - }, - { - "target": 562, - "source": 540 - }, - { - "target": 563, - "source": 30 - }, - { - "target": 564, - "source": 135 - }, - { - "target": 565, - "source": 51 - }, - { - "target": 566, - "source": 450 - }, - { - "target": 567, - "source": 191 - }, - { - "target": 568, - "source": 414 - }, - { - "target": 569, - "source": 338 - }, - { - "target": 570, - "source": 188 - }, - { - "target": 571, - "source": 1 - }, - { - "target": 572, - "source": 498 - }, - { - "target": 573, - "source": 198 - }, - { - "target": 574, - "source": 35 - }, - { - "target": 575, - "source": 207 - }, - { - "target": 576, - "source": 205 - }, - { - "target": 577, - "source": 240 - }, - { - "target": 578, - "source": 330 - }, - { - "target": 579, - "source": 174 - }, - { - "target": 580, - "source": 156 - }, - { - "target": 581, - "source": 441 - }, - { - "target": 582, - "source": 482 - }, - { - "target": 583, - "source": 283 - }, - { - "target": 584, - "source": 448 - }, - { - "target": 585, - "source": 382 - }, - { - "target": 586, - "source": 484 - }, - { - "target": 587, - "source": 493 - }, - { - "target": 588, - "source": 491 - }, - { - "target": 589, - "source": 404 - }, - { - "target": 590, - "source": 9 - }, - { - "target": 591, - "source": 304 - }, - { - "target": 592, - "source": 261 - }, - { - "target": 593, - "source": 398 - }, - { - "target": 594, - "source": 375 - }, - { - "target": 595, - "source": 158 - }, - { - "target": 596, - "source": 149 - }, - { - "target": 597, - "source": 517 - }, - { - "target": 598, - "source": 25 - }, - { - "target": 599, - "source": 545 } ] } diff --git a/app/screens/graph/graph-screen.tsx b/app/screens/graph/graph-screen.tsx index 2ae956c..9f1f08c 100644 --- a/app/screens/graph/graph-screen.tsx +++ b/app/screens/graph/graph-screen.tsx @@ -15,6 +15,8 @@ import AsyncStorage from "@react-native-async-storage/async-storage" import axios from "axios"; +import rando from "../../data/rando.json" + const ROOT: ViewStyle = { backgroundColor: color.palette.black, flex: 1, @@ -27,7 +29,10 @@ export const GraphScreen = observer(function GraphScreen() { // Pull in navigation via hook // const navigation = useNavigation() + const [physics, setPhysics] = useState({}) + const [graphData, setGraphData] = useState(); + // { "nodes": [{ "id": 1 }, { "id": 2 }], "links": [{ "target": 1, "source": 2 }] }); const physicsInit = { charge: -30, collision: false, @@ -45,10 +50,10 @@ export const GraphScreen = observer(function GraphScreen() { const getData = async () => { try { const value: string = await AsyncStorage.getItem("@physics"); - if (value !== null ) { - const valueJson = JSON.parse(value); - if ( Object.keys(valueJson).length === Object.keys(physicsInit).length) { - return valueJson; + if (value !== null) { + const valueJson = JSON.parse(value); + if (Object.keys(valueJson).length === Object.keys(physicsInit).length) { + return valueJson; } else { return physicsInit }; } else { return physicsInit @@ -57,19 +62,6 @@ export const GraphScreen = observer(function GraphScreen() { console.log(e) } } - - //"ComponentOnMount" - // Get previous settings and the data from the org-roam-server - useEffect(() => { - getData().then((data) => setPhysics(data)); - // axios.get('/roamData') - // .then(()=>console.log("Whoo got data")) - //.catch((e)=>{ - // console.log(e); - // console.log("Couldn't get data."); - //}); - }, []) - const storeData = async (value) => { try { const jsonValue = JSON.stringify(value) @@ -93,14 +85,54 @@ export const GraphScreen = observer(function GraphScreen() { console.log(test) }, 1000) return () => clearTimeout(timer) - }, [physics]) + }, [physics]); - const gData = genRandomTree() + //"ComponentOnMount" + // Get previous settings and the data from the org-roam-server + const sanitizeGraph = (data, nodeIds: string[]) => { + const cleanLinks = []; + data.links.forEach((link, i) => { + for (i=0; i<=nodeIds.length; i++){ + if (link.target === nodeIds[i]) { + cleanLinks.push(link); + break; + }; + }; + }); + console.log(cleanLinks); + data.links = cleanLinks; + return data; + }; - return ( - <Screen style={ROOT} preset="scroll"> - <Tweaks physics={physics} setPhysics={setPhysics} /> - <Graph physics={physics} gData={gData} /> - </Screen> - ) -}) + const getNodesById = (data) => { + const nodeIds: string[] = []; + data.nodes.forEach(node => nodeIds.push(node.id)); + return nodeIds; + }; + + useEffect(() => { + getData().then((data) => setPhysics(data)); + axios.get("http://localhost:35901/graph") + .then((dataa) => { + const nodeIds = getNodesById(dataa.data); + console.log(nodeIds); + const cleanData = sanitizeGraph(dataa.data, nodeIds); + console.log(cleanData) + setGraphData(cleanData); + }) + .catch((e) => { + console.log(e); + console.log("Couldn't get data."); + //setGraphData(rando); + }); + }, []) + if (!graphData) { return null } + else { + return ( + <Screen style={ROOT} preset="scroll"> + <Tweaks physics={physics} setPhysics={setPhysics} /> + <Graph physics={physics} gData={graphData} /> + </Screen> + ) + } + }) |