Skip to content

Commit 47d0ab8

Browse files
committed
lots of file management updates
1 parent 53c598b commit 47d0ab8

File tree

10 files changed

+646
-516
lines changed

10 files changed

+646
-516
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"react-notifications": "^1.6.0",
2020
"react-scripts": "3.4.1",
2121
"react-sizeme": "^2.6.12",
22-
"react-svg": "^11.0.18"
22+
"react-svg": "^11.0.18",
23+
"react-transition-group": "1.x"
2324
},
2425
"scripts": {
2526
"start": "react-scripts start",

src/App.js

Lines changed: 85 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import './App.scss';
33
import Canvas from './canvas/Canvas';
44
import IntroWindow from './intro/IntroWindow';
55

6+
var localStorage = window.localStorage;
7+
68
class App extends React.Component {
79
constructor(props) {
810
super(props);
@@ -11,46 +13,101 @@ class App extends React.Component {
1113
this.setupProof = this.setupProof.bind(this);
1214
this.openCanvas = this.openCanvas.bind(this);
1315
this.saveProof = this.saveProof.bind(this);
16+
this.getRecents = this.getRecents.bind(this);
1417
this.introWindow = React.createRef();
15-
// this.state = {
16-
// initialCSS: 'initial',
17-
// canvasOpen: false,
18-
// popupOpen: false,
19-
// proof: {
20-
// premises: [],
21-
// conclusion: '',
22-
// steps: []
23-
// }
24-
// };
2518
this.state = {
2619
initialCSS: 'initial',
27-
canvasOpen: true,
20+
canvasOpen: false,
2821
popupOpen: false,
29-
proof: {premises: ["({Q})(({P}){Q})"], conclusion: "{Q}", steps:[] }
22+
filename: '',
23+
proof: {
24+
premises: [],
25+
conclusion: '',
26+
steps: []
27+
},
28+
recentDocs: this.getRecents()
3029
};
30+
31+
console.log(this.state.recentDocs)
32+
// this.state = {
33+
// initialCSS: 'initial',
34+
// canvasOpen: true,
35+
// popupOpen: false,
36+
// proof: {premises: ["({Q})(({P}){Q})"], conclusion: "{Q}", steps:[] }
37+
// };
38+
39+
this.menuItems = [
40+
{
41+
title: 'Exit',
42+
func: () => {
43+
this.setState({
44+
initialCSS: 'initial',
45+
canvasOpen: false,
46+
popupOpen: false,
47+
filename: '',
48+
proof: {
49+
premises: [],
50+
conclusion: '',
51+
steps: []
52+
},
53+
recentDocs: this.getRecents()
54+
})
55+
}
56+
},
57+
'separator',
58+
{
59+
title: 'Export',
60+
func: () => {
61+
const element = document.createElement("a");
62+
const file = new Blob([JSON.stringify(this.state.proof)], {type: 'text/plain'});
63+
element.href = URL.createObjectURL(file);
64+
element.download = this.state.filename + ".egprf";
65+
document.body.appendChild(element);
66+
element.click();
67+
}
68+
}
69+
]
3170
}
3271

33-
saveProof(proof) {
34-
this.setState({ proof: proof });
72+
getRecents() {
73+
let recents = localStorage.getItem('recentDocs');
74+
recents = recents ? JSON.parse(recents) : {}
75+
let keys = Object.keys(recents)
76+
for (let i in keys) {
77+
recents[keys[i]].open = () => {
78+
this.setState({
79+
filename: keys[i],
80+
proof: recents[keys[i]]
81+
});
82+
this.openCanvas();
83+
}
84+
}
85+
return recents;
86+
}
87+
88+
saveProof(filename) {
89+
let { recentDocs } = this.state;
90+
recentDocs[filename] = this.state.proof;
91+
return (proof) => {
92+
recentDocs[filename] = proof;
93+
localStorage.setItem('recentDocs', JSON.stringify(recentDocs));
94+
}
3595
}
3696

37-
setupProof(premises, conclusion, steps) {
97+
setupProof(filename, proof) {
3898
this.setState({
39-
proof: {
40-
premises: premises,
41-
conclusion: conclusion,
42-
steps: steps
43-
},
44-
initialCSS: 'initial whiteBG'
99+
filename: filename,
100+
proof: proof
45101
});
46-
this.introWindow.current.animateAway();
47-
setTimeout(this.openCanvas, 1000);
102+
this.openCanvas();
48103
}
49104

50105
openCanvas() {
51-
this.setState({
106+
this.setState({ initialCSS: 'initial whiteBG' });
107+
this.introWindow.current.animateAway();
108+
setTimeout(() => this.setState({
52109
canvasOpen: true
53-
});
110+
}), 1000);
54111
}
55112

56113
createNewProof() {
@@ -62,7 +119,8 @@ class App extends React.Component {
62119
return (
63120
<div className="App">
64121
<Canvas
65-
saveProof={this.saveProof}
122+
menuItems={this.menuItems}
123+
saveProof={this.saveProof(this.state.filename)}
66124
proof={this.state.proof} />
67125
</div>
68126
);
@@ -71,6 +129,7 @@ class App extends React.Component {
71129
<div className={this.state.initialCSS}>
72130
<IntroWindow
73131
ref={this.introWindow}
132+
recentDocs={this.state.recentDocs}
74133
setupFunc={this.setupProof}/>
75134
</div>
76135
);

0 commit comments

Comments
 (0)