From 40998ce899c44e41b4da235294c066d55e920ea4 Mon Sep 17 00:00:00 2001 From: hj Date: Thu, 20 Jun 2024 16:56:17 +0530 Subject: [PATCH 1/9] Add tabs for challenges --- frontend/src/css/modules/challenge.scss | 39 +++++++++++++++++++++- frontend/src/views/web/challenge-list.html | 34 +++++++++++++++++-- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/frontend/src/css/modules/challenge.scss b/frontend/src/css/modules/challenge.scss index 337aa741d6..09dc016c8c 100644 --- a/frontend/src/css/modules/challenge.scss +++ b/frontend/src/css/modules/challenge.scss @@ -370,4 +370,41 @@ md-select .md-select-value span:first-child:after { .filter-icon { padding: 10px; -} \ No newline at end of file +} +.no-margin { + margin: 0px; +} +.nav-underline { + display: flex; + justify-content: space-around; + border-bottom: 1px solid #e0e0e0; + li { + margin-bottom: -0.5%; + } + + .nav-item { + flex: 1; + text-align: center; + color: #9e9e9e; + + .nav-link { + display: block; + padding: 10px 0; + color: #9e9e9e; + text-decoration: none; + border: none; + background-color: transparent; + font-weight: bold; + transition: border-bottom 0.3s ease, color 0.3s ease; + + &.active { + border-bottom: 2px solid #000; + color: #000; + } + + &:hover { + color: #000; + } + } + } +} diff --git a/frontend/src/views/web/challenge-list.html b/frontend/src/views/web/challenge-list.html index b0e1247c4c..0ab17fc9ac 100644 --- a/frontend/src/views/web/challenge-list.html +++ b/frontend/src/views/web/challenge-list.html @@ -1,6 +1,30 @@
+

All Challenges

+ + + -
Ongoing Challenges
+ @@ -43,7 +68,7 @@ -
Upcoming Challenges
+ + -
Past Challenges
+
None
@@ -91,6 +118,7 @@
View Details  
+
From 5a33f1ad9e97d8fbb3f016940a238d91d2f58d34 Mon Sep 17 00:00:00 2001 From: hj Date: Thu, 27 Jun 2024 11:30:03 +0530 Subject: [PATCH 2/9] Optimized api call & added blank space in SCSS --- frontend/src/css/modules/challenge.scss | 1 + .../src/js/controllers/challengeListCtrl.js | 26 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/frontend/src/css/modules/challenge.scss b/frontend/src/css/modules/challenge.scss index 09dc016c8c..2e921c49a3 100644 --- a/frontend/src/css/modules/challenge.scss +++ b/frontend/src/css/modules/challenge.scss @@ -408,3 +408,4 @@ md-select .md-select-value span:first-child:after { } } } + diff --git a/frontend/src/js/controllers/challengeListCtrl.js b/frontend/src/js/controllers/challengeListCtrl.js index 6c9db6e240..42e22e0c21 100644 --- a/frontend/src/js/controllers/challengeListCtrl.js +++ b/frontend/src/js/controllers/challengeListCtrl.js @@ -27,7 +27,15 @@ vm.noneCurrentChallenge = false; vm.noneUpcomingChallenge = false; vm.nonePastChallenge = false; - vm.getAllResults = function(parameters, resultsArray, typ){ + vm.getAllResults = function(parameters, resultsArray, typ,status){ + if (status === 'current') { + parameters.url = 'challenges/challenge/present/approved/public'; + } else if (status === 'upcoming') { + parameters.url = 'challenges/challenge/future/approved/public'; + } else if (status === 'past') { + parameters.url = 'challenges/challenge/past/approved/public'; + } + parameters.method = 'GET'; parameters.callback = { onSuccess: function(response) { var data = response.data; @@ -87,21 +95,11 @@ } // calls for ongoing challenges - parameters.url = 'challenges/challenge/present/approved/public'; - parameters.method = 'GET'; - - vm.getAllResults(parameters, vm.currentList, "noneCurrentChallenge"); + vm.getAllResults(parameters, vm.currentList, "noneCurrentChallenge", 'current'); // calls for upcoming challenges - parameters.url = 'challenges/challenge/future/approved/public'; - parameters.method = 'GET'; - - vm.getAllResults(parameters, vm.upcomingList, "noneUpcomingChallenge"); - + vm.getAllResults(parameters, vm.upcomingList, "noneUpcomingChallenge", 'upcoming'); // calls for past challenges - parameters.url = 'challenges/challenge/past/approved/public'; - parameters.method = 'GET'; - - vm.getAllResults(parameters, vm.pastList, "nonePastChallenge"); + vm.getAllResults(parameters, vm.pastList, "nonePastChallenge", 'past'); vm.scrollUp = function() { angular.element($window).bind('scroll', function() { From 291732995a359bb40f6725ca3fe86aff4c4625b1 Mon Sep 17 00:00:00 2001 From: hj Date: Thu, 27 Jun 2024 14:29:05 +0530 Subject: [PATCH 3/9] revert changes to js --- .../src/js/controllers/challengeListCtrl.js | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/frontend/src/js/controllers/challengeListCtrl.js b/frontend/src/js/controllers/challengeListCtrl.js index 42e22e0c21..a56e660cf2 100644 --- a/frontend/src/js/controllers/challengeListCtrl.js +++ b/frontend/src/js/controllers/challengeListCtrl.js @@ -27,14 +27,7 @@ vm.noneCurrentChallenge = false; vm.noneUpcomingChallenge = false; vm.nonePastChallenge = false; - vm.getAllResults = function(parameters, resultsArray, typ,status){ - if (status === 'current') { - parameters.url = 'challenges/challenge/present/approved/public'; - } else if (status === 'upcoming') { - parameters.url = 'challenges/challenge/future/approved/public'; - } else if (status === 'past') { - parameters.url = 'challenges/challenge/past/approved/public'; - } + vm.getAllResults = function(parameters, resultsArray, typ){ parameters.method = 'GET'; parameters.callback = { onSuccess: function(response) { @@ -95,11 +88,16 @@ } // calls for ongoing challenges - vm.getAllResults(parameters, vm.currentList, "noneCurrentChallenge", 'current'); + parameters.url = 'challenges/challenge/present/approved/public'; + vm.getAllResults(parameters, vm.currentList, "noneCurrentChallenge"); + // calls for upcoming challenges - vm.getAllResults(parameters, vm.upcomingList, "noneUpcomingChallenge", 'upcoming'); + parameters.url = 'challenges/challenge/future/approved/public'; + vm.getAllResults(parameters, vm.upcomingList, "noneUpcomingChallenge"); + // calls for past challenges - vm.getAllResults(parameters, vm.pastList, "nonePastChallenge", 'past'); + parameters.url = 'challenges/challenge/past/approved/public'; + vm.getAllResults(parameters, vm.pastList, "nonePastChallenge"); vm.scrollUp = function() { angular.element($window).bind('scroll', function() { From e0ddaf3e55597d6a1c7aca7d1ee1346b6b3f0e43 Mon Sep 17 00:00:00 2001 From: lazyperson1020 Date: Tue, 25 Mar 2025 19:05:12 +0530 Subject: [PATCH 4/9] Add new line --- frontend/src/js/controllers/challengeListCtrl.js | 1 + frontend/src/views/web/challenge-list.html | 1 + 2 files changed, 2 insertions(+) diff --git a/frontend/src/js/controllers/challengeListCtrl.js b/frontend/src/js/controllers/challengeListCtrl.js index a56e660cf2..deaef813cd 100644 --- a/frontend/src/js/controllers/challengeListCtrl.js +++ b/frontend/src/js/controllers/challengeListCtrl.js @@ -111,3 +111,4 @@ } })(); + diff --git a/frontend/src/views/web/challenge-list.html b/frontend/src/views/web/challenge-list.html index 0ab17fc9ac..e7aaa2c731 100644 --- a/frontend/src/views/web/challenge-list.html +++ b/frontend/src/views/web/challenge-list.html @@ -123,3 +123,4 @@ + From 525535b5645a37338caed50e01dafddd6ca96dbc Mon Sep 17 00:00:00 2001 From: lazyperson1020 Date: Fri, 28 Mar 2025 17:20:44 +0530 Subject: [PATCH 5/9] tests --- .../src/js/controllers/challengeListCtrl.js | 2 +- .../challengeListCtrl.test.js | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/frontend/src/js/controllers/challengeListCtrl.js b/frontend/src/js/controllers/challengeListCtrl.js index deaef813cd..525e19c8b6 100644 --- a/frontend/src/js/controllers/challengeListCtrl.js +++ b/frontend/src/js/controllers/challengeListCtrl.js @@ -60,7 +60,7 @@ var url = data.next; var slicedUrl = url.substring(url.indexOf('challenges/challenge'), url.length); parameters.url = slicedUrl; - vm.getAllResults(parameters, resultsArray); + vm.getAllResults(parameters, resultsArray, typ); } else { utilities.hideLoader(); if (resultsArray.length === 0) { diff --git a/frontend/tests/controllers-test/challengeListCtrl.test.js b/frontend/tests/controllers-test/challengeListCtrl.test.js index 92df7f1c96..1d89fb7553 100644 --- a/frontend/tests/controllers-test/challengeListCtrl.test.js +++ b/frontend/tests/controllers-test/challengeListCtrl.test.js @@ -316,6 +316,27 @@ describe('Unit tests for challenge list controller', function () { expect(vm.getAllResults).toHaveBeenCalledTimes(2); }); - + it('ensures method is set to GET inside getAllResults function', function() { + isPresentChallengeSuccess = true; + isUpcomingChallengeSucess = null; + isPastChallengeSuccess = null; + successResponse = { + next: null, + results: [] + }; + + vm = createController(); + spyOn(utilities, 'sendRequest').and.callThrough(); + + const parameters = { + url: 'challenges/challenge/present/approved/public' + }; + + vm.getAllResults(parameters, [], 'noneCurrentChallenge'); + + expect(utilities.sendRequest).toHaveBeenCalled(); + expect(utilities.sendRequest.calls.argsFor(0)[0].method).toEqual('GET'); + }); }); }); + From 46f26a2d2a23f247f9c521ed2b0a8dae5b6159a2 Mon Sep 17 00:00:00 2001 From: lazyperson1020 Date: Fri, 28 Mar 2025 18:06:08 +0530 Subject: [PATCH 6/9] no change --- frontend/tests/controllers-test/challengeListCtrl.test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/tests/controllers-test/challengeListCtrl.test.js b/frontend/tests/controllers-test/challengeListCtrl.test.js index 1d89fb7553..c7a81d0227 100644 --- a/frontend/tests/controllers-test/challengeListCtrl.test.js +++ b/frontend/tests/controllers-test/challengeListCtrl.test.js @@ -340,3 +340,4 @@ describe('Unit tests for challenge list controller', function () { }); }); + From 135d496857dbe4dddae22744987b6ed526b71f43 Mon Sep 17 00:00:00 2001 From: lazyperson1020 Date: Fri, 28 Mar 2025 18:29:42 +0530 Subject: [PATCH 7/9] no change --- frontend/tests/controllers-test/challengeListCtrl.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/tests/controllers-test/challengeListCtrl.test.js b/frontend/tests/controllers-test/challengeListCtrl.test.js index c7a81d0227..be2b8eb249 100644 --- a/frontend/tests/controllers-test/challengeListCtrl.test.js +++ b/frontend/tests/controllers-test/challengeListCtrl.test.js @@ -339,5 +339,3 @@ describe('Unit tests for challenge list controller', function () { }); }); }); - - From 8723f08b5a1703b0e9fff67866f805106d7cc19c Mon Sep 17 00:00:00 2001 From: lazyperson1020 Date: Fri, 28 Mar 2025 19:36:36 +0530 Subject: [PATCH 8/9] added tests --- .../challengeListCtrl.test.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/frontend/tests/controllers-test/challengeListCtrl.test.js b/frontend/tests/controllers-test/challengeListCtrl.test.js index be2b8eb249..501c201909 100644 --- a/frontend/tests/controllers-test/challengeListCtrl.test.js +++ b/frontend/tests/controllers-test/challengeListCtrl.test.js @@ -337,5 +337,32 @@ describe('Unit tests for challenge list controller', function () { expect(utilities.sendRequest).toHaveBeenCalled(); expect(utilities.sendRequest.calls.argsFor(0)[0].method).toEqual('GET'); }); + it('tests scrollUp function binding to window scroll events', function() { + vm = createController(); + + var mockElement = { + bind: jasmine.createSpy('bind') + }; + + spyOn(angular, 'element').and.returnValue(mockElement); + + vm.scrollUp(); + + expect(angular.element).toHaveBeenCalled(); + + expect(mockElement.bind).toHaveBeenCalledWith('scroll', jasmine.any(Function)); + + var scrollCallback = mockElement.bind.calls.mostRecent().args[1]; + + spyOn(utilities, 'showButton'); + var mockScrollContext = { pageYOffset: 100 }; + scrollCallback.call(mockScrollContext); + expect(utilities.showButton).toHaveBeenCalled(); + + spyOn(utilities, 'hideButton'); + mockScrollContext.pageYOffset = 99; + scrollCallback.call(mockScrollContext); + expect(utilities.hideButton).toHaveBeenCalled(); + }); }); }); From 836749febad499d19c99cf58de058ababef0a780 Mon Sep 17 00:00:00 2001 From: lazyperson1020 Date: Fri, 28 Mar 2025 20:29:17 +0530 Subject: [PATCH 9/9] changes --- frontend/src/js/controllers/challengeListCtrl.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/js/controllers/challengeListCtrl.js b/frontend/src/js/controllers/challengeListCtrl.js index 525e19c8b6..9f061c2249 100644 --- a/frontend/src/js/controllers/challengeListCtrl.js +++ b/frontend/src/js/controllers/challengeListCtrl.js @@ -90,7 +90,6 @@ // calls for ongoing challenges parameters.url = 'challenges/challenge/present/approved/public'; vm.getAllResults(parameters, vm.currentList, "noneCurrentChallenge"); - // calls for upcoming challenges parameters.url = 'challenges/challenge/future/approved/public'; vm.getAllResults(parameters, vm.upcomingList, "noneUpcomingChallenge");