-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataManager.js
More file actions
56 lines (49 loc) · 1.47 KB
/
DataManager.js
File metadata and controls
56 lines (49 loc) · 1.47 KB
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
class DataManager {
constructor(storageKey = "progressData", goalsKey = "exerciseGoals") {
this.storageKey = storageKey;
this.goalsKey = goalsKey;
}
saveEntry(exercise, entry) {
let data = this.getEntries();
if (!data[exercise]) {
data[exercise] = [];
}
data[exercise].push(entry);
localStorage.setItem(this.storageKey, JSON.stringify(data));
}
getEntries() {
let data = localStorage.getItem(this.storageKey);
return data ? JSON.parse(data) : {};
}
clearEntries(exercise) {
let data = this.getEntries();
if (exercise) {
delete data[exercise];
} else {
data = {};
}
localStorage.setItem(this.storageKey, JSON.stringify(data));
}
saveGoal(exercise, goal) {
let goals = this.getGoals();
goals[exercise] = goal;
localStorage.setItem(this.goalsKey, JSON.stringify(goals));
}
getGoals() {
let goals = localStorage.getItem(this.goalsKey);
return goals ? JSON.parse(goals) : {};
}
getGoal(exercise) {
const goals = this.getGoals();
return goals[exercise] || null;
}
removeGoal(exercise) {
let goals = this.getGoals();
if (goals[exercise]) {
delete goals[exercise];
localStorage.setItem(this.goalsKey, JSON.stringify(goals));
return true;
}
return false;
}
}