From ec4feddff46becadfa216c49699f7fb9d7e6344c Mon Sep 17 00:00:00 2001 From: ranjanmangla1 Date: Wed, 27 Mar 2024 20:49:55 +0530 Subject: [PATCH 1/5] added functionality to distinguish between different leaderboards Signed-off-by: ranjanmangla1 --- frontend/src/js/controllers/challengeCtrl.js | 59 +++++++++++++------ .../src/views/web/challenge/leaderboard.html | 19 +++--- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/frontend/src/js/controllers/challengeCtrl.js b/frontend/src/js/controllers/challengeCtrl.js index c8bf18a82b..1966fdf94e 100644 --- a/frontend/src/js/controllers/challengeCtrl.js +++ b/frontend/src/js/controllers/challengeCtrl.js @@ -933,28 +933,49 @@ parameters.method = 'GET'; parameters.data = {}; parameters.callback = { - onSuccess: function(response) { - var details = response.data; - vm.phaseSplits = details; - if (details.length == 0) { - vm.isChallengeLeaderboardPrivate = true; + onSuccess: function(response) { + var details = response.data; + var groupedPhases = {}; + + // Grouping phases by challenge_phase_name + details.forEach(function(phase) { + if (!groupedPhases[phase.challenge_phase_name]) { + groupedPhases[phase.challenge_phase_name] = []; } - for(var i=0; iLeaderboard class="fa fa-refresh text-highlight"> +
- - Phase: - {{key.challenge_phase_name}}, Split: - {{key.dataset_split_name}}   + + + {{ split.challenge_phase_name }}, {{ split.dataset_split_name }} + + + Leaderboard is private -
-
+ + +
From d1a5ecc5958ffe9d9450c9d1108fff6ead12f677 Mon Sep 17 00:00:00 2001 From: ranjanmangla1 Date: Sun, 5 May 2024 19:50:25 +0530 Subject: [PATCH 2/5] added tests for leaderboard update --- .../controllers-test/challengeCtrl.test.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend/tests/controllers-test/challengeCtrl.test.js b/frontend/tests/controllers-test/challengeCtrl.test.js index 1ebfa38326..d96eaeb5fc 100644 --- a/frontend/tests/controllers-test/challengeCtrl.test.js +++ b/frontend/tests/controllers-test/challengeCtrl.test.js @@ -546,7 +546,7 @@ describe('Unit tests for challenge controller', function () { selectExistTeamSuccess = null; challengePhaseSuccess = null; challengePhaseSplitSuccess = true; - + challengePhaseSplit = true; // get challenge phase split details response successResponse = [ @@ -563,10 +563,20 @@ describe('Unit tests for challenge controller', function () { spyOn(utilities, 'hideLoader'); vm.isParticipated = true; vm = createController(); + var response = { + data: successResponse + }; + vm.onSuccess(response); expect(vm.phaseSplits).toEqual(successResponse); - for(var i = 0; i < successResponse.length; i++) { - if (successResponse[i].visibility != challengePhaseVisibility.public) { - expect(vm.phaseSplits[i].showPrivate).toBeTruthy(); + for (var phaseName in vm.phaseSplits) { + if (vm.phaseSplits.hasOwnProperty(phaseName)) { + var phaseData = vm.phaseSplits[phaseName]; + + phaseData.forEach(function(phase) { + if (phase.visibility !== challengePhaseVisibility.public) { + expect(phase.showPrivate).toBeTruthy(); + } + }); } } expect(utilities.hideLoader).toHaveBeenCalled(); From a7a2665dfc16b711c8aaf217a03024b3185012f2 Mon Sep 17 00:00:00 2001 From: ranjanmangla1 Date: Sun, 5 May 2024 21:51:51 +0530 Subject: [PATCH 3/5] added tests for leaderboard update --- .../controllers-test/challengeCtrl.test.js | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/frontend/tests/controllers-test/challengeCtrl.test.js b/frontend/tests/controllers-test/challengeCtrl.test.js index d96eaeb5fc..ed9cdd28d1 100644 --- a/frontend/tests/controllers-test/challengeCtrl.test.js +++ b/frontend/tests/controllers-test/challengeCtrl.test.js @@ -547,41 +547,35 @@ describe('Unit tests for challenge controller', function () { challengePhaseSuccess = null; challengePhaseSplitSuccess = true; - challengePhaseSplit = true; - // get challenge phase split details response - successResponse = [ + var successResponse = [ { visibility: 2, host: 1 } ]; + var challengePhaseVisibility = { owner_and_host: 1, host: 2, public: 3, }; + spyOn(utilities, 'hideLoader'); - vm.isParticipated = true; + + // Create the controller vm = createController(); - var response = { - data: successResponse - }; - vm.onSuccess(response); + expect(vm.phaseSplits).toEqual(successResponse); - for (var phaseName in vm.phaseSplits) { - if (vm.phaseSplits.hasOwnProperty(phaseName)) { - var phaseData = vm.phaseSplits[phaseName]; - - phaseData.forEach(function(phase) { - if (phase.visibility !== challengePhaseVisibility.public) { - expect(phase.showPrivate).toBeTruthy(); - } - }); + + for(var i = 0; i < successResponse.length; i++) { + if (successResponse[i].visibility != challengePhaseVisibility.public) { + expect(vm.phaseSplits[i].showPrivate).toBeTruthy(); } } + expect(utilities.hideLoader).toHaveBeenCalled(); }); - + it('backend error of particular challenge phase split `challenges//challenge_phase_split`', function () { challengeSuccess = null; participantTeamChallengeSuccess = null; @@ -2724,4 +2718,4 @@ describe('Unit tests for challenge controller', function () { expect($mdDialogOpened).toBe(true); }); }); -}); +}); \ No newline at end of file From 38c11116817b0f6a17e54ad63644e6c45affc892 Mon Sep 17 00:00:00 2001 From: ranjanmangla1 Date: Sun, 5 May 2024 22:39:49 +0530 Subject: [PATCH 4/5] added tests for leaderboard update --- .../controllers-test/challengeCtrl.test.js | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/frontend/tests/controllers-test/challengeCtrl.test.js b/frontend/tests/controllers-test/challengeCtrl.test.js index ed9cdd28d1..9c967ac8d1 100644 --- a/frontend/tests/controllers-test/challengeCtrl.test.js +++ b/frontend/tests/controllers-test/challengeCtrl.test.js @@ -547,13 +547,15 @@ describe('Unit tests for challenge controller', function () { challengePhaseSuccess = null; challengePhaseSplitSuccess = true; - var successResponse = [ - { - visibility: 2, - host: 1 - } - ]; - + var successResponse = { + phaseGroupName1: [ + { + visibility: 2, + host: 1 + }, + ], + }; + var challengePhaseVisibility = { owner_and_host: 1, host: 2, @@ -564,18 +566,25 @@ describe('Unit tests for challenge controller', function () { // Create the controller vm = createController(); + vm.onSuccess({ data: successResponse }); - expect(vm.phaseSplits).toEqual(successResponse); - - for(var i = 0; i < successResponse.length; i++) { - if (successResponse[i].visibility != challengePhaseVisibility.public) { - expect(vm.phaseSplits[i].showPrivate).toBeTruthy(); + // Iterate over phase groups and splits to check visibility and private flags + for (var phaseName in vm.phaseSplits) { + if (vm.phaseSplits.hasOwnProperty(phaseName)) { + var phaseData = vm.phaseSplits[phaseName]; + + phaseData.forEach(function(phase) { + if (phase.visibility !== challengePhaseVisibility.public) { + expect(phase.showPrivate).toBeTruthy(); + } + }); } } expect(utilities.hideLoader).toHaveBeenCalled(); }); + it('backend error of particular challenge phase split `challenges//challenge_phase_split`', function () { challengeSuccess = null; participantTeamChallengeSuccess = null; From f2f6093bcad68ed24fa9eef3995faacc54d6880c Mon Sep 17 00:00:00 2001 From: ranjanmangla1 Date: Sun, 5 May 2024 23:10:16 +0530 Subject: [PATCH 5/5] added tests for leaderboard update --- frontend/src/js/controllers/challengeCtrl.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/js/controllers/challengeCtrl.js b/frontend/src/js/controllers/challengeCtrl.js index 1966fdf94e..785cc07a87 100644 --- a/frontend/src/js/controllers/challengeCtrl.js +++ b/frontend/src/js/controllers/challengeCtrl.js @@ -950,8 +950,7 @@ if (Object.keys(vm.phaseSplits).length === 0) { vm.isChallengeLeaderboardPrivate = true; } - - // Iterate through each phase + for (var phaseName in vm.phaseSplits) { if (vm.phaseSplits.hasOwnProperty(phaseName)) { var phaseData = vm.phaseSplits[phaseName];