You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/store/index.ts
+44-44Lines changed: 44 additions & 44 deletions
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ export default createStore({
6
6
//eslint-disable-next-line
7
7
todos: []asany[],
8
8
user: {
9
-
level: 1asnumber,//set level to 1 as total xp is 0 when state is created
9
+
level: 1asnumber,//set level to 1 as total XP is 0 when state is created
10
10
xp: 0asnumber,
11
11
progress: 0asnumber,
12
12
dailyStreak: 0asnumber,//set daily streak to 0 and last completion date to undefined when state is created
@@ -15,7 +15,7 @@ export default createStore({
15
15
},
16
16
getters: {
17
17
getTodos: (state)=>state.todos,//get task list
18
-
getXp: (state)=>state.user.xp,//get user xp
18
+
getXp: (state)=>state.user.xp,//get user XP
19
19
getLevel: (state)=>state.user.level,//get user level
20
20
getProgress: (state)=>state.user.progress,//get user level progress
21
21
getDailyStreak: (state)=>state.user.dailyStreak,//get user daily streak
@@ -34,50 +34,50 @@ export default createStore({
34
34
Number(newDate().setHours(23,59,59,999)))/
35
35
(1000*60*60*24);//calculate number of days until the task is due
36
36
constdateMultiplier: number=
37
-
daysToDue<0 ? -3/(daysToDue-1) : 1+1/(daysToDue+1);//if task is overdue, xp multiplier is less than 1 that decreases over time when task is overdue, else xp multiplier bonus increases (more than 1) when task gets closer to due date
38
-
letstreakMultiplier: number;//calculate task streak xp multiplier based on task streak, if task is completed before the due date then the streak increases else if the task is completed overdue (after the due date) reset task streak to 0
39
-
letrepeatMultiplier: number;//calculate task repetition xp multiplier based on task repetition occurance and task repetition frequency
40
-
letdailyStreakMultiplier: number;//calculate daily streak xp multiplier based on daily streak
41
-
//calculate task repetition xp multiplier
37
+
daysToDue<0 ? -3/(daysToDue-1) : 1+1/(daysToDue+1);//if task is overdue, XP multiplier is less than 1 that decreases over time when task is overdue, else XP multiplier bonus increases (more than 1) when task gets closer to due date
38
+
letstreakMultiplier: number;//calculate task streak XP multiplier based on task streak, if task is completed before the due date then the streak increases else if the task is completed overdue (after the due date) reset task streak to 0
39
+
letrepeatMultiplier: number;//calculate task repetition XP multiplier based on task repetition occurance and task repetition frequency
40
+
letdailyStreakMultiplier: number;//calculate daily streak XP multiplier based on daily streak
41
+
//calculate task repetition XP multiplier
42
42
if(task.repeatFrequency==1){
43
43
//if task repetition is daily
44
44
if(task.repeatOften<7){
45
45
//7 days is 1 week
46
-
repeatMultiplier=1+(task.repeatOften-1)/(7-1);//1x xp multiplier for daily tasks (1 day) to 2x xp multiplier for weekly tasks (7 days)
46
+
repeatMultiplier=1+(task.repeatOften-1)/(7-1);//1x XP multiplier for daily tasks (1 day) to 2x XP multiplier for weekly tasks (7 days)
47
47
}elseif(task.repeatOften<30){
48
48
//approximately 30 days is 1 month
49
-
repeatMultiplier=2+(task.repeatOften-7)/(30-7);//2x xp multiplier for weekly tasks (7 days) to 3x xp multiplier for monthly tasks (approximately 30 days)
49
+
repeatMultiplier=2+(task.repeatOften-7)/(30-7);//2x XP multiplier for weekly tasks (7 days) to 3x XP multiplier for monthly tasks (approximately 30 days)
50
50
}elseif(task.repeatOften<365){
51
51
//approximately 365 days is 1 year
52
-
repeatMultiplier=3+(task.repeatOften-30)/(365-30);//3x xp multiplier for monthly tasks (approximately 30 days) to 4x xp multiplier for yearly tasks (approximately 365 days)
52
+
repeatMultiplier=3+(task.repeatOften-30)/(365-30);//3x XP multiplier for monthly tasks (approximately 30 days) to 4x XP multiplier for yearly tasks (approximately 365 days)
53
53
}else{
54
-
repeatMultiplier=5-365/task.repeatOften;//4x xp multiplier for yearly tasks (approximately 365 days) to 5x xp multiplier for one-time tasks
54
+
repeatMultiplier=5-365/task.repeatOften;//4x XP multiplier for yearly tasks (approximately 365 days) to 5x XP multiplier for one-time tasks
55
55
}
56
56
}elseif(task.repeatFrequency==2){
57
57
//if task repetition is weekly
58
58
if(task.repeatOften<4){
59
59
//approximately 4 weeks is 1 month
60
-
repeatMultiplier=2+(task.repeatOften-1)/(4-1);//2x xp multiplier for weekly tasks (1 week) to 3x xp multiplier for monthly tasks (approximately 4 weeks)
60
+
repeatMultiplier=2+(task.repeatOften-1)/(4-1);//2x XP multiplier for weekly tasks (1 week) to 3x XP multiplier for monthly tasks (approximately 4 weeks)
61
61
}elseif(task.repeatOften<52){
62
62
//approximately 52 weeks is 1 year
63
-
repeatMultiplier=3+(task.repeatOften-4)/(52-4);//3x xp multiplier for monthly tasks (approximately 4 weeks) to 4x xp multiplier for yearly tasks (approximately 52 weeks)
63
+
repeatMultiplier=3+(task.repeatOften-4)/(52-4);//3x XP multiplier for monthly tasks (approximately 4 weeks) to 4x XP multiplier for yearly tasks (approximately 52 weeks)
64
64
}else{
65
-
repeatMultiplier=5-52/task.repeatOften;//4x xp multiplier for yearly tasks (approximately 52 weeks) to 5x xp multiplier for one-time tasks
65
+
repeatMultiplier=5-52/task.repeatOften;//4x XP multiplier for yearly tasks (approximately 52 weeks) to 5x XP multiplier for one-time tasks
66
66
}
67
67
}elseif(task.repeatFrequency==3){
68
68
//if task repetition is monthly
69
69
if(task.repeatOften<12){
70
70
//12 months is 1 year
71
-
repeatMultiplier=3+(task.repeatOften-1)/(12-1);//3x xp multiplier for monthly tasks (1 month) to 4x xp multiplier for yearly tasks (12 months)
71
+
repeatMultiplier=3+(task.repeatOften-1)/(12-1);//3x XP multiplier for monthly tasks (1 month) to 4x XP multiplier for yearly tasks (12 months)
72
72
}else{
73
-
repeatMultiplier=5-12/task.repeatOften;//4x xp multiplier for yearly tasks (12 months) to 5x xp multiplier for one-time tasks
73
+
repeatMultiplier=5-12/task.repeatOften;//4x XP multiplier for yearly tasks (12 months) to 5x XP multiplier for one-time tasks
74
74
}
75
75
}elseif(task.repeatFrequency==4){
76
76
//if task repetition is yearly
77
-
repeatMultiplier=5-1/task.repeatOften;//4x xp multiplier for yearly tasks (1 year) to 5x xp multiplier for one-time tasks
77
+
repeatMultiplier=5-1/task.repeatOften;//4x XP multiplier for yearly tasks (1 year) to 5x XP multiplier for one-time tasks
78
78
}else{
79
79
//if task repetition is one-time
80
-
repeatMultiplier=5;//get 5x xp multiplier for one-time tasks
80
+
repeatMultiplier=5;//get 5x XP multiplier for one-time tasks
dailyStreakMultiplier=1;//1x daily streak xp multiplier if daily streak is 0 or 1
108
+
dailyStreakMultiplier=1;//1x daily streak XP multiplier if daily streak is 0 or 1
109
109
}elseif(state.user.dailyStreak<3){
110
-
dailyStreakMultiplier=1+0.1*(state.user.dailyStreak-1);//1x daily streak xp multiplier from 1 streak plus 0.1x streak multiplier for each daily streak
110
+
dailyStreakMultiplier=1+0.1*(state.user.dailyStreak-1);//1x daily streak XP multiplier from 1 streak plus 0.1x streak multiplier for each daily streak
111
111
}elseif(state.user.dailyStreak<7){
112
-
dailyStreakMultiplier=1.2+0.05*(state.user.dailyStreak-3);//1.2x daily streak xp multiplier from 3 streak plus 0.05x streak multiplier for each daily streak
112
+
dailyStreakMultiplier=1.2+0.05*(state.user.dailyStreak-3);//1.2x daily streak XP multiplier from 3 streak plus 0.05x streak multiplier for each daily streak
113
113
}elseif(state.user.dailyStreak<14){
114
-
dailyStreakMultiplier=1.4+0.03*(state.user.dailyStreak-7);//1.4x daily streak xp multiplier from 7 streak plus 0.03x streak multiplier for each daily streak
114
+
dailyStreakMultiplier=1.4+0.03*(state.user.dailyStreak-7);//1.4x daily streak XP multiplier from 7 streak plus 0.03x streak multiplier for each daily streak
115
115
}elseif(state.user.dailyStreak<30){
116
-
dailyStreakMultiplier=1.61+0.02*(state.user.dailyStreak-14);//1.61x daily streak xp multiplier from 14 streak plus 0.02x streak multiplier for each daily streak
116
+
dailyStreakMultiplier=1.61+0.02*(state.user.dailyStreak-14);//1.61x daily streak XP multiplier from 14 streak plus 0.02x streak multiplier for each daily streak
117
117
}elseif(state.user.dailyStreak<90){
118
-
dailyStreakMultiplier=1.89+0.01*(state.user.dailyStreak-30);//1.89x daily streak xp multiplier from 30 streak plus 0.01x streak multiplier for each daily streak
118
+
dailyStreakMultiplier=1.89+0.01*(state.user.dailyStreak-30);//1.89x daily streak XP multiplier from 30 streak plus 0.01x streak multiplier for each daily streak
119
119
}elseif(state.user.dailyStreak<180){
120
-
dailyStreakMultiplier=2.49+0.005*(state.user.dailyStreak-90);//2.49x daily streak xp multiplier from 90 streak plus 0.005x streak multiplier for each daily streak
120
+
dailyStreakMultiplier=2.49+0.005*(state.user.dailyStreak-90);//2.49x daily streak XP multiplier from 90 streak plus 0.005x streak multiplier for each daily streak
121
121
}elseif(state.user.dailyStreak<365){
122
-
dailyStreakMultiplier=2.94+0.002*(state.user.dailyStreak-180);//2.94x daily streak xp multiplier from 30 streak plus 0.002x streak multiplier for each daily streak
122
+
dailyStreakMultiplier=2.94+0.002*(state.user.dailyStreak-180);//2.94x daily streak XP multiplier from 30 streak plus 0.002x streak multiplier for each daily streak
123
123
}else{
124
-
dailyStreakMultiplier=3.31;//3.31x daily streak xp multiplier from 365 daily streak
124
+
dailyStreakMultiplier=3.31;//3.31x daily streak XP multiplier from 365 daily streak
streakMultiplier=1;//1x task streak multiplier if task streak is 0 or completed a one-time task
136
+
streakMultiplier=1;//1x task streak XP multiplier if task streak is 0 or completed a one-time task
137
137
}elseif(task.streak<5){
138
-
streakMultiplier=1.1+0.05*(task.streak-1);//1.1x task streak xp multiplier from 1 streak plus 0.05x streak multiplier for each task streak
138
+
streakMultiplier=1.1+0.05*(task.streak-1);//1.1x task streak XP multiplier from 1 streak plus 0.05x streak multiplier for each task streak
139
139
}elseif(task.streak<10){
140
-
streakMultiplier=1.3+0.04*(task.streak-5);//1.3x task streak xp multiplier from 5 streak plus 0.04x streak multiplier for each task streak
140
+
streakMultiplier=1.3+0.04*(task.streak-5);//1.3x task streak XP multiplier from 5 streak plus 0.04x streak multiplier for each task streak
141
141
}elseif(task.streak<20){
142
-
streakMultiplier=1.5+0.02*(task.streak-10);//1.5x task streak xp multiplier from 10 streak plus 0.02x streak multiplier for each task streak
142
+
streakMultiplier=1.5+0.02*(task.streak-10);//1.5x task streak XP multiplier from 10 streak plus 0.02x streak multiplier for each task streak
143
143
}elseif(task.streak<50){
144
-
streakMultiplier=1.7+0.01*(task.streak-20);//1.7x task streak xp multiplier from 20 streak plus 0.01x streak multiplier for each task streak
144
+
streakMultiplier=1.7+0.01*(task.streak-20);//1.7x task streak XP multiplier from 20 streak plus 0.01x streak multiplier for each task streak
145
145
}elseif(task.streak<100){
146
-
streakMultiplier=2+0.005*(task.streak-50);//2x task streak xp multiplier from 50 streak plus 0.005x streak multiplier for each task streak
146
+
streakMultiplier=2+0.005*(task.streak-50);//2x task streak XP multiplier from 50 streak plus 0.005x streak multiplier for each task streak
147
147
}elseif(task.streak<200){
148
-
streakMultiplier=2.25+0.0025*(task.streak-100);//2.25x task streak xp multiplier from 100 streak plus 0.0025x streak multiplier for each task streak
148
+
streakMultiplier=2.25+0.0025*(task.streak-100);//2.25x task streak XP multiplier from 100 streak plus 0.0025x streak multiplier for each task streak
149
149
}elseif(task.streak<500){
150
-
streakMultiplier=2.5+0.001*(task.streak-200);//2.5x task streak xp multiplier from 200 streak plus 0.001x streak multiplier for each task streak
150
+
streakMultiplier=2.5+0.001*(task.streak-200);//2.5x task streak XP multiplier from 200 streak plus 0.001x streak multiplier for each task streak
151
151
}elseif(task.streak<1000){
152
-
streakMultiplier=2.8+0.0004*(task.streak-500);//2.8x task streak xp multiplier from 500 task streak plus 0.0004x streak multiplier for each task streak
152
+
streakMultiplier=2.8+0.0004*(task.streak-500);//2.8x task streak XP multiplier from 500 task streak plus 0.0004x streak multiplier for each task streak
153
153
}else{
154
-
streakMultiplier=3;//3x task streak xp multiplier from 1000 task streak
154
+
streakMultiplier=3;//3x task streak XP multiplier from 1000 task streak
155
155
}
156
-
//calculate amount of xp earned when task is completed
156
+
//calculate amount of XP earned when task is completed
state.user.xp+=xp;//get amount of xp earned based on task difficulty, task priority, task due date, task repetition, task streak and daily streak multipliers
167
+
);//get at least 1 XP when the task is completed
168
+
state.user.xp+=xp;//get amount of XP earned based on task difficulty, task priority, task due date, task repetition, task streak and daily streak multipliers
169
169
state.user.level=Math.max(
170
170
1,
171
171
Math.floor(Math.pow(state.user.xp,1/3+5e-16))
172
-
);//calculate level based on how many xp and set level to 1 if total xp is 0
172
+
);//calculate level based on how many XP and set level to 1 if total XP is 0
0 commit comments