-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata.tis
119 lines (95 loc) · 2.86 KB
/
data.tis
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
107
108
109
110
111
112
113
114
115
116
117
118
119
const dbPath = System.home("betaka.json");
function initFiles(forced = false) {
if (!System.scanFiles(dbPath) || forced) {
var file = Stream.openFile(dbPath, "wu");
var data = {
decks: [{
id: "MainDeck",
name: "Main Deck",
questions: [{
i: "Q12345",
q: "What is the name of this app?",
a: "Betakat",
t: []
}]
}],
options: {
letters: false,
random : false
}
};
// i : id, q : question, a : answer, d : deck, t : time, n : name
file.print(JSON.stringify(data," "));
file.close();
}
}
initFiles();
namespace DB {
var data;
function load() {
var file = Stream.openFile(dbPath, "ur");
data = parseData((file));
file.close();
if(!data) { initFiles(true); load(); }
}
function save() {
var file = Stream.openFile(dbPath, "wu");
file.print(JSON.stringify(data, " "));
file.close();
}
namespace decks {
function list() {
return data.decks;
}
function add(name) {
const deck = {
id: String.UID(),
name: name,
questions: []
};
data.decks.push(deck);
save();
}
function edit(D) {
var (i, deck) = data.decks.find(:d: d.id == D.id);
data.decks[i].name = D.name;
save();
}
function remove(id) {
var (i, deck) = data.decks.find(:d: d.id == id);
delete data.decks[i];
save();
}
}
namespace questions {
function list() {
var list = data.decks.find(:d: d.id == currentDeck).questions;
QuestionsList = data.options.random ? list.shuffle() : list;
return list;
}
function add(Q, A) {
const question = {
i: String.UID(),
q: Q,
a: A,
t: []
};
var (i, deck) = data.decks.find(:d: d.id == currentDeck);
data.decks[i].questions.push(question);
save();
}
function edit(Q) {
var (ind1, deck) = data.decks.find(:d: d.id == currentDeck);
var (ind2, question) = data.decks[ind1].questions.find(:q: q.i == Q.i);
data.decks[ind1].questions[ind2] = Q;
save();
}
function remove(id) {
var (ind1, deck) = data.decks.find(:d: d.id == currentDeck);
var (ind2, question) = data.decks[ind1].questions.find(:q: q.i == id);
delete data.decks[ind1].questions[ind2];
save();
}
}
}
DB.load();