From 4c4fb02a0ea1d683e3255bcf556fe9b9d48fc8d7 Mon Sep 17 00:00:00 2001 From: Chaiyawut Thengket Date: Mon, 20 Nov 2023 11:55:52 +0700 Subject: [PATCH] fix percent todo and reccurence compare with all task in that week --- backend/dashboard/tests.py | 3 ++- backend/dashboard/views.py | 20 +++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/backend/dashboard/tests.py b/backend/dashboard/tests.py index 359baea..24d58e3 100644 --- a/backend/dashboard/tests.py +++ b/backend/dashboard/tests.py @@ -5,10 +5,11 @@ from django.utils import timezone from rest_framework.test import APIClient from tasks.models import Todo, RecurrenceTask + class DashboardStatsAPITestCase(TestCase): def setUp(self): # Create a test user - self.user = User.objects.create_user(username='testuser', password='testpassword') + self.user = User.objects.create_user(first_name='test', email='user@mail.co.th', username='testuser', password='testpassword') # Create test tasks self.todo = Todo.objects.create(user=self.user, title='Test Todo', created_at=timezone.now()) diff --git a/backend/dashboard/views.py b/backend/dashboard/views.py index 844c1af..241c023 100644 --- a/backend/dashboard/views.py +++ b/backend/dashboard/views.py @@ -99,17 +99,31 @@ class WeeklyStatsAPIView(APIView): last_7_days_stats = self.calculate_stats(user, last_7_days_start, last_7_days_end) # Calculate the percentage change - percent_change = self.calculate_percent_change( + percent_change_over_all = self.calculate_percent_change( current_day_stats['overall_completion_rate'], last_7_days_stats['overall_completion_rate'] ) + # Calculate percentage change for completed_todo_count + percent_change_todo = self.calculate_percent_change( + current_day_stats['completed_todo_count'], + last_7_days_stats['completed_todo_count'] + ) + + # Calculate percentage change for completed_recurrence_task_count + percent_change_recurrence = self.calculate_percent_change( + current_day_stats['completed_recurrence_task_count'], + last_7_days_stats['completed_recurrence_task_count'] + ) + # Append the daily statistics to the list weekly_stats.append({ 'day_of_week': current_day_start.strftime('%A'), 'current_day_stats': current_day_stats, 'last_7_days_stats': last_7_days_stats, - 'percent_change': percent_change, + 'percent_change_over_all': percent_change_over_all, + 'percent_change_todo': percent_change_todo, + 'percent_change_recurrence': percent_change_recurrence, }) response_data = { @@ -155,4 +169,4 @@ class WeeklyStatsAPIView(APIView): else: percent_change = current_value * 100 # Consider infinite change when the last value is zero - return round(percent_change, 2) \ No newline at end of file + return round(percent_change, 2)