diff --git a/.gitignore b/.gitignore index ad8e29a2f..b5b34f56a 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ docker-compose.override.yml server_config.yaml /graphs/ /codabench/ + +.DS_Store +.DS_Store? diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index a8cbf7546..fde3aedf9 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -474,6 +474,7 @@ def get_leaderboard(self, request, pk): if submission_key not in submissions_keys: submissions_keys[submission_key] = len(response['submissions']) response['submissions'].append({ + 'id': submission['id'], 'owner': submission['display_name'] or submission['owner'], 'scores': [], 'fact_sheet_answers': submission['fact_sheet_answers'], diff --git a/src/apps/competitions/urls.py b/src/apps/competitions/urls.py index 6f9e29ba0..a3d4419a9 100644 --- a/src/apps/competitions/urls.py +++ b/src/apps/competitions/urls.py @@ -12,4 +12,5 @@ path('edit//', views.CompetitionForm.as_view(), name="edit"), path('upload/', views.CompetitionUpload.as_view(), name="upload"), path('public/', views.CompetitionPublic.as_view(), name="public"), + path('/detailed_results//', views.CompetitionDetailedResults.as_view(), name="detailed_results"), ] diff --git a/src/apps/competitions/views.py b/src/apps/competitions/views.py index 09e30e822..7a4045f7f 100644 --- a/src/apps/competitions/views.py +++ b/src/apps/competitions/views.py @@ -33,3 +33,7 @@ def get_object(self, *args, **kwargs): if is_creator or is_collaborator or competition.published or valid_secret_key: return competition raise Http404() + + +class CompetitionDetailedResults(LoginRequiredMixin, TemplateView): + template_name = 'competitions/detailed_results.html' diff --git a/src/static/riot/competitions/detail/_detailed_results.tag b/src/static/riot/competitions/detail/_detailed_results.tag new file mode 100644 index 000000000..946657dc3 --- /dev/null +++ b/src/static/riot/competitions/detail/_detailed_results.tag @@ -0,0 +1,16 @@ + +

Detailed Results

+ + + +
\ No newline at end of file diff --git a/src/static/riot/competitions/detail/leaderboards.tag b/src/static/riot/competitions/detail/leaderboards.tag index 05dc2c3dd..f23d59a01 100644 --- a/src/static/riot/competitions/detail/leaderboards.tag +++ b/src/static/riot/competitions/detail/leaderboards.tag @@ -30,11 +30,13 @@ Task: { task.name } + # Participant {column.title} + Detailed Results @@ -55,6 +57,7 @@ { submission.owner } { submission.organization.name } { get_score(column, submission) } + Show detailed results @@ -67,6 +70,7 @@ self.filtered_columns = [] self.phase_id = null self.competition_id = null + self.enable_detailed_results = false self.get_score = function(column, submission) { if(column.task_id === -1){ @@ -117,6 +121,8 @@ CODALAB.api.get_leaderboard_for_render(self.phase_id) .done(responseData => { self.selected_leaderboard = responseData + + self.columns = [] // Make fake task and columns for Metadata so it can be filtered like columns if(self.selected_leaderboard.fact_sheet_keys){ @@ -154,6 +160,8 @@ CODALAB.events.on('competition_loaded', (competition) => { self.competition_id = competition.id self.opts.is_admin ? self.show_download = "visible": self.show_download = "hidden" + self.enable_detailed_results = competition.enable_detailed_results + }) CODALAB.events.on('submission_changed_on_leaderboard', self.update_leaderboard) diff --git a/src/templates/competitions/detailed_results.html b/src/templates/competitions/detailed_results.html new file mode 100644 index 000000000..e7c14cfa6 --- /dev/null +++ b/src/templates/competitions/detailed_results.html @@ -0,0 +1,4 @@ +{% extends "base.html" %} +{% block content %} + +{% endblock %} \ No newline at end of file