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
+36-1Lines changed: 36 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -55,6 +55,10 @@ export default createStore({
55
55
letlevelMultiplier: number;//calculate level score multiplier based on user level
56
56
letdayTasksMultiplier: number;//calculate XP and score multiplier for tasks completed in a day (today)
57
57
lettasksMultiplier: number;//calculate score multiplier for total number of tasks completed
58
+
constactiveTasks: number=state.todos.filter(
59
+
(taskList)=>!taskList.completed
60
+
).length;//calculate number of active tasks (tasks that are not completed) using array.filter
61
+
letactiveTasksMultiplier: number;//calculate score multiplier for number of active tasks (tasks that are not completed)
58
62
//calculate task repetition XP multiplier
59
63
if(Number(task.repeatFrequency)===1){
60
64
//if task repetition is daily
@@ -321,6 +325,36 @@ export default createStore({
321
325
}else{
322
326
tasksMultiplier=55;//55x task score multiplier from 1,000,000 tasks
323
327
}
328
+
//calculate active task score multiplier
329
+
if(activeTasks===(0||1)){
330
+
activeTasksMultiplier=1;//1x active task score multiplier for 0 or 1 active task
331
+
}elseif(activeTasks<3){
332
+
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
333
+
}elseif(activeTasks<5){
334
+
activeTasksMultiplier=1.5+0.2*(activeTasks-3);//1.5x active task score multiplier from 3 active tasks plus 0.2x active task score multiplier for each active task
335
+
}elseif(activeTasks<10){
336
+
activeTasksMultiplier=1.9+0.12*(activeTasks-5);//1.9x active task score multiplier from 5 active tasks plus 0.12x active task score multiplier for each active task
337
+
}elseif(activeTasks<20){
338
+
activeTasksMultiplier=2.5+0.05*(activeTasks-10);//2.5x active task score multiplier from 10 active tasks plus 0.05x active task score multiplier for each active task
339
+
}elseif(activeTasks<50){
340
+
activeTasksMultiplier=3+0.03*(activeTasks-20);//3x active task score multiplier from 20 active tasks plus 0.03x active task score multiplier for each active task
341
+
}elseif(activeTasks<100){
342
+
activeTasksMultiplier=3.9+0.022*(activeTasks-50);//3.9x active task score multiplier from 50 active tasks plus 0.022x active task score multiplier for each active task
343
+
}elseif(activeTasks<200){
344
+
activeTasksMultiplier=5+0.015*(activeTasks-100);//5x active task score multiplier from 100 active tasks plus 0.015x active task score multiplier for each active task
345
+
}elseif(activeTasks<500){
346
+
activeTasksMultiplier=6.5+0.01*(activeTasks-200);//6.5x active task score multiplier from 200 active tasks plus 0.01x active task score multiplier for each active task
347
+
}elseif(activeTasks<1000){
348
+
activeTasksMultiplier=9.5+0.005*(activeTasks-500);//9.5x active task score multiplier from 500 active tasks plus 0.005x active task score multiplier for each active task
349
+
}elseif(activeTasks<2000){
350
+
activeTasksMultiplier=12+0.004*(activeTasks-1000);//12x active task score multiplier from 1,000 active tasks plus 0.004x active task score multiplier for each active task
351
+
}elseif(activeTasks<5000){
352
+
activeTasksMultiplier=16+0.002*(activeTasks-2000);//16x active task score multiplier from 2,000 active tasks plus 0.002x active task score multiplier for each active task
353
+
}elseif(activeTasks<10000){
354
+
activeTasksMultiplier=22+0.001*(activeTasks-5000);//22x active task score multiplier from 5,000 active tasks plus 0.001x active task score multiplier for each active task
355
+
}else{
356
+
activeTasksMultiplier=27;//27x active task score multiplier from 10,000 active tasks
357
+
}
324
358
//calculate amount of XP earned and points earned when task is completed
325
359
constxp: number=Math.max(
326
360
Math.floor(
@@ -345,7 +379,8 @@ export default createStore({
345
379
dailyStreakMultiplier*
346
380
dayTasksMultiplier*
347
381
levelMultiplier*
348
-
tasksMultiplier
382
+
tasksMultiplier*
383
+
activeTasksMultiplier
349
384
),
350
385
1
351
386
);//get at least 1 point when the task is completed
0 commit comments