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

Commit 74774fc

Browse files
author
vikasrohit
committed
SUP-1815, Past Challenge Cards showing incorrect information when there is no winner
-- created directives for dev and design user placement ui -- extracted styles for directives from challenge-tile styles -- moved design challenge placement processing logic to challenge service -- fixed issue with missing placements for past challenges
1 parent a695b28 commit 74774fc

11 files changed

+426
-234
lines changed

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

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

7777
.challenge-details(ng-switch-when="DEVELOP")
78-
p.place(ng-class="{ 'first-place': challenge.wonFirst }", ng-show="challenge.highestPlacement") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
79-
p.place(ng-show="challenge.userStatus === 'NOT_FINISHED'") Didn't Finish
80-
p.place(ng-show="challenge.userStatus === 'PASSED_SCREENING'") Passed Screening
81-
82-
.challenge-score(ng-show="challenge.userStatus !== 'NOT_FINISHED'")
83-
p.score {{challenge.userDetails.submissionReviewScore/100 | percentage}}
84-
85-
p Review Score
78+
dev-challenge-user-place(challenge="challenge", view="view")
8679

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

9883
.challenge.list-view(ng-show="view=='list'", ng-class="challenge.track")
9984
.active-challenge(ng-show="challenge.status === 'ACTIVE'")
@@ -165,28 +150,7 @@
165150
p Total Points
166151

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

179155
.challenge-details(ng-switch-when="DESIGN")
180-
.place-date
181-
p.place(ng-class="{ 'first-place': challenge.wonFirst }") {{challenge.highestPlacement}}#[span {{challenge.highestPlacement | ordinal:true}}] Place
182-
p.date-completed {{challenge.submissionEndDate | date : 'MMMM yyyy'}}
183-
184-
.winner-ribbon(ng-show="challenge.wonFirst")
185-
186-
.thumbnail(ng-click="openLightbox()")
187-
img(ng-src="http://studio.{{DOMAIN}}/studio.jpg?module=DownloadSubmission&sbmid={{challenge.thumbnailId}}&sbt=full", fallback-src="/images/ico-picture.svg")
188-
189-
.thumbnail-gallery(ng-click="challenge.showLightbox()")
190-
.gallery-icon
191-
192-
.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/services/challenge.service.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,17 +172,31 @@
172172
function processPastChallenges(challenges) {
173173
angular.forEach(challenges, function(challenge) {
174174
if (challenge.userDetails) {
175+
// TODO placement logic for challenges can be moved to their corresponding user place directive
176+
// process placement for challenges having winningPlacements array in response
175177
if (Array.isArray(challenge.userDetails.winningPlacements)) {
176178
challenge.highestPlacement = _.max(challenge.userDetails.winningPlacements);
177179
challenge.wonFirst = challenge.highestPlacement == 1;
178180
if (challenge.highestPlacement === 0) {
179181
challenge.highestPlacement = null;
180182
}
181183
}
184+
// process placement for design challenges
185+
if (challenge.track == 'DESIGN' && challenge.userDetails.submissions && challenge.userDetails.submissions.length > 0) {
186+
challenge.thumbnailId = challenge.userDetails.submissions[0].id;
187+
188+
challenge.highestPlacement = _.max(challenge.userDetails.submissions, 'placement').placement;
189+
190+
if (challenge.highestPlacement == 1) {
191+
challenge.wonFirst = true;
192+
}
193+
}
182194

183195
if (challenge.userDetails.hasUserSubmittedForReview) {
184196
if (!challenge.highestPlacement) {
185197
challenge.userStatus = "PASSED_SCREENING";
198+
} else {
199+
challenge.userStatus = "PASSED_REVIEW";
186200
}
187201
} else {
188202
challenge.userStatus = "NOT_FINISHED";

0 commit comments

Comments
 (0)