1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
import React, { useEffect, useState } from "react"
import { observer } from "mobx-react-lite"
import { ViewStyle } from "react-native"
import { Screen, Text } from "../../components"
// import { useNavigation } from "@react-navigation/native"
// import { useStores } from "../../models"
import { color } from "../../theme"
import { Graph } from "../../components"
import { Tweaks } from "../../components"
import genRandomTree from "../../data/randomdata"
import AsyncStorage from "@react-native-async-storage/async-storage"
import axios from "axios";
const ROOT: ViewStyle = {
backgroundColor: color.palette.black,
flex: 1,
}
export const GraphScreen = observer(function GraphScreen() {
// Pull in one of our MST stores
// const { someStore, anotherStore } = useStores()
// Pull in navigation via hook
// const navigation = useNavigation()
const [physics, setPhysics] = useState({})
const physicsInit = {
charge: -30,
collision: false,
linkStrength: 1,
linkIts: 1,
collapse: false,
threedim: false,
particles: 2,
linkOpacity: 1,
linkWidth: 1,
particleWidth: 1,
nodeRel: 1,
}
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;
} else { return physicsInit };
} else {
return physicsInit
}
} catch (e) {
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)
await AsyncStorage.mergeItem("@physics", jsonValue)
console.log("Writing " + jsonValue)
} catch (e) {
console.log(e)
}
}
// hook to save the current configuration of the physics tweaks
// after it is updated
useEffect(() => {
if (timer) {
clearTimeout(timer)
}
// set timer so the thing doesn't run every single slider tick
const timer = setTimeout(() => {
storeData(physics)
const test = getData()
console.log(test)
}, 1000)
return () => clearTimeout(timer)
}, [physics])
const gData = genRandomTree()
return (
<Screen style={ROOT} preset="scroll">
<Tweaks physics={physics} setPhysics={setPhysics} />
<Graph physics={physics} gData={gData} />
</Screen>
)
})
|