Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 2f4b1f4

Browse files
author
vikasrohit
committed
Merge pull request #370 from appirio-tech/feature/non-winner-state-past-challenges
Feature/non winner state past challenges
2 parents 47c21d3 + 74774fc commit 2f4b1f4

12 files changed

+447
-236
lines changed

app/directives/challenge-tile/challenge-tile.directive.jade

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,10 @@
7575
p BLAH
7676

7777
.challenge-details(ng-switch-when="DEVELOP")
78-
p.place(ng-class="{ 'first-place': challenge.wonFirst }") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
79-
80-
.challenge-score
81-
p.score {{challenge.userDetails.submissionReviewScore/100 | percentage}}
82-
83-
p Review Score
78+
dev-challenge-user-place(challenge="challenge", view="view")
8479

8580
.challenge-details(ng-switch-when="DESIGN")
86-
p.place(ng-class="{ 'first-place': challenge.wonFirst }") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
87-
88-
.thumbnail(ng-click="openLightbox()")
89-
img(ng-src="http://studio.{{DOMAIN}}/studio.jpg?module=DownloadSubmission&sbmid={{challenge.thumbnailId}}&sbt=full", fallback-src="/images/ico-picture.svg")
90-
91-
.thumbnail-gallery(ng-click="challenge.showLightbox()")
92-
.gallery-icon
93-
94-
.num-images 1 image
81+
design-challenge-user-place(challenge="challenge", view="view")
9582

9683
.challenge.list-view(ng-show="view=='list'", ng-class="challenge.track")
9784
.active-challenge(ng-show="challenge.status === 'ACTIVE'")
@@ -163,28 +150,7 @@
163150
p Total Points
164151

165152
.challenge-details(ng-switch-when="DEVELOP")
166-
.place-date
167-
p.place(ng-class="{ 'first-place': challenge.wonFirst }") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
168-
p.date-completed {{challenge.submissionEndDate | date : 'MMMM yyyy'}}
169-
170-
.winner-ribbon(ng-show="challenge.wonFirst")
171-
172-
.challenge-score
173-
p.score {{challenge.userDetails.submissionReviewScore/100 | percentage}}
174-
175-
p Review Score
153+
dev-challenge-user-place(challenge="challenge", view="view")
176154

177155
.challenge-details(ng-switch-when="DESIGN")
178-
.place-date
179-
p.place(ng-class="{ 'first-place': challenge.wonFirst }") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
180-
p.date-completed {{challenge.submissionEndDate | date : 'MMMM yyyy'}}
181-
182-
.winner-ribbon(ng-show="challenge.wonFirst")
183-
184-
.thumbnail(ng-click="openLightbox()")
185-
img(ng-src="http://studio.{{DOMAIN}}/studio.jpg?module=DownloadSubmission&sbmid={{challenge.thumbnailId}}&sbt=full", fallback-src="/images/ico-picture.svg")
186-
187-
.thumbnail-gallery(ng-click="challenge.showLightbox()")
188-
.gallery-icon
189-
190-
.num-images 1 image
156+
design-challenge-user-place(challenge="challenge", view="view")

app/directives/challenge-tile/challenge-tile.directive.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,6 @@
2323
$scope.challenge.subTrack === 'MARATHON_MATCH') {
2424
ChallengeService.processPastMarathonMatch($scope.challenge);
2525
}
26-
if ($scope.challenge.track == 'DESIGN' && $scope.challenge.userDetails.submissions && $scope.challenge.userDetails.submissions.length > 0) {
27-
$scope.challenge.thumbnailId = $scope.challenge.userDetails.submissions[0].id;
28-
29-
$scope.challenge.highestPlacement = _.max($scope.challenge.userDetails.submissions, 'placement').placement;
30-
31-
if ($scope.challenge.highestPlacement == 1) {
32-
$scope.challenge.wonFirst = true;
33-
}
34-
}
3526
}
3627

3728
function openLightbox() {
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
(function() {
2+
'use strict';
3+
4+
angular.module('tcUIComponents')
5+
.directive('devChallengeUserPlace', devChallengeUserPlace)
6+
.directive('designChallengeUserPlace', designChallengeUserPlace);
7+
8+
function devChallengeUserPlace() {
9+
return {
10+
restrict: 'E',
11+
templateUrl: 'directives/challenge-user-place/dev-challenge-user-place.directive.html',
12+
scope: {
13+
challenge: '=',
14+
view: '='
15+
},
16+
controller: ['$scope', 'CONSTANTS', '$attrs', 'ChallengeService',
17+
function($scope, CONSTANTS, $attrs, ChallengeService) {
18+
$scope.DOMAIN = CONSTANTS.domain;
19+
20+
activate();
21+
22+
function activate() {
23+
}
24+
}]
25+
};
26+
}
27+
28+
function designChallengeUserPlace() {
29+
return {
30+
restrict: 'E',
31+
templateUrl: 'directives/challenge-user-place/design-challenge-user-place.directive.html',
32+
scope: {
33+
challenge: '=',
34+
view: '='
35+
},
36+
controller: ['$scope', 'CONSTANTS', '$attrs', 'ChallengeService',
37+
function($scope, CONSTANTS, $attrs, ChallengeService) {
38+
$scope.DOMAIN = CONSTANTS.domain;
39+
40+
activate();
41+
42+
function activate() {
43+
if ($scope.challenge.userDetails.submissions && $scope.challenge.userDetails.submissions.length > 0) {
44+
$scope.challenge.thumbnailId = $scope.challenge.userDetails.submissions[0].id;
45+
46+
$scope.challenge.highestPlacement = _.max($scope.challenge.userDetails.submissions, 'placement').placement;
47+
48+
if ($scope.challenge.highestPlacement == 1) {
49+
$scope.challenge.wonFirst = true;
50+
}
51+
}
52+
}
53+
}]
54+
};
55+
}
56+
})();
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.tile-view(ng-show="view === 'tile'")
2+
p.place(ng-class="{ 'first-place': challenge.wonFirst }", ng-show="challenge.highestPlacement") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
3+
p.place(ng-show="challenge.userStatus === 'NOT_FINISHED'") Didn't Finish
4+
p.place(ng-show="challenge.userStatus === 'PASSED_SCREENING'") Passed Screening
5+
6+
.thumbnail(ng-click="openLightbox()", ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
7+
img(ng-src="http://studio.{{DOMAIN}}/studio.jpg?module=DownloadSubmission&sbmid={{challenge.thumbnailId}}&sbt=full", fallback-src="/images/ico-picture.svg")
8+
9+
.thumbnail-gallery(ng-click="challenge.showLightbox()")
10+
.gallery-icon
11+
12+
.num-images 1 image
13+
14+
.list-view(ng-show="view === 'list'")
15+
.place-date
16+
p.place(ng-class="{ 'first-place': challenge.wonFirst }", ng-show="challenge.highestPlacement") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
17+
p.place(ng-show="challenge.userStatus === 'NOT_FINISHED'") Didn't Finish
18+
p.place(ng-show="challenge.userStatus === 'PASSED_SCREENING'") Passed Screening
19+
p.date-completed {{challenge.submissionEndDate | date : 'MMMM yyyy'}}
20+
21+
.winner-ribbon(ng-show="challenge.wonFirst")
22+
23+
.thumbnail(ng-click="openLightbox()", ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
24+
img(ng-src="http://studio.{{DOMAIN}}/studio.jpg?module=DownloadSubmission&sbmid={{challenge.thumbnailId}}&sbt=full", fallback-src="/images/ico-picture.svg")
25+
26+
.thumbnail-gallery(ng-click="challenge.showLightbox()")
27+
.gallery-icon
28+
29+
.num-images 1 image
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
.tile-view(ng-show="view === 'tile'")
2+
p.place(ng-class="{ 'first-place': challenge.wonFirst }", ng-show="challenge.highestPlacement") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
3+
p.place(ng-show="challenge.userStatus === 'NOT_FINISHED'") Didn't Finish
4+
p.place(ng-show="challenge.userStatus === 'PASSED_SCREENING'") Passed Screening
5+
6+
.challenge-score(ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
7+
p.score {{challenge.userDetails.submissionReviewScore/100 | percentage}}
8+
9+
p Review Score
10+
11+
.list-view(ng-show="view === 'list'")
12+
.place-date
13+
p.place(ng-class="{ 'first-place': challenge.wonFirst }", ng-show="challenge.highestPlacement") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
14+
p.place(ng-show="challenge.userStatus === 'NOT_FINISHED'") Didn't Finish
15+
p.place(ng-show="challenge.userStatus === 'PASSED_SCREENING'") Passed Screening
16+
p.date-completed {{challenge.submissionEndDate | date : 'MMMM yyyy'}}
17+
18+
.winner-ribbon(ng-show="challenge.wonFirst")
19+
20+
.challenge-score(ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
21+
p.score {{challenge.userDetails.submissionReviewScore/100 | percentage}}
22+
23+
p Review Score

app/index.jade

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ html
6969
link(rel="stylesheet", href="assets/css/directives/external-link-data.css")
7070
link(rel="stylesheet", href="assets/css/directives/external-account.css")
7171
link(rel="stylesheet", href="assets/css/directives/distribution-graph.css")
72+
link(rel="stylesheet", href="assets/css/directives/dev-challenge-user-place.css")
7273
link(rel="stylesheet", href="assets/css/directives/design-lightbox.css")
74+
link(rel="stylesheet", href="assets/css/directives/design-challenge-user-place.css")
7375
link(rel="stylesheet", href="assets/css/directives/challenge-tile.css")
7476
link(rel="stylesheet", href="assets/css/directives/badge-tooltip.css")
7577
link(rel="stylesheet", href="assets/css/account/reset-password.css")
@@ -155,6 +157,7 @@ html
155157
script(src="directives/badges/badge-tooltip.directive.js")
156158
script(src="directives/busy-button/busy-button.directive.js")
157159
script(src="directives/challenge-tile/challenge-tile.directive.js")
160+
script(src="directives/challenge-user-place/challenge-user-place.directive.js")
158161
script(src="directives/distribution-graph/distribution-graph.directive.js")
159162
script(src="directives/external-account/external-account.directive.js")
160163
script(src="directives/focus-on.directive.js")

app/my-challenges/my-challenges.controller.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@
8181

8282
return ChallengeService.getUserChallenges(handle, params)
8383
.then(function(challenges){
84-
ChallengeService.processActiveDevDesignChallenges(challenges);
84+
if (vm.statusFilter == 'active') {
85+
ChallengeService.processActiveDevDesignChallenges(challenges);
86+
} else {
87+
ChallengeService.processPastChallenges(challenges);
88+
}
8589
if (challenges.length > 0) {
8690
vm.myChallenges = challenges;
8791
vm.userHasChallenges = true;

app/services/challenge.service.js

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,36 @@
183183

184184
function processPastChallenges(challenges) {
185185
angular.forEach(challenges, function(challenge) {
186-
if (challenge.userDetails && Array.isArray(challenge.userDetails.winningPlacements)) {
187-
challenge.highestPlacement = _.max(challenge.userDetails.winningPlacements);
188-
challenge.wonFirst = challenge.highestPlacement == 1;
186+
if (challenge.userDetails) {
187+
// TODO placement logic for challenges can be moved to their corresponding user place directive
188+
// process placement for challenges having winningPlacements array in response
189+
if (Array.isArray(challenge.userDetails.winningPlacements)) {
190+
challenge.highestPlacement = _.max(challenge.userDetails.winningPlacements);
191+
challenge.wonFirst = challenge.highestPlacement == 1;
192+
if (challenge.highestPlacement === 0) {
193+
challenge.highestPlacement = null;
194+
}
195+
}
196+
// process placement for design challenges
197+
if (challenge.track == 'DESIGN' && challenge.userDetails.submissions && challenge.userDetails.submissions.length > 0) {
198+
challenge.thumbnailId = challenge.userDetails.submissions[0].id;
199+
200+
challenge.highestPlacement = _.max(challenge.userDetails.submissions, 'placement').placement;
201+
202+
if (challenge.highestPlacement == 1) {
203+
challenge.wonFirst = true;
204+
}
205+
}
206+
207+
if (challenge.userDetails.hasUserSubmittedForReview) {
208+
if (!challenge.highestPlacement) {
209+
challenge.userStatus = "PASSED_SCREENING";
210+
} else {
211+
challenge.userStatus = "PASSED_REVIEW";
212+
}
213+
} else {
214+
challenge.userStatus = "NOT_FINISHED";
215+
}
189216
}
190217
});
191218
}

0 commit comments

Comments
 (0)