From 8939a67d9ea80e942cb098cef4d0c8c45e4e6031 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 12 May 2023 13:19:41 +0500 Subject: [PATCH 1/5] Leaderboard show total entries and date of last entry --- src/apps/api/views/competitions.py | 12 ++++++++++++ src/static/riot/competitions/detail/leaderboards.tag | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index 4f6288da9..77eadf990 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -501,6 +501,16 @@ def get_leaderboard(self, request, pk): columns = [col for col in query['columns']] submissions_keys = {} for submission in query['submissions']: + + # count number of entried/ number of submissions for user of the submission + num_entries = Submission.objects.filter(owner__username=submission['owner']).count() + + # get date of last submission + last_entry_date = Submission.objects.filter(owner__username=submission['owner'])\ + .values('created_when')\ + .order_by('-created_when')[0]['created_when']\ + .strftime('%Y-%m-%d %H:%M:%S') + submission_key = f"{submission['owner']}{submission['parent'] or submission['id']}" if submission_key not in submissions_keys: submissions_keys[submission_key] = len(response['submissions']) @@ -511,6 +521,8 @@ def get_leaderboard(self, request, pk): 'fact_sheet_answers': submission['fact_sheet_answers'], 'slug_url': submission['slug_url'], 'organization': submission['organization'], + 'num_entries': num_entries, + 'last_entry_date': last_entry_date }) for score in submission['scores']: diff --git a/src/static/riot/competitions/detail/leaderboards.tag b/src/static/riot/competitions/detail/leaderboards.tag index 6e476108f..1befeafdf 100644 --- a/src/static/riot/competitions/detail/leaderboards.tag +++ b/src/static/riot/competitions/detail/leaderboards.tag @@ -35,7 +35,9 @@ # Participant - {column.title} + Entries + Date of last entry + {column.title} Detailed Results @@ -55,6 +57,8 @@ {index + 1} { submission.owner } + {submission.num_entries} + {submission.last_entry_date} { submission.organization.name } { get_score(column, submission) } Show detailed results @@ -120,6 +124,7 @@ self.update_leaderboard = () => { CODALAB.api.get_leaderboard_for_render(self.phase_id) .done(responseData => { + console.log(responseData) self.selected_leaderboard = responseData self.columns = [] // Make fake task and columns for Metadata so it can be filtered like columns From 044e48b235a52d0d97e307415b95cf7796621a27 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 12 May 2023 15:36:46 +0500 Subject: [PATCH 2/5] test updated to test the right td for prediction score --- src/tests/functional/test_submissions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/functional/test_submissions.py b/src/tests/functional/test_submissions.py index 5bc11af8a..8f13064b4 100644 --- a/src/tests/functional/test_submissions.py +++ b/src/tests/functional/test_submissions.py @@ -73,7 +73,7 @@ def _run_submission_and_add_to_leaderboard(self, competition_zip_path, submissio # The leaderboard table lists our submission prediction_score = Submission.objects.get(pk=submission_id).scores.first().score - assert Decimal(self.find('leaderboards table tbody tr:nth-of-type(1) td:nth-of-type(3)').text) == round(Decimal(prediction_score), precision) + assert Decimal(self.find('leaderboards table tbody tr:nth-of-type(1) td:nth-of-type(5)').text) == round(Decimal(prediction_score), precision) def test_v15_iris_result_submission_end_to_end(self): self._run_submission_and_add_to_leaderboard('competition_15_iris.zip', 'submission_15_iris_result.zip', '======= Set 1 (Iris_test)', has_solutions=False, precision=4) From 3f070c2e0dbf5a04754248a91dd8755b6fff9bbd Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 12 May 2023 16:40:22 +0500 Subject: [PATCH 3/5] console log removed --- src/static/riot/competitions/detail/leaderboards.tag | 1 - 1 file changed, 1 deletion(-) diff --git a/src/static/riot/competitions/detail/leaderboards.tag b/src/static/riot/competitions/detail/leaderboards.tag index 1befeafdf..16aa8e60f 100644 --- a/src/static/riot/competitions/detail/leaderboards.tag +++ b/src/static/riot/competitions/detail/leaderboards.tag @@ -124,7 +124,6 @@ self.update_leaderboard = () => { CODALAB.api.get_leaderboard_for_render(self.phase_id) .done(responseData => { - console.log(responseData) self.selected_leaderboard = responseData self.columns = [] // Make fake task and columns for Metadata so it can be filtered like columns From 748805009d17e8252ea9cbab0b9f38633a098b25 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 12 May 2023 16:42:04 +0500 Subject: [PATCH 4/5] date format change to just date YYY-MM-DD --- src/apps/api/views/competitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index 77eadf990..2a9e676d7 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -509,7 +509,7 @@ def get_leaderboard(self, request, pk): last_entry_date = Submission.objects.filter(owner__username=submission['owner'])\ .values('created_when')\ .order_by('-created_when')[0]['created_when']\ - .strftime('%Y-%m-%d %H:%M:%S') + .strftime('%Y-%m-%d') submission_key = f"{submission['owner']}{submission['parent'] or submission['id']}" if submission_key not in submissions_keys: From d10b2588697f7202bc72b723dd827296e667ad41 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 12 May 2023 18:31:24 +0500 Subject: [PATCH 5/5] num_entries fixed, ui changed to adjust factsheet answers --- src/apps/api/views/competitions.py | 8 ++++---- src/static/riot/competitions/detail/leaderboards.tag | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index 2a9e676d7..666a2f5ab 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -502,11 +502,11 @@ def get_leaderboard(self, request, pk): submissions_keys = {} for submission in query['submissions']: - # count number of entried/ number of submissions for user of the submission - num_entries = Submission.objects.filter(owner__username=submission['owner']).count() + # count number of entries/number of submissions for the owner of this submission for this phase + num_entries = Submission.objects.filter(owner__username=submission['owner'], phase=phase).count() - # get date of last submission - last_entry_date = Submission.objects.filter(owner__username=submission['owner'])\ + # get date of last submission by the owner of this submission for this phase + last_entry_date = Submission.objects.filter(owner__username=submission['owner'], phase=phase)\ .values('created_when')\ .order_by('-created_when')[0]['created_when']\ .strftime('%Y-%m-%d') diff --git a/src/static/riot/competitions/detail/leaderboards.tag b/src/static/riot/competitions/detail/leaderboards.tag index 16aa8e60f..d289060ef 100644 --- a/src/static/riot/competitions/detail/leaderboards.tag +++ b/src/static/riot/competitions/detail/leaderboards.tag @@ -28,7 +28,7 @@ Task: - + { task.name }