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
+43-43Lines changed: 43 additions & 43 deletions
Original file line number
Diff line number
Diff line change
@@ -10,15 +10,15 @@ export default createStore({
10
10
xp: 0asnumber,
11
11
progress: 0asnumber,
12
12
score: 0asnumber,//set score to 0 when state is created
13
-
bestScoreEarned: 0asnumber,//highest number of points earned achieved when task is completed
13
+
bestScoreEarned: 0asnumber,//the highest number of points earned achieved when a task is completed
14
14
dailyStreak: 0asnumber,//set daily streak to 0 and last completion date to undefined when state is created
15
-
tasksCompletedToday: 0asnumber,//set number of tasks completed in a day (today) to 0
16
-
totalTasksCompleted: 0asnumber,//set total number of tasks completed to 0
15
+
tasksCompletedToday: 0asnumber,//set the number of tasks completed in a day (today) to 0
16
+
totalTasksCompleted: 0asnumber,//set the total number of tasks completed to 0
17
17
lastCompletionDate: undefinedasstring|undefined,//last completion date in YYYY-MM-DD string
18
18
},
19
19
},
20
20
getters: {
21
-
getTodos: (state)=>state.todos,//get task list
21
+
getTodos: (state)=>state.todos,//get a task list
22
22
getXp: (state)=>state.user.xp,//get user XP
23
23
getLevel: (state)=>state.user.level,//get user level
24
24
getProgress: (state)=>state.user.progress,//get user level progress
@@ -27,11 +27,11 @@ export default createStore({
27
27
getTasksCompletedToday: (state)=>state.user.tasksCompletedToday,//get user tasks completed in a day
28
28
getTotalTasksCompleted: (state)=>state.user.totalTasksCompleted,//get user total tasks completed
29
29
getLastCompletionDate: (state)=>state.user.lastCompletionDate,//get user last completion date
30
-
getBestScoreEarned: (state)=>state.user.bestScoreEarned,//get user best score earned when task is completed
30
+
getBestScoreEarned: (state)=>state.user.bestScoreEarned,//get the user best score earned when a task is completed
31
31
},
32
32
mutations: {
33
33
/**
34
-
* Update user XP state when user presses Complete button to complete the task.
34
+
* Update user XP state when a user presses Complete button to complete the task.
35
35
*/
36
36
updateXp: (state,payload)=>{
37
37
consttask=state.todos.find(
@@ -40,7 +40,7 @@ export default createStore({
40
40
constdaysToDue: number=
41
41
(Number(newDate(task.dueDate+" 23:59:59.999"))-
42
42
Number(newDate().setHours(23,59,59,999)))/
43
-
(1000*60*60*24);//calculate number of days until the task is due
43
+
(1000*60*60*24);//calculate the number of days until the task is due
44
44
constdateMultiplier: number=
45
45
daysToDue<0
46
46
? -2/(daysToDue-1)
@@ -50,16 +50,16 @@ export default createStore({
50
50
(Number(newDate().setHours(23,59,59,999))-
51
51
Number(newDate()))/
52
52
(1000*24*60*60))
53
-
: 1+1/(daysToDue+1);//if task is overdue, XP and score 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
54
-
letstreakMultiplier: number;//calculate task streak XP and score 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
53
+
: 1+1/(daysToDue+1);//if a task is overdue, XP and score multiplier is less than 1 that decreases over time when a task is overdue, else XP multiplier bonus increases (more than 1) when a task gets closer to due date
54
+
letstreakMultiplier: number;//calculate task streak XP and score multiplier based on task streak, if a 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
55
55
letrepeatMultiplier: number;//calculate task repetition XP and score multiplier based on task repetition occurrence and task repetition frequency
56
56
letdailyStreakMultiplier: number;//calculate daily streak XP and score multiplier based on daily streak
57
57
letlevelMultiplier: number;//calculate level score multiplier based on user level
58
58
letdayTasksMultiplier: number;//calculate XP and score multiplier for tasks completed in a day (today)
59
59
lettasksMultiplier: number;//calculate score multiplier for total number of tasks completed
60
60
constactiveTasks: number=state.todos.filter(
61
61
(taskList)=>!taskList.completed
62
-
).length;//calculate number of active tasks (tasks that are not completed) using array.filter
62
+
).length;//calculate the number of active tasks (tasks that are not completed) using array.filter
63
63
letactiveTasksMultiplier: number;//calculate score multiplier for number of active tasks (tasks that are not completed)
64
64
//calculate task repetition XP multiplier
65
65
if(Number(task.repeatFrequency)===1){
@@ -107,7 +107,7 @@ export default createStore({
107
107
//if task is overdue
108
108
task.streak=0;//reset task streak to 0
109
109
}else{
110
-
//if task is completed before due date (not overdue)
110
+
//if a task is completed before due date (not overdue)
111
111
task.streak++;//increase task streak
112
112
}
113
113
//calculate daily streak
@@ -126,7 +126,7 @@ export default createStore({
126
126
//if user last completion date is yesterday
127
127
state.user.dailyStreak++;//increase daily streak
128
128
}
129
-
//calculate number of tasks completed in a day
129
+
//calculate the number of tasks completed in a day
dailyStreakMultiplier=1+0.1*(state.user.dailyStreak-1);//1x daily streak XP multiplier from 1 daily streak plus 0.1x streak multiplier for each daily streak
145
145
}elseif(state.user.dailyStreak<7){
146
146
//1 week is 7 days
147
-
dailyStreakMultiplier=1.2+0.05*(state.user.dailyStreak-3);//1.2x daily streak XP multiplier from 3 daily streak plus 0.05x streak multiplier for each daily streak
147
+
dailyStreakMultiplier=1.2+0.05*(state.user.dailyStreak-3);//1.2x daily streak XP multiplier from 3 daily streaks plus 0.05x streak multiplier for each daily streak
148
148
}elseif(state.user.dailyStreak<14){
149
-
//2 weeks is 14 days
150
-
dailyStreakMultiplier=1.4+0.04*(state.user.dailyStreak-7);//1.4x daily streak XP multiplier from 7 daily streak (1 week) plus 0.04x streak multiplier for each daily streak
149
+
//2 weeks are 14 days
150
+
dailyStreakMultiplier=1.4+0.04*(state.user.dailyStreak-7);//1.4x daily streak XP multiplier from 7 daily streaks (1 week) plus 0.04x streak multiplier for each daily streak
151
151
}elseif(state.user.dailyStreak<30){
152
152
//1 month is approximately 30 days
153
-
dailyStreakMultiplier=1.68+0.03*(state.user.dailyStreak-14);//1.68x daily streak XP multiplier from 14 daily streak (2 weeks) plus 0.03x streak multiplier for each daily streak
153
+
dailyStreakMultiplier=1.68+0.03*(state.user.dailyStreak-14);//1.68x daily streak XP multiplier from 14 daily streaks (2 weeks) plus 0.03x streak multiplier for each daily streak
154
154
}elseif(state.user.dailyStreak<60){
155
-
//2 months is approximately 60 days
156
-
dailyStreakMultiplier=2.16+0.02*(state.user.dailyStreak-30);//2.16x daily streak XP multiplier from 30 daily streak (approximately 1 month) plus 0.02x streak multiplier for each daily streak
155
+
//2 months are approximately 60 days
156
+
dailyStreakMultiplier=2.16+0.02*(state.user.dailyStreak-30);//2.16x daily streak XP multiplier from 30 daily streaks (approximately 1 month) plus 0.02x streak multiplier for each daily streak
157
157
}elseif(state.user.dailyStreak<90){
158
-
//3 months is approximately 90 days
159
-
dailyStreakMultiplier=2.76+0.015*(state.user.dailyStreak-60);//2.76x daily streak XP multiplier from 60 daily streak (approximately 2 months) plus 0.015x streak multiplier for each daily streak
158
+
//3 months are approximately 90 days
159
+
dailyStreakMultiplier=2.76+0.015*(state.user.dailyStreak-60);//2.76x daily streak XP multiplier from 60 daily streaks (approximately 2 months) plus 0.015x streak multiplier for each daily streak
160
160
}elseif(state.user.dailyStreak<180){
161
-
//6 months is approximately 180 days
162
-
dailyStreakMultiplier=3.21+0.01*(state.user.dailyStreak-90);//3.21x daily streak XP multiplier from 90 daily streak (approximately 3 months) plus 0.01x streak multiplier for each daily streak
161
+
//6 months are approximately 180 days
162
+
dailyStreakMultiplier=3.21+0.01*(state.user.dailyStreak-90);//3.21x daily streak XP multiplier from 90 daily streaks (approximately 3 months) plus 0.01x streak multiplier for each daily streak
163
163
}elseif(state.user.dailyStreak<365){
164
164
//1 year is approximately 365 days
165
-
dailyStreakMultiplier=4.11+0.005*(state.user.dailyStreak-180);//4.11x daily streak XP multiplier from 180 daily streak (approximately 6 months) plus 0.005x streak multiplier for each daily streak
165
+
dailyStreakMultiplier=4.11+0.005*(state.user.dailyStreak-180);//4.11x daily streak XP multiplier from 180 daily streaks (approximately 6 months) plus 0.005x streak multiplier for each daily streak
166
166
}elseif(state.user.dailyStreak<730){
167
-
//2 years is approximately 730 days
168
-
dailyStreakMultiplier=5.035+0.003*(state.user.dailyStreak-365);//5.035x daily streak XP multiplier from 365 daily streak (approximately 1 year) plus 0.003x streak multiplier for each daily streak
167
+
//2 years are approximately 730 days
168
+
dailyStreakMultiplier=5.035+0.003*(state.user.dailyStreak-365);//5.035x daily streak XP multiplier from 365 daily streaks (approximately 1 year) plus 0.003x streak multiplier for each daily streak
169
169
}elseif(state.user.dailyStreak<1461){
170
-
//4 years is approximately 1,461 days
171
-
dailyStreakMultiplier=6.13+0.002*(state.user.dailyStreak-730);//6.13x daily streak XP multiplier from 730 daily streak (approximately 2 years) plus 0.002x streak multiplier for each daily streak
170
+
//4 years are approximately 1,461 days
171
+
dailyStreakMultiplier=6.13+0.002*(state.user.dailyStreak-730);//6.13x daily streak XP multiplier from 730 daily streaks (approximately 2 years) plus 0.002x streak multiplier for each daily streak
172
172
}elseif(state.user.dailyStreak<3652){
173
-
//10 years is approximately 3,652 days
174
-
dailyStreakMultiplier=7.592+0.001*(state.user.dailyStreak-1461);//7.592x daily streak XP multiplier from 1,461 daily (approximately 4 years) streak plus 0.001x streak multiplier for each daily streak
173
+
//10 years are approximately 3,652 days
174
+
dailyStreakMultiplier=7.592+0.001*(state.user.dailyStreak-1461);//7.592x daily streak XP multiplier from 1,461 daily streaks (approximately 4 years) plus 0.001x streak multiplier for each daily streak
175
175
}else{
176
-
dailyStreakMultiplier=9.783;//9.783x daily streak XP multiplier from 3,652 daily streak (approximately 10 years)
176
+
dailyStreakMultiplier=9.783;//9.783x daily streak XP multiplier from 3,652 daily streaks (approximately 10 years)
dayTasksMultiplier=1;//1x multiplier for 0 or 1 task completed in a day
224
+
dayTasksMultiplier=1;//1x multiplier for 0 or 1 tasks completed in a day
225
225
}elseif(state.user.tasksCompletedToday<5){
226
226
dayTasksMultiplier=1+0.125*(state.user.tasksCompletedToday-1);//1x multiplier plus 0.125x multiplier for each task completed in a day from 1 task completed in a day
227
227
}elseif(state.user.tasksCompletedToday<10){
@@ -341,7 +341,7 @@ export default createStore({
341
341
}
342
342
//calculate active task score multiplier
343
343
if(activeTasks===0||activeTasks===1){
344
-
activeTasksMultiplier=1;//1x active task score multiplier for 0 or 1 active task
344
+
activeTasksMultiplier=1;//1x active task score multiplier for 0 or 1 active tasks
345
345
}elseif(activeTasks<3){
346
346
activeTasksMultiplier=1+0.25*(activeTasks-1);//1x active task score multiplier from 1 active task plus 0.25x active task score multiplier for each active task
347
347
}elseif(activeTasks<5){
@@ -369,7 +369,7 @@ export default createStore({
369
369
}else{
370
370
activeTasksMultiplier=27;//27x active task score multiplier from 10,000 active tasks
371
371
}
372
-
//calculate amount of XP earned and points earned when task is completed
372
+
//calculate the amount of XP earned and points earned when a task is completed
373
373
constxpEarned: number=Math.max(
374
374
Math.floor(
375
375
task.difficulty*
@@ -382,7 +382,7 @@ export default createStore({
382
382
),
383
383
1
384
384
);//get at least 1 XP when the task is completed
385
-
state.user.xp+=xpEarned;//get amount of XP earned based on task difficulty, task priority, task due date, task repetition, task streak and daily streak multipliers
385
+
state.user.xp+=xpEarned;//get the amount of XP earned based on task difficulty, task priority, task due date, task repetition, task streak and daily streak multipliers
386
386
constpointsEarned: number=Math.max(
387
387
Math.floor(
388
388
task.difficulty*
@@ -400,8 +400,8 @@ export default createStore({
400
400
);//get at least 1 point when the task is completed
401
401
state.user.score+=pointsEarned;//get amount of points earned based on task difficulty, task priority, task due date, task repetition, task streak, daily streak and user level multipliers
402
402
if(pointsEarned>state.user.bestScoreEarned){
403
-
//if points earned is greaedr than best score earned
404
-
state.user.bestScoreEarned=pointsEarned;//set best score earned to points earned whan task is completed
403
+
//if points earned are greater than the best score earned
404
+
state.user.bestScoreEarned=pointsEarned;//set the best score earned to points earned when a task is completed
0 commit comments